La société Oracle a présenté la première version stable du Unbreakable Enterprise Kernel 8 (UEK R8), une variante du noyau Linux, développée pour être utilisée dans la distribution Oracle Linux comme alternative au paquet standard basé sur le noyau de Red Hat Enterprise Linux. Le noyau est disponible uniquement pour les architectures x86_64 et ARM64 (aarch64). Le code source du noyau, y compris la répartition en patchs individuels, a été publié dans le dépôt Git public d'Oracle.
Le package Unbreakable Enterprise Kernel 8 est basé sur le noyau Linux 6.12 (la version UEK R7 était basée sur le noyau 5.4, et la version bêta de RHEL 10 proposait le noyau 6.11), qui a été amélioré avec de nouvelles fonctionnalités, optimisations et corrections, et qui a également été vérifié pour sa compatibilité avec la plupart des applications fonctionnant sous RHEL, ainsi qu'optimisé pour travailler avec les logiciels et le matériel industriels d'Oracle. Les packages d'installation et src du noyau UEK R8 sont préparés pour Oracle Linux 9.5 (aucun obstacle à l'utilisation de ce noyau dans des versions similaires de RHEL, CentOS, Alma Linux et Rocky Linux).
Les principales nouveautés du Unbreakable Enterprise Kernel 8 :
- La séparation des composants du noyau UEK en packages individuels a été modifiée. Les modules du noyau sont séparés de l'image de base du noyau et regroupés dans des collectes fournies dans des packages distincts : kernel-uek-modules-core (minimum de base), kernel-uek-modules (pour serveurs), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb et kernel-uek-modules-wireless. Les utilitaires associés ont été déplacés du package de base kernel-uek-core vers le package distinct kernel-uek-tools. Les fichiers de configuration contenant la liste des modules interdits de chargement ont été renommés de 'blacklist' en 'denylist' dans le cadre de l'initiative visant à promouvoir une terminologie inclusive.
- Pour les systèmes ARM Ampere utilisés dans Oracle Cloud, un package de noyau distinct kernel-uek64k a été formé, où la taille de page mémoire de base a été augmentée de 4 à 64 Ko.
- Le support de l'implémentation matérielle du mécanisme EDMM (Enclave Dynamic Memory Management) fournie par Intel SGX2 (Software Guard Extensions) a été ajouté, permettant de gérer l'accès à des pages mémoire spécifiques dans l'enclave et d'ajouter/retirer dynamiquement des pages mémoire pour l'enclave.
- Le pilote Intel QAT, avec support des dispositifs Intel Quick Assist Technology (QAT), a ajouté le support pour la 4ème génération des processeurs Intel Xeon.
- Un système de détection des blocages « split-lock » a été ajouté, qui se produit lors de l'accès à des données non alignées en mémoire, lorsque, lors de l'exécution d'une instruction atomique, les données traversent deux lignes de cache CPU. De tels blocages entraînent une chute significative des performances (1000 cycles plus lent qu'une opération atomique avec des données se trouvant dans une seule ligne de cache).
- Une nouvelle méthode de protection contre la vulnérabilité Retbleed sur les CPU Intel et AMD a été mise en œuvre, utilisant le suivi de la profondeur des appels, ce qui n'affecte pas les performances autant que les protections contre Retbleed précédemment disponibles.
- Sur les systèmes x86, l'activation simultanée des cœurs secondaires du CPU a été assurée, ce qui a permis de réduire le temps de démarrage du noyau sur les systèmes dotés d'un grand nombre de cœurs.
- Un paramètre de ligne de commande du noyau « ia32_emulation » a été ajouté, permettant, au moment du démarrage, d'activer et de désactiver le support de l'émulation en mode 32 bits dans les noyaux compilés pour l'architecture x86-64.
- Par défaut, le planificateur de tâches EEVDF (Earliest Eligible Virtual Deadline First) remplace le CFS (Completely Fair Scheduler). Lors du choix du prochain processus à exécuter, le nouveau planificateur prend en compte les processus qui n'ont pas reçu suffisamment de ressources processeur ou qui en ont reçu trop injustement. Dans le premier cas, le contrôle est forcé au processus, tandis que dans le second, il est retardé. L'ancien planificateur CFS utilisait des heuristiques et des réglages fins pour déterminer quels processus nécessitaient une attention particulière, tandis que le nouveau planificateur suit ces derniers de manière plus explicite et ne nécessite pas de réglages raffinés. L'EEVDF permettra de réduire les latences lors de l'exécution de tâches qui posaient problème au niveau du planificateur CFS.
- La fourniture du système de débogage dynamique DTrace 2.0 a été poursuivie, qui a été révisé pour utiliser la sous-système du noyau eBPF. DTrace 2.0 fonctionne au-dessus de eBPF, semblable à la façon dont les outils de traçage existants fonctionnent au-dessus de eBPF sous Linux.
- Dans l'hyperviseur KVM, l'utilisation de jusqu'à 4096 CPU virtuels (VCPU) est désormais autorisée.
- L'utilisation de KTLS, l'implémentation du protocole TLS au niveau du noyau, a été poursuivie.
- La mise en œuvre du générateur de nombres aléatoires RDRAND, responsable du fonctionnement de l'appareil /dev/random, a été mise à jour pour utiliser la fonction de hachage BLAKE2s au lieu de SHA1 pour les opérations de mélange d'entropie. Ce changement a permis d'améliorer la sécurité du générateur de nombres aléatoires. Pour accélérer l'obtention de nombres aléatoires via l'appel système getrandom(), le mécanisme vDSO (objet partagé dynamique virtuel) a été utilisé, déplaçant le gestionnaire d'appels système de noyau vers l'espace utilisateur afin d'éviter les changements de contexte.
- Prise en charge ajoutée de l'extension BIG TCP, permettant d'augmenter la taille maximale des paquets TCP à 4 Go pour optimiser le fonctionnement des réseaux internes à haute vitesse des centres de données. Une telle augmentation de la taille des paquets avec une taille de champ de 16 bits dans l'en-tête est réalisée grâce à la mise en œuvre des 'jumbo'-paquets, dont la taille dans l'en-tête IP est fixée à 0, tandis que la taille réelle est transmise dans un champ séparé de 32 bits dans un en-tête joint.
- Pour les sockets réseau, l'option SO_RESERVE_MEM a été mise en œuvre, permettant de réserver un certain volume de mémoire pour le socket, qui restera toujours disponible et ne sera pas récupéré. L'utilisation de cette option permet d'augmenter les performances en réduisant le nombre d'opérations d'allocation et de retour de mémoire dans la pile réseau, surtout en cas de manque de mémoire dans le système.
- L'optimisation des performances du planificateur de paquets fq (Fair Queuing) a permis d'augmenter la capacité de traitement de 5 % sous de fortes charges lors du test tcp_rr (TCP Request/Response) et de 13 % lors d'un flux UDP illimité.
- Une réorganisation des structures réseau du noyau a été réalisée afin d'améliorer l'efficacité du cache de données du processeur, permettant d'augmenter les performances de la pile TCP sur les systèmes traitant un grand nombre de requêtes parallèles.
- Ajout de la prise en charge de la bibliothèque ASMLib 3 pour la gestion automatique du stockage dans les bases de données Oracle.
- Des travaux ont été réalisés pour optimiser les performances et améliorer la sécurité du mécanisme d'entrée/sortie asynchrone io_uring. Des optimisations basées sur io_uring ont été ajoutées pour les systèmes de fichiers XFS et Ext4, permettant l'écriture directe parallèle dans des fichiers via plusieurs threads.
- La prise en charge du système de fichiers Btrfs a été améliorée. Pour les appareils prenant en charge trim/discard, l'option de montage « discard=async » est activée par défaut, permettant d'effectuer ces opérations immédiatement pour tous les systèmes de fichiers en mode asynchrone. La prise en charge de l'envoi et de la réception de données compressées sans conversion a été ajoutée. La prise en charge de l'écriture en blocs de plus de 64 Ko a également été ajoutée. La gestion des quotas a été simplifiée. Le support du montage des appareils clonés a été mis en œuvre. Les vérifications d'écriture en mode NOCOW ont été améliorées (la bande passante a augmenté de 9 %). Des options de montage « ignoremetacsums » et « ignoresuperflags » ont été ajoutées pour ignorer les sommes de contrôle de métadonnées incorrectes et les indicateurs de superbloc. L'exécution des tâches de suppression d'appareils, d'équilibrage et de redistribution de blocs en mode parallèle a été assurée.
- Dans le système de fichiers XFS, l'utilisation d'une taille de bloc supérieure à celle de la page mémoire est autorisée. De grands compteurs d'étendues pour de très grands disques virtuels ont été ajoutés. Un mode d'engagement (commit) atomique du contenu des fichiers a été introduit. Une implémentation expérimentale de vérification (fsck) et de restauration en mode en ligne a été proposée.
- Dans NFS, l'utilisation de l'opération READ_PLUS, définie dans la spécification NFS 4.2 et utilisée pour une lecture plus efficace des données à partir de fichiers contenant des espaces vides, est désormais activée par défaut.
- Le système de gestion de la mémoire a été converti pour utiliser la structure de données des folios (folios de pages mémoire). Les folios ressemblent à des pages mémoire combinées (compound pages), mais se distinguent par une sémantique améliorée et une organisation de travail plus claire.
- Pour les opérations de mappage de la mémoire, la structure de données « maple tree » a été mise en œuvre, se positionnant comme un remplacement plus efficace de la structure « red-black tree ». Le maple tree est une variante de l'arbre B, prenant en charge l'indexation par plages de valeurs et conçu pour une utilisation efficace du cache. processeurs modernes.
- Dans mmap, des verrous au niveau de chaque VMA (Virtual Memory Area) ont été mis en œuvre, permettant d'augmenter les performances des applications multithread.
- Une structure de données ptdesc a été ajoutée, optimisant le travail avec les tables de pages mémoire en séparant les structures de métadonnées et de données pour les pages mémoire.
Source : opennet.ru
