Sortie du noyau Linux 6.13

Après deux mois de développement, Linus Torvalds a présenté la sortie du noyau Linux 6.13. Parmi les changements les plus notables : le mode de suppression paresseuse dans le planificateur de tâches, le support d'écriture atomique dans XFS et Ext4, le mécanisme des « multigrain timestamps », le mode adaptatif d'activation de polling dans le sous-système réseau, la possibilité de compilation avec les optimisations AutoFDO, le support du mécanisme de protection ARM64 Guarded Control Stack, l'isolation des machines virtuelles via l'extension ARM CCA, des piles séparées dans BPF, la suppression de ReiserFS, le pilote virtual-cpufreq, l'API netlink net-shaper, le mode de montage tmpfs sensible à la casse, le support des extensions POSIX dans SMB3, et le pilote AMD Cache Optimizer.

La nouvelle version contient 14172 corrections de 2086 développeurs, la taille du patch étant de 46 Mo (les modifications ont concerné 15375 fichiers, 598707 lignes de code ajoutées et 406294 lignes supprimées). Dans la précédente version, il y avait 14607 corrections de 2167 développeurs, avec une taille de patch de 37 Mo. Environ 52% de tous les changements présentés dans la version 6.13 concernent des pilotes de périphériques, environ 13% sont liés à la mise à jour du code spécifique aux architectures matérielles, 11% concernent le réseau, 4% les systèmes de fichiers et 3% les sous-systèmes internes du noyau.

