Chapitre 5. Changements importants dans les paramètres externes du noyau
Ce chapitre fournit aux administrateurs système un résumé des changements significatifs apportés au noyau distribué avec Red Hat Enterprise Linux 9.1. Ces changements peuvent inclure, par exemple, des entrées proc
ajoutées ou mises à jour, des valeurs par défaut sysctl
et sysfs
, des paramètres de démarrage, des options de configuration du noyau ou tout autre changement de comportement notable.
Nouveaux paramètres du noyau
- allow_mismatched_32bit_el0 = [ARM64]
Ce paramètre permet aux systèmes dont la prise en charge 32 bits au niveau EL0 n'est pas adaptée d'exécuter des applications 32 bits. L'ensemble des unités centrales prenant en charge le 32 bits au niveau EL0 est indiqué dans le fichier
/sys/devices/system/cpu/aarch32_el0
. Vous pouvez également limiter les opérations de débranchement à chaud.Pour plus d'informations, voir
Documentation/arm64/asymmetric-32bit.rst
.- arm64.nomte = [ARM64]
- Ce paramètre permet de désactiver inconditionnellement la prise en charge de l'extension de marquage de la mémoire (MTE).
- i8042.probe_defer = [HW]
-
Ce paramètre permet d'autoriser le report du palpage en cas d'erreurs de palpage sur
i8042
. - idxd.tc_override = [HW]
Avec ce paramètre au format
<bool>
, vous pouvez autoriser l'annulation de la configuration par défaut des classes de trafic pour l'appareil.La valeur par défaut est
false
(0
).- kvm.eager_page_split = [KVM,X86]
Ce paramètre permet de contrôler si un KVM divise ou non de manière proactive toutes les pages volumineuses lors de la journalisation des données sales. Le fractionnement des pages réduit les interruptions de l'exécution du vCPU en éliminant les défauts de protection en écriture et les conflits de verrouillage de l'unité de gestion de la mémoire (MMU), qui sont autrement nécessaires pour fractionner les pages volumineuses de manière paresseuse.
Les charges de travail des machines virtuelles qui effectuent rarement des écritures ou qui n'écrivent que dans une petite région de la mémoire de la machine virtuelle peuvent bénéficier de la désactivation du fractionnement rapide des pages pour permettre aux pages volumineuses d'être encore utilisées pour les lectures.
Le comportement du fractionnement rapide des pages dépend de l'activation ou de la désactivation de l'option
KVM_DIRTY_LOG_INITIALLY_SET
.-
Si cette option est désactivée, toutes les pages volumineuses d'un site
memslot
sont scindées avec empressement lorsque la journalisation sale est activée sur ce sitememslot
. Si cette option est activée, le fractionnement des pages est effectué lors de l'appel système
KVM_CLEAR_DIRTY
ioctl()
, et uniquement pour les pages en cours d'effacement.Actuellement, le fractionnement de pages ne permet de fractionner que les grandes pages mappées par le MMU de pagination bidimensionnelle (TDP).
La valeur par défaut est
Y
(on
).
-
Si cette option est désactivée, toutes les pages volumineuses d'un site
- kvm.nx_huge_pages_recovery_period_ms = [KVM]
Ce paramètre permet de contrôler le délai pendant lequel KVM ramène les pages de 4 KiB à des pages de grande taille.
-
Si la valeur est différente de zéro (
N
), KVM zappe une partie des pages toutes lesN
millisecondes. Si la valeur est
0
, KVM choisit une période basée sur le ratio, de sorte qu'une page est supprimée après 1 heure en moyenne.La valeur par défaut est fixée à
0
.
-
Si la valeur est différente de zéro (
- l1d_flush = [X86,INTEL]
Ce paramètre permet de contrôler l'atténuation de la vulnérabilité du snooping basé sur L1D.
Certains processeurs sont vulnérables à un exploit contre les tampons internes du processeur qui peuvent, sous certaines conditions, transmettre des informations à un gadget de divulgation. Dans les processeurs vulnérables, les données transmises de manière spéculative peuvent être utilisées dans une attaque par canal latéral du cache, pour accéder à des données auxquelles l'attaquant n'a pas un accès direct.
L'option disponible est
on
, ce qui signifieenable the interface for the mitigation
.- mmio_stale_data = [X86,INTEL]
Ce paramètre permet de contrôler l'atténuation des vulnérabilités liées aux données périmées de l'entrée/sortie en mémoire du processeur (MMIO).
Processor MMIO Stale Data est une classe de vulnérabilités qui peut exposer des données après une opération MMIO. Les données exposées peuvent provenir ou se terminer dans les mêmes tampons du processeur que ceux affectés par le serveur de métadonnées (MDS) et l'interruption asynchrone transactionnelle (TAA). Par conséquent, comme pour MDS et TAA, la solution consiste à effacer les tampons du processeur concernés.
Les options disponibles sont les suivantes :
-
full
les mesures d'atténuation sont activées sur les processeurs vulnérables -
full,nosmt
les mesures d'atténuation sont activées et la technologie SMT est désactivée sur les processeurs vulnérables. off
: désactivation inconditionnelle de l'atténuationSur les machines affectées par MDS ou TAA,
mmio_stale_data=off
peut être empêché par une atténuation active de MDS ou TAA car ces vulnérabilités sont atténuées par le même mécanisme. Ainsi, pour désactiver cette atténuation, vous devez également spécifiermds=off
ettsx_async_abort=off
.Ne pas spécifier cette option équivaut à
mmio_stale_data=full
.Pour plus d'informations, voir
Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
.
-
- random.trust_bootloader={on,off} = [KNL]
-
Ce paramètre permet d'activer ou de désactiver l'utilisation d'une graine transmise par le chargeur d'amorçage (si elle est disponible) pour ensemencer complètement le CRNG du noyau. Le comportement par défaut est contrôlé par l'option
CONFIG_RANDOM_TRUST_BOOTLOADER
. - rcupdate.rcu_task_collapse_lim = [KNL]
-
Ce paramètre permet de définir le nombre maximal de rappels présents au début d'une période de grâce qui permet aux saveurs de tâches de l'URC de revenir à l'utilisation d'une seule file d'attente de rappels. Cette commutation ne se produit que lorsque l'option
rcupdate.rcu_task_enqueue_lim
est définie sur la valeur par défaut de-1
. - rcupdate.rcu_task_contend_lim = [KNL]
-
Ce paramètre permet de définir le nombre minimum d'événements de rétention de verrou par jiffy requis pour que les saveurs de tâches RCU passent à la mise en file d'attente de rappel par unité centrale. Cette commutation ne se produit que lorsque l'option
rcupdate.rcu_task_enqueue_lim
est définie sur la valeur par défaut-1
. - rcupdate.rcu_task_enqueue_lim = [KNL]
Ce paramètre permet de définir le nombre de files d'attente de rappel à utiliser pour la famille de saveurs RCU Tasks. Vous pouvez ajuster le nombre de files d'attente de rappel automatiquement et dynamiquement avec la valeur par défaut de
-1
.Ce paramètre est destiné à être utilisé dans le cadre de tests.
- retbleed = [X86]
Ce paramètre permet de contrôler l'atténuation de la vulnérabilité "Arbitrary Speculative Code Execution with Return Instructions" (RETBleed). Les options disponibles sont les suivantes :
-
off
: pas de mesures d'atténuation -
auto
: sélection automatique d'une mesure d'atténuation -
auto,nosmt
: sélectionne automatiquement une mesure d'atténuation, en désactivant SMT si nécessaire pour une atténuation complète (uniquement sur Zen1 et les versions antérieures sans STIBP). -
ibpb
les données relatives à l'impact sur les performances : atténuent également les courtes fenêtres de spéculation sur les limites des blocs de base. Sûr, impact le plus élevé sur les performances. -
unret
: force l'activation des thunks de retour non formés, efficace uniquement sur les systèmes basés sur AMD f15h-f17h. unret,nosmt
: comme l'optionunret
, désactive SMT lorsque STIBP n'est pas disponible.L'option
auto
permet de choisir une méthode d'atténuation au moment de l'exécution en fonction de l'unité centrale.Ne pas spécifier cette option équivaut à
retbleed=auto
.
-
- sev=option[,option...] = [X86-64]
-
Pour plus d'informations, voir
Documentation/x86/x86_64/boot-options.rst
.
Mise à jour des paramètres du noyau
- acpi_sleep = [HW,ACPI]
Format : { s3_bios, s3_mode, s3_beep, s4_hwsig, s4_nohwsig, old_ordering, nonvs, sci_force_enable, nobl }
-
Pour plus d'informations sur
s3_bios
ets3_mode
, voirDocumentation/power/video.rst
. -
s3_beep
est destiné au débogage ; il déclenche le bip du haut-parleur du PC dès que le point d'entrée en mode réel du noyau est appelé. -
s4_hwsig
permet au noyau de vérifier la signature matérielle ACPI lors de la sortie d'hibernation, et de refuser de reprendre si elle a changé. Le comportement par défaut est d'autoriser la reprise et d'avertir simplement lorsque la signature change, à moins que l'options4_hwsig
ne soit activée. -
s4_nohwsig
empêche la signature matérielle ACPI d'être utilisée, ou même d'être prévenue, pendant la reprise.old_ordering
fait en sorte que l'ordre ACPI 1.0 de la méthode de contrôle_PTS
, en ce qui concerne le placement des périphériques dans des états de faible consommation, soit appliqué. L'ordre ACPI 2.0 de_PTS
est utilisé par défaut. -
nonvs
empêche le noyau de sauvegarder et de restaurer la mémoire ACPI NVS pendant la suspension, l'hibernation et la reprise. -
sci_force_enable
fait en sorte que le noyau règleSCI_EN
directement à la reprise de S1/S3. Bien que ce comportement soit contraire aux spécifications de l'ACPI, certains systèmes corrompus ne fonctionnent pas sans lui. nobl
permet d'ignorer la liste interne des systèmes connus pour leur comportement incorrect en ce qui concerne la suspension et la reprise du système. Utilisez cette option à bon escient.Pour plus d'informations, voir
Documentation/power/video.rst
.
-
Pour plus d'informations sur
- crashkernel=size[KMG],high = [KNL, X86-64, ARM64]
Ce paramètre permet d'allouer une région de mémoire physique en commençant par le haut, comme suit :
- Si le système dispose de plus de 4 Go de RAM, une région de mémoire physique peut dépasser 4 Go.
Si le système dispose de moins de 4 Go de RAM, une région de mémoire physique sera allouée en dessous de 4 Go, si elle est disponible.
Ce paramètre est ignoré si le paramètre
crashkernel=X
est spécifié.
- crashkernel=size[KMG],low = [KNL, X86-64]
Lorsque vous passez
crashkernel=X,high
, le noyau peut allouer une région de mémoire physique supérieure à 4 Go. Cela provoque le deuxième plantage du noyau sur les systèmes qui nécessitent une certaine quantité de mémoire basse (par exemple,swiotlb
nécessite au moins 64M 32K de mémoire basse) et suffisamment de mémoire basse supplémentaire pour s'assurer que les tampons DMA pour les périphériques 32 bits ne sont pas épuisés. Le noyau essaie d'allouer automatiquement au moins 256 M en dessous de 4 Go. Ce paramètre vous permet de spécifier la plage de mémoire inférieure à 4 Go pour le second noyau.-
0:
désactive l'allocation basse. Elle sera ignorée sicrashkernel=X,high
n'est pas utilisé ou si la mémoire réservée est inférieure à 4 Go.
-
- crashkernel=size[KMG],low = [KNL, ARM64]
-
Ce paramètre permet de spécifier une plage basse dans la zone DMA pour le noyau de crash dump. Il sera ignoré si
crashkernel=X,high
n'est pas utilisé ou si la mémoire réservée est située dans les zones DMA. - kvm.nx_huge_pages_recovery_ratio = [KVM]
Ce paramètre permet de contrôler le nombre de pages de 4 KiB qui sont périodiquement ramenées à des pages de grande taille :
-
0
désactive la récupération N
KVM va zapper1/Nth
des pages de 4 KiB à chaque période.La valeur par défaut est
60
.
-
- kvm-arm.mode = [KVM,ARM]
Ce paramètre permet de sélectionner l'un des modes de fonctionnement du KVM :
-
none
kVM : désactivation forcée de KVM. -
nvhe
mode standard basé sur nVHE, sans prise en charge des invités protégés. protected
mode basé surnVHE
avec prise en charge des invités dont l'état est gardé privé par rapport à l'hôte. Non valide si le noyau fonctionne au niveau EL2.La valeur par défaut est fixée à
VHE/nVHE
en fonction de la prise en charge matérielle.
-
- mitigations = [X86,PPC,S390,ARM64]
Ce paramètre permet de contrôler les mesures d'atténuation optionnelles pour les vulnérabilités du processeur. Il s'agit d'un ensemble d'options curées, indépendantes de l'architecture, chacune d'entre elles étant une agrégation d'options existantes spécifiques à l'architecture :
off
désactivation de toutes les mesures d'atténuation facultatives pour le processeur. Cela améliore les performances du système, mais peut également exposer les utilisateurs à plusieurs vulnérabilités du processeur.-
Équivalent à :
nopti [X86,PPC]
,kpti=0 [ARM64]
,nospectre_v1 [X86,PPC]
,nobp=0 [S390]
,nospectre_v2 [X86,PPC,S390,ARM64]
,spectre_v2_user=off [X86]
,spec_store_bypass_disable=off [X86,PPC]
,ssbd=force-off [ARM64]
,l1tf=off [X86]
,mds=off [X86]
,tsx_async_abort=off [X86]
,kvm.nx_huge_pages=off [X86]
,no_entry_flush [PPC]
,no_uaccess_flush [PPC]
,mmio_stale_data=off [X86]
. -
Exceptions : Cela n'a aucun effet sur
kvm.nx_huge_pages
lorsque l'optionkvm.nx_huge_pages=force
est spécifiée.
-
Équivalent à :
auto
(par défaut) : atténue toutes les vulnérabilités du CPU, mais laisse SMT activé, même s'il est vulnérable.- Équivalent à : (comportement par défaut)
auto,nosmt
les vulnérabilités des CPU sont atténuées, en désactivant le SMT si nécessaire.-
Équivalent à :
l1tf=flush,nosmt [X86]
,mds=full,nosmt [X86]
,tsx_async_abort=full,nosmt [X86]
,mmio_stale_data=full,nosmt [X86]
-
Équivalent à :
- rcu_nocbs[=cpu-list] = [KNL]
L'argument facultatif est une liste de CPU.
Dans les noyaux construits avec
CONFIG_RCU_NOCB_CPU=y
, vous pouvez activer le mode CPU no-callback, qui empêche les callbacks de ces CPU d'être invoqués dans le contexte softirq. L'invocation des callbacks RCU de ces CPU sera à la place déchargée surrcuox/N
kthreads
créé à cet effet, oùx
estp
pour RCU-preempt,s
pour RCU-sched, etg
pour lekthreads
qui gère les périodes de grâce ; etN
est le numéro du CPU. Cela réduit la gigue du système d'exploitation sur les unités centrales déchargées, ce qui peut être utile pour les charges de travail HPC et en temps réel. Il peut également améliorer l'efficacité énergétique des multiprocesseurs asymétriques.-
Si un
cpulist
est fourni comme argument, la liste spécifiée de CPU est mise en mode no-callback à partir du démarrage. -
Si le signe
=
et les argumentscpulist
sont omis, aucune unité centrale ne sera mise en mode "no-callback" au démarrage, mais vous pouvez basculer le mode au moment de l'exécution à l'aide decpusets
.
-
Si un
- rcutree.kthread_prio = [KNL,BOOT]
Ce paramètre permet de définir la priorité
SCHED_FIFO
de l'unité RCU par CPUkthreads
(rcuc/N
). Cette valeur est également utilisée pour la priorité des threads boost de l'URC (rcub/N
) et pour la période de grâce de l'URCkthreads
(rcu_bh
,rcu_preempt
, etrcu_sched
).-
Si
RCU_BOOST
est défini, les valeurs valables sont de 1 à 99 et la valeur par défaut est1
, la priorité la moins favorisée. Si
RCU_BOOST
n'est pas défini, les valeurs valides sont 0-99 et la valeur par défaut est0
, fonctionnement en temps réel.Lorsque
RCU_NOCB_CPU
est activé, vous devez ajuster la priorité du rappelNOCB
kthreads
.
-
Si
- rcuture.fwd_progress = [KNL]
Ce paramètre permet de spécifier le nombre de
kthreads
à utiliser pour les tests de progression de la période de grâce de l'UCR pour les types d'UCR supportant cette notion.La valeur par défaut est
1
kthread
. Les valeurs inférieures à zéro ou supérieures au nombre de CPU entraînent l'utilisation du nombre de CPU.- spectre_v2 = [X86]
Ce paramètre permet de contrôler l'atténuation de la variante 2 de Spectre (spéculation indirecte sur les branches). Le fonctionnement par défaut protège le noyau des attaques de l'espace utilisateur.
-
on
: activation inconditionnelle, impliquespectre_v2_user=on
-
off
: désactivation inconditionnelle, impliquespectre_v2_user=off
-
auto
le noyau détecte si le modèle de votre processeur est vulnérable -
La sélection de
on
entraîne, etauto
peut entraîner, le choix d'une méthode d'atténuation au moment de l'exécution en fonction du processeur, du microcode disponible, du réglage de l'option de configurationCONFIG_RETPOLINE
et du compilateur avec lequel le noyau a été construit. -
La sélection de
on
permettra également de limiter les attaques de l'espace utilisateur contre les tâches de l'espace utilisateur. -
La sélection de
off
désactive les protections du noyau et de l'espace utilisateur. Des mesures d'atténuation spécifiques peuvent également être sélectionnées manuellement :
-
retpoline
les branches indirectes sont remplacées par des branches indirectes -
retpoline,generic
: Retpolines -
retpoline,lfence
: LFENCE ; branche indirecte -
retpoline,amd
: alias de retpoline,lfence -
eibrs
: IBRS amélioré -
eibrs,retpoline
les Retpolines de l'IBRS améliorées -
eibrs,lfence
: amélioré IBRS LFENCE ibrs
les entreprises de l'Union européenne : utiliser l'IBRS pour protéger le noyauNe pas spécifier cette option équivaut à
spectre_v2=auto
.
-
-
Nouveaux paramètres sysctl
- max_rcu_stall_to_panic
-
Lorsque vous définissez
panic_on_rcu_stall
à1
, vous déterminez le nombre de fois que l'URC peut se bloquer avant quepanic()
ne soit appelé. Lorsque vous définissezpanic_on_rcu_stall
à0
, cette valeur n'a aucun effet. - perf_user_access = [ARM64]
Ce paramètre permet de contrôler l'accès à l'espace utilisateur pour la lecture des compteurs d'événements de
perf
.-
Lorsqu'il est défini sur
1
, l'espace utilisateur peut lire directement les registres des compteurs du moniteur de performance. La valeur par défaut est
0
, ce qui signifieaccess disabled
.Pour plus d'informations, voir
Documentation/arm64/perf.rst
.
-
Lorsqu'il est défini sur
- gro_normal_batch
-
Avec ce paramètre, vous pouvez définir le nombre maximum de segments à mettre en lot à la sortie du GRO. Lorsqu'un paquet sort du GRO, que ce soit sous la forme d'une supertrame coalisée ou d'un paquet original que le GRO a décidé de ne pas coaliser, il est placé sur une liste par NAPI. Cette liste est ensuite transmise à la pile lorsque le nombre de segments atteint la limite de
gro_normal_batch
. - high_order_alloc_disable
Ce paramètre vous permet de choisir l'allocation de l'ordre 0. Par défaut, l'allocateur de fragments de pages tente d'utiliser des pages d'ordre élevé, c'est-à-dire d'ordre 3 sur les systèmes X86. Bien que le comportement par défaut donne de bons résultats, dans certaines situations, une contention dans l'allocation et la libération des pages se produit. Cela était particulièrement vrai avec les anciens noyaux (version 5.14 et plus) lorsque les pages d'ordre élevé n'étaient pas stockées dans des listes par unité centrale. Ce paramètre n'a plus qu'une importance historique.
La valeur par défaut est
0
.- page_lock_unfairness
En spécifiant la valeur de ce paramètre, vous pouvez déterminer le nombre de fois que le verrou de page peut être volé sous un serveur. Une fois que le verrou a été volé le nombre de fois spécifié dans ce fichier, la sémantique
fair lock handoff
s'applique et le serveur n'est réveillé que si le verrou peut être pris.La valeur par défaut est
5
.
Modification des paramètres sysctl
- urandom_min_reseed_secs
-
Vous pouvez utiliser ce paramètre pour déterminer le nombre minimum de secondes entre le réensemencement du pool
urandom
. Ce fichier est accessible en écriture pour des raisons de compatibilité, mais son écriture n'a aucun effet sur le comportement du RNG. - seuil d'écriture du réveil
-
Lorsque le compte d'entropie passe sous ce seuil en un certain nombre de bits, vous pouvez réveiller les processus qui attendent d'écrire dans le fichier
/dev/random
. Ce fichier est accessible en écriture à des fins de compatibilité, mais son écriture n'a aucun effet sur le comportement du RNG.