29.3. Configuration du temps de réponse du noyau
Par défaut, Red Hat Enterprise Linux 9 utilise un noyau "tickless", qui n'interrompt pas les processeurs en veille afin de réduire la consommation d'énergie et de permettre aux nouveaux processeurs de tirer parti des états de sommeil profond.
Red Hat Enterprise Linux 9 propose également une option tickless dynamique, qui est utile pour les charges de travail sensibles à la latence, telles que l'informatique à haute performance ou l'informatique en temps réel. Par défaut, l'option tickless dynamique est désactivée. Red Hat recommande d'utiliser le profil cpu-partitioning
TuneD pour activer l'option tickless dynamique pour les noyaux spécifiés comme isolated_cores
.
Cette procédure décrit comment activer manuellement et de manière persistante le comportement dynamique sans tic-tac.
Procédure
Pour activer le comportement dynamique sans tic-tac dans certains cœurs, spécifiez ces cœurs sur la ligne de commande du noyau avec le paramètre
nohz_full
. Sur un système à 16 cœurs, activez l'option de noyaunohz_full=1-15
:# grubby --update-kernel=ALL --args="nohz_full=1-15"
Cela permet un comportement dynamique sans tic-tac sur les cœurs
1
à15
, en déplaçant tout le chronométrage vers le seul cœur non spécifié (cœur0
).Lorsque le système démarre, déplacez manuellement les threads
rcu
vers le cœur non sensible à la latence, en l'occurrence le cœur0
:# for i in `pgrep rcu[^c]` ; do taskset -pc 0 $i ; done
-
Facultatif : Utilisez le paramètre
isolcpus
sur la ligne de commande du noyau pour isoler certains cœurs des tâches de l'espace utilisateur. Facultatif : Définissez l'affinité du CPU pour les threads du noyau
write-back bdi-flush
sur le noyau de gestion :echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
Verification steps
Une fois le système redémarré, vérifiez si
dynticks
est activé :# journalctl -xe | grep dynticks Mar 15 18:34:54 rhel-server kernel: NO_HZ: Full dynticks CPUs: 1-15.
Vérifiez que la configuration dynamique sans tic-tac fonctionne correctement :
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3
Cette commande mesure les tics de l'unité centrale 1 tout en demandant à l'unité centrale 1 de dormir pendant 3 secondes.
La configuration par défaut de la minuterie du noyau affiche environ 3100 tics sur un processeur normal :
# perf stat -C 0 -e irq_vectors:local_timer_entry taskset -c 0 sleep 3 Performance counter stats for 'CPU(s) 0': 3,107 irq_vectors:local_timer_entry 3.001342790 seconds time elapsed
Avec le noyau dynamique sans tic-tac configuré, vous devriez voir environ 4 tics à la place :
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3 Performance counter stats for 'CPU(s) 1': 4 irq_vectors:local_timer_entry 3.001544078 seconds time elapsed
Ressources supplémentaires
-
perf(1)
etcpuset(7)
pages de manuel - Tout sur le paramètre nohz_full du noyau Article de la base de connaissances de Red Hat
- Comment vérifier la liste des informations sur les processeurs \N "isolated" et \N "nohz_full" à partir de sysfs ? À partir de sysfs ? Article de la base de connaissances de Red Hat