Linux 6.14

Linux 6.14

Après deux mois de développement, Linus Torvalds présenté Publication du noyau Linux 6.14. Parmi les changements les plus remarquables : le pilote ntsync avec des primitives de synchronisation Windows NT, la configuration de l'équilibrage des opérations de lecture dans Btrfs RAID1, la prise en charge de reflink dans XFS en mode temps réel, la possibilité d'E/S mise en mémoire tampon non mise en cache, dmem cgroup pour limiter la mémoire GPU, utilisation de io_uring dans FUSE, délégation d'attributs dans NFS, prise en charge de l'écriture atomique dans Device mapper, acceleration des liens symboliques, contrôle de l'exécution de scripts, prise en charge des puces Qualcomm Snapdragon 8 Elite, pilote pour NPU AMD.

La nouvelle version comprend 12115 corrections de 1984 développeurs, la taille du correctif est de 39 Mo (les modifications concernent 10170 fichiers, 531586 lignes de code ajoutées, 235999 lignes supprimées). La version précédente comptait 14172 corrections de 2086 développeurs, la taille du correctif était de 46 Mo. Environ 41 % des changements présentés dans 6.14 concernent les pilotes de périphériques, environ 13 % des changements sont liés à la mise à jour de code spécifique aux architectures matérielles, 14 % concernent la pile réseau, 7 % sont liés aux systèmes de fichiers et 4 % aux sous-systèmes internes du noyau.

