Ich führe verteilte Computerprojekte aus, die normalerweise 100% der CPU nutzen möchten. Wie beschränke ich die CPU-Auslastung in Bezug auf die Temperatur anstelle der prozentualen Auslastung? Was ist die maximale sichere Temperatur, um einen Intel i5 rund um die Uhr am Laufen zu halten? (Ohne CPU-Begrenzung führt FahCore_a4 dazu, dass dieser Computer bei 82 Grad Celsius läuft.)
quelle
Hier ist, wie ich es mit Bash gelöst habe. Wenn jemand einen besseren Daemon findet (besser in der Nähe der Zieltemperatur), poste ihn bitte.
quelle
Die CPU selbst verfügt über einen Mechanismus, mit dem sie sich selbst ausschaltet, wenn es zu heiß wird. (Vielleicht nicht, wenn Sie SMI-Interrupts deaktivieren, da bin ich mir nicht sicher.)
Die Hauptanwendung für den Benutzerbereich ist das
lm-sensors
Paket.sensors-detect
Wenn Ihre Maschinen nach der Installation identisch sind, können Sie sie einmal ausführen und die daraus resultierenden Ergebnisse überall verwenden.Die CPU-Frequenz kann einfach über das cpufreq-Treibersubsystem gesteuert werden. Siehe https://wiki.archlinux.org/index.php/CPU_Frequency_Scaling
Sie könnten einen Daemon schreiben, der lm-Sensoren verwendet, um die Temperatur abzufragen, und wenn es zu heiß ist, verringern Sie die CPU-Frequenz.
quelle
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:
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
quelle