La dernière mise à jour, Linux Kernel 6.13, apparaît après deux mois de développement et offre de nombreuses nouvelles fonctionnalités pour l'optimisation du système. Les principales mises à jour comprennent des optimisations pour les GPU AMD et NVIDIA, des améliorations de la mise en réseau, des corrections de la gestion de la mémoire et une meilleure gestion de l'ACPI, entre autres. Le noyau Linux 6.13 ajoute la prise en charge de la préemption paresseuse, un effort pour simplifier la logique de préemption du noyau et les options de configuration afin d'obtenir de meilleurs résultats. Avec le temps, cet ajout pourrait entraîner une réduction des appels liés au planificateur dans le reste du noyau. En outre, cette mise à jour introduit un nouveau pilote virtual-cpufreq pour les noyaux invités, ce qui améliore les performances des charges de travail et des machines virtuelles.Avec cette version, le support matériel est étendu grâce à des pilotes mis à jour. Parmi les appareils pris en charge figurent les tablettes Vexia EDU ATLA 10 et Surface Pro 9 5G, le chipset GPU Adreno A663, Allwinner H616, AMD ACP 6.3, Qualcomm SM8750, les puces audio RealTek RT721, les écrans tactiles NT36672A, les contrôleurs AMD I3C et le périphérique réseau NVIDIA Mellanox « MLX5 ». En outre, cette mise à jour introduit un nouveau pilote virtual-cpufreq pour les noyaux invités, ce qui améliore les performances des charges de travail et des machines virtuelles.
Poursuivant l'intégration progressive du langage de programmation Rust, le noyau 6.13 inclut des fonctionnalités telles que le support des événements de trace en Rust, ainsi qu'un nouvel allocateur de mémoire. Ces ajouts facilitent le développement de modules du noyau en Rust, offrant des garanties de sécurité mémoire accrues et une meilleure gestion de la concurrence.
Modèle de préemption paresseuse
Le noyau 6.13 introduit le support de la préemption paresseuse, visant à simplifier la logique de préemption du noyau et à optimiser les performances du planificateur de tâches. Cette approche permet de différer certaines requêtes de préemption jusqu'à des moments plus opportuns, améliorant ainsi l'efficacité globale du système. CONFIG_PREEMPT_LAZY=y est disponible pour les architectures x86, RISC-V et LoongArch.
Pour ceux qui sont intéressé par le fonctionnement de la préemption dans le noyau et sur la façon dont la préemption paresseuse bouleverse les choses (pour le meilleur), Jonathan Corbet a publié un excellent billet explicatif sur le sujet. En voici un extrait :
Les noyaux actuels disposent de quatre modes différents qui régissent le moment où une tâche peut être préemptée en faveur d'une autre. PREEMPT_NONE, le mode le plus simple, n'autorise la préemption que lorsque la tâche en cours a épuisé sa tranche de temps. PREEMPT_VOLUNTARY ajoute un grand nombre de points dans le noyau où la préemption peut se produire si nécessaire. PREEMPT_FULL permet la préemption à presque n'importe quel moment, sauf aux endroits du noyau qui l'empêchent, comme lorsqu'un spinlock est détenu. Enfin, PREEMPT_RT donne la priorité à la préemption sur la plupart des autres éléments, rendant même préemptible la majeure partie du code contenant un spinlock.
Un niveau de préemption plus élevé permet au système de répondre plus rapidement aux événements ; qu'il s'agisse du mouvement d'une souris ou d'un signal de « fusion imminente » provenant d'un réacteur nucléaire, une réponse plus rapide a tendance à être plus gratifiante. Mais un niveau de préemption plus élevé peut nuire au débit global du système ; les charges de travail comportant un grand nombre de tâches à long terme et à forte intensité de CPU ont tendance à bénéficier d'un minimum de perturbations. Une préemption plus fréquente peut également entraîner une contention plus importante des verrous. C'est pourquoi il existe différents modes ; le mode de préemption optimal varie en fonction de la charge de travail.
Un niveau de préemption plus élevé permet au système de répondre plus rapidement aux événements ; qu'il s'agisse du mouvement d'une souris ou d'un signal de « fusion imminente » provenant d'un réacteur nucléaire, une réponse plus rapide a tendance à être plus gratifiante. Mais un niveau de préemption plus élevé peut nuire au débit global du système ; les charges de travail comportant un grand nombre de tâches à long terme et à forte intensité de CPU ont tendance à bénéficier d'un minimum de perturbations. Une préemption plus fréquente peut également entraîner une contention plus importante des verrous. C'est pourquoi il existe différents modes ; le mode de préemption optimal varie en fonction de la charge de travail.
Améliorations des systèmes de fichiers
Plusieurs systèmes de fichiers bénéficient d'améliorations notables dans cette version :
- F2FS : Introduction de la fonctionnalité d'aliasing de périphériques, permettant de créer des partitions tout en récupérant l'espace en supprimant les fichiers aliasés dans le répertoire racine.
- XFS : Support initial des opérations d'écriture atomique, renforçant la fiabilité des transactions d'écriture.
- EXT4 : Nombreuses corrections de bugs et améliorations mineures, contribuant à une stabilité accrue du système de fichiers.
Christian Brauner de...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.
Ou bien, est-ce que ces informaticiens sont pressés par des deadline et des managers/patrons, pour que le logiciel sorte un jour donné, peu importe sont état ? Pensez-vous vraiment que les informaticiens veulent vraiment des logiciels de ce genre et qu'ils ne voudraient pas travailler à optimiser un code à son maximum. Cette dernière est bien plus intéressante mentalement, que de "pisser du code" pour tenir un délai
