En este tutorial vamos a aprender como limitar el uso de CPU de un proceso con la herramienta cpulimit en Debian/Ubuntu. cpulimit es un programa muy simple que logra limitar el consumo de CPU de un proceso (expresado en porcentaje, no en tiempo de CPU). Esta herramienta puede ser muy útil para controlar procesos batch, cuando no nos interese que dichos procesos se coman gran parte de la CPU. La herramienta no actúa sobre el valor de nice ni tampoco sobre valores de prioridad de planificación, solo en el uso real de CPU del proceso. También, es capaz de adaptarse por si mismo a la carga global del sistema, de forma dinámica y rápida.
- Nota preliminar
- Instalando cpulimit
- Usando cpulimit
- Enlaces de interés
Correremos todos los comandos como root, por lo tanto hagamos loggin como root de forma directa (Debian) o usemos sudo (Ubuntu):
sudo su
Si tu máquina tiene 1 solo procesador puedes limitar el porcentaje de 0% a 100%, lo que significa que si por ejemplo seleccionamos un 50%, tu proceso no puede usar mas de 500 ms de tiempo de cpu en casa segundo. En cambio si tu máquina tiene 4 procesadores, el porcentaje variará de 0% a 400%, por lo tanto estableciendo el limite en 200% significará que no se use mas de la mitad de la potencia existente. En cualquier caso, el porcentaje es exactamente el mismo valor que puedes ver cuando corres top.
cpulimit debe correr como mínimo con el mismo usuario que corre el proceso. Es bastante mas operativo que cpulimit corra con root, con el objetivo de que tenga mayor prioridad y mejor contros sobre el proceso.
cpulimit se encuentra disponible como un paquete para Debian y Ubuntu, por lo tanto puede ser instalado así:
aptitude install cpulimit
Echemos un vistazo a la página man de cpulimit para aprender a usarlo:
man cpulimit
NAME
cpulimit — limits the CPU usage of a processSYNOPSIS
cpulimit TARGET [OPTIONS…]DESCRIPTION
TARGET must be exactly one of these:-p, –pid=N
pid of the process-e, –exe=FILE
name of the executable program file-P, –path=PATH
absolute path name of the executable program fileOPTIONS
-l, –limit=N
percentage of CPU allowed from 0 to 100 (mandatory)-v, –verbose
show control statistics-z, –lazy
exit if there is no suitable target process, or if it dies-h, –help
display this help and exitEXAMPLES
Assuming you have started «foo –bar» and
you find out with top(1) or ps(1) that this process uses all your CPU time you can either# cpulimit -e foo -l 50
limits the CPU usage of the process by acting on the
executable program file (note: the argument «–bar» is omitted)# cpulimit -p 1234 -l 50
limits the CPU usage of the process by acting on its PID, as shown by ps(1)# cpulimit -P /usr/bin/foo -l 50
same as -e but uses the absolute path nameAUTHOR
This manpage was written for the Debian project
by gregor herrmann <gregor+debian@comodo.priv.at> but may be used by others.
Ahora supongamos que queremos limitar el proceso apache2 al 30%, tendríamos que hacer lo siguiente:
cpulimit -e apache2 -l 30
La opción -e toma el nombre del programa ejecutable. Puedes conseguir el nombre de la salida del comando top.
En vez de usar el nombre del fichero ejecutable, podemos usar el ID de proceso con la opcion -p. Puedes obtener el ID de proceso de apache2 así:
ps aux
o
ps aux | grep apache2
Asumamos que el ID de proceso de apache2 es el 4510, para limitar la CPU a 30% debieramos hacer:
cpulimit -p 4510 -l 30
Tambien podriamos pasar a cpulimit el camino absoluto del ejecutable que queremos controlar con el parámetro -P. El nombre del ejecutable absoluto para apache2 es /usr/bin/apache2, por lo tanto podríamos usar el siguiente comando:
cpulimit -P /usr/sbin/apache2 -l 30
Nota: cpulimit correrá en primer plano hasta que pulsemos Ctrl+C, momento en el cual dejará de controlar el proceso.
Pues hasta aquí por hoy. Saludos a todos.
You must be logged in to post a comment.
Comments (1)
Pingback: Blog de Hardware » Blog Archive » Cómo limitar del uso de CPU de un proceso mediante cpulimit | Eloy …