GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo deshabilitar una CPU

Después de hacer algunas pruebas, obtuve los resultados a continuación:

echo 0 > /sys/devices/system/cpu/cpu4/online

deshabilita la cuarta CPU.

"Deshabilitar la 4.ª CPU" significa que los procesos posteriores ya no se asignarán a la 4.ª CPU. En otras palabras, los procesos ubicados en la cuarta CPU antes de "deshabilitar la cuarta CPU" no se moverán de la CPU mientras se deshabilita la CPU.

Diciendo que tengo cuatro CPU:0, 1, 2 y 3. Entonces puedo:

echo 0 > /sys/devices/system/cpu/cpu1/online
echo 0 > /sys/devices/system/cpu/cpu2/online
echo 0 > /sys/devices/system/cpu/cpu3/online
./MyShell.sh

para forzar el ./MyShell.sh para ser asignado a la CPU0.

Por cierto, reiniciar habilitará todas las CPU automáticamente.


Además de la respuesta de @Yves, en realidad puedes usar el isolcpus parámetro del núcleo.

Para deshabilitar la cuarta CPU/núcleo (CPU 3) con Debian o Ubuntu:

En /etc/default/grub añadir isolcpus=3 a GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=3"

Ejecutar

sudo update-grub

Reinicie el servidor.

isolcpus — Aísla las CPU del programador del kernel.

Sinopsis isolcpus=numero_cpu [, numero_cpu ,...]

Descripción Elimine las CPU especificadas, según lo definido por cpu_numbervalues, del equilibrio general del SMP del kernel y los crecimientos de programación. La única forma de mover un proceso dentro o fuera de una CPU "aislada" es a través de las llamadas al sistema de afinidad de la CPU. cpu_number comienza en 0, por lo que el valor máximo es 1 menos que el número de CPU en el sistema.

Esta opción es la forma preferida de aislar las CPU. La alternativa, configurar manualmente la máscara de CPU de todas las tareas en el sistema, puede causar problemas y un rendimiento subóptimo del balanceador de carga.

Curiosamente, el uso de estos parámetros del kernel puede reservar una CPU para usar más tarde la afinidad de la CPU con un proceso/anclar un proceso a una CPU y, por lo tanto, asegurarse de que no haya más procesos de usuario ejecutándose en esa CPU.

Además, también puede hacer que el servidor sea más estable al tener la garantía de que un proceso en particular con una carga muy alta tendrá sus propias CPU para jugar. He visto a Meru hacer eso con sus controladores basados ​​en Linux antes de darme cuenta de esta configuración.

El comando asociado para luego asignar un proceso a la cuarta UCP (CPU 3), es:

sudo taskset -cp PID

taskset se utiliza para establecer o recuperar la afinidad de CPU de un proceso en ejecución dado su PID o para iniciar un nuevo COMANDO con una afinidad de CPU determinada. La afinidad de CPU es una propiedad del planificador que "vincula" un proceso a un conjunto dado de CPU en el sistema. El programador de Linux respetará la afinidad de CPU dada y el proceso no se ejecutará en ninguna otra CPU. Tenga en cuenta que el programador de Linux también es compatible con la afinidad de CPU natural:el programador intenta mantener los procesos en la misma CPU tanto como sea posible por motivos de rendimiento. Por lo tanto, forzar una afinidad de CPU específica solo es útil en ciertas aplicaciones.


RESUMEN

Hay varias técnicas aplicadas a esta pregunta:

establecer isolcpus = 4 en grub y reiniciar puede deshabilitar la 5ª CPU/CPU 4 de forma permanente para los procesos terrestres del usuario;

echo 0 > /sys/devices/system/cpu/cpu4/online deshabilita la quinta CPU/CPU 4, que seguirá funcionando para los procesos que ya se le han asignado, pero ya no se asignarán nuevos procesos a la CPU 4;

taskset -c 3 ./MyShell.sh forzará MyShell.sh para ser asignado a la 4.ª CPU/CPU 3, mientras que la 4.ª CPU aún puede aceptar otros procesos terrestres del usuario si isolcpus no lo excluye de hacerlo.

PD. Como anécdota, mi mejor ejemplo del uso del isolcpus /taskset en el campo, era una interfaz SSL para un muy ocupado sitio, que seguía siendo inestable cada dos semanas, donde Ansible/ssh ya no me dejaría entrar remotamente.

Apliqué las técnicas discutidas anteriormente, y siguió funcionando de manera muy estable desde entonces.


Linux
  1. Cómo habilitar/deshabilitar CPU (limitación del número de CPU) en CentOS/RHEL

  2. CentOS/RHEL 6:Cómo deshabilitar IPv6

  3. ¿Cómo puedo desactivar el escalado de frecuencia de la CPU?

  4. Cómo deshabilitar notificar en pantalla -D -R

  5. ¿Cómo limitar un proceso a un núcleo de CPU en Linux?

Cómo deshabilitar SELinux en CentOS 8

Cómo deshabilitar SELinux en CentOS

Cómo obtener el uso de la CPU de un solo proceso en Linux

Cómo deshabilitar SELinux en AlmaLinux 8

Cómo deshabilitar el intercambio en Linux

Cómo obtener el uso de la CPU