Principales nouveautés:

  • Sous-système de disque, entrée/sortie et systèmes de fichiers
    • Dans le système de fichiers Btrfs est désormais prise en charge de nouvelles méthodes d'équilibrage des opérations de lecture entre les périphériques de la matrice RAID1. En plus de la répartition de charge existante basée sur les identifiants de processus (pid), la nouvelle version propose trois nouveaux modes d'équilibrage : « rotation » (répartition uniforme de la charge entre tous les périphériques, mode activé par défaut) ; « latence » (répartition selon les latences, pouvant être utile en cas de pannes ou de fonctionnement instable des périphériques) ; devid (gestion manuelle). Pour modifier le mode d'équilibrage ajouté l'interface /sys/fs/btrfs//read_policy. Parmi les autres changements dans Btrfs - implémentation ioctl FS_IOC_READ_VERITY_METADATA.
    • Ajouté mode d'E/S mise en mémoire tampon non mise en cache, où les données sont supprimées du cache des pages immédiatement après la fin des opérations de lecture ou d'écriture. Ce changement peut être utile lors de l'utilisation de dispositifs de stockage très rapides, dont la mise en cache des opérations dans la mémoire vive est superflue. Pour ces dispositifs, le nouveau mode permet d'éviter le gaspillage inutile de mémoire par le cache des pages sans avoir recours à l'utilisation d'une API d'E/S directe (Direct I/O) complexe.
    • Dans fsnotify, le mécanisme de suivi des changements dans le FS, ajouté un nouvel événement FS_PRE_ACCESS, généré au stade d'accès au contenu d'un fichier. L'événement est traité en mode synchrone, c'est-à-dire que le noyau envoie l'événement et attend de recevoir une réponse. Si la réponse est reçue, l'opération est exécutée, et en cas d'échec, l'appel système retourne un code d'erreur à l'espace utilisateur. Grâce à FS_PRE_ACCESS, le processus dans l'espace utilisateur peut, par exemple, organiser le remplissage du fichier au fur et à mesure de la disponibilité des données dans le stockage lent.
    • Ajouté à la sous-système FUSE, permettant de créer des implémentations de systèmes de fichiers dans l'espace utilisateur la prise en charge l'échange de données entre le noyau et le gestionnaire dans l'espace utilisateur en utilisant le mécanisme d'entrée/sortie io_uring. Ce changement permet d'améliorer la performance de FUSE en réduisant les commutations de contexte entre le noyau et l'espace utilisateur.
    • Ajouté au système de fichiers XFS la possibilité l'utilisation du mappage inverse (rmap, reverse-mapping) en mode de fonctionnement avec des délais prévisibles (« dispositif temps réel »). Le mappage inverse permet de déterminer quel fichier utilise un bloc spécifique sur le dispositif de stockage. Avec rmap, le mode temps réel de XFS implémente le support de l'opération reflink, permettant de créer des copies de fichiers en clonant les métadonnées du fichier et en créant un lien vers les données existantes sans les copier réellement.
    • Dans VFS a été mise en œuvre la mise en cache de la taille des liens symboliques, permettant d'accélérer l'exécution de l'opération readlink de 1,5 % (dans le test avec /initrd.img dans ext4). La mise en cache est activée dans les systèmes de fichiers ext4 et tmpfs.
    • Dans l'implémentation de NFSv4.2, ajout de la prise en charge de la délégation des attributs de fichiers, permettant de gérer des attributs de fichiers tels que le temps de modification (mtime) du côté du client NFS, sans avoir besoin de réinitialiser les modifications sur le serveur. Dans NFS, le support du protocole a également été amélioréLOCALIOpermettant de déterminer si le client et le serveur NFS se trouvent sur le même hôte, afin de mettre en œuvre les optimisations appropriées, telles que l'utilisation par le client de l'entrée/sortie directe (Direct I/O).
    • Amélioration de les performances des opérations de lecture dans les systèmes de fichiers NETFS, CIFS et AFS (Andrew File System).
    • Dans Squashfs est inclus mode de chargement direct des blocs dans le cache de page (SQUASHFS_FILE_DIRECT), permettant de ne pas nécessiter un cache séparé read_page. Ce changement a permis de réduire la taille de la mémoire utilisée lors du fonctionnement de Squashfs.
    • dans l'appel système statx() mis en œuvre le drapeau STATX_DIO_READ_ALIGN, pour déterminer l'alignement requis pour les opérations de lecture à partir d'un fichier.
    • dans le système de fichiers Bcachefs a été mis à jour et stabilisé format des structures de disque. Tout changement ultérieur du format sera classé comme optionnel et sera mis en œuvre sous forme d'extensions facultatives. La vitesse de vérification de l'intégrité du FS a été considérablement améliorée. De plus, dans Bcachefs, le fonctionnement en mode lecture seule a été amélioré; les problèmes conduisant à un accès à la mémoire après libération (use after free) ont été résolus; les problèmes avec les pointeurs reflink dans fsck ont été corrigés; le traitement du redémarrage des transactions a été corrigé.
    • Restauré le module md-linear, destiné à combiner des dispositifs de blocs. Ce module avait été déclaré obsolète et supprimé du noyau 6.8, mais s'est avéré être demandé, et donc il a été restauré.
    • Les systèmes de fichiers F2FS et SQUASHFS ont été convertis pour utiliser folios de pages mémoire (folios de page).
    • Dans le pilote null_blk l'attribut «rotational» a été mis en œuvre, défini via configfs et permettant de simuler le fonctionnement avec un appareil basé sur des disques tournants pour faciliter les tests des fonctions du noyau.
    • Dans le système Device mapper et dans les modules dm-mirror, dm-io, dm-table, dm-linear, dm-stripe et dm-raid1 réalisée support de l'écriture atomique.
  • Mémoire et services système
    • Terminé intégration dans le noyau du pilote ntsync, mettant en œuvre le dispositif symbolique /dev/ntsync et un ensemble de primitives de synchronisation utilisées dans le noyau Windows NT. La mise en œuvre de telles primitives au niveau du noyau permet d'améliorer considérablement les performances des jeux Windows exécutés via Wine. L'augmentation des performances est obtenue en éliminant les frais généraux associés à l'utilisation de RPC dans l'espace utilisateur. La création d'un pilote distinct pour le noyau Linux s'explique par la difficulté de réaliser correctement l'API de synchronisation NT sur les primitives existantes dans le noyau.
    • Ajout d'un nouveau contrôleur cgroup DMEM pour la comptabilisation distincte des zones mémoire des dispositifs, comme le GPU. DMEM permet de créer des cgroups séparés pour différentes tâches utilisant le GPU, afin qu'elles puissent s'exécuter sans interférer les unes avec les autres. Cette nouvelle fonctionnalité résout le problème de l'arrêt forcé des opérations GPU lors de l'épuisement de la mémoire disponible, grâce à la prise en compte de la mémoire GPU réfléchie et de la mémoire utilisée par les pilotes CPU dans des cgroups séparés.
    • Des optimisations ont été apportées à l'échelle d'opération de vidage (flush) du cache TLB (Translation Lookaside Buffer), utilisé pour accélérer la conversion des adresses virtuelles en adresses physiques. Les optimisations ajoutées consistent en une mise à jour différée de certaines structures de données lors du changement de contexte, ce qui permet d'améliorer les performances lors de la réalisation de certains tests.
    • Amélioration de la performance du mécanisme MGLRU (Multi-Generational LRU), utilisé pour déterminer quelles pages de mémoire sont utilisées et quelles pages peuvent être évacuées dans l'espace d'échange.
    • La migration des changements de la branche Rust-for-Linux, liées à l'utilisation du langage Rust comme second langage pour le développement de pilotes et de modules du noyau (la prise en charge de Rust n'est pas activée par défaut et n'entraîne pas l'inclusion du Rust parmi les dépendances de construction obligatoires du noyau). Il est désormais possible d'utiliser dans le code du noyau le macros «derive(CoercePointee)», permettant d'utiliser des pointeurs intelligents avec des objets trait. Au sein du noyau est inclus des liaisons Rust pour PCI, les plates-formes, Open Firmware, des dispositifs symboliques et de certaines fonctions d'entrée/sortie. Greg Kroah-Hartman, responsable de la prise en charge de la branche stable du noyau Linux, a caractérisé l'état actuel comme « presque prêt à écrire un véritable pilote en Rust ».
    • Dans les scénarios de construction, a été proposé un nouveau code pour générer des versions de symboles de débogage pour les modules chargés, qui utilise désormais les informations d'enregistrement de débogage au format DWARF, et ne décompose plus le code source directement. Ce changement permet d'appliquer la version des symboles de débogage pour les modules écrits en Rust. L'ancienne mise en œuvre est également conservée dans le noyau, et le choix du générateur se fait au niveau des options de construction.
    • Pour l'architecture PowerPC réalisée prise en charge du mode de préemption paresseuse (PREEMPT_LAZY, lazy preemption), qui correspond au mode de préemption totale (« full preemption ») pour les tâches en temps réel (RR/FIFO/DEADLINE), mais retarde la préemption des tâches normales (SCHED_NORMAL) jusqu'à la limite de tick.
    • dans le sous-système de profilage des performances perf ajouté prise en charge des compteurs de consommation d'énergie des processeurs AMD. Ajouté capacité à fonctionner sur des systèmes comptant jusqu'à 2048 cœurs CPU.
    • Fournie possibilité d'utiliser le paramètre sysctl pid_max avec des espaces de noms d'identifiants de processus (ID namespace). Le paramètre pid_max est destiné à limiter la valeur maximale des identifiants de processus (PID) et peut maintenant être utilisé pour limiter le nombre maximal de processus pouvant être lancés dans l'espace de noms spécifié. Le traitement de ce paramètre se fait de manière hiérarchique, c'est-à-dire que les restrictions dans les espaces de noms externes s'appliquent aux espaces de noms imbriqués.
    • Lors de l'utilisation de l'appel système execveat dans le système de fichiers /proc, le nom du fichier lancé sera affiché au lieu du numéro du descripteur de fichier.
    • Dans le code source du noyau (dans le répertoire samples), un utilitaire mountinfo a été ajouté, démontrant l'utilisation des appels système statmount() et listmount().
    • Dans le sous-système BPF sont proposés nouvelles fonctions bpf_local_irq_save() et bpf_local_irq_restore() pour désactiver temporairement les interruptions sur le CPU local. Ces fonctions peuvent être utilisées pour implémenter des structures dont le traitement n'est pas suspendu par les interruptions.
    • Dans l'appel système madvise() lors de l'utilisation des flags MADV_DONTNEED et MADV_FREE garanti la libération des tables de pages mémoire associées à une plage d'adresses libérée, car dans certaines situations, des pages mémoire vides peuvent occuper une quantité significative de mémoire.
    • Pour l'architecture OpenRISC, la prise en charge du mécanisme de séquences redémarrables (rseq, restartable sequences), conçu pour une exécution atomique rapide des opérations, qui en cas d'interruption par un autre thread sont nettoyées et une nouvelle tentative d'exécution est entreprise.
    • réorganisation du code avec mise en œuvre des algorithmes CRC32 et CRC-T10DIF, qui ne se chevauche plus avec le sous-système crypto et est appelé directement à partir de l'interface de la bibliothèque. Ce changement a permis de simplifier le code et d'améliorer son efficacité.
    • Dans le système d'E/S asynchrone io_uring ajouté interface pour la transmission de métadonnées supplémentaires sur l'intégrité lors de l'exécution des opérations de lecture et d'écriture.
  • Virtualisation et sécurité
    • Dans l'appel système execveat ajouté le drapeau AT_EXECVE_CHECK, permettant d'effectuer une vérification de la validité de l'exécution du fichier sans le lancer réellement, mais en tenant compte des politiques de sécurité, des droits d'accès et des modules LSM actifs. Pour une utilisation avec AT_EXECVE_CHECK, les drapeaux securebit SECBIT_EXEC_RESTRICT_FILE et SECBIT_EXEC_DENY_INTERACTIVE sont proposés, qui peuvent être utilisés pour limiter l'exécution de fichiers avec des scripts dans des langages de programmation interprétés. Le drapeau SECBIT_EXEC_RESTRICT_FILE exige des lieurs et interprètes d'utiliser l'option AT_EXECVE_CHECK pour vérifier la validité de l'exécution, tandis que le drapeau SECBIT_EXEC_DENY_INTERACTIVE interdit le traitement des commandes interactives. L'idée principale de la modification est d'appliquer des politiques de sécurité non seulement aux fichiers exécutables traditionnels, mais aussi aux fichiers texte contenant des scripts, qui peuvent être chargés via le lancement de l'interpréteur (c'est-à-dire que l'interdiction d'exécution peut être réalisée non seulement lors de l'exécution de './script.sh' mais aussi sous la forme 'sh script.sh').
    • Sur les systèmes x86, un soutien aux compteurs de temps protégés pour les systèmes invités a été mis en œuvre, empêchant la modification des horloges système des systèmes invités depuis l'environnement hôte. La possibilité est réalisée sur la base du mécanisme AMD SEV (Virtualisation Écrite Sécurisée), utilisé dans les systèmes de virtualisation pour protéger les machines virtuelles des interférences du hyperviseur ou de l'administrateur du système hôte.
    • Dans le système de contrôle d'accès obligatoire SELinux ajouté la prise en charge règles xperm, permettant de lier les politiques SELinux à des appels ioctl() ou messages netlink spécifiques.
    • Pour la certification des modules du noyau par signature numérique, l'algorithme par défaut est activé est SHA512.
    • Dans les pilotes pour systèmes invités VirtualBox sont incluses. le support de l'architecture ARM64.
    • Dans l'hyperviseur KVM poursuivie travail au développement du mécanisme Intel TDX (Extensions de Domaine de Confiance) pour le chiffrement de la mémoire des systèmes invités.
    • Dans virtio_blk ajouté le support du mode de récupération des erreurs.
  • Sous-système réseau
    • Dans l'implémentation du protocole RxRPC est désormais la possibilité d'utiliser des trames UDP de grande taille pour améliorer la bande passante.
    • Pour TCP, le support de l'algorithme RACK-TLP pour la détection de perte de paquets.
    • Ajouté un nouveau paramètre sysctl tcp_tw_reuse_delay, valable dans le cadre d'un espace de noms réseau (network namespace) et permettant de définir le délai avant que le système puisse réutiliser un numéro de port réseau après la fermeture d'un socket TCP.
    • Ajouté possibilité de choisir un fournisseur de temps précis (PTP) pour générer des horodatages aux niveaux PHY et MAC.
    • Pour IPsec réalisée prise en charge du mécanisme d'agrégation et de fragmentation des paquets IP encapsulés – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • Dans le système de sockets réseau ajouté la prise en charge transmission d'informations sur la priorité (SO_PRIORITY) sous forme de messages de contrôle (cmsg — control messages). Pour les sockets réseau ajouté l'option SO_RCVPRIORITY, qui inclut dans la fonction recvmsg() la transmission d'informations sur la priorité du socket.
  • Matériel
    • Ajouté un moteur amdxdna pour les unités de traitement neural (NPU) intégrées au CPU AMD, basées sur l'architecture XDNA, conçues pour accélérer les opérations liées à l'apprentissage automatique. Le NPU basé sur l'architecture XDNA est disponible dans les séries 7040 et 8040 des processeurs AMD Ryzen, les accélérateurs AMD Alveo V70 et SoC AMD Versal.
    • Dans le pilote i915 ajoutées des identifiants de nouveaux GPU, un gestionnaire de pannes d'initialisation HDMI a été mis en œuvre, la fiabilité de réinitialisation des moteurs GPU sur Haswell et les anciens systèmes a été améliorée.
    • Poursuivie travail sur le pilote drm (Direct Rendering Manager) Xe pour les GPU basés sur l'architecture Intel Xe, qui est utilisé dans les cartes graphiques Intel de la famille Arc et la graphique intégrée, à partir des processeurs Tiger Lake.
    • Le pilote Nouveau a ajouté la possibilité de transférer des buffers avec des logs GSP-RM via debugfs.
    • Le pilote AMDGPU a mis en œuvre la prise en charge du mécanisme DRM panic, affichant une sorte de « écran bleu de la mort » lors des pannes. La préparation pour la prise en charge de la future série de cartes graphiques Radeon RX 9000 basées sur l'architecture RDNA4 a été poursuivie. La prise en charge de DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS et ISP a été mise à jour.
    • Dans le pilote DRM msm (GPU Qualcomm Adreno), la prise en charge de la plateforme Qualcomm SM6150 (QCS615) a été ajoutée.
    • Dans le pilote DRM panfrost, la prise en charge du SoC MediaTek MT8188 avec GPU Mali-G57 a été ajoutée.
    • Dans le pilote DRM vc4, la prise en charge du SoC Broadcom BCM2712 (Raspberry Pi 5) a été ajoutée.
    • Dans le pilote vfio nvgrace-gpu ajouté la prise en charge des puces NVIDIA Grace Blackwell 200.
    • Comprend le est inclus pilote pour les contrôleurs Intel THC (Touch Host Controller), utilisé pour interagir avec les écrans tactiles et les pavés tactiles sur certains ordinateurs portables. Support ajouté pour les appareils Wacom avec interface PCI. Ajouté prise en charge des contrôleurs de jeu QH Electronics.
    • Ajouté la prise en charge Plates-formes ARM, SoC et appareils : Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Support SoC ajouté. SpacemiT K1 basé sur l'architecture RISC-V.
    • Dans le sous-système audio ALSA pour MIDI 2.0. étendu API rawmidi et séquenceur. Dans l'API pour le déport des opérations de compression vers la carte son, le support ASRC (Conversion Asynchrone de Taux d'Échantillonnage) a été ajouté.
    • Ajout du support des systèmes audio des appareils Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 et 18i20. Ajouté support des écouteurs sans fil SteelSeries Arctis 9.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster