Así es como resolví mis problemas de sobrecalentamiento que no fueron causados por un proceso específico, sino por la incapacidad de mi computadora portátil de disipar el calor causado al funcionar con una alta carga de CPU durante períodos de tiempo más largos. La principal diferencia con la solución ofrecida por el propio da code monkey es que uso el escalado de frecuencia de la CPU, en lugar de usar cpulimit en un proceso específico. Como tengo Psensor instalado y ejecutándose de todos modos, aprovecho Psensor. Un daemon como da code monkey sugerido también debería funcionar, sin embargo, se requieren dos umbrales (min y max). En Psensor (Preferencias del sensor-> Alarma) configuro una alarma para el sensor relevante si llega a ser más alto que el umbral alto (uso 85) o más bajo que el umbral bajo (uso 80). En Preferencias-> Sensores-> Script ejecutado cuando se activa una alarma, llamo a mi script heatcontrol.sh de esta manera:
/ALLUSER/heatcontrol.sh powersave ondemand 82
El primer parámetro es un scaling_governor válido que reduce la frecuencia de la CPU, por ejemplo, ahorro de energía. El segundo parámetro es el scaling_governor predeterminado - ondemand para la mayoría de los sistemas. El tercer parámetro es una temperatura entre el umbral bajo y el alto (el valor exacto no es importante). Psensor agrega dos parámetros más: una identificación del sensor y la temperatura informada.
Y este es mi script heatcontrol.sh:
#!/bin/bash
# TempNZ is temperature reported by Psensor; strip of trailing °C
TempNZ=$5
bnum=`expr index "$TempNZ" "°"`
if (( bnum < 2 )); then
echo "ERROR"
fi
TempNZ=${TempNZ:0:$(($bnum-1))}
STR=$1
# Is this a low threshold alarm?
if [ "$TempNZ" -le "$3" ]; then
STR=$2
fi
sudo sh -c "echo '$STR' > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
# echo new scaling_governor
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# play sound - audio feedback - optional
paplay /usr/share/sounds/ubuntu/stereo/message-new-instant.ogg
Funciona bien para mí (UBUNTU 14.04 LTS).
Al ser un novato en Linux y bash, utilicé varios recursos, que incluyen:
https://wiki.archlinux.org/index.php/CPU_frequency_scaling
http://elinux.org/Jetson/Performance#Viewing_the_current_CPU_status