20 ans plus tard, Linux en temps réel arrive dans le noyau – vraiment
VIENNE — Après 20 ans, Linux en temps réel (PREEMPT_RT) est enfin — enfin — dans le noyau principal. Linus Torvalds a béni le code alors qu’il était à Sommet Open Source Europe. Pourquoi est-ce si important ? Commençons par expliquer ce qu’est un système d’exploitation en temps réel (RTOS) et à quoi il sert.
Qu’est-ce qu’un RTOS ?
Un RTOS est un système d’exploitation spécialisé conçu pour gérer des tâches critiques avec précision et fiabilité. Contrairement aux systèmes d’exploitation à usage général comme Windows ou macOS, un RTOS est conçu pour répondre aux événements et traiter les données dans des délais stricts, souvent mesurés en millisecondes ou en microsecondes. Comme l’a dit Steven Rostedt, éminent développeur Linux en temps réel et ingénieur chez Google, « le temps réel est le scénario le plus rapide du pire ».
Il veut dire que la caractéristique essentielle d’un RTOS est son comportement déterministe. Un RTOS garantit que les tâches critiques seront terminées dans les délais impartis. Beaucoup de gens pensent que les RTOS sont destinés aux processus rapides. Ce n’est pas le cas. La vitesse n’est pas le point essentiel des RTOS, mais la fiabilité. Cette prévisibilité est cruciale dans les applications où le timing est essentiel, comme les systèmes de contrôle industriel, les appareils médicaux et les équipements aérospatiaux.
Également : 5 commandes Linux que vous ne devriez jamais exécuter (et pourquoi)
Un exemple de systèmes d’exploitation en temps réel utilisés aujourd’hui est VxWorksqui est utilisé dans les rovers martiens de la NASA pour les guider, et dans l’avion Boeing 787 Dreamliner pour contrôler les systèmes avioniques, garantissant une réactivité en temps réel des commandes de vol. Un autre exemple est Neutrino QNXqui est largement utilisé dans les voitures pour l’infodivertissement et les systèmes avancés d’assistance à la conduite tels que les freins antiblocage.
L’histoire de Linux en temps réel
Le code Linux en temps réel est désormais intégré à toutes les distributions Linux à partir du prochain noyau Linux 6.12. Cela signifie que Linux commencera bientôt à apparaître dans davantage d’appareils critiques et de matériel industriel. Mais il a fallu du temps pour y arriver.
L’histoire de Linux en temps réel a commencé à la fin des années 1990, lorsque le besoin de Linux pour prendre en charge les applications en temps réel s’est fait de plus en plus sentir. Les premiers efforts se sont concentrés sur la création de noyaux temps réel distincts fonctionnant en parallèle avec le noyau Linux. Cela comprenait des projets universitaires tels que KURT de l’Université du Kansas, RTAI de l’Université de Milan et RTLinux de l’Institut des mines et de la technologie du Nouveau-Mexique.
Ingo Molnar, un développeur senior du noyau Linux, a commencé à collecter et à remodeler des éléments de ces technologies en 2004 pour construire la base de l’ensemble de correctifs de préemption en temps réel. PREEMPT_RT.
Cette approche était différente des précédentes solutions Linux en temps réel car elle modifiait le noyau Linux existant plutôt que de créer un noyau en temps réel distinct. En 2006, elle avait gagné suffisamment de terrain pour que Linus Torvalds observe : «Contrôler un laser avec Linux est une foliemais chacun dans cette salle est fou à sa manière. Donc si vous voulez utiliser Linux pour contrôler un laser de soudage industriel, je n’ai aucun problème avec le fait que vous utilisiez PREEMPT_RT. »
En 2009, une petite équipe de développeurs du noyau, dont Thomas Gleixner, Peter Ziljstra et Rostedt, avait fini de consolider les développements prototypiques précédents en un seul ensemble de correctifs hors arborescence. C’est à ce moment-là que de nombreuses entreprises ont commencé à utiliser cet ensemble de correctifs pour créer des systèmes industriels nécessitant des propriétés en temps réel strictes avec une précision de l’ordre de la milliseconde.
Également : Ces distributions Linux sont idéales pour les développeurs – voici pourquoi
Au fur et à mesure que le projet avançait, de nombreux éléments de celui-ci ont été transférés dans le noyau. Rostedt m’a dit que, d’une certaine manière, il est faux de dire que le temps réel n’est présent que maintenant dans Linux. Beaucoup de ses fonctionnalités ont été introduites dans le Linux traditionnel au fil des ans. Certaines d’entre elles sont en effet essentielles au Linux que vous utilisez au quotidien.
Par exemple, il y a de fortes chances que vous n’ayez jamais entendu parler de «NON_HZ« , ce qui réduit la consommation d’énergie dans les systèmes inactifs. NO_HZ est ce qui permet à Linux de fonctionner efficacement sur des machines avec des milliers de processeurs. « Vous ne réalisez pas à quel point Linux s’est amélioré grâce au correctif en temps réel », a souligné Rostedt. « La seule raison pour laquelle Linux fonctionne aujourd’hui dans les centres de données est le travail que nous avons effectué. »
Ainsi, sans NO_HZ, Linux ne ferait pas tourner la quasi-totalité des centres de données. C’est pourquoi Linux gère le cloud. Je ne sais pas exactement à quoi ressemblerait le monde sans cette contribution en temps réel, mais il ne ressemblerait en rien à ce qu’il est aujourd’hui.
Le Linux en temps réel s’est également révélé utile d’une manière dont personne n’aurait pu imaginer au départ. Rostedt se souvient : « En 2005, j’ai reçu un rapport de bogue en temps réel et j’ai envoyé un correctif en disant : « Hé, voici le correctif. Pouvez-vous l’appliquer ? » Et le gars m’a répondu : « Je ne sais pas ce que je fais ». J’ai répondu : « Attends, tu n’es pas un développeur de noyau ? ». Il m’a répondu : « Je suis guitariste ». »
Également : Linus Torvalds réfléchit aux cheveux gris des mainteneurs et au prochain « roi de Linux »
Il s’est avéré qu’il utilisait les premiers correctifs en temps réel parce qu’il utilisait JACKle serveur de son pour les connexions audio à faible latence. Il l’utilisait parce que, comme la plupart des musiciens, il était trop fauché pour acheter du matériel haut de gamme. Rostedt a donc acheté un ordinateur portable bon marché, avec Linux et JACK, car avec le patch en temps réel, il pouvait enregistrer correctement au lieu de sauter pendant l’écriture sur le disque dur.
Il s’avère que de nombreux musiciens ont été les premiers à utiliser Linux en temps réel, car cela leur permettait de produire des enregistrements de haute qualité à moindre coût. Qui l’aurait cru ? Parmi les autres fonctionnalités Linux en temps réel qui se sont glissées dans le noyau principal au fil des ans, on peut citer :
Pourquoi Real-Time Linux a-t-il pris autant de temps ?
Alors, pourquoi Real-Time Linux n’est-il intégré au noyau que maintenant ? « En fait, nous ne pouvions pas proposer quelque chose à moins que nous ne pensions que c’était prêt », explique Rostedt. « Presque tout était généralement réécrit au moins trois fois avant d’être intégré dans la version principale, car nous avions une barre très haute pour ce qui devait être intégré. »
En outre, le chemin vers la ligne principale n’a pas été uniquement une question de défis techniques. La politique et la perception ont également joué un rôle. « Au début, nous ne pouvions même pas parler du temps réel », se souvient Rostedt. « Tout le monde disait : « Oh, le temps réel ne nous intéresse pas. » »
Un autre problème était l’argent. Pendant de nombreuses années, le financement de Linux en temps réel a été irrégulier. En 2015, la Linux Foundation a créé le projet collaboratif Real-Time Linux (RTL) pour coordonner les efforts autour de la mise en œuvre de PREEMPT_RT.
Également : Vous devez transférer des fichiers entre des machines Linux ? Voici 5 solutions fiables
Le dernier obstacle à l’intégration complète a été de retravailler le noyau. imprimer_k fonction, un outil de débogage essentiel datant de 1991. Torvalds était particulièrement protecteur envers print_k — il a écrit le code original et l’utilise toujours pour le débogage. Cependant, print_k met également un délai dur dans un programme Linux à chaque fois qu’il est appelé. Ce type de ralentissement est inacceptable dans les systèmes en temps réel.
Rostedt a expliqué : « Print_k dispose d’un millier de hacks pour gérer un millier de situations différentes. Chaque fois que nous modifions print_k pour faire quelque chose, cela cassait l’un de ces cas. Ce qui est génial avec print_k pour le débogage, c’est que vous pouvez savoir exactement où vous étiez lorsqu’un processus s’est planté. Quand je martelais le système très, très fort, et que la latence était généralement d’environ 30 microsecondes, puis soudainement elle sautait à cinq millisecondes. » Ce retard était le message print_k.
Après beaucoup de travail, de nombreuses discussions animées et plusieurs propositions rejetées, un compromis a été trouvé plus tôt cette année. Torvalds est content, les développeurs de Linux en temps réel sont contents, les utilisateurs de priint_K sont contents et, enfin, Linux en temps réel est une réalité.
Également : 5 meilleures distributions Linux pour les joueurs en 2024
Après deux décennies de développement, le patch temps réel de Linux a finalement été intégré au noyau principal. Cette étape marque l’aboutissement d’années de travail des développeurs du noyau pour apporter des performances déterministes à faible latence à Linux.
Grâce à cela, le noyau Linux est entièrement préemptif, ce qui lui permet de répondre aux événements en quelques microsecondes. Cette capacité est cruciale pour les applications qui nécessitent un timing précis, comme les systèmes de contrôle industriel, la robotique et la production audio.
Avec la mise à jour du patch temps réel, Linux est désormais en position de devenir un acteur sérieux dans le monde des RTOS. C’est une victoire non seulement pour les fabricants de systèmes temps réel, mais pour tous les utilisateurs de Linux.