Limite el uso de CPU de un proceso en Linux con la herramienta CPULimit


En una publicación anterior, explicamos CPUTool para limitar y controlar la utilización de la CPU de cualquier proceso en Linux. Permite que un administrador del sistema interrumpa la ejecución de un proceso (o grupo de procesos) si la carga de la CPU/sistema supera un umbral definido. Aquí aprenderemos a utilizar una herramienta similar llamada cpulimit.

Cpulimit se usa para restringir el uso de CPU de un proceso de la misma manera que CPUTool, sin embargo, ofrece más opciones de uso en comparación con su contraparte. Una diferencia importante es que cpulimit no gestiona la carga del sistema a diferencia de cputool.

Instale CPULimit para limitar el uso de CPU de un proceso en Linux

CPULimit está disponible para instalar desde los repositorios de software predeterminados de Debian/Ubuntu y sus derivados utilizando una herramienta de administración de paquetes.

$ sudo apt install cpulimit

En RHEL/CentOS y Fedora, primero debe habilitar el repositorio EPEL y luego instalar cpulimit como se muestra.

# yum install epel-release
# yum instalar cpulimit

En esta subsección, explicaremos cómo funciona cpulimit. Primero, ejecutemos un comando (el mismo comando dd que vimos mientras cubríamos cputool) que debería resultar en un alto porcentaje de CPU, en segundo plano (tenga en cuenta que el PID del proceso se imprime después de ejecutar el comando).

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

[1] 17918

A continuación, podemos usar las herramientas de miradas que muestran el estado actual actualizado con frecuencia de un sistema Linux en ejecución, para observar el uso de la CPU del comando anterior.

$ top

Al observar el resultado anterior, podemos ver que el proceso dd está utilizando el porcentaje más alto de tiempo de CPU 100.0%.

Pero podemos limitar esto usando cputlimit de la siguiente manera. La opción --pid o -p se usa para especificar el PID y --limit o -l es se utiliza para establecer un porcentaje de uso para un proceso.

El siguiente comando limitará el comando dd (PID 17918) al 50% del uso de un núcleo de CPU.

$ sudo cpulimit --pid 17918 --limit 50  

Process 17918 detected

Una vez que ejecutamos cpulimit, podemos ver el uso actual de la CPU para el comando dd con miradas. A partir de la salida, el valor oscila entre (51,5% -55,0% o un poco más).

Podemos reducir su uso de CPU por segunda vez de la siguiente manera, esta vez reduciendo aún más el porcentaje de la siguiente manera:

$ sudo cpulimit --pid 17918 --limit 20 

Process 17918 detected

Como hicimos antes, podemos ejecutar top o glances para ver el nuevo uso de CPU para el proceso, que variará entre el 20% y el 25,0% o un poco más.

$ top

Nota: El shell deja de ser interactivo; no espera ninguna entrada del usuario cuando se está ejecutando cpulimit. Para eliminarlo (lo que debería detener la operación de limitación de uso de la CPU), presione [Ctrl + C] .

Para ejecutar cpulimit como un proceso en segundo plano, use el interruptor --background o -b , liberando el terminal.

$ sudo cpulimit --pid 17918 --limit 20 --background

Para especificar el número de núcleos de CPU presentes en el sistema, use el indicador --cpu o -c (esto normalmente se detecta automáticamente).

$ sudo cpulimit --pid 17918 --limit 20 --cpu 4

En lugar de limitar el uso de CPU de un proceso, podemos eliminarlo con la opción --kill o -k . La señal predeterminada que se envía al proceso es SIGCONT, pero para enviar una señal diferente, use el indicador --signal o -s .

$ sudo cpulimit --pid 17918 --limit 20 --kill 

Para salir si no hay un proceso de destino adecuado, o en caso de que muera, incluya el -z o --lazy así.

$ sudo cpulimit --pid 17918 --limit 20 --kill --lazy

Para obtener información adicional y opciones de uso, consulte la página de manual de cpulimit.

$ man cpulimit

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

  1. Encuentre los principales procesos en ejecución por mayor uso de memoria y 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
  5. 20 herramientas de línea de comandos para supervisar el rendimiento de Linux
  6. 13 Herramientas de supervisión del rendimiento de Linux - Parte 2

En comparación, después de probar CPUTool y CPULimit, notamos que el primero ofrece una funcionalidad de "limitación de uso de CPU de proceso" más efectiva y confiable.

Esto es de acuerdo con el rango de porcentaje de uso de la CPU observado después de ejecutar ambas herramientas en un proceso determinado. Pruebe ambas herramientas y agregue sus ideas a este artículo utilizando el formulario de comentarios a continuación.