Auf diese Weise löste ich meine Überhitzungsprobleme, die nicht durch einen bestimmten Prozess verursacht wurden, sondern durch das Versagen meines Laptops, die Wärme abzuleiten, die durch längeres Ausführen auf einer hohen CPU-Last verursacht wurde. Der Hauptunterschied zu der von da code monkey selbst angebotenen Lösung besteht darin, dass ich die CPU-Frequenzskalierung verwende, anstatt cpulimit für einen bestimmten Prozess zu verwenden. Da ich Psensor trotzdem installiert habe und laufen lasse, huckepack ich auf Psensor. Ein Daemon wie der von da code monkey vorgeschlagene Affe sollte ebenfalls funktionieren, es sind jedoch zwei Schwellenwerte (min und max) erforderlich. In Psensor (Sensoreinstellungen-> Alarm) stelle ich einen Alarm für den entsprechenden Sensor ein, wenn dieser über dem oberen Schwellenwert (ich verwende 85) oder unter dem unteren Schwellenwert (ich verwende 80) liegt. In Einstellungen-> Sensoren-> Skript, das ausgeführt wird, wenn ein Alarm ausgelöst wird, rufe ich mein Skript heatcontrol.sh folgendermaßen auf:
/ALLUSER/heatcontrol.sh Powersave on Demand 82
Der erste Parameter ist ein gültiger Scaling_Governor, der die CPU-Frequenz reduziert, z. B. Powersave. Der zweite Parameter ist der Standardwert für scaling_governor - ondemand für die meisten Systeme. Der dritte Parameter ist eine Temperatur zwischen niedrigem und hohem Schwellenwert (der genaue Wert ist nicht wichtig). Psensor fügt zwei weitere Parameter hinzu: eine Sensor-ID und die gemeldete Temperatur.
Und das ist mein Skript 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
Funktioniert gut für mich (UBUNTU 14.04 LTS).
Als Neuling in Linux und Bash habe ich eine Reihe von Ressourcen verwendet, darunter:
https://wiki.archlinux.org/index.php/CPU_frequency_scaling
http://elinux.org/Jetson/Performance#Viewing_the_current_CPU_status