La préemption paresseuse ‘PREEMPT_LAZY’ prévue pour intégrer Linux 6.13
Une nouvelle fonctionnalité prometteuse, la préemption paresseuse PREEMPT_LAZY, est attendue pour l’intégration dans le cycle Linux 6.13. Cette innovation permet de modifier le modèle de préemption, rendant le système plus performant tout en diminuant les interruptions pour les tâches de classe SCHED_NORMAL. Les fonctions de préemption classique seront en effet substituées par une approche plus équilibrée, visant à optimiser les délais tout en préservant la réactivité des classes en temps réel comme RR, FIFO et DEADLINE.
Introduction à la préemption paresseuse ‘PREEMPT_LAZY’
La préemption paresseuse, connue sous le nom de PREEMPT_LAZY, est une fonctionnalité attendue lors de la prochaine intégration dans le cycle de développement de Linux 6.13. Ce modèle innovant vise à améliorer le système de gestion des tâches en optimisant le moment de préemption, ce qui pourrait générer des gains de performance significatifs. Les détails essentiels de ce modèle, ainsi que ses impacts sur les architectures supportées, seront abordés dans cet article.
Fonctionnalité et Objectifs de la préemption paresseuse
La mise en œuvre du modèle PREEMPT_LAZY vise à introduire un comportement préemptif plus nuancé. Comme l’indique le développeur de Linux Peter Zijlstra, cette méthode modifie la façon dont le planificateur gère la préemption en utilisant la méthode resched_curr_lazy(). En choisissant ce modèle, le système se préparera à un état de préemption à l’aide du drapeau TIF_NEED_RESCHED_LAZY.
Cette approche permet de différer la préemption pour les tâches de classe fair, tout en maintenant une fonction de préemption complète pour les autres classes, notamment pour les classes en temps réel telles que RR, FIFO et DEADLINE. L’objectif principal est de réduire le retard lié à la préemption, en diminuant la fréquence des interruptions induites par les tâches normales.
Mécanismes et Avantages de PREEMPT_LAZY
La nouvelle option de configuration, PREEMPT_LAZY, porte en elle une méthode de préemption dirigée par le planificateur. Cette méthode est essentiellement similaire à la préemption complète, mais elle aborde les tâches SCHED_NORMAL de manière plus calculée. Cette décision vise à réduire la préemption des détenteurs de verrous, contribuant ainsi à la récupération de certaines optimisations de performance observées avec la préemption Voluntary.
En effet, le compromis entre le temps d’attente pour la préemption et la performance globale du système est essentiel. Les modifications apportées par PREEMPT_LAZY permettent d’atteindre un réglage optimal, avec une latence moyenne définie comme étant TICK_NSEC/2. Ceci peut potentiellement offrir un environnement multitâche plus fluide et réactif pour les applications.
Support Architecture et Développement Futur
Jusqu’à présent, les patches relatifs à PREEMPT_LAZY ont été activés pour les architectures x86/x86_64 et RISC-V. Ces ajouts interviennent immédiatement après l’intégration de PREEMPT_RT dans la version Linux 6.12, démontrant un engagement continu du développement Linux vers un environnement de gestion des processus en temps réel.
Alors que cette nouvelle méthode de préemption est en cours d’intégration, il est attendu que d’autres améliorations et ajustements soient apportés ultérieurement sur d’autres architectures. Les développeurs sont en constante recherche de solutions pour améliorer sans cesse la performance du noyau et de ses fonctionnalités.
Conclusion et Perspectives
Avec l’arrivée imminente de PREEMPT_LAZY dans le noyau Linux, les attentes sont élevées quant à l’impact que cela pourrait avoir sur la gestion des tâches. En ciblant une latence réduite tout en maintenant une haute performance pour les classes de tâches en temps réel, cette fonctionnalité pourrait marquer un tournant significatif dans l’optimisation du noyau Linux.
Comparaison des modèles de préemption
Caractéristiques | Détails |
Type de préemption | Modèle de préemption paresseuse |
Introduit dans | Linux 6.13 |
Nom de Kconfig | PREEMPT_LAZY |
Impact sur les tâches | Réduction de la préemption pour SCHED_NORMAL |
Fonctionnement | Retarde la préemption pour la classe équitable |
Performance | Optimisé pour réduire les performances perdues |
Architecture supportée | x86/x86_64 et RISC-V |
Relation avec PREEMPT_RT | Complémentaire à PREEMPT_RT, introduit auparavant |
Objectif principal | Combler l’écart de performance avec la préemption volontaire |
- Modèle de préemption : Introduction du modèle de préemption paresseuse.
- Chargement : Les patches ont été intégrés dans la branche Git “sched/core”.
- Impact : Réduction de la préemption pour les tâches SCHED_NORMAL.
- Intégration : Prévu pour la fenêtre de fusion de Linux 6.13.
- Fonctionnalité particulière : Différence de traitement entre SCHED_NORMAL et les classes realtime.
- Kconfig : Nouvelle option de configuration PREEMPT_LAZY.
- Performance : Visée de réduire le retard causé par la préemption.
- Architecture : Support initial pour x86/x86_64 et RISC-V.
- Évolution : Arrive un cycle après PREEMPT_RT.
- Objectif : Combler l’écart de performance avec Voluntary.
Commentaires
Laisser un commentaire