CPUTool: limitar y controlar la utilización de la CPU de cualquier proceso en Linux


Una de las áreas críticas de las herramientas de supervisión del rendimiento de Linux para vigilar cómo se desarrollan las cosas en un sistema.

Algunas de estas herramientas simplemente generan el estado/estadísticas del sistema, mientras que algunas otras le brindan medios para administrar el rendimiento del sistema. Una de esas herramientas llamada CPUTool.

CPUTool es una herramienta de línea de comandos simple pero poderosa para limitar y controlar la utilización de la CPU de cualquier proceso a un límite dado y permite la interrupción de la ejecución del proceso si la carga del sistema sobrepasa un umbral definido.

Para limitar el uso de la CPU, cputool envía las señales SIGSTOP y SIGCONT a los procesos y esto está determinado por la carga del sistema. Se basa en el pseudo-sistema de archivos/proc para leer los PID y sus medidas de uso de CPU.

Puede usarse para limitar el uso de la CPU o la carga del sistema influenciada por un solo proceso o un grupo de procesos a un límite dado y/o suspender procesos si la carga del sistema supera un umbral.

Instale CPUTool para limitar el uso de CPU y el promedio de carga

Un CPUTool solo está disponible para instalar en Debian/Ubuntu y sus derivados de los repositorios del sistema predeterminados usando la herramienta de administración de paquetes.

$ sudo apt install cputool

Ahora veamos cómo funciona realmente cputool. Para demostrarlo todo, ejecutaremos un comando dd que debería resultar en un alto porcentaje de CPU, en segundo plano y mostrar su PID.

# dd if=/dev/zero of=/dev/null &

Para monitorear el uso de la CPU, podemos usar las herramientas de Glances que nos permiten ver un estado actualizado regularmente en tiempo real de los procesos del sistema Linux en ejecución:

# top

De la salida anterior, podemos ver que el comando dd tiene el porcentaje más alto de tiempo de CPU 99.7%) Ahora podemos limitar esto usando cputool como se muestra a continuación.

El indicador --cpu-limit o -c se usa para establecer un porcentaje de uso para un proceso o grupo de procesos y -p para especificar un PID. El siguiente comando limitará el comando dd (PID 8275) al 50% del uso de un núcleo de CPU:

# cputool --cpu-limit 50 -p 8275 

Después de ejecutar cputool, podemos verificar el nuevo uso de CPU para el proceso (PID 8275) una vez más. Ahora, el uso de la CPU para el proceso dd debería oscilar entre (49,0% -52,0%).

# top

Para limitar aún más el uso de CPU de dd al 20%, podemos ejecutar cputool por segunda vez:

# cputool --cpu-limit 20 -p 8275 

Luego, verifique inmediatamente usando herramientas como miradas como esta (el uso de CPU para dd ahora debería oscilar entre 19.0% -22.0% o un poco más):

# top

Tenga en cuenta que el shell no espera ninguna entrada del usuario mientras se ejecuta cputool; por lo tanto, deja de responder. Para eliminarlo (esto terminará la operación de limitación de uso de la CPU), presione Ctrl + C .

Es importante destacar que para especificar un grupo de procesos (un programa con varias instancias en ejecución, cada una con un PID distinto), por ejemplo, el servidor web HTTP:

# pidof apache2
9592 3643 3642 3641 3640 3638 3637 1780

Utilice el indicador -P como este:

# cputool --cpu-limit 20 -P 1780

La opción -l se usa para especificar la carga máxima que puede soportar el sistema para que el proceso o grupo de procesos continúe ejecutándose. Podemos utilizar un valor fraccionario (por ejemplo, 2,5).

El siguiente ejemplo significa ejecutar rsync para una copia de seguridad local solo cuando la carga del sistema no exceda 3.5:

# cputool --load-limit 3.5 --rsync -av /home/tecmint /backup/`date +%Y-%m-%d`/

Para obtener más información y uso, consulte la página de manual de CPUTool:

# man cputool

Consulte las siguientes guías útiles para encontrar información de la CPU y monitorear el rendimiento de la CPU:

  1. 9 comandos útiles para obtener información de la CPU en Linux
  2. Cpustat: supervisa la utilización de la CPU mediante procesos en ejecución en Linux
  3. CoreFreq: una potente herramienta de supervisión de CPU para sistemas Linux
  4. Encuentre los principales procesos en ejecución por mayor uso de memoria y CPU en Linux

En conclusión, CPUTool es realmente útil para la gestión del rendimiento de Linux. Comparta sus pensamientos sobre este artículo a través del formulario de comentarios a continuación.