SoftwareComo limitar el uso de la CPU de una aplicación determinada en Linux
Posted on: 11 Julio, 2009 - 13:52 SoftwareComo limitar el uso de la CPU de una aplicación determinada en Linux
Lo he leido en todo linux: http://www.linuxparatodos.net/portal/article.php?story=limitar-uso-cpu
- Inicie sesión o regístrese para enviar comentarios
- 888 lecturas


muy interesante, cpulimit está en los repositorios de debian, supongo que en los de ubuntu tambien
Cpulimit tambien está en los repositorios de kubuntu.
descargado (aprox. 5 MB):
$ sudo aptitude install cpulimit... instalado, y probado. Si se ejecuta de la siguiente manera:
$ cpulimit -e firefox -l 60Warning: cannot renice.
To work better you should run this program as root, or adjust RLIMIT_NICE.
For example in /etc/security/limits.conf add a line with: * - nice -10
Process 6034 detected
ya no será posible usar esa terminal porque el proceso cpulimit está ejecutándose, además al no haberse ejecutado como root el sistema no podrá usar renice, y para detenerlo hay que pulsar CTRL+C :
Exiting...tras lo cual el proceso firefox vuelve a disparar su consumo al 100% (en mi caso).
Por lo anterior se debería usar con sudo así:
$ sudo cpulimit -e firefox -l 60[sudo] password for siddharta:
Process 6034 detected
pero se vuelve a quedar en espera de CTRL+C por lo tanto no es posible usar la línea de comandos. Hay que volver a cancelar con CTRL+C:
Exiting...El parámetro & es útil cuando se desea ejecutar un proceso en segundo plano (background), por ejemplo así:
$ sudo cpulimit -e firefox -l 60 &[1] 7398
$
el problema es que, aunque se creó la tarea [1] con su identificador de proceso 7398, el sistema no pidió la contraseña por lo tanto realmente no se aplicó la configuración y firefox sigue al 100%. Así que hay que matar la tarea usando SIGTERM (signal terminate -15):
$ sudo kill -15 7418[sudo] password for siddharta:
[1]+ Stopped sudo cpulimit -e firefox -l 60
$
Nota: SIGKILL (signal kill -9) sólo se debe usar en casos extremos, com último recurso, ya que puede dañar el proceso cpulimit o el proceso firefox.
Así que finalmente lo que se debe hacer es, iniciar sesión como root, invocar el proceso y mandarlo a segundo plano con & y salir de la sesión de root:
$ sudo su[sudo] password for siddharta:
#
# cpulimit -e firefox -l 60 &
[1] 7411
# Process 6034 detected <--- presionar Enter
#
# exit
$
Listo, cuando se quiera matar el proceso cpulimit sólo basta recordar el número de la tarea [1] o su número de proceso (PID 7411) y enviarle SIGTERM (-15):
$ sudo kill -15 7411[sudo] password for siddharta:
[1]+ Stopped sudo cpulimit -e firefox -l 60
$
O usar alguna herramienta como top o htop y buscar el proceso para saber su PID y matarlo desde ahí.
Voy a crear esta entrada en mi blog :)