Wie finde ich die Temperaturen ohne Software von Drittanbietern?

12

Ich laufe sensors-detectauf meinem System mit, lm-sensorsweil mein System beim Ansehen von YouTube-Videos immer wieder heruntergefahren wird

Ich frage mich also, wie ich die Temperaturen von Lüfter und CPU manuell ohne eine Software von Drittanbietern ermitteln kann lm-sensors. Ich bin mir nur nicht sicher, wo sie aufbewahrt werden.

processor   : 0
vendor_id   : AuthenticAMD
cpu family  : 16
model       : 6
model name  : AMD Athlon(tm) II X2 240e Processor
power management: ts ttp tm stc 100mhzsteps hwpstate

x86_64

wjandrea
quelle
Welche Ubuntu-Version verwenden Sie?
Wjandrea
1
Das hängt von Ihrem Prozessor ab. Bei vielen neueren Intel-Prozessoren liest das Turbostat-Programm die MSRs (Machine Specific Registers) und zeigt die Gehäuse- und Kerntemperaturen an. Bearbeiten Sie Ihre Frage und fügen Sie Ihrem Prozessor ein Modell hinzu. Wenn es eines ist, das ich kenne, werde ich antworten, wie es manuell gemacht wird.
Doug Smythies
Hätte der zusätzliche RAM, den ich hinzugefügt habe, ein Problem? Der RAM beträgt 1333 Megatransfers pro Sekunde, und die CPU beträgt maximal MHz: 2800.0000
11
Was meinst du mit Drittanbieter? Wie viel von Ubuntu ist Ihrer Meinung nach Erstanbieter-Software?
Muru
1
Ich bin mir nicht ganz sicher, wie viele Parteien Ubuntu verwendet, bevor der Benutzer die Distribution zur Verwendung abfängt. Ich weiß im Allgemeinen, dass Ubuntu ein Linux-Betriebssystem ist, das ich als erste Partei bezeichnet habe, gefolgt von mir und der vorliegenden Frage, sodass mein fragwürdiges Programm die dritte Partei bleibt, anstatt eine Variante von der dritten Partei zu sagen oder nach Ubtunu-Sponsoren und / oder freiwilliger Programmierersoftware, also weiß ich es nicht genau.

Antworten:

12

Es klingt wie das, was Sie wollen, ist /sys/class/hwmonund /sys/class/thermal.

Beide bieten einen einfachen Shell-basierten Zugriff auf die gewünschten Daten (das hwmon-Verzeichnis enthält auch andere Sensortypen). Jedes hat ein Verzeichnis für jede Sensorschnittstelle in Ihrem System (das möglicherweise mehr als einen Sensor enthält).

Drei weitere Dinge zu beachten:

  • Wenn Sie kein wirklich schlechtes System haben, sollte das Ausführen des sensorsBefehls auch nur einmal pro Sekunde keine wahrnehmbaren Auswirkungen haben. Tatsächlich kann das regelmäßige Lesen der Dateien in den oben genannten Verzeichnissen eine größere Auswirkung haben.
  • Grafiken sind dein Freund hier. Ich würde vorschlagen, etwas wie netdata oder collectd zum Laufen zu bringen, damit Sie Echtzeitdaten (oder nahezu Echtzeitdaten) anzeigen können.
  • Überprüfen Sie auch Ihre Spannungen. Was Sie beschreiben, könnte auch daran liegen, dass Sie ein Netzteil haben, das den Strombedarf Ihres Systems nicht decken kann. Dies wird durch deutlich abfallende Spannungen angezeigt, wenn das System unter hoher Last steht.
