Ubunlog Damian Amoedo  

CPULimit, limita el uso que hace de la CPU un proceso

about CPULimit

En el siguiente artículo vamos a echar un vistazo a CPULimit. Esta es una herramienta de línea de comandos que limita el uso de CPU por parte de un proceso (expresado en porcentaje, no en tiempo de CPU). Esto nos va a resultar útil para controlar los trabajos por lotes, cuando no queremos que un proceso consuma demasiados ciclos de CPU.

Con el uso de esta herramienta no vamos a cambiar el valor u otras configuraciones de prioridad, sino el uso real de la CPU. Además, es capaz de adaptarse a la carga general del sistema, de forma dinámica y rápida. El control de la cantidad de CPU utilizada se realiza enviando señales SIGSTOP y SIGCONT POSIX a los procesos. Todos los procesos e hilos secundarios del proceso especificado compartirán el mismo porcentaje de CPU.

Instalar CPULimit

CPULimit está disponible en la mayoría de los repositorios predeterminados de las distribuciones tipo Unix. Podremos instalarlo utilizando los gestores de paquetes predeterminados en la distribución Gnu/Linux respectiva. Para el ejemplo que nos ocupa, veremos como instalarlo en Debian, Ubuntu y Linux Mint. Solo tendremos que abrir una terminal (Ctrl+Alt+T) y escribimos en ella la siguiente orden:

sudo apt-get install cpulimit

Quien quiera podrá consultar otros tipo de instalaciones en la página de GitHub del proyecto.

Uso de CPULimit

Una vez instalada la herramienta, es hora de ver cómo funciona. Para ello, vamos a ejecutar un programa que consuma muchos recursos de CPU. Los siguientes comandos se deben ejecutar como usuario root.

Creando un script que consuma recursos de CPU

Primero vamos a crear un archivo llamado derrochecpu.sh. Yo voy a utilizar para ello el editor Vim, pero que cada cual utilice el que prefiera. Desde la terminal (Ctrl+Alt+T) tendremos que escribir:

vim derrochecpu.sh

Una vez abierto, pulsaremos la tecla ‘Esc’ y después ‘i’. Ahora vamos a agregar las siguientes líneas:

script vim derrochecpu

#!/bin/bash
while :; do :; done;

Terminado esto, es hora de guardar y salir. Para ello presionaremos la tecla ‘Esc’ y escribiremos :wq para guardar y cerrar el archivo. Este breve script se repetirá sin interrupciones consumiendo el máximo uso de la CPU. Por lesto, es recomendable probarlo en una máquina virtual.

Ahora vamos a hacer este archivo ejecutable. Para ello, desde la misma terminal (Ctrl+Alt+T) ejecutaremos:

chmod +x derrochecpu.sh

Lanzando el script

Ahora lanzaremos el proceso en segundo plano. Esto lo haremos utilizando el comando:

./derrochecpu.sh &

PID script derrocheCPU

Nos vamos a quedar con el PID del proceso. En este caso, 6472 es el PID del proceso lanzado.

Comprobando cuanta CPU consume

Podremos ver la cantidad de CPU que el proceso que acabamos de lanzar consume, utilizando el comando “top” en la misma terminal:

top script derrocheCPU

top

Como puede verse en la captura anterior, el proceso derrochecpu.sh consume más del 96% de uso de la CPU. Dado que consume bastante uso de CPU, es difícil ejecutar otras tareas. Pasados unos unos minutos, el sistema podría bloquearse o congelarse. Aquí es donde CPULimt viene en nuestra ayuda.

Limitando el uso de CPU mediante PID

Ahora, limitemos el uso de CPU de este proceso utilizando la herramienta CPULimit. Vamos a limitar mediante su correspondiente PID el uso de la CPU a un 35% (aproximadamente). Para hacerlo, ejecuta:

cpulimit -l 35 -p 6472 &
  • La opción “-l 35” limita el proceso al 35%, aproximadamente.
  • -p 6472” es el PID de derrochecpu.sh que hemos visto antes.

Comprobando el efecto de CPULimit

Lanzada la anterior orden, revisemos nuevamente el uso de CPU del proceso. Para ello utilizaremos otra vez el comando top:

top script CPULimit derrochecpu

top

Como puede ver en la anterior imagen, el uso de CPU de derrochecpu.sh se ha reducido al 35,6%, que es muy cercano al 35%. Ahora, ya podremos disponer de más recursos de CPU para ejecutar otros procesos.

Limitando el uso de CPU mediante nombre de archivo

Hemos visto cómo limitar un proceso utilizando el PID. También podremos ejecutar el comando CPULimit especificando el nombre del archivo de programa ejecutable.

Por ejemplo, el mismo ejemplo anterior sería:

cpulimit -l 30 ./derrochecpu.sh &

CPULimit puede ser útil mientras ejecutamos un proceso que consume demasiado uso de CPU. La próxima vez que notemos que un programa consume demasiada CPU, simplemente tendremos que buscar el PID del proceso utilizando el comando “top“. Cuando lo tengas, solo habrá que limitar el uso de CPU a un valor mínimo usando el comando CPULimit como se describe en este artículo.

Desinstalar CPULimit

Eliminar esta herramienta de nuestro sistema es tan sencillo como abrir una terminal (Ctrl+Alt+T) y escribir en ella:

sudo apt remove cpulimit

Lo que en este artículo se ha descrito es solo un ejemplo. Evidentemente, nadie en su sano juicio lanzará un script como el que aquí se describe en su propio equipo.

El artículo CPULimit, limita el uso que hace de la CPU un proceso ha sido originalmente publicado en Ubunlog.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.