Come posso trovare le temperature senza software di terze parti?


12

Sono in esecuzione sensors-detectsul mio sistema lm-sensorsperché il mio sistema continua a spegnersi quando guardo i video di YouTube

Quindi mi chiedo come posso trovare manualmente le temperature della ventola e della cpu senza un software di terze parti come lm-sensors? Non sono sicuro di dove siano memorizzati.

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


Quale versione di Ubuntu stai utilizzando?
wjandrea,

1
Dipende dal tuo processore. Per molti recenti processori Intel, il programma turbostat leggerà i MSR (Machine Specific Registers) e visualizzerà il pacchetto e le temperature del core. Modifica la tua domanda e aggiungi il tuo processore per creare un modello. Se è uno che conosco, risponderò con come farlo manualmente.
Doug Smythies,

se la RAM aggiuntiva che ho aggiunto avesse un problema .., la RAM è 1333 megatransfer al secondo e la CPU è max MHz: 2800.0000

11
Cosa intendi per terza parte? Quanto di Ubuntu pensi sia un software proprietario?
Muru,

1
Non sono esattamente sicuro di quante parti Ubuntu utilizza prima che l'utente intercetti la distribuzione per l'uso. So in un aspetto generale che Ubuntu è un sistema operativo Linux che ho definito la prima parte, seguito da me e quindi dalla domanda a portata di mano, lasciando il mio programma discutibile di terza parte piuttosto che dire una variante off the wall di sesta parte di o dopo gli sponsor di ubtunu e o i software di programmazione volontaria, quindi non lo so esattamente.

Risposte:


12

Sembra che quello che vuoi sia /sys/class/hwmone /sys/class/thermal.

Entrambi forniscono un semplice accesso basato sulla shell ai dati desiderati (la directory hwmon includerà anche altri tipi di sensori). Ognuno ha una directory per ogni interfaccia del sensore nel tuo sistema (che può avere più di un sensore).

Altre tre cose da notare però:

  • A meno che tu non abbia un sistema davvero cattivo, eseguire il sensorscomando anche una volta al secondo non dovrebbe avere alcun effetto percettibile. In effetti, la lettura regolare dei file nelle directory sopra menzionate può avere più effetto.
  • I grafici sono i tuoi amici qui. Suggerirei di far funzionare netdata o collectd in modo da avere dati in tempo reale (o quasi in tempo reale) da guardare.
  • Controlla anche le tue tensioni. Ciò che la tua descrizione potrebbe anche essere dovuto alla presenza di un alimentatore che non è in grado di tenere il passo con i requisiti di alimentazione del tuo sistema. Ciò verrà indicato da una caduta significativa delle tensioni quando il sistema è sotto carico elevato.

Questa dovrebbe essere la risposta accettata, perché si occupa della vera domanda posta: "come posso trovare le [...] temperature manualmente [...]? Non sono sicuro di dove siano conservate". Quindi alcuni /proc/cpuinfomostrano un processore AMD. Non so perché OP abbia quindi accettato una risposta specifica per Intel che richiede l'installazione di un altro strumento.
Aaron F,

@AaronF: Non sono in disaccordo. Ho scritto una risposta specifica Intel perché l'OP mi ha chiesto di farlo. Nessun altro strumento deve essere installato? Il motivo per cui ho letto le temperature del pacchetto direttamente tramite MSR piuttosto che tramite /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputè che la maggior parte del mio lavoro è con sistemi estremamente inattivi, e quest'ultimo metodo ha molto più sovraccarico, con un risultato coerente da 4 a 5 gradi in più. Naturalmente, non c'è differenza per un sistema pesantemente caricato.
Doug Smythies,

1
@DougSmythies Ho pensato che la tua risposta fosse molto buona e completa, motivo per cui non ho votato né lasciato un commento negativo sotto di esso :-) Il programma rdmsr fa parte di msr-tools, che non è installato di default sul mio Intel machine (con Ubuntu, forse altre distribuzioni installate di default se rilevano Intel?)
Aaron F

@AaronF: ho dimenticato che msr-tools è un pacchetto aggiuntivo necessario. Quindi anche il mio metodo ha bisogno e uno strumento aggiuntivo, che non è quello che voleva l'OP.
Doug Smythies,

2
Ciao @ DougSmythies e Aaron F, avevo originariamente scelto DougSmythies come risposta principale perché era il primo a fornire assistenza e la sua risposta era molto chiara su come cercare manualmente la temperatura e usare la soluzione manuale in un facile da usare programma con supporto mdmsr, in effetti è stata una decisione difficile dato che entrambe le risposte sono state molto istruttive, ma dato che entrambi avete concordato sul fatto che questa risposta era la migliore. Ho ripristinato la risposta principale ad Aaron, grazie per il tuo supporto. Buona caccia

9

Questa risposta riguarda un modo per monitorare manualmente la temperatura del processore per alcuni processori Intel accedendo direttamente ai registri specifici della macchina (MSR).

La prima cosa da notare è, in questo caso, ciò che viene letto dal MSR è relativo alla Tcc, la temperatura limite, quindi è necessario un calcolo aggiuntivo per determinare la temperatura effettiva.

Fare riferimento al Manuale dello sviluppatore del software per architetture Intel® 64 e IA-32 o, nel tuo caso, all'equivalente AMD.

Nel mio caso, voglio i bit 22-16 dell'MSR a 0x1B1, ovvero IA32_PACKAGE_THERM_STATUS. Il Tcc per il mio vecchio i7-2600K è di 98 gradi.

Ecco un semplice script per monitorare manualmente la temperatura (e la frequenza della CPU):

#! /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

Ed ecco un esempio di output, in cui aggiungo un po 'di carico della CPU dopo un po' (la temperatura va da 31 a 73 gradi):

$ 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

Perché si usa eval?
wjandrea,

@Doug: ottima risposta per usare msr! Tuttavia, il registro msr corretto non è 0x19c ? E la temperatura è TEMP = TCC - [0x19c bit 22:16]. Quindi è necessario prima leggere il TCC.
abu_bua,

@abu_bua: non so se 0x19c funziona o meno, ma quello che sto usando lo fa. E sì, ho codificato TCC per il mio processore piuttosto che la soluzione migliore che sarebbe leggerlo dal processore.
Doug Smythies,

1
hai installato sudo apt install msr-tools?
abu_bua,

1
msr-tools è il pacchetto. Sarebbe man rdmsre man wrmsrper due dei singoli comandi all'interno del pacchetto.
Doug Smythies,

5

Non so cosa vuoi davvero. Il programma lm-sensor (e quindi il sensorscomando) fa uso della libreria libsensor ; se usi Ubuntu 18.04 è libsensors4 , versione 3.4.0-4. Questa è la stessa libreria che legge la temperatura che si può vedere nella sysdirectory.

Per riassumere, i sensori sono una buona scelta. Per vedere continuamente la temperatura usare

watch -n 1 sensors

Se vuoi scrivere un programma, devi dare un'occhiata a libsensors man libsensorso dare un'occhiata in /usr/share/doc/. È necessario includere #include <sensors/sensors.h>. Utilizzerà i sensors.conffile /etc/sensors3.conf e / o /etc/sensors.conf . Ulteriore configurazione (utenti) può essere trovata in /etc/sensors.d/, se utilizzata.

Se ritieni che manchi qualche sensore, dai un'occhiata alla /sys/class/thermalo alla /sys/devices/virtual/thermaldirectory collegata .

Per ottenere le temperature di tutte le zone termiche utilizzare

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

77000
66000
67000

La temperatura è misurata in miliCelcius (mC), nel caso sopra 77,0, 66,0, 67,0 ° C.

Per guardare continuamente usare

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

In questa directory puoi anche trovare informazioni sui tuoi dispositivi di raffreddamento (ventola) e su come sono programmati i regolatori PID.

Vorrei anche affermare che una certa protezione da sovratemperatura è codificata in base all'hardware (questa è una buona idea), in cui i dati vengono inseriti nel BIOS.


so che ci sono programmi, ma stavo cercando un modo per trovare manualmente questi esempi

1
Cosa intendi con manuale? Tutto ciò che stampa la temperatura sono programmi.
abu_bua,

non ho un thermal_zone, tutto quello che ho sono cooling_device0 1 e 2 ma non contengono un file temp, solo cur_state device max_state power sottosistema tipo

cur e max state sono 0 e 10

Cosa sono esattamente thermal_zones? La mia CPU Intel a 4 core sembra avere solo un singolo thermal_zone( sensors, tuttavia, elenca correttamente tutte e 4 le temperature core).
Gwyneth Llewelyn,

5

Installa Psensor ( psensor ) dai repository Ubuntu predefiniti e configura Psensor per riprodurre automaticamente un suono di avviso ogni volta che la temperatura supera un massimo determinato dall'utente. Lo scopo di questo è farti sentire un suono di avviso prima che il tuo sistema si spenga senza aggiungere ulteriori costi di applicazione al tuo sistema.

Psensor si visualizza sul desktop come una piccola icona del termometro nell'area di notifica nell'angolo in alto a destra del desktop accanto all'orologio. È possibile fare clic con il pulsante destro del mouse sull'icona del termometro in qualsiasi momento per visualizzare le temperature dell'hardware.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.