Ich habe einen Laptop (Thinkpad) mit 2 CPU. Derzeit kann ich die CPU-Temperaturen aus den folgenden Dateien mit cat (1) lesen:
cat /sys/class/thermal/thermal_zone0/temp
cat /sys/class/thermal/thermal_zone1/temp
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input
cat /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp3_input
cat /sys/devices/LNXSYSTM:00/LNXCPU:00/thermal_cooling/subsystem/thermal_zone1/temp
cat /sys/devices/LNXSYSTM:00/LNXCPU:01/thermal_cooling/subsystem/thermal_zone0/temp
Meine Frage ist, warum der Kernel diese Informationen an so vielen verschiedenen Orten speichert und welche die "Standard" -Datei ist, um die Temperatur einer CPU zu lesen?
Geschieht dies aufgrund von systemd (ich verwende Arch Linux) oder nicht systemd Linux-Distributionen wie Slackware, die einen anderen Ansatz verfolgen?
quelle
Erstens
/sys/class
ist eine bequeme Möglichkeit, Dinge in zu finden/sys
. Sie werden feststellen, dass alles im Inneren tatsächlich ein Symlink ist. Ich bin mir ziemlich sicher, dass Ihre erste Strophe mit Ihrer dritten Strophe verknüpft ist.Die 2. Zeilengruppe ist der Kernel, der die Temperatur direkt von der CPU / dem Chipsatz liest. Die 3. Zeilengruppe ist der Kernel, der den Wert vom BIOS über ACPI abruft. Während sie auf Ihrem System möglicherweise dieselbe Antwort geben, müssen sie dies nicht tun (z. B. könnte das BIOS andere Sensoren verwenden, einige zusammen mitteln oder eine kartenspezifische Anpassung vornehmen).
Schließlich hat jede Strophe zwei unterschiedliche Messwerte, da es wahrscheinlich zwei Thermometer gibt. Zumindest ermöglicht die API der Hardware dies.
quelle
Schauen Sie sich die * _label-Dateien an, um zu sehen, was gemeldet wird - hier ist mein i5:
(grep "" wird nur als "Katze mit Dateinamen" verwendet)
Hier ist also eine Gesamttemperatur der CPU plus eine Temperatur pro Kern.
Auf einem größeren System mit mehreren CPUs werden möglicherweise Dutzende von Einträgen angezeigt.
quelle