Version du noyau Linux 6.0

Après deux mois de développement, Linus Torvalds a présenté la sortie du noyau Linux 6.0. Le changement important dans le numéro de version est pour des raisons esthétiques et constitue une étape formelle pour soulager l'inconfort lié à l'accumulation d'un grand nombre de numéros dans la série (Linus a plaisanté en disant que la raison du changement de numéro de branche était plus probablement qu'il manquait de doigts. et les orteils pour compter les numéros de version) . Parmi les changements les plus notables : la prise en charge de l'écriture tampon asynchrone dans XFS, le pilote de bloc ublk, l'optimisation du planificateur de tâches, un mécanisme de vérification du bon fonctionnement du noyau, la prise en charge du chiffrement par bloc ARIA.

Innovations clés dans le noyau 6.0 :

  • Sous-système de disque, E/S et systèmes de fichiers
    • Le système de fichiers XFS a ajouté la prise en charge des écritures asynchrones en mémoire tampon à l'aide du mécanisme io_uring. Les tests de performances effectués à l'aide d'outils fio (1 thread, taille de bloc de 4 Ko, 600 secondes, écriture séquentielle) montrent une augmentation des opérations d'entrée/sortie par seconde (IOPS) de 77 Ko à 209 Ko, une vitesse de transfert de données de 314 Mo/s à 854 Mo/s, et une baisse de la latence de 9600ns à 120ns (80 fois).
    • Le système de fichiers Btrfs implémente une deuxième version du protocole pour la commande « send », qui implémente la prise en charge de métadonnées supplémentaires, l'envoi de données en blocs plus grands (plus de 64 Ko) et la transmission d'extensions sous forme compressée. Les performances des opérations de lecture directe ont été considérablement augmentées (jusqu'à 3 fois) grâce à la lecture simultanée de jusqu'à 256 secteurs. Réduction des conflits de verrouillage et accélération de la vérification des métadonnées en réduisant les métadonnées réservées aux éléments différés.
    • De nouvelles opérations ioctl EXT4_IOC_GETFSUUID et EXT4_IC_SETFSUUID ont été ajoutées au système de fichiers ext4 pour récupérer ou définir l'UUID stocké dans le superbloc.
    • Le système de fichiers F2FS propose un mode à faible consommation de mémoire, qui optimise le fonctionnement sur les appareils dotés d'une petite quantité de RAM et vous permet de réduire la consommation de mémoire au détriment des performances.
    • Ajout de la prise en charge de l'authentification du lecteur NVMe.
    • Le serveur NFSv4 implémente une limite sur le nombre de clients actifs, qui est définie sur 1024 XNUMX clients valides pour chaque gigaoctet de RAM du système.
    • La mise en œuvre du client CIFS a amélioré les performances en mode de transmission multicanal.
    • Un nouvel indicateur FAN_MARK_IGNORE a été ajouté au sous-système de suivi des événements dans fanotify FS pour ignorer des événements spécifiques.
    • Dans Overlayfs FS, lorsqu'il est monté au-dessus d'un FS avec mappage d'ID utilisateur, une prise en charge correcte des listes de contrôle d'accès conformes à POSIX est fournie.
    • Ajout du pilote de bloc ublk, qui déplace la logique spécifique du côté du processus d'arrière-plan dans l'espace utilisateur et utilise le sous-système io_uring.
  • Services mémoire et système
    • De nouvelles fonctionnalités ont été ajoutées au sous-système DAMON (Data Access MONitor), permettant non seulement de surveiller l'accès des processus à la RAM depuis l'espace utilisateur, mais également d'influencer la gestion de la mémoire. En particulier, un nouveau module « LRU_SORT » a été proposé, qui permet un regroupement des listes LRU (Least Récemment Utilisé) pour augmenter la priorité de certaines pages mémoire.
    • La possibilité de créer de nouvelles régions de mémoire a été implémentée en utilisant les capacités du bus CXL (Compute Express Link), utilisé pour organiser une interaction à grande vitesse entre le CPU et les périphériques de mémoire. CXL vous permet de connecter de nouvelles régions de mémoire fournies par des périphériques de mémoire externes et de les utiliser comme ressources d'espace d'adressage physique supplémentaires pour étendre la mémoire vive (DDR) ou la mémoire permanente (PMEM) du système.
    • Problèmes de performances résolus avec les processeurs AMD Zen causés par du code ajouté il y a 20 ans pour contourner un problème matériel dans certains chipsets (une instruction WAIT supplémentaire a été ajoutée pour ralentir le processeur afin que le chipset ait le temps de passer en état d'inactivité). Ce changement a entraîné une réduction des performances sous des charges de travail qui alternent fréquemment entre des états inactif et occupé. Par exemple, après avoir désactivé la solution de contournement, les résultats moyens des tests tbench sont passés de 32191 33805 Mo/s à XNUMX XNUMX Mo/s.
    • Le code avec heuristique a été supprimé du planificateur de tâches, assurant la migration des processus vers les processeurs les moins chargés, en tenant compte du gain prévu de consommation d'énergie. Les développeurs ont conclu que l'heuristique n'était pas assez utile et qu'il était plus facile de la supprimer et de migrer les processus sans évaluation supplémentaire chaque fois qu'une telle migration pouvait potentiellement entraîner une consommation d'énergie inférieure (par exemple, lorsque le processeur cible se trouve dans un niveau de puissance inférieur). La désactivation des heuristiques a entraîné une réduction de la consommation d'énergie lors de l'exécution de tâches intensives. Par exemple, lors du test de décodage vidéo, la consommation d'énergie a diminué de 5.6 %.
    • La répartition des tâches entre les cœurs de processeur des grands systèmes a été optimisée, ce qui a amélioré les performances pour certains types de charges de travail.
    • L'interface d'E/S asynchrone io_uring propose un nouvel indicateur, IORING_RECV_MULTISHOT, qui vous permet d'utiliser le mode multi-shot avec l'appel système recv() pour effectuer plusieurs opérations de lecture à partir de la même socket réseau à la fois. io_uring prend également en charge le transfert réseau sans mise en mémoire tampon intermédiaire (zéro copie).
    • Implémentation de la possibilité de mettre les programmes BPF attachés à l'uprobe en état de veille. BPF ajoute également un nouvel itérateur ksym pour travailler avec les tables de symboles du noyau.
    • L'interface obsolète « efivars » dans sysfs, destinée à l'accès aux variables de démarrage UEFI, a été supprimée (le FS virtuel efivarfs est désormais universellement utilisé pour accéder aux données EFI).
    • L'utilitaire perf propose de nouveaux rapports pour analyser les conflits de verrouillage et le temps passé par le processeur à exécuter les composants du noyau.
    • Le paramètre CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 a été supprimé, ce qui permettait de construire le noyau en mode d'optimisation "-O3". Il est à noter que des expériences avec des modes d'optimisation peuvent être réalisées en passant des indicateurs lors de l'assemblage (« make KCFLAGS=-O3 »), et l'ajout d'un paramètre à Kconfig nécessite un profilage de performances reproductible, montrant que le déroulement de boucle utilisé en mode « -O3 » donne un avantage par rapport au niveau d’optimisation « -O2 ».
    • Une interface debugfs a été ajoutée pour obtenir des informations sur le fonctionnement des « réducteurs de mémoire » individuels (gestionnaires appelés lorsque la mémoire est insuffisante et compressant les structures de données du noyau pour réduire leur consommation de mémoire).
    • Pour les architectures OpenRISC et LoongArch, le support du bus PCI est implémenté.
    • Pour l'architecture RISC-V, l'extension « Zicbom » a été implémentée pour gérer les appareils avec DMA qui n'est pas cohérent avec le cache.
  • Virtualisation et sécurité
    • Un mécanisme de vérification RV (Runtime Verification) a été ajouté pour vérifier le bon fonctionnement sur des systèmes hautement fiables qui garantissent l'absence de panne. La vérification est effectuée au moment de l'exécution en attachant des gestionnaires à des points de trace qui vérifient la progression réelle de l'exécution par rapport à un modèle déterministe de référence prédéterminé de la machine qui définit le comportement attendu du système. La vérification avec le modèle au moment de l'exécution se positionne comme une méthode plus légère et plus facile à mettre en œuvre pour confirmer l'exactitude de l'exécution sur les systèmes critiques, complétant les méthodes classiques de vérification de la fiabilité. Parmi les avantages de RV figure la capacité de fournir une vérification stricte sans implémentation séparée de l'ensemble du système dans un langage de modélisation, ainsi qu'une réponse flexible aux événements imprévus.
    • Composants de noyau intégrés pour la gestion des enclaves basés sur la technologie Intel SGX2 (Software Guard eXtensions), qui permet aux applications d'exécuter du code dans des zones de mémoire cryptées isolées, auxquelles le reste du système a un accès limité. La technologie Intel SGX2 est prise en charge dans les puces Intel Ice Lake et Gemini Lake et diffère d'Intel SGX1 par des instructions supplémentaires pour la gestion dynamique de la mémoire des enclaves.
    • Pour l'architecture x86, la possibilité de transférer la graine du générateur de nombres pseudo-aléatoires via les paramètres du chargeur de démarrage a été implémentée.
    • Le module SafeSetID LSM a désormais la capacité de gérer les modifications apportées via l'appel setgroups(). SafeSetID permet aux services système de gérer les utilisateurs en toute sécurité sans élever les privilèges (CAP_SETUID) et sans obtenir les privilèges root.
    • Ajout de la prise en charge du chiffrement par bloc ARIA.
    • Le module de gestion de la sécurité basé sur BPF offre la possibilité d'attacher des gestionnaires à des processus individuels et à des groupes de processus (cgroups).
    • Un mécanisme avec une implémentation de surveillance a été ajouté pour détecter les blocages des systèmes invités en fonction de la surveillance de l'activité du vCPU.
  • Sous-système réseau
    • Des gestionnaires pour générer et vérifier les cookies SYN ont été ajoutés au sous-système BPF. Un ensemble de fonctions (kfunc) permettant d'accéder et de modifier l'état des connexions est également ajouté.
    • La pile sans fil prend en charge le mécanisme MLO (Multi-Link Operation), défini dans la spécification WiFi 7 et permettant aux appareils de recevoir et d'envoyer simultanément des données en utilisant différentes bandes de fréquences et canaux, par exemple, pour établir simultanément plusieurs canaux de communication entre un point d'accès à un appareil client.
    • Les performances du protocole TLS intégré au noyau ont été améliorées.
    • Ajout d'une option de ligne de commande du noyau "hostname=" pour permettre de définir le nom d'hôte au début du processus de démarrage, avant le démarrage des composants de l'espace utilisateur.
  • équipement
    • Le pilote i915 (Intel) prend en charge les cartes vidéo discrètes Intel Arc (DG2/Alchemist) A750 et A770. Une première implémentation de la prise en charge des GPU Intel Ponte Vecchio (Xe-HPC) et Meteor Lake a été proposée. Les travaux se poursuivent pour prendre en charge la plate-forme Intel Raptor Lake.
    • Le pilote amdgpu continue de prendre en charge les plates-formes AMD RDNA3 (RX 7000) et CDNA (Instinct).
    • Le pilote Nouveau a retravaillé le code de support des moteurs d'affichage GPU NVIDIA nv50.
    • Ajout d'un nouveau pilote Logicvc DRM pour les écrans LogiCVC.
    • Le pilote v3d (pour Broadcom Video Core GPU) prend en charge les cartes Raspberry Pi 4.
    • Ajout de la prise en charge du GPU Qualcomm Adreno 619 au pilote msm.
    • Ajout de la prise en charge du GPU ARM Mali Valhall au pilote Panfrost.
    • Ajout de la prise en charge initiale des processeurs Qualcomm Snapdragon 8cx Gen3 utilisés dans les ordinateurs portables Lenovo ThinkPad X13s.
    • Ajout de pilotes audio pour les plateformes AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake et Mediatek MT8186.
    • Ajout de la prise en charge des accélérateurs d'apprentissage automatique Intel Habana Gaudi 2.
    • Ajout de la prise en charge de ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Dans le même temps, la Fondation latino-américaine du logiciel libre a créé une version du noyau entièrement libre 6.0 - Linux-libre 6.0-gnu, débarrassée des éléments de firmware et des pilotes contenant des composants ou des sections de code non libres, dont la portée est limité par le fabricant. La nouvelle version désactive l'utilisation de blobs dans le pilote audio HD CS35L41 et le pilote UCSI pour les microcontrôleurs STM32G0. Les fichiers DTS pour les puces Qualcomm et MediaTek ont ​​été nettoyés. La désactivation des blobs dans le pilote MediaTek MT76 a été retravaillée. Code de nettoyage de blob mis à jour dans les pilotes et sous-systèmes AMDGPU, Adreno, Tegra VIC, Netronome NFP et Habanalabs Gaudi2. Arrêt du nettoyage du pilote VXGE, qui a été supprimé du noyau.

Source: opennet.ru

Ajouter un commentaire