4.9. Noyau
Version du noyau dans RHEL 9.1
Red Hat Enterprise Linux 9.1 est distribué avec la version 5.14.0-162 du noyau.
La consommation de mémoire du site list_lru
a été optimisée
La structure de données interne du noyau, list_lru
, suit l'état \N "Least Recently Used" (le moins récemment utilisé) des inodes du noyau et des entrées de répertoire pour les fichiers. Auparavant, le nombre de structures allouées list_lru
était directement proportionnel au nombre de points de montage et au nombre de mémoires présentes cgroups
. Ces deux chiffres augmentaient avec le nombre de conteneurs en cours d'exécution, ce qui entraînait une consommation de mémoire de O(n^2)
où n
est le nombre de conteneurs en cours d'exécution. Cette mise à jour optimise la consommation de mémoire de list_lru
dans le système à O(n)
. Par conséquent, les applications des utilisateurs disposent désormais de suffisamment de mémoire, en particulier sur les systèmes où un grand nombre de conteneurs sont en cours d'exécution.
(BZ#2013413)
BPF rebasé sur la version 5.16 du noyau Linux
Le filtre de paquets Berkeley (BPF) a été rebasé sur la version 5.16 du noyau Linux avec de nombreuses corrections de bogues et améliorations. Les changements les plus notables sont les suivants :
Rationalisation de la gestion interne des sections du programme BPF et de l'API
bpf_program__set_attach_target()
dans la bibliothèque userspacelibbpf
.L'API
bpf_program__set_attach_target()
définit les objectifs de rattachement basés sur le BTF pour les programmes basés sur le FBP.-
Ajout de la prise en charge du type
BTF_KIND_TAG
, qui permet de baliser les déclarations. -
Ajout de la prise en charge de l'aide
bpf_get_branch_snapshot()
, qui permet au programme de traçage de capturer les derniers enregistrements de branche (LBR) à partir du matériel. -
Ajout de la prise en charge des anciens événements
kprobe
dans la bibliothèque de l'espace utilisateurlibbpf
, qui permet la création d'événements de points de contrôlekprobe
par l'intermédiaire de l'interface existante. -
Ajout de la possibilité d'accéder aux horodatages matériels par le biais de structures spécifiques à BPF avec la fonction d'aide
__sk_buff
. -
Ajout de la prise en charge d'une interface par lots pour l'allocation de tampons RX dans le pool de tampons
AF_XDP
, avec la prise en charge des pilotes pouri40e
etice
. -
Ajout du support de l'ancienne version de
uprobe
dans la bibliothèque de l'espace utilisateur delibbpf
pour compléter l'ancienne version dekprobe
récemment fusionnée. -
Ajout de l'aide
bpf_trace_vprintk()
comme aide variadiqueprintk
. -
Ajout de l'option
libbpf
pour une gestion plus stricte des noms de sections de programmes BPF dans le cadre de l'effortlibbpf
1.0. -
Ajout du support
libbpf
pour localiser les cartes spécialisées, telles queperf RB
et supprimer en interne les identifiants de type BTF lors de leur création. -
Ajout du type de carte
bloomfilter
BPF pour tester l'existence d'un élément dans un ensemble. - Ajout de la prise en charge des appels de fonctions de modules du noyau à partir de BPF.
-
Ajout de la prise en charge de
ksym
sans type et faible dans le squelette léger. -
Ajout de la prise en charge du type
BTF_KIND_DECL_TAG
.
Pour plus d'informations sur la liste complète des fonctionnalités BPF disponibles dans le noyau en cours d'exécution, utilisez la commande bpftool feature
.
(BZ#2069045)
Les données BTF se trouvent désormais dans le module du noyau
BPF Type Format (BTF) est le format de métadonnées qui encode les informations de débogage relatives au programme et à la carte BPF. Auparavant, les données BTF pour les modules du noyau étaient stockées dans le paquetage kernel-debuginfo
. Par conséquent, il était nécessaire d'installer le paquetage kernel-debuginfo
correspondant afin d'utiliser le BTF pour les modules du noyau. Avec cette mise à jour, les données BTF sont maintenant situées directement dans le module du noyau. Par conséquent, vous n'avez pas besoin d'installer d'autres paquets pour que BTF fonctionne.
(BZ#2097188)
L'arborescence des sources de kernel-rt
a été mise à jour vers l'arborescence RHEL 9.1
Les sources de kernel-rt
ont été mises à jour pour utiliser la dernière arborescence des sources du noyau Red Hat Enterprise Linux. Le jeu de correctifs en temps réel a également été mis à jour vers la dernière version en amont, v5.15-rt
. Ces mises à jour apportent un certain nombre de corrections de bogues et d'améliorations.
(BZ#2061574)
Programmation dynamique préemptive activée sur les architectures ARM, AMD et Intel 64 bits
RHEL 9 offre la fonction de planification dynamique sur les architectures ARM, AMD et Intel 64 bits. Cette amélioration permet de modifier le mode de préemption du noyau au démarrage ou au moment de l'exécution plutôt qu'au moment de la compilation. Le fichier /sys/kernel/debug/sched/preempt
contient la configuration actuelle et permet de modifier runtime
.
En utilisant l'option DYNAMIC_PREEMPT
, vous pouvez définir la variable preempt=
au démarrage sur none
, voluntary
ou full
, la préemption voluntary
étant la valeur par défaut. Grâce à la gestion dynamique de la préemption, vous pouvez remplacer le modèle de préemption par défaut afin d'améliorer la latence de l'ordonnancement.
(BZ#2065226)
stalld
repassé à la version 1.17
Le programme stalld
, qui fournit le démon stall
, est un mécanisme permettant d'éviter l'état de famine des threads du système d'exploitation dans un système Linux. Cette version surveille les threads pour l'état de famine. L'état de famine survient lorsqu'un thread se trouve dans la file d'attente d'exécution du processeur pendant une durée supérieure au seuil de famine.
Cette version stalld
comprend de nombreuses améliorations et corrections de bogues par rapport à la version précédente. Le changement le plus notable est la possibilité de détecter les tâches mourantes exécutables.
Lorsque stalld
détecte un thread affamé, le programme change la classe d'ordonnancement du thread pour la politique SCHED_DEADLINE
, qui donne au thread une petite tranche de temps pour que l'unité centrale spécifiée l'exécute. Lorsque timeslice
est utilisé, le thread revient à sa politique d'ordonnancement d'origine et stalld
continue à surveiller les états du thread.
Le paquet tpm2-tools
a été rebasé sur la version tpm2-tools-5.2-1
Le paquetage tpm2-tools
a été rebasé vers la version tpm2-tools-5.2-1
. Cette mise à jour apporte de nombreuses améliorations significatives et des corrections de bogues. Les changements les plus notables sont les suivants :
-
Prise en charge de l'émission de clés publiques lors de la création d'objets primaires à l'aide des outils
tpm2_createprimary
ettpm2_create
. -
Prise en charge de l'outil
tpm2_print
pour l'impression des formats de sortie des clés publiques.tpm2_print
décode une structure de données Trusted Platform Module (TPM) et imprime les éléments inclus. -
L'outil
tpm2_eventlog
prend en charge la lecture des journaux de plus de 64 Ko. -
Ajout de l'outil
tpm2_sessionconfig
qui permet d'afficher et de configurer les attributs de la session.
Pour plus d'informations sur les changements notables, voir le fichier /usr/share/doc/tpm2-tools/Changelog.md
.
(BZ#2090748)
Les appareils Intel E800 prennent désormais en charge les protocoles iWARP et RoCE
Avec cette amélioration, vous pouvez désormais utiliser les paramètres enable_iwarp
et enable_roce
devlink pour activer et désactiver la prise en charge des protocoles iWARP ou RoCE. Grâce à cette fonctionnalité obligatoire, vous pouvez configurer l'appareil avec l'un des protocoles. Les appareils Intel E800 ne supportent pas les deux protocoles simultanément sur le même port.
Pour activer ou désactiver le protocole iWARP pour un appareil E800 spécifique, il faut d'abord obtenir l'emplacement PCI de la carte :
$ lspci | awk '/E810/ {print $1}' 44:00.0 44:00.1 $
Ensuite, activez ou désactivez le protocole. Vous pouvez utiliser pci/0000:44:00.0
pour le premier port, et pci/0000:44:00.1
pour le second port de la carte comme argument à la commande devlink
$ devlink dev param set pci/0000:44:00.0 name enable_iwarp value true cmode runtime $ devlink dev param set pci/0000:44:00.0 name enable_iwarp value false cmode runtime
Pour activer ou désactiver le protocole RoCE pour un périphérique E800 spécifique, obtenez l'emplacement PCI de la carte comme indiqué ci-dessus. Utilisez ensuite l'une des commandes suivantes :
$ devlink dev param set pci/0000:44:00.0 name enable_roce value true cmode runtime $ devlink dev param set pci/0000:44:00.0 name enable_roce value false cmode runtime
(BZ#2096127)