20.4. Configurar el tiempo de tic del kernel
Por defecto, Red Hat Enterprise Linux 8 utiliza un kernel sin tics, que no interrumpe las CPUs inactivas para reducir el uso de energía y permitir que los nuevos procesadores aprovechen los estados de sueño profundo.
Red Hat Enterprise Linux 8 también ofrece una opción de tickless dinámico, que es útil para cargas de trabajo sensibles a la latencia, como la computación de alto rendimiento o la computación en tiempo real. Por defecto, la opción de tickless dinámico está deshabilitada. Este procedimiento describe cómo habilitar de forma persistente el comportamiento dinámico sin tics.
Procedimiento
Para habilitar el comportamiento dinámico sin tics en ciertos núcleos, especifique esos núcleos en la línea de comandos del kernel con el parámetro
nohz_full. En un sistema de 16 núcleos, añada este parámetro en el archivo/etc/default/grub:nohz_full=1-15Esto permite un comportamiento dinámico sin tics en los núcleos 1 a 15, trasladando todo el control del tiempo al único núcleo no especificado (núcleo 0).
Para habilitar de forma persistente el comportamiento dinámico "tickless", regenere la configuración de GRUB2 utilizando el archivo por defecto editado. En sistemas con firmware BIOS, ejecute el siguiente comando:
# grub2-mkconfig -o /etc/grub2.cfgEn sistemas con firmware UEFI, ejecute el siguiente comando:
# grub2-mkconfig -o /etc/grub2-efi.cfgCuando el sistema arranque, mueva manualmente los hilos de
rcual núcleo no sensible a la latencia, en este caso el núcleo 0:# for i in `pgrep rcu[^c]` ; do taskset -pc 0 $i ; done-
Opcional: Utilice el parámetro
isolcpusen la línea de comandos del kernel para aislar ciertos núcleos de las tareas del espacio del usuario. Opcional: Establecer la afinidad de la CPU para los hilos del kernel
write-back bdi-flushal núcleo de mantenimiento de la casa:echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
Pasos de verificación
Una vez reiniciado el sistema, verifique si
dynticksestá habilitado:# grep dynticks var/log/dmesg [ 0.000000] NO_HZ: Full dynticks CPUs: 2-5,8-11Verifique que la configuración dinámica sin tics funciona correctamente:
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1Aquí,
stresses un programa que gira en la CPU para1 second.Un posible sustituto de
stresses un script que se ejecuta:while :; do d=1; doneLa configuración por defecto del temporizador del kernel muestra 1000 ticks en una CPU ocupada:
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1 1000 irq_vectors:local_timer_entryCon el núcleo dinámico sin tics configurado, debería ver 1 tic en su lugar:
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 stress -t 1 -c 1 1 irq_vectors:local_timer_entry
Recursos adicionales
-
Para más información, consulte las páginas man de
perfycpuset. - Todo sobre el parámetro de kernel nohz_full Artículo de la base de conocimientos de Red Hat.
- ¿Cómo verificar la lista de "aislados" y "nohz_full"? De la CPU desde sysfs? Artículo de la base de conocimientos de Red Hat.