Ahora que se acerca el calor es fundamental controlar la temperatura del procesador, ya me ha pasado en más de una ocasión, abro una carpeta de fotos en la consola y ale! imagemagick, hazme un «montage» de 3000 fotos en alta resolución con rescalado y filtros de efectos aplicados al vuelo. A los 3 minutos el ordenador bloqueado y la torre pitando porque el procesador se ha puesto 90º, y te las ves y te las deseas para detener el proceso con el escritorio que no responde.
Al principio lo arreglaba metiendo la orden en un bucle FOR y poniendo un pequeño sleep, algo así como fúmate un cigarro entre foto y foto. Luego, buscando una solución que no pasase por andar cambiando/mejorando la ventilación de la torre encontré cpulimit una pequeña aplicación que trata de limitar el uso de cpu de un proceso a partir de su pid ó del nombre del proceso.
El uso básico sería algo como:
cpulimit -l 90 -e montage
es decir limita el uso de la cpu al 90% para la aplicación montage.
Si el programa está en ejecución cpulimit evitará que este supere el 90% (mas que suficiente como para evitar sobrecalentamiento) y si no encuentra dicho programa quedará en espera (no en background ó como daemon) de que el susodicho programa aparezca en la lista de procesos para «atraparlo» y proceder a su limitación. Es decir, una vez la aplicación que queríamos controlar finaliza su tarea no lo hace cpulimit sino que continua ejecutándose a la espera de que la aplicación vuelva a aparecer. Esto es especialmente útil para procesos en serie, en los que el programa se lanza múltiples veces y queremos controlarlo independientemente de que su pid cambie.
Instalación
La instalación es muy sencilla solo descargar y una compilación megarápida
svn checkout https://cpulimit.svn.sourceforge.net/svnroot/cpulimit/trunk cpulimit
cd cpulimit
make
#si ahora lo quieres instalar haz simplemente
sudo cp cpulimit /usr/bin/