Cpulimit limitar el uso de CPU por proceso
En ocasiones nos encontramos con algún programa que consume más CPU de lo deseado, incluso provocando que el entorno gráfico deje de responder. En GNU/Linux es posible controlar eso, con una sencilla pero eficaz herramienta llamada cpulimit.
Cpulimit se encarga de limitar el uso de CPU por proceso, en un porcentaje respecto del total del sistema.
Proceso que podemos identificar mediante la ruta del programa, el nombre del ejecutable o bien mediante su PID.
De las tres opciones la que más me gusta es la última, así que vamos a tomar el cliente de bittorrent deluge como ejemplo y vamos a ver cual es el número que identifica su proceso activo, antes de proceder a cortarle las alas con cpulimit.
$ ps -A | grep deluge
15067 tty2 00:00:51 deluge-gtk
Ahora le limitamos a un máximo del 5% de consumo de CPU su ejecución (algo extremo lo se).
sudo cpulimit -p 15067 -l 5
Un comando bastante sencillito, donde la variable -p va seguida del número PID correspondiente al proceso y -l del tanto por cierto de CPU que le asignamos.
Se puede ejecutar con o sin privilegios de root. La diferencia es que si lo ejecutamos con “sudo” establece su prioridad automáticamente respecto a otros procesos. Un poco en la linea de los comandos nice y renice, también muy interesantes y de los que un día de estos habrá que hacer un post (aunque como diría Vito Corleone, es posible que ese día nunca llegue).
Si además queremos ver las estadísticas en tiempo real y extender dicho límite a los procesos hijos, le añadimos un par de parámetros más:
sudo cpulimit -p 15067 -l 5 -v -i
Técnicamente lo que hace el programa para mantener los valores máximos establecidos de CPU es enviar señales de tipo SIGSTOP y SIGCONT, de forma periódica al proceso que hayamos seleccionado.
Un ajetreado “parar y continuar”, que permite a cpulimit adaptarse de forma dinámica, casi inmediata, a la carga total existente en ese momento.
En los sistemas con multiprocesador, habrá que tener en cuenta su número a la hora de establecer el límite (por ejemplo si tenemos 8 núcleos, el intervalo irá del 0 al 800 % y si queremos limitar el porcentaje de uso a la mitad, tendríamos que establecer un valor de 400% )
Instalación en Linux
Vamos a ver como instalarlo en algunas de las principales distribuciones GNU/Linux, tirando de terminal.
En Arch Linux y derivadas como Manjaro o Antergos:
sudo pacman -S cpulimit
En Debian, Ubuntu y derivadas varias (Elementary OS, Linux Mint):
sudo apt install cpulimit
En openSUSE:
su
zypper in cpulimit
Si queréis saber más sobre cpulimit os podéis pasar por su página de Github. Obviamente una limitación exagerada de CPU puede afectar al rendimiento del programa en cuestión. Pero para determinadas tareas repetitivas o aplicaciones que tienden a desmadrarse es un programa muy interesante.