CPU wird zu heiß- task soll angehalten werden

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
physikerweltde
Beiträge: 3
Registriert: 08.07.2009 22:57:41

CPU wird zu heiß- task soll angehalten werden

Beitrag von physikerweltde » 08.07.2009 23:42:38

Hallo,

kennt jemand von euch ein Programm mit dem man bei zu hoher CPU-Temperatur einige Tasks "suspenden" kann bis sich die Tempearatur wieder abgekühlt hat?
Ich war beim suchen auf cpulimit-1.1c.tar.gz gestoßen. Leider funktioniert der DL aber nicht mehr.
Viele Grüße
Moritz
PS: Vielleicht weiß auch jemand wie man das programmieren kann also ich hab so ein tool "sensors" runtergeladen, mit dem man auf jeden Fall die Tempearatur auslesen kann. Vielleicht hat jemand eine idee wie man so eine art "sh"-Programm erstellen könnte.
EDIT:
Also meine CPU Temperatur kann ich jetzt auslesen

Code: Alles auswählen

debianTest:~# sensors|grep temp2|cut -d "+"  -f2|cut -d "Â" -f1
-->
78.5
und die Befehle zum anhalten bzw fortsetzen sind kill -19 bzw 18
Jetzt muss ich nur noch rausfinden wie man daraus ein Programm erstellt nach dem Motto

Code: Alles auswählen

wenn Temperatur >MaxTemp dann
 anhalten und warten bis Temp <( MaxTemp - Hysterese) danach fortsetzen

blutigerAnfänger
Beiträge: 100
Registriert: 04.01.2005 09:38:14

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von blutigerAnfänger » 09.07.2009 00:59:23

(Alle Tipps auf eigene Gefahr ich hafte für NICHTS und NIEMANDEN, auch nicht für die Sonnenbrille des Smilies: 8) )

Hallo,

die Idee ist nicht schlecht allerdings ist es sicherer die CPU an der Temperaturgrenze zwangszuntertakten, dann erwischst Du alle Tasks und das Gute daran ist, die laufen weiter, wenn auch langsamer. Stell Dir vor Du schaust Video und plötzlich friert die Kiste ein 8O . Oder es könnte passieren das ein ganz anderer Task das System überhitzt als den, den Du eventuell mit viel Mühe aus der Prozesstabelle auslesen konntest. Du musst prüfen ob das gezielte Untertakten eine Lösung für Deinen PC darstellt.

Schau mal in http://wiki.debianforum.de/CPUDynamischTakten, ich bin sicher Deine CPU unterstützt eine der einschlägigen Technologien zur Regelung des CPU Taktes. Was Du dann noch brauchst ist ein Daemon der die Temperatur überwacht und bei einer bestimmten Grenze den Befehl zum Heruntertakten gibt. Analog wenn die Temperatur erträgliche Werte erreicht wieder hochtakten. Das könnte zum Beispiel mit acpitool gehen ... oder so :wink:

(im Ernstfall kann man auch zwangsherunterfahren lassen, wenn Du die Grenzen gut festlegst musst Du das nicht machen)
Alles in allem entfällt dadurch das umständliche suchen nach dem schuldigen Programm und die Temperatur sollte immer absinken. :D

EDIT: manche CPU untertaktet sich sogar automatisch, nur will man meistens nicht das System erst "braten" lassen :wink: so kannst Du per Software hier elegant eingreifen, ggf. musst Du Dir nofalls den Kernel selbstbauen um fehlende Features nutzen zu können. Der Standardkenel ist glaube ich auf "performance" kompiliert, Du könntest dies auf "ondemand" ändern (suche auch nach "governor").

Viele Grüße
blutigerAnfänger
____
Es gibt keine Kälte nur negative Wärme.

physikerweltde
Beiträge: 3
Registriert: 08.07.2009 22:57:41

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von physikerweltde » 09.07.2009 02:29:35

Hi,
danke für den Hinweis:
Ich habe erstmal mit googles Hilfe mein erstes sh-Skript entworfen:

Code: Alles auswählen

#!/bin/sh
TMax=86
THist=2
tAbfr=10
echo Maximal erlaub ist $TMax °C.
echo Abfrageinterval $tAbfr s.
while : ;
do
TIst=`sensors|grep temp2|cut -d "+"  -f2|cut -d "." -f1`
echo Die Temperatur ist $TIst °C.
 if ((TIst > TMax))
  then
   echo CPU Temperatur zu hoch!
   killall -u boinc -s 19
   while ((TIst > ((TMax-THist))))
   do
	TIst=`sensors|grep temp2|cut -d "+"  -f2|cut -d "." -f1`
	echo Problem: Die Temperatur ist $TIst °C.
	sleep $tAbfr
   done
   killall -u boinc -s 18
 fi
 sleep $tAbfr
done
Über Verbesserungsvorschläge wäre ich sehr erfreut.
Insbesodere zu der Frage, ob man das Temperaturauslesen als Funktion definieren kann oder wie man "Kommazahlen" (z.B. 85.2) behandelt .
Moritz

Benutzeravatar
Tintom
Moderator
Beiträge: 3070
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von Tintom » 09.07.2009 13:13:12

Ich würde da generell anders rangehen, denn du hast ein Problem:
Deine Temperaturen sind viel zu hoch. Selbst auf einem Rechner, der immer mit voller Prozessorleistung läuft ist das eindeutig zu hoch. Versuch das Problem einzugrenzen (festsitzender Lüfter, Staub, unterdimensionierte Kühlkörper, Laptop: Lüftungsschlitze verdeckt?). Dein Skript ist, wie schon angesprochen, nicht flexibel. Ich würde daher auch über die Governor-Funktionen des Kernels gehen. Das behebt aber in keinster Weise das Grundproblem!

Gruß

blutigerAnfänger
Beiträge: 100
Registriert: 04.01.2005 09:38:14

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von blutigerAnfänger » 09.07.2009 13:29:23

Hi,

die Endlosschleife sieht grauenvoll aus und TMax bei 86 Grad da brauchst Du schon fast keinen Lötkolben mehr. Bei mir wäre schon bei 65 Grad schluss. Unter dieser Abwärme gehen bald auch andere Komponenten kaputt, von den daneben bratenden Elektrolytkondensatoren ganz zu schweigen, denn um die CPU sind davon immer welche verbaut und die mögen derart hohe Temperaturen nicht, sonst platzen die :!: Stichwort Brandgefahr.
Ich rate Dir dringend mal zu prüfen ob bei Dir das acpi richtig funktioniert und alle Lüfter bei Bedarf auch schneller rotieren - Stichwort "thermal zones", vielleicht brät Dein System ja deswegen ... kannst ja mal posten um was für ein Gerät es sich handelt (Laptop, Desktop PC, Hardware)

Die zyklische Abfrage kannst Du über einen Eintrag in der crontab (/etc/crontab) erledigen lassen, dann fällt die schreckliche Endlosschleife weg, 10 Sekunden Abfrage kann man cron durchaus zumuten. Wie gesagt es gibt bereits Programme die als Dienst laufen und Skripte starten da musst Du Deines nur einbauen.

Statt des cut auch mal noch awk und sed anschauen per awk kannst Du zum Beispiel ganz leicht einzelne Zeichenketten extrahieren:

Code: Alles auswählen

echo zwei woerter | awk '{print $2}'
extrahiert Dir "woerter".

Viele Grüße
blutigerAnfänger

Mictlan
Beiträge: 596
Registriert: 03.09.2007 11:55:28

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von Mictlan » 09.07.2009 13:58:24

ich kann dir auch nur den weg über govenor bzw runtertakten empfehlen... alles andere ist nur eine flucht vor dem eigentlichen problem.

physikerweltde
Beiträge: 3
Registriert: 08.07.2009 22:57:41

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von physikerweltde » 09.07.2009 14:33:12

Danke für die Hinweise. Besonders die Idee mit dem cronjob hat mich sehr gefreut.
Ich weiß nicht genau um welche Hardware es sich handelt. Ist ein ausrangierter AMD-Desktop mit 750Mhz. Das Problem ist, dass die "Leerlauftemperatur" schon ca 78°C beträgt. Ich wollte den Rechner eingentlich nur rechnen lassen. Aber bei diesen Temperaturen ist davon auszugehen, dass er eine hohe Leistungsaufnahme bei geringer Rechenleistung hat. Also werde ich den Rechner aus ökologischen Gründen abschalten. (nicht an der Hardware rumbasteln)

Viele Grüße
Moritz

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von Spasswolf » 09.07.2009 14:52:09

Klingt so als wäre der der Cpu Kühler nicht (mehr) richtig montiert.

Mictlan
Beiträge: 596
Registriert: 03.09.2007 11:55:28

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von Mictlan » 09.07.2009 14:55:21

da hats sicher etwas.... der 750er Athlon hat eine TDP von 40 W
von http://en.wikipedia.org/wiki/List_of_AM ... processors
Athlon 750 750 MHz 512 KiB 200 MT/s 7.5x 1.60 V 40 W Slot A November 29, 1999 AMD-K7750MTR52B A

blutigerAnfänger
Beiträge: 100
Registriert: 04.01.2005 09:38:14

Re: CPU wird zu heiß- task soll angehalten werden

Beitrag von blutigerAnfänger » 10.07.2009 23:22:38

(Alle Tipps auf eigene Gefahr ich hafte für NICHTS und NIEMANDEN, auch nicht für die Sonnenbrille des Smilies: 8) )

Hallo,

was für eine CPU Du hast findest Du mittels: cat /proc/cpuinfo ganz leicht heraus. Vieleicht mal den CPU-Kühler prüfen
und die Wärmeleitpaste wechseln - also alte Paste wegmachen und neue auftragen, davon dann auch nicht zu viel ... siehe google wie man die Wärmeleitpaste richtig gebraucht ... - auf den Tuben für Wärmeleitpaste steht auch meistens wie lange die Paste ungefähr wirkungsvoll ist, man sollte aller 3 Jahre wenn man selber die Paste aufgetragen hat mal alles wieder frisch machen, das hilft aber nur wenn sich das Lüfterrädchen noch ordentlich dreht. Wenn die Wärmeleitpaste keine richtige Konsistenz mehr hat, irgendwann backt es halt fest, dann wird die Abwärme nicht mehr richtig auf den montierten Kühler übertragen. Wenn das alles nichts bringt, lieber ausrangieren bevor es mal zu brennen anfängt.

Viele Grüße
blutigerAnfänger

Antworten