Comment trouver les températures sans logiciel tiers?

12

Je suis en cours sensors-detectd' exécution sur mon système lm-sensorscar mon système s'arrête quand je regarde des vidéos YouTube

Je me demande donc comment puis-je trouver les températures du ventilateur et du processeur manuellement sans un logiciel tiers comme lm-sensors? Je ne sais tout simplement pas où ils sont stockés.

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
la source
Quelle version d'Ubuntu utilisez-vous?
wjandrea
1
Cela dépend de votre processeur. Pour de nombreux processeurs Intel récents, le programme du turbostat lira les MSR (Registres spécifiques aux machines) et affichera les températures du boîtier et du cœur. Modifiez votre question et ajoutez votre processeur pour créer un modèle. Si c'est un que je connais, je répondrai avec comment le faire manuellement.
Doug Smythies
la RAM supplémentaire que j'ai ajoutée aurait-elle un problème .., la RAM est de 1333 mégatransfert par seconde, et le processeur est max MHz: 2800.0000
11
Qu'entendez-vous par tiers? Quelle part d'Ubuntu pensez-vous être un logiciel de première partie?
muru le
1
Je ne sais pas exactement combien de parties Ubuntu utilise avant que l'utilisateur n'intercepte la distribution pour l'utiliser. Dans un aspect général, je sais qu'Ubuntu est un système d'exploitation Linux que j'ai appelé le premier parti, suivi par moi et ensuite la question à portée de main, laissant mon programme discutable au 3ème parti plutôt que de dire une variante du 6ème parti du mur de ou après des sponsors ubtunu et / ou des logiciels de programmeurs volontaires, donc je ne sais pas exactement.

Réponses:

12

Cela ressemble à ce que vous voulez /sys/class/hwmonet /sys/class/thermal.

Les deux fournissent un accès simple basé sur le shell aux données que vous souhaitez (le répertoire hwmon inclura également d'autres types de capteurs). Chacun a un répertoire pour chaque interface de capteur dans votre système (qui peut avoir plus d'un capteur).

Trois autres choses à noter cependant:

  • Sauf si vous avez un système vraiment mauvais, exécuter la sensorscommande même une fois par seconde ne devrait pas avoir d'effet perceptible. En fait, la lecture régulière des fichiers dans les répertoires mentionnés ci-dessus peut avoir plus d'effet.
  • Les graphiques sont votre ami ici. Je suggérerais de lancer quelque chose comme netdata ou collectd pour que vous ayez des données en temps réel (ou presque en temps réel) à regarder.
  • Vérifiez également vos tensions. Ce que vous décrivez pourrait également être dû à une alimentation qui ne peut pas répondre aux exigences d'alimentation de votre système. Cela sera indiqué par une baisse importante des tensions lorsque le système est sous forte charge.
Austin Hemmelgarn
la source
Cela devrait être la réponse acceptée, car elle traite de la question réelle posée: "Comment puis-je trouver les températures [...] manuellement [...]? Je ne sais tout simplement pas où elles sont stockées." Puis certains /proc/cpuinfomontrant un processeur AMD. Je ne sais pas pourquoi OP a alors accepté une réponse spécifique à Intel qui nécessite l'installation d'un autre outil.
Aaron F
@AaronF: Je ne suis pas en désaccord. J'ai écrit une réponse spécifique à Intel parce que l'OP me l'a demandé. Aucun autre outil ne doit être installé? La raison pour laquelle je lis les températures des packages directement via MSR plutôt que via /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputest que la plupart de mon travail concerne des systèmes extrêmement inactifs, et cette dernière méthode a beaucoup plus de frais généraux, ce qui donne un résultat cohérent de 4 à 5 degrés plus élevé. Bien sûr, il n'y a pas de différence pour un système lourdement chargé.
Doug Smythies
1
@DougSmythies Je pensais que votre réponse était très bonne et complète, c'est pourquoi je n'ai pas downvote ni laissé de commentaire négatif en dessous :-) Le programme rdmsr fait partie de msr-tools, qui n'est pas installé par défaut sur mon Intel machine (exécutant Ubuntu, peut-être d'autres distributions installées par défaut si elles détectent Intel?)
Aaron F
@AaronF: J'ai oublié que msr-tools est un package supplémentaire nécessaire. Ma méthode a donc également besoin d'un outil supplémentaire, ce qui n'est pas ce que le PO voulait.
Doug Smythies
2
Bonjour @ DougSmythies et Aaron F, j'avais initialement choisi DougSmythies comme réponse principale parce qu'il était le premier à fournir une assistance et sa réponse était très claire sur la façon de rechercher la température manuellement ainsi que d'utiliser la solution manuelle dans une utilisation facile programme avec le support mdmsr, Ce fut en fait une dure décision car les deux réponses étaient très instructives, Mais puisque vous avez tous deux convenu que cette réponse était la meilleure. J'ai retourné la réponse principale à Aaron, merci pour votre soutien. Bonne chasse
9