Les principales nouveautés du noyau 6.13 :

  • Sous-système de disque, entrée/sortie et systèmes de fichiers
    • Ajout du mécanisme des « multigrain timestamps », permettant d'obtenir des informations sur le temps de modification ou d'accès aux fichiers avec une précision supérieure à celle de la milliseconde, sans nuire aux performances. L'augmentation de la précision des horodatages entraîne des coûts supplémentaires en raison de l'augmentation de l'intensité des écritures de métadonnées sur le disque ; donc, dans l'implémentation proposée, des horodatages plus précis ne sont créés que pour les fichiers dont les processus demandent de tels horodatages via l'appel getattr().
    • Ajout du support des opérations d'écriture atomiques, où l'écriture de données, dont la taille dépasse celle d'un secteur, est effectuée de manière atomique sur les dispositifs de stockage qui offrent cette possibilité. Actuellement, l'écriture atomique est implémentée pour XFS, Ext4 en mode O_DIRECT (Direct I/O) et md RAID 0/1/10.
    • Un nouveau mécanisme de comptage des références pour les fichiers a été proposé, offrant un gain de performance de 3 à 5 % dans les charges de travail comptant plus de 255 threads.
    • La mise en œuvre du système de fichiers ReiserFS a été supprimée, ayant été déclarée obsolète l'année précédente.
    • Ajouté le paramètre sysctl « fs.dentry-negative » pour définir les politiques de nettoyage des entrées « dentry » dans le VFS (représentation interne des éléments de répertoires) après la suppression des fichiers associés. Pour certains types de charge, il est plus optimal de conserver ces entrées de fichiers supprimés, tandis que pour d'autres, il est préférable de les éliminer. Le noyau offre donc un choix (par défaut, les « dentry » ne sont pas supprimées automatiquement).
    • Le drapeau STATMOUNT_OPT_ARRAY a été ajouté à l'appel système statmount() pour renvoyer une liste d'options de système de fichiers au format tableau de chaînes se terminant par un caractère nul et sans utiliser d'échappement « \000 ». Prise en charge de la renvoie du sous-type de FS (fs_subtype, pour déterminer l'utilisation de FUSE), des options de montage sécurisé et du superbloc source (sb_source).
    • Dans OverlayFS, il est maintenant possible de spécifier des couches via des descripteurs de fichiers, plutôt que par des noms de chemins de fichiers.
    • Dans le système de fichiers tmpfs, l'option de montage « casefold » a été ajoutée pour fonctionner sans distinction de casse, ainsi que l'option « strict_encoding » pour bloquer la création de fichiers avec des noms contenant des caractères UTF-8 incorrects.
    • Un nouvel ensemble d'appels systèmes a été proposé pour gérer les attributs étendus des fichiers : setxattrat(), getxattrat(), listxattrat() et removexattrat(). Contrairement aux appels systèmes setxattr(), getxattr(), listxattr() et removexattr(), les nouvelles variantes nécessitent la spécification d'un descripteur de fichier de répertoire par rapport auquel le chemin du fichier est recherché.
    • Dans Btrfs, l'opération ioctl BTRFS_IOC_SUBVOL_SYNC_WAIT a été ajoutée, permettant d'attendre la fin du nettoyage des sous-volumes, ce qui permet d'exécuter la commande « btrfs subvolume sync » par un utilisateur non privilégié n'ayant pas accès à ioctl SEARCH_TREE (utile dans les applications de sauvegarde qui nettoient les sous-volumes). L'opération ioctl ENCODED_READ a été ajoutée pour lire via io_uring des données encodées, par exemple, pour lire directement des étendues compressées sans les décompresser. Le travail a continué sur la transition vers l'utilisation de folios de pages mémoire. La survenue de contentions de verrouillage a été réduite lors de la recherche de références inversées intégrées et lors de l'itération sur les tampons d'étendues. L'efficacité de la compression de la carte d'étendues a été améliorée.
    • Dans le système de fichiers EROFS (Extendable Read-Only File System), conçu pour être utilisé sur des partitions accessibles en mode lecture seule, la possibilité d'utiliser les options SEEK_HOLE et SEEK_DATA dans l'appel système lseek() a été mise en œuvre.
    • F2FS a ajouté la prise en charge de l'aliasing de dispositifs, permettant de réserver temporairement une zone dans F2FS pour utiliser une partie d'un dispositif de bloc dans un autre système de fichiers. Après l'achèvement de l'opération externe, la zone réservée peut être restituée à F2FS. Par exemple, on peut créer un système de fichiers avec la commande « mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb », après quoi le contenu du dispositif /dev/vdc sera réservé et reflété dans le fichier vdc.file, et la partition /dev/vdc pourra être utilisée pour d'autres besoins, comme la formater sous un autre système de fichiers. Pour restituer le contenu réservé, il suffit de supprimer le fichier vdc.file.
    • XFS a été dotée du support des quotas pour les dispositifs en temps réel. Le support d'un répertoire de métadonnées a été ajouté, où tous les inodes des métadonnées sont stockés.
    • Le mécanisme FUSE a intégré la possibilité de modifier dynamiquement le nombre maximal de pages (FUSE_MAX_MAX_PAGES) en utilisant « sysctl fs.fuse.max_pages_limit ». Le mécanisme utilise des folios de pages mémoire.
    • SMB a mis en œuvre le support des extensions POSIX pour SMB3, nécessaires à la gestion de types de fichiers spéciaux, tels que fifo, fichiers de dispositifs et liens symboliques. La possibilité de monter une partition avec un mot de passe alternatif, utilisé lors de la rotation des mots de passe, a été ajoutée. Une nouvelle option de montage « cifs.upcall » a été introduite pour définir l'espace de noms. La reconnaissance des fichiers de dispositifs de caractères et de blocs, créés dans Windows NFS Server, a été assurée. La prise en charge des liens symboliques au style WSL (Windows Subsystem for Linux) a été ajoutée.
    • Les systèmes de fichiers UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS et ECRYPTFS ont été convertis pour utiliser la nouvelle API de montage des partitions.
    • Les systèmes de fichiers et ECRYPTFS, UFS et NILFS2 ont été convertis pour utiliser des folios de pages mémoire.
  • Mémoire et services système
    • Dans le planificateur, un modèle de préemption paresseuse (PREEMPT_LAZY, lazy preemption) a été implémenté, qui correspond au modèle de préemption complète (« full preemption ») pour les tâches temps réel (RR/FIFO/DEADLINE), mais retarde la préemption des tâches normales (SCHED_NORMAL) jusqu'à la limite de l'horloge. Ce retard réduit les cas de préemption des détenteurs de verrous, ce qui permet d'approcher les performances des configurations utilisant un modèle de préemption volontaire (voluntary preemption). Ainsi, ce nouveau modèle conserve les capacités de préemption complète pour les tâches temps réel, tout en minimisant la dégradation des performances pour les tâches normales. De plus, le nouveau modèle simplifie la logique des opérations de préemption des tâches dans le noyau, grâce à l'exclusion des gestionnaires situés dans d'autres composants du noyau (en dehors du planificateur de tâches).
    • Lors de la compilation avec le compilateur Clang, la possibilité d'utiliser des optimisations a été fournie.

      Source : opennet.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