Búsqueda de sitios web

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 a un administrador del sistema interrumpir 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 utiliza 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.

Lectura sugerida: 9 comandos útiles para obtener información de la CPU en Linux

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

CPULimit está disponible para instalar desde 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 instala epel-release
# yum instala cpulimit

Limitar el uso de CPU de proceso con CUPLimit

En esta subsección, explicaremos cómo funciona cpulimit. Primero, ejecutemos un comando (el mismo comando dd que vimos al cubrir cputool) que debería generar 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 top o vistazos que generan el estado real 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 mayor porcentaje de tiempo de CPU 100,0%.

Pero podemos limitar esto usando cputlimit de la siguiente manera. La opción --pid o -p se utiliza 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 % de 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 top o vistazos. Según la salida, el valor oscila entre (51,5%-55,0% o un poco más).

Podemos limitar el uso de la 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 vistazos para ver el nuevo uso de CPU para el proceso, que oscilará entre 20%-25,0% o un poco más.

top

Nota: El shell deja de ser interactivo; no espera ninguna entrada del usuario cuando cpulimit se está ejecutando. 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 proceso en segundo plano, utilice el modificador --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, utilice el indicador --cpu o -c (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 enviada 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 -z o --lazy de esta manera.

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 según el mayor uso de memoria y CPU en Linux
  2. Cpustat: monitorea la utilización de la CPU mediante procesos en ejecución en Linux
  3. CoreFreq: una poderosa herramienta de monitoreo de CPU para sistemas Linux
  4. Encuentre los principales procesos en ejecución según el mayor uso de memoria y CPU en Linux
  5. 20 herramientas de línea de comandos para monitorear el rendimiento de Linux
  6. 13 herramientas de monitoreo 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 del uso de CPU del proceso" más efectiva y confiable.

Esto se basa en el rango porcentual de uso de CPU observado después de ejecutar ambas herramientas en un proceso determinado. Pruebe ambas herramientas y agregue sus opiniones a este artículo utilizando el formulario de comentarios a continuación.