Cette réponse est une façon de surveiller manuellement la température du processeur pour certains processeurs Intel en accédant directement aux registres spécifiques à la machine (MSR).

La première chose à noter est, dans ce cas, ce qui est lu dans le MSR est relatif au Tcc, la température limite, donc un calcul supplémentaire est nécessaire pour déterminer la température réelle.

Reportez-vous au Manuel du développeur du logiciel des architectures Intel® 64 et IA-32 ou, dans votre cas, à l'équivalent AMD.

Dans mon cas, je veux les bits 22-16 du MSR à 0x1B1, alias IA32_PACKAGE_THERM_STATUS. Le Tcc pour mon ancien i7-2600K est de 98 degrés.

Voici un script simple pour surveiller manuellement la température (et la fréquence du 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

Et voici un exemple de sortie, où j'ajoute un peu de charge CPU après un certain temps (la température passe de 31 à 73 degrés):

$ 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
la source
Pourquoi utilisez-vous eval?
wjandrea
@Doug: Excellente réponse pour utiliser msr! Cependant, le bon registre msr n'est-il pas 0x19c ? Et la température est TEMP = TCC - [0x19c bits 22:16]. Il est donc nécessaire de lire d'abord le TCC.
abu_bua
@abu_bua: Je ne sais pas si 0x19c fonctionne ou non, mais ce que j'utilise fait. Et oui, j'ai codé en dur TCC pour mon processeur plutôt que la meilleure solution qui serait de le lire depuis le processeur.
Doug Smythies
1
avez-vous installé sudo apt install msr-tools?
abu_bua
1
msr-tools est le package. Ce serait man rdmsret man wrmsrpour deux des commandes individuelles du package.
Doug Smythies
5

Je ne sais pas ce que tu veux vraiment. Le programme lm-sensor (et donc la sensorscommande) utilise la bibliothèque libsensor ; si vous utilisez Ubuntu 18.04, il s'agit de libsensors4 , version 3.4.0-4. Il s'agit de la même bibliothèque qui lit la température comme on peut le voir dans le sysrépertoire.

Pour résumer, les capteurs sont un bon choix. Pour surveiller la température en continu, utilisez

watch -n 1 sensors

Si vous voulez écrire un programme, vous devez jeter un œil aux libsensors avec man libsensorsou jeter un œil dans le /usr/share/doc/. Vous devez inclure #include <sensors/sensors.h>. Il utilisera les sensors.conffichiers /etc/sensors3.conf et / ou /etc/sensors.conf . Une configuration supplémentaire (utilisateurs) peut être trouvée dans /etc/sensors.d/, si elle est utilisée.

Si vous pensez que certains capteurs vous manquent, jetez un œil au /sys/class/thermalou au /sys/devices/virtual/thermalrépertoire lié .

Pour obtenir les températures de toutes les zones thermiques, utilisez

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

77000
66000
67000

La température est mesurée en milCelcius (mC), dans le cas supérieur à 77,0, 66,0, 67,0 ° C.

Pour regarder en permanence utiliser

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

Dans ce répertoire, vous pouvez également trouver des informations sur vos dispositifs de refroidissement (ventilateur) et sur la programmation des régulateurs PID.

Je tiens également à préciser que certaines protections contre les surchauffes sont codées très matériellement (c'est une bonne idée), où les données sont placées dans votre bios.

abu_bua
la source
je sais qu'il y a des programmes, mais je cherchais un moyen de trouver manuellement th etemps
1
Qu'entendez-vous par manuellement? Tout ce qui imprime la température sont des programmes.
abu_bua
je n'ai pas de thermal_zone, tout ce que j'ai sont cooling_device0 1 et 2 mais ils n'ont pas de temp de fichier, seulement le type de sous-système d'alimentation cur_state
cur et max state sont 0 et 10
Quels sont exactement les thermal_zones? Mon processeur Intel à 4 cœurs semble n'en avoir qu'un seul thermal_zone( sensorscependant, répertorie correctement les 4 températures de cœur).
Gwyneth Llewelyn
5

Installez Psensor ( psensor ) à partir des référentiels Ubuntu par défaut et configurez Psensor pour jouer automatiquement un son d'alerte chaque fois que la température dépasse un maximum déterminé par l'utilisateur. L'objectif est de vous permettre d'entendre un avertissement avant que votre système ne s'arrête sans ajouter de surcharge d'application supplémentaire à votre système.

Psensor s'affiche sur le bureau sous la forme d'une petite icône de thermomètre dans la zone de notification dans le coin supérieur droit du bureau à côté de l'horloge. Vous pouvez cliquer avec le bouton droit sur l'icône du thermomètre à tout moment pour afficher les températures matérielles.

Karel
la source