IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Linux Kernel 6.13 est disponible : le noyau ajoute la prise en charge de la préemption paresseuse, poursuit l'intégration de Rust
Et apporte de nouvelles fonctionnalités pour l'optimisation du système

Le , par Stéphane le calme

27PARTAGES

23  0 
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.

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 Microsoft explique (sic) : « une écriture atomique est une écriture émise avec une protection d'écriture déchirée. Cela signifie qu'en cas de panne de courant ou de défaillance matérielle, toutes les données de l'écriture, ou aucune, seront stockées, jamais un mélange d'anciennes et de nouvelles données ».

Du point de vue du système de fichiers, le système de fichiers F2FS a reçu une fonction d'alias de périphérique qui permet de découper des partitions mais de récupérer l'espace en supprimant les fichiers alias dans le répertoire racine, tandis que le système de fichiers XFS a reçu une prise en charge de base pour les opérations d'écriture atomique. En revanche, le système de fichiers FUSE a bénéficié de conversions de pages en folio et d'une prise en charge de la configuration de la taille maximale des requêtes FUSE à l'aide d'un sysctl.

De plus, le système de fichiers EXT4 a reçu un grand nombre de corrections de bogues et de nettoyages divers, le système Btrfs prend désormais en charge la compression transparente à l'aide de l'algorithme LZ4. Les utilisateurs de ces systèmes de fichiers bénéficient ainsi d'un gain d'espace significatif et d'une amélioration des performances d'entrée/sortie, tandis que le système de fichiers exFAT a bénéficié d'une amélioration des performances en réduisant la traversée de la chaîne FAT..

Support matériel amélioré

Le noyau 6.13 étend la compatibilité matérielle avec l'ajout et la mise à jour de pilotes pour divers dispositifs :
  • Processeurs : Support des processeurs Intel ArrowLake-H et Intel Panther Lake, ainsi que des processeurs AMD EPYC 9005 utilisant désormais le pilote amd-pstate par défaut pour une meilleure efficacité énergétique.
  • Graphiques : Améliorations du pilote V3D pour les Raspberry Pi, offrant un support des superpages matérielles et des performances graphiques accrues.
  • Périphériques : Prise en charge de nouveaux périphériques tels que les tablettes Vexia EDU ATLA 10 et Surface Pro 9 5G, le chipset GPU Adreno A663, les écrans tactiles NT36672A, et les contrôleurs AMD I3C.

Le noyau Linux 6.13 fait du pilote amd-pstate cpufreq le pilote par défaut sur certains processeurs AMD Epyc récents, ajoute la prise en charge des seuils thermiques qui peuvent être ajoutés et supprimés de l'espace utilisateur via netlink ainsi qu'une mise à jour de la bibliothèque correspondante, et met en œuvre une nouvelle fonctionnalité dans le périphérique de caractère uAPI pour notifier l'espace utilisateur des changements déclenchés par les utilisateurs dans le noyau.

En outre, elle ajoute la prise en charge PMU pour les processeurs Intel ArrowLake-H et Intel Panther Lake, la prise en charge de la spécification MIPI DisCo 2.0 dans le sous-système SoundWire, un nouveau mode pass-through pour les accélérateurs liés à l'audio, et la prise en charge des superpages matérielles dans le pilote V3D utilisé pour les ordinateurs Raspberry Pi.

Comme prévu, le noyau Linux 6.13 apporte une meilleure prise en charge du matériel avec de nouveaux pilotes et des mises à jour pour divers périphériques, notamment les tablettes Vexia EDU ATLA 10 et Surface Pro 9 5G, les chipsets GPU Adreno A663, Allwinner H616, AMD ACP 6.3, Qualcomm SM8750 et les puces audio RealTek RT721, les écrans tactiles NT36672A, les contrôleurs AMD I3C, les périphériques réseau NVIDIA Mellanox « MLX5 », et bien d'autres encore. Il y a également un nouveau pilote virtual-cpufreq pour les noyaux invités afin d'améliorer les performances et la puissance des charges de travail pour les machines virtuelles.

Enfin, Linux 6.13 apporte des capacités de calcul en temps réel à l'architecture LoongArch, ainsi que la prise en charge du masquage des pointeurs dans l'espace utilisateur, la prise en charge de l'analyse des performances des accès mal alignés vectoriels et la prise en charge de qspinlock sur les systèmes avec Zacas et Zabha pour l'architecture RISC-V, et la prise en charge des événements de traçage dans Rust, ainsi qu'un nouvel allocateur de mémoire.

Autres améliorations

Le redimensionnement dynamique des anneaux de mémoire partagée dans le sous-système io_uring est intégré, grâce à la commande IORING_REGISTER_RING_RESIZE. Il s'agit d'une véritable aubaine, car il est possible de commencer avec des anneaux plus petits (c'est-à-dire qui utilisent moins de mémoire), puis d'augmenter la taille au fur et à mesure que les demandes d'E/S s'accroissent.

Par ailleurs, une nouvelle opération ioctl() PIDFD_GET_INFO permet de récupérer des informations sur un processus représenté par un pidfd, et de produire des noyaux plus performants grâce à l'optimisation AutoFDO (Automatic Feedback-Directed Optimization) et à l'optimisation Propeller.

Le noyau Linux 6.13 voit la limite de simultanéité maximale de la file d'attente passer de 512 à 2048. Cette augmentation de 4 fois peut contribuer à améliorer la stabilité en réduisant les ralentissements causés par les limites de la file d'attente et, éventuellement, à améliorer les performances des charges de travail lourdes de la file d'attente.

Bien que les utilisateurs réguliers d'ordinateurs de bureau ne puissent pas en bénéficier (directement), il s'agit d'un changement important qui sera fortement ressenti sur les installations de serveurs et dans les opérations informatiques à grande échelle.

Ces changements dans le noyau de Linux 6.13 nous rappellent que Linux reste fluide et adaptable, que ses mainteneurs ne sont pas précieux et ne s'attachent pas à certaines approches. La valeur technique l'emporte toujours, même pour les propositions de changements importants.

Outre les mises à jour les plus importantes, le noyau Linux 6.13 apporte plusieurs améliorations mineures. Il s'agit notamment d'une meilleure prise en charge du débogage USB4, de la compatibilité avec les anciens iPads et iPhones, de la prise en charge du noyau en temps réel pour les processeurs LoongArch et de la prise en charge des cartes mémoire Secure Digital Ultra Capacity. Le nouveau noyau offre également des améliorations en matière de réseau. Par exemple, la prise en charge de la norme WiFi 7 (802.11be) a été ajoutée, ce qui permet des connexions sans fil plus rapides et plus fiables.

Sources : annonce Linus Torvalds, La longue route vers la préemption paresseuse, note de version, Christian Brauner

Et vous ?

Quelle est la fonctionnalité introduite par le noyau 6.13 que vous trouvez la plus prometteuse, et pourquoi ?

Pensez-vous que l'intégration croissante de Rust dans le noyau Linux pourrait remplacer C à terme ? Quels sont les avantages ou les risques liés à cette transition ?

La préemption paresseuse pourrait-elle réellement avoir un impact mesurable sur les performances pour les utilisateurs finaux ?

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 23/01/2025 à 20:55
Quand on regarde la charge par coeur on voit qu'ils sont rarement tous utilisés en même temps.
Oui, c'est un fait. Mais la raison est que la majorité des logiciels des utilisateurs attendent des interactions de l'utilisateur (clic de souris, appui sur le clavier). Pour utiliser tous les cœurs d'un coup, je lance un rendu Blender, un encodage vidéo ou je ne sais quoi. Ce n'est pas en lançant un lecteur MP3 (qui joue de la musique en continu), que mon CPU passe à 100 % sur tous les cœurs (et j'imagine que sur les processeurs récent, à peine 1 % du CPU est utilisé pour une telle tâche).
Dites moi quel serait l'avantage d'avoir un cœurs CPU dédié au noyau ? Celui-ci, ne prends pas non plus beaucoup de ressource (que ce soit sur un cœurs dédié ou non). D'ailleurs, il existe le pinning (forcé qu'un processus soit toujours sur le même cœurs), l'avantage est "faible", mais cela a l'avantage qu'il n'y a pas besoin de déplacer son contexte (notamment le contenu des registres...) sur un autre cœur. Toutefois, cela a aussi un avantage, uniquement si votre processus pinné utilise inconditionnellement le cœurs sans jamais rendre la main (ce qui est possible de faire en montant la priorité du processus). Mais du coup, vous allez vouloir le faire pour une tâche intensive, ce qui est un scénario d'utilisateurs niche.
La question est donc réelle, pourquoi vouloir bloquer un cœur pour le noyau ? Noyau qui s'exécute en petite tranche très rapide, répondant à des interruptions. Si c'est pour répondre rapidement, je ne pense pas que cela se ressentira.

1ou2 de moins en multi coeurs bof.
Pour peu que je fasse de la compilation, du rendu, de l'encodage ou je ne sais quoi d'autre, non, ce n'est pas bof.

En temps qu'utilisateur: C'est moi le patron, j'attends que le zinzin réponde à mes sollicitations immédiatement.
Absolument ! Et vous avez ce pouvoir sous Linux : pinning de processus, changement de priorité, recompilation de noyau... Mais c'est un scénario niche. On veut un noyau, des distributions pour conviennent à la majorité des utilisateurs . Mais avec Linux, vous avez la liberté de chercher la moindre performance là où elle se trouve et correspondre à votre besoin

mais la force de l'habitude ne permet pas de centrer un système sur l'utilisateur : il doit patienter.
Je ne dis pas que les applications sont parfaites, oui, on patiente. Mais est-ce à cause du noyau ? Je ne crois pas. Une bonne partie du temps est passé à attendre le disque dur (et le passage au SSD a tellement amélioré les choses), ou à attendre la réponse de serveur connecté à l'autre bout de la terre (et ce, même avec une fibre, même avec des logiciels qui n'aurait normalement pas besoin de pinger un serveur lointain pour de la télémétrie ou je ne sais quoi d'autre). Vraiment, ce qui vous fait attendre sur le PC, c'est loin d'être le noyau.

Dans les entreprises, on dit qu'il faut être centré sur le client, ses besoins. Dommage que nos informaticiens ne fassent pas cette révolution copernicienne.
Content que de telle entreprise existe, car ces derniers temps, j'ai plus vu qu'ils étaient préoccupés sur leurs intérêts financiers et les bénéfices pouvant être réalisés . D'ailleurs, la plupart des informaticiens travaillent dans des entreprises, du coup, il devrait y avoir de bien meilleure application, vu que ces entreprises sont centré sur le client... 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 .

(Dans le monde du jeux vidéo, il semble que la bête noire du moment soit le développeur, ce fameux développeur qui aime faire des heures supplémentaires, des crunch pour sortir un jeu bogué, lamentable, à la limite du jouable, devant être patché plusieurs fois (patch aussi réalisé grâce à des heures supplémentaires non payées). Salaud de développeurs ! .)
5  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 22/01/2025 à 20:41
Bonjour,

Je ne pense pas que le problème soit de réagir aux E/S, le noyau réussit très bien cette tâche. Le problème vient plus du fait qu'une fois le noyau a pris en compte l'événement, l'E/S, il faut que ce soit relayé aux processus en espace utilisateur (ceux qui doivent réellement réagir à l'événement). Déjà, il y a quelques traitement à faire (par exemple, le gestionnaire de fenêtre doit savoir sur quelle fenêtre vous faites un clic) et ensuite, il y a l'application en elle même qui doit réagir. Et pour cela, il faut que tout le monde ait eu du temps CPU (mais, je pense que ces dernières années, avoir du temps CPU pour les applications, c'est pas un problème).
Aussi, je doute qu'en tant qu'utilisateur vous soyez content d'avoir un CPU 12 cœurs et que vous ne pouviez en utiliser que 11 .
3  0 
Avatar de dee phoenix
Membre du Club https://www.developpez.com
Le 22/01/2025 à 21:45
Citation Envoyé par vVDB.fr
A la lecture de cet article, sur la partie préemption, je suis étonnée que sur nos architectures matérielles multi coeurs, un coeur n'est pas attribué au E/S (souris, clavier, tactile...)
Cela ne changerai rien

Si tu veux réduire la latence dans les jeux Windows,tu désactives le triple buffering (NVIDIA)

Ubuntu studio et toutes les Distros axées "SON" ont un Kernel optimisé pour une faible temps de latence...Dans le son...Je ne sais pas si cela agit dans d'autres domaines
3  0 
Avatar de vVDB.fr
Membre régulier https://www.developpez.com
Le 22/01/2025 à 6:55
A la lecture de cet article, sur la partie préemption, je suis étonnée que sur nos architectures matérielles multi coeurs, un coeur n'est pas attribué au E/S (souris, clavier, tactile...) pour que l'ihm soit toujours très réactive et ne freeze jamais.
L'architecture historique mono cœur (monolithique ;-) ) est toujours d'actualité, amusant...
2  0 
Avatar de vVDB.fr
Membre régulier https://www.developpez.com
Le 23/01/2025 à 3:21
Quand on regarde la charge par coeur on voit qu'ils sont rarement tous utilisés en même temps. 1ou2 de moins en multi coeurs bof. On va perdre 1/10 de seconde pour obtenir un résultat. Je ne parle pas d'usage gamer, c'est une niche !

En temps qu'utilisateur: C'est moi le patron, j'attends que le zinzin réponde à mes sollicitations immédiatement.
Des choses que l'on pouvait accepter avec un 80286 (windows1) ne le sont plus depuis belle lurette mais la force de l'habitude ne permet pas de centrer un système sur l'utilisateur : il doit patienter.
Dans les entreprises, on dit qu'il faut être centré sur le client, ses besoins. Dommage que nos informaticiens ne fassent pas cette révolution copernicienne.
1  0 
Avatar de N_BaH
Modérateur https://www.developpez.com
Le 24/01/2025 à 0:10
Et vous avez ce pouvoir sous Linux

AVEC linux.

c'est quand même la partie la plus importante du projet linux : nous ne subissons plus l'OS; nous pouvons aller ausi loin qu'il le peut, et il peut autant que nous pouvons l'imaginer.
1  0