Austin Hemmelgarn
quelle
Dies sollte die akzeptierte Antwort sein, da sie sich mit der eigentlichen Frage befasst: "Wie kann ich die Temperaturen [...] manuell [...] ermitteln? Ich bin mir nur nicht sicher, wo sie gespeichert sind." Dann /proc/cpuinfozeigen einige einen AMD-Prozessor. Ich bin mir nicht sicher, warum OP dann eine Intel-spezifische Antwort akzeptiert hat, für die ein anderes Tool installiert werden muss.
Aaron F
@ AaronF: Ich bin nicht anderer Meinung. Ich habe eine Intel-spezifische Antwort geschrieben, weil das OP mich darum gebeten hat. Muss kein anderes Tool installiert werden? Der Grund, warum ich die Gehäusetemperaturen direkt über MSRs und nicht über MSRs lese, /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputist, dass der Großteil meiner Arbeit mit extrem inaktiven Systemen erfolgt und die letztere Methode viel mehr Overhead hat, was zu einem konsistent um 4 bis 5 Grad höheren Ergebnis führt. Natürlich gibt es keinen Unterschied für ein stark belastetes System.
Doug Smythies
1
@DougSmythies Ich fand deine Antwort sehr gut und vollständig, weshalb ich weder abgelehnt noch einen negativen Kommentar hinterlassen habe :-) Das Programm rdmsr ist Teil von msr-tools, das auf meinem Intel nicht standardmäßig installiert ist Maschine (unter Ubuntu, möglicherweise installieren andere Distributionen standardmäßig, wenn sie Intel erkennen?)
Aaron F
@ AaronF: Ich habe vergessen, dass msr-tools ein notwendiges zusätzliches Paket ist. Meine Methode benötigt also auch ein zusätzliches Tool, was das OP nicht wollte.
Doug Smythies
2
Hallo @ DougSmythies und Aaron F, ich hatte ursprünglich DougSmythies als primäre Antwort gewählt, da er als erster Hilfe leistete und seine Antwort sehr klar war, wie man manuell nach der Temperatur sucht und die manuelle Lösung in einer einfach zu verwendenden Lösung verwendet Programm mit MDMSR-Unterstützung, Es war in der Tat eine schwere Entscheidung, da beide Antworten sehr informativ waren, aber da Sie beide einverstanden waren, dass diese Antwort die beste war. Ich habe die primäre Antwort an Aaron zurückgesetzt. Vielen Dank für Ihre Unterstützung. Glückliche Jagd
9

Diese Antwort ist eine Möglichkeit, die Prozessortemperatur für einige Intel-Prozessoren manuell zu überwachen, indem direkt auf die maschinenspezifischen Register (MSR) zugegriffen wird.

Das erste, was zu beachten ist, ist in diesem Fall, dass das, was aus dem MSR ausgelesen wird, relativ zum Tcc, der Grenztemperatur, ist. Daher ist eine zusätzliche Berechnung erforderlich, um die tatsächliche Temperatur zu bestimmen.

Weitere Informationen finden Sie im Entwicklerhandbuch für Intel® 64- und IA-32-Architekturen oder in Ihrem Fall im AMD-Äquivalent.

In meinem Fall möchte ich die Bits 22-16 des MSR bei 0x1B1, auch bekannt als IA32_PACKAGE_THERM_STATUS. Der Tcc für meinen älteren i7-2600K beträgt 98 Grad.

Hier ist ein einfaches Skript zum manuellen Überwachen der Temperatur (und der CPU-Frequenz):

#! /bin/dash
#
# temp_mon3 Smythies 2016.10.05
#       a simplified version of temp_mon2,
#       for monitoring temp.
#       Note: it is on purpose that -a is not used.
#       Also CPU0 frequency (1 is good enough, when all
#       are loaded).
#
# temp_mon2 Smythies 2016.09.29
#       Monitor Package temperatures.
#       Use clock modulation to control temps.
#       i.e. simulate the second to last level
#       of defense.
#       Use simple primatives.
#       run as sudo
#       hardcoded for my tcc of 98 degrees.
#
echo ... begin package temperature monitoring ...

#
# In case I forgot (which I often do)

modprobe msr

#
# first let the drastic effect of the sudo command decay
# Done later in temp_mon3.

#
# some stuff

COMMAND="rdmsr --bitfield 22:16 -u 0x1B1"
COMMAND2="cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq"

#
# then get on with it

while [ 1 ];do
  sleep 4
  TEMP_RAW=$(eval $COMMAND)
  CPU0_FREQ=$(eval $COMMAND2)
  TEMP_ACT=$((98-TEMP_RAW))
  echo "$TEMP_ACT   $CPU0_FREQ"
done

Und hier ist eine Beispielausgabe, bei der ich nach einer Weile etwas CPU-Last hinzufüge (die Temperatur steigt von 31 auf 73 Grad):

$ sudo ./temp_mon3
[sudo] password for doug:
... begin package temperature monitoring ...
31   1605275
31   1605154
32   1605164
30   1605148
31   1605176
51   3511279
54   3511278
55   3511279
57   3511283
58   3511279
60   3511278
61   3511284
63   3511279
64   3511280
64   3511280
66   3511280
67   3511278
68   3511280
68   3511281
69   3511278
71   3511280
70   3511281
71   3511281
71   3511280
72   3511276
72   3511277
73   3511283
73   3511279
^C
Doug Smythies
quelle
Warum benutzt du eval?
Wjandrea
@ Doug: Tolle Antwort, um msr zu verwenden! Ist das nicht das richtige MSR- Register 0x19c ? Und die Temperatur ist TEMP = TCC - [0x19c Bits 22:16]. Daher muss zuerst die TCC gelesen werden.
abu_bua
@abu_bua: Ich weiß nicht, ob 0x19c funktioniert oder nicht, aber was ich benutze, funktioniert. Und ja, ich habe TCC für meinen Prozessor fest codiert und nicht die bessere Lösung, es vom Prozessor zu lesen.
Doug Smythies
1
hast du installiert sudo apt install msr-tools?
abu_bua
1
msr-tools ist das Paket. Es wäre man rdmsrund man wrmsrfür zwei der einzelnen Befehle innerhalb des Pakets.
Doug Smythies
5

Ich weiß nicht, was du wirklich willst. Das lm-sensor-Programm (und damit der sensorsBefehl) verwendet die libsensor- Bibliothek. Wenn Sie Ubuntu 18.04 verwenden, handelt es sich um libsensors4 , Version 3.4.0-4. Dies ist dieselbe Bibliothek, die die Temperatur liest, die im sysVerzeichnis angezeigt wird.

Zusammenfassend ist festzuhalten, dass Sensoren eine gute Wahl sind. Um die Temperatur kontinuierlich zu beobachten, verwenden Sie

watch -n 1 sensors

Wenn Sie ein Programm schreiben möchten, müssen Sie sich libsensors mit man libsensorsoder in ansehen /usr/share/doc/. Sie müssen einschließen #include <sensors/sensors.h>. Es werden die sensors.confDateien /etc/sensors3.conf und / oder /etc/sensors.conf verwendet . Weitere (Benutzer-) Konfigurationen finden Sie in /etc/sensors.d/, falls verwendet.

Wenn Sie glauben, dass Ihnen einige Sensoren fehlen, schauen Sie sich das /sys/class/thermaloder das verknüpfte /sys/devices/virtual/thermalVerzeichnis an.

Um die Temperaturen aller thermischen Zonen zu erhalten, verwenden Sie

$ cat /sys/devices/virtual/thermal/thermal_zone?/temp

77000
66000
67000

Die Temperatur wird in milCelcius (mC) gemessen, im Fall über 77,0, 66,0, 67,0 ° C.

Kontinuierlich beobachten

watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone?/temp

In diesem Verzeichnis finden Sie auch Informationen zu Ihren Kühlgeräten (Lüftern) und zur Programmierung der PID-Regler.

Ich möchte auch darauf hinweisen, dass ein gewisser Übertemperaturschutz sehr hardwarebasiert codiert ist (dies ist eine gute Idee), wobei die Daten in Ihrem BIOS abgelegt werden.

abu_bua
quelle
Ich weiß, dass es Programme gibt, aber ich suchte nach einer Möglichkeit, die etemps manuell zu finden
1
Was meinst du mit manuell? Alles, was die Temperatur druckt, sind Programme.
abu_bua
Ich habe keine Thermal_Zone, alles was ich habe sind Cooling_Device0 1 und 2, aber sie halten keine Dateitemperatur, nur Cur_state-Gerät max_state Power Subsystem Typ uevent
cur und max state sind 0 und 10
Was genau sind die thermal_zones? Meine 4-Kern-Intel-CPU scheint nur eine einzige zu haben thermal_zone( sensorslistet jedoch alle 4-Kern-Temperaturen korrekt auf).
Gwyneth Llewelyn
5

Installieren Sie Psensor ( psensor ) aus den Standard-Ubuntu-Repositorys und konfigurieren Sie Psensor so, dass automatisch ein Alarmton abgespielt wird, wenn die Temperatur ein vom Benutzer festgelegtes Maximum überschreitet. Damit können Sie einen Warnton hören, bevor Ihr System heruntergefahren wird, ohne Ihrem System zusätzlichen Anwendungsaufwand hinzuzufügen.

Psensor wird auf dem Desktop als kleines Thermometersymbol im Benachrichtigungsbereich in der oberen rechten Ecke des Desktops neben der Uhr angezeigt. Sie können jederzeit mit der rechten Maustaste auf das Thermometersymbol klicken, um die Hardwaretemperaturen anzuzeigen.

Karel
quelle