Linutronix : une acquisition couleur RTOS pour Intel

Intel a mis la main sur Linutronix. Cette entreprise allemande porte PREEMPT-RT, projet de référence pour apporter le temps réel au noyau Linux.

Bonne fortune pour PREEMPT-RT ? Linutronix, l’entreprise allemande qui porte le projet, est passée dans le giron d’Intel. Le groupe américain a discrètement annoncé l’acquisition, sur l’un de ses blogs communautaires.

PREEMPT-RT – pour « real-time preemption » – est un patch qui confère au noyau Linux des fonctionnalités temps réel. Comme son nom l’indique, il minimise la quantité de code non préemptible au sein du noyau Linux. Le rendant ainsi plus déterministe… et dont plus adapté aux exigences des applications temps réel.

Les initiatives dans ce sens avaient véritablement démarré en 2003. Avec le noyau 2.6.0 étaient apparu un réglage de préemption à trois niveaux, sélectionnables au moment de la compilation : aucune, volontaire (création de points explicites à des endroits stratégiques) et totale (sauf spinlocks et zones critiques). Une alternative à une approche plus ancienne consistant à intercaler, entre le hardware et le noyau Linux, un piconoyau « spécial temps réel » gérant la distribution et la planification des interruptions. Parmi ces piconoyaux, RTAI, Xenomai et RTLinux, dont les architectures respectives sont illustrées ci-dessous en (a), (b) et (c).

architectures piconoyaux
Par rapport à ces piconoyaux, PREEMPT-RT n’exploite pas d’appels systèmes spécialisés (il utilise l’API POSIX). Et ne requiert donc pas de modifier substantiellement les applications qu’il exécutera.

Red Hat et IBM… au début

PREEMPT-RT avait émergé en 2005, sur la base du noyau Linux 2.6.11… et sur un existant composé de multiples patchs spécifiques (les initiatives pour rendre le kernel préemptible avait véritablement démarré en 2003). Les premiers travaux furent essentiellement l’œuvre de personnels de Red Hat et d’IBM. En toile de fond, un contrat Raytheon/US Navy fondé sur l’exploitation de Linux pour du temps réel. Ils permirent d’ajouter deux niveaux de préemption. En jouant, par exemple, sur :

– L’instanciation d’horloges plus précises (à la nanoseconde)
– L’exécution des gestionnaires d’interruptions dans le contexte de tâches
– La suppression de la plupart des spinlocks non préemptibles
– Adoption de mutex respectant la priorité héritée (pour éviter le phénomène dit d’inversion, où une tâche à basse priorité peut en préempter une à plus haute priorité)

Dix ans plus tard, le projet trouvait une ombrelle en l’objet de l’initiative Linux RT, lancée par la Fondation Linux. Nombre de ses fonctionnalités avaient alors été directement intégrées au kernel. Entretemps, ses principaux architectes – en particulier Thomas Gleixner, cofondateur de Linutronix – avaient régulièrement tiré la sonnette d’alarme : faute de ressources adéquates, PREEMPT-RT était, sinon menacé, tout du moins handicapé dans son développement.

Les cas d’usage, pourtant, ne manquaient pas. Avec, entre autres, IBM Research sur une VM Java dont la latence du ramasse-miettes était plafonnée pour permettre la bonne exécution d’un synthétiseur. Mais aussi l’usage de PREEMPT-RT avec le protocole EtherCAT pour implémenter un récepteur GNSS fondé sur un FPGA PCIe. Ou encore un robot humanoïde, des systèmes d’aide à la conduite, de la simulation avionique, etc.

Sous l’égide de la Fondation Linux, Linutronix eut davantage de marge de manœuvre. Notamment pour réarchitecturer les horloges haute résolution ou refondre la gestion du hotplug CPU. Intel assure que l’entreprise restera indépendante, bien qu’intégrée dans sa division software.

Photo d’illustration © BeeBright – Shutterstock