L’aboutissement du support de la préemption temps réel sous Linux
- Le travail visant à ajouter le support temps réel à Linux a commencé en 2004 et entre désormais dans sa phase finale.
- L’objectif de la préemption temps réel est de permettre au processus de plus haute priorité de s’exécuter avec un délai minimal ; pour cela, le noyau est rendu préemptible dans autant de situations que possible.
- Ce travail a conduit à une réécriture de parties essentielles du noyau et apporte des bénéfices qui vont au-delà des cas d’usage temps réel.
Résolution du problème de printk()
- La fonction
printk(), utilisée dans le noyau pour envoyer des messages vers la console système et les logs, fonctionne de manière synchrone et ne retourne pas tant que le message n’a pas été transmis à toutes les destinations configurées.
- Les développeurs temps réel ont déplacé la sortie de
printk() vers un thread séparé pour la rendre asynchrone, mais il ne s’agissait que d’une solution provisoire.
- Le problème de
printk(), traité sérieusement depuis 2018, est en voie de résolution au travers d’environ 300 patchs, même s’il reste encore quelques problèmes complexes à régler.
Perspectives d’intégration du code de préemption temps réel dans la branche principale
- L’espoir est exprimé que le reste du code de préemption temps réel soit intégré dans la branche principale avant son 20e anniversaire, fin 2024.
- Il n’y a pas eu de changement récent dans le code de
printk(), mais le code de handover a été modifié pour permettre la mise à jour des pilotes de console un par un.
- Le code a été modifié pour que les messages importants soient entièrement copiés dans le tampon de messages avant l’affichage de la première ligne, et pour enregistrer d’abord les messages sur une console sûre afin d’éviter les plantages du système causés par des pilotes de console défectueux.
L’avis de GN⁺
- Le travail d’ajout du support de la préemption temps réel au noyau Linux est presque achevé, ce qui apportera des bénéfices importants aux systèmes ayant besoin de traitements temps réel.
- Le passage de la fonction
printk() à un fonctionnement asynchrone améliore la réactivité du système et joue un rôle essentiel dans l’atteinte des objectifs de la préemption temps réel.
- Cet article montre une avancée importante du développement du noyau Linux et propose un contenu intéressant pour les personnes qui s’intéressent à son développement.
1 commentaires
Avis de Hacker News
Les avantages du microkernel QNX
Les problèmes du traitement temps réel sous Linux
La journalisation du noyau et les cas d’usage réels
Possibilité de remplacer les combinaisons matériel/logiciel temps réel
Distinction entre applications temps réel « dur » et « souple »
Le traitement temps réel du noyau Linux et les limites du matériel
Les problèmes de la journalisation synchrone
Comment garantir la réactivité d’un processus spécifique
La préemption temps réel de Linux et une expérience passée
Impact pour les utilisateurs ordinaires