¿Cómo encuentro las temperaturas sin software de terceros?

12

Estoy ejecutando sensors-detecten mi sistema lm-sensorsporque mi sistema se apaga cuando veo videos de YouTube

Entonces, me pregunto cómo puedo encontrar las temperaturas del ventilador y la CPU manualmente sin un software de terceros lm-sensors. Simplemente no estoy seguro de dónde están almacenados.

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
fuente
¿Qué versión de Ubuntu estás ejecutando?
wjandrea
1
Depende de tu procesador. Para muchos procesadores Intel recientes, el programa de turbostato leerá los MSR (registros específicos de la máquina) y mostrará el paquete y las temperaturas centrales. Edite su pregunta y agregue su procesador para hacer un modelo. Si es uno que conozco, responderé con cómo hacerlo manualmente.
Doug Smythies
si la RAM adicional que agregué tuviera un problema ..., la RAM es de 1333 megatransfers por segundo y la CPU es de MHz máximo: 2800.0000
11
¿Qué quieres decir con tercero? ¿Cuánto de Ubuntu crees que es el software de origen?
muru
1
No estoy exactamente seguro de cuántas partes usa Ubuntu antes de que el usuario intercepte la distribución para su uso. Sé en un aspecto general que Ubuntu es un sistema operativo Linux al que me referí como la primera parte, seguido de mí y luego la pregunta en cuestión, dejando mi programa cuestionable como la tercera parte en lugar de decir una variante de la sexta parte de la pared. o después de los patrocinadores de ubtunu y / o los softwares de programación volentaria, así que no lo sé exactamente.

Respuestas:

12

Parece que lo que quieres es /sys/class/hwmony /sys/class/thermal.

Ambos proporcionan acceso simple basado en shell a los datos que desea (el directorio hwmon también incluirá otros tipos de sensores). Cada uno tiene un directorio para cada interfaz de sensor en su sistema (que puede tener más de un sensor).

Sin embargo, hay otras tres cosas a tener en cuenta:

  • A menos que tenga un sistema realmente malo, ejecutar el sensorscomando incluso una vez por segundo no debería tener ningún efecto perceptible. De hecho, leer regularmente los archivos en los directorios mencionados anteriormente puede tener más efecto.
  • Los gráficos son tu amigo aquí. Sugeriría que se ejecute algo como netdata o collectd para que tenga datos en tiempo real (o casi en tiempo real) para ver.
  • Comprueba tus voltajes también. Lo que describe también podría deberse a tener una fuente de alimentación que no puede cumplir con los requisitos de alimentación de su sistema. Esto se indicará por voltajes que caen significativamente cuando el sistema está bajo una carga alta.
Austin Hemmelgarn
fuente
Esta debería ser la respuesta aceptada, porque trata con la pregunta real planteada: "¿cómo puedo encontrar las temperaturas [...] manualmente [...]? Simplemente no estoy seguro de dónde están almacenadas". Luego, algunos /proc/cpuinfomuestran un procesador AMD. No estoy seguro de por qué OP aceptó una respuesta específica de Intel que requiere la instalación de otra herramienta.
Aaron F
@ AaronF: No estoy en desacuerdo. Escribí una respuesta específica de Intel porque el OP me lo pidió. ¿Ninguna otra herramienta necesita ser instalada? La razón por la que leo las temperaturas de los paquetes directamente a través de MSR en lugar de hacerlo /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputes que la mayor parte de mi trabajo es con sistemas extremadamente inactivos, y el último método tiene mucha más sobrecarga, lo que resulta en un resultado consistente de 4 a 5 grados más alto. Por supuesto, no hay diferencia para un sistema muy cargado.
Doug Smythies
1
@DougSmythies Pensé que tu respuesta fue muy buena y completa, por eso no voté en contra ni dejé un comentario negativo debajo de ella :-) El programa rdmsr es parte de msr-tools, que no está instalado por defecto en mi Intel máquina (ejecutando Ubuntu, ¿quizás otras distribuciones se instalan por defecto si detectan Intel?)
Aaron F
@AaronF: Olvidé que msr-tools es un paquete adicional necesario. Entonces mi método también necesita una herramienta adicional, que no es lo que quería el OP.
Doug Smythies
2
Hola @ DougSmythies y Aaron F, originalmente había elegido a DougSmythies como la respuesta principal porque él fue el primero en brindar asistencia y su respuesta fue muy clara sobre cómo buscar la temperatura manualmente, así como usar la solución manual en una solución fácil de usar programa con soporte mdmsr. De hecho, fue una decisión difícil ya que ambas respuestas fueron muy informativas, pero dado que ambos acordaron que esta respuesta fue la mejor. Le devolví la respuesta principal a Aaron, gracias por su apoyo. Happy hunting
9

Esta respuesta trata sobre una forma de monitorear la temperatura del procesador manualmente para algunos procesadores Intel mediante el acceso directo a los registros específicos de la máquina (MSR).

Lo primero a tener en cuenta es, en este caso, lo que se lee del MSR es relativo al Tcc, la temperatura límite, por lo que se requiere un cálculo adicional para determinar la temperatura real.

Consulte el Manual del desarrollador de software de arquitecturas Intel® 64 e IA-32 o, en su caso, el equivalente de AMD.

En mi caso, quiero los bits 22-16 del MSR en 0x1B1, también conocido como IA32_PACKAGE_THERM_STATUS. El Tcc para mi i7-2600K anterior es de 98 grados.

Aquí hay un script simple para monitorear la temperatura (y la frecuencia de la CPU) manualmente:

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

Y aquí hay algunos resultados de muestra, donde agrego algo de carga de CPU después de un tiempo (la temperatura va de 31 a 73 grados):

$ 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
fuente
¿Por qué lo usas eval?
wjandrea
@Doug: ¡Gran respuesta para usar msr! Sin embargo, ¿no es el msr correcto registrar 0x19c ? Y la temperatura es TEMP = TCC - [0x19c bits 22:16]. Por lo tanto, es necesario leer el TCC primero.
abu_bua
@abu_bua: No sé si 0x19c funciona o no, pero lo que estoy usando sí. Y sí, codifiqué TCC para mi procesador en lugar de la mejor solución que sería leerlo desde el procesador.
Doug Smythies
1
instalaste sudo apt install msr-tools?
abu_bua
1
msr-tools es el paquete. Sería man rdmsry man wrmsrpara dos de los comandos individuales dentro del paquete.
Doug Smythies
5

No sé lo que realmente quieres. El programa lm-sensor (y, por lo tanto, el sensorscomando) hacen uso de la biblioteca libsensor ; en caso de que use Ubuntu 18.04 es libsensors4 , versión 3.4.0-4. Esta es la misma biblioteca que lee la temperatura como se puede ver en el sysdirectorio.

Para resumir, los sensores son una buena opción. Para ver la temperatura continuamente use

watch -n 1 sensors

Si quieres escribir un programa, tienes que echar un vistazo a libsensors con man libsensorso echar un vistazo en el /usr/share/doc/. Tienes que incluir #include <sensors/sensors.h>. Utilizará los sensors.confarchivos /etc/sensors3.conf y / o /etc/sensors.conf . Se puede encontrar más configuración (usuarios) en /etc/sensors.d/, si se usa.

Si cree que le faltan algunos sensores, eche un vistazo al directorio /sys/class/thermalvinculado /sys/devices/virtual/thermal.

Para obtener las temperaturas de todas las zonas térmicas, use

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

77000
66000
67000

La temperatura se mide en miliCelcius (mC), en el caso superior a 77.0, 66.0, 67,0 ° C.

Para mirar continuamente usar

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

En este directorio también puede encontrar información sobre sus dispositivos de enfriamiento (ventilador) y cómo se programan los reguladores PID.

También me gustaría afirmar que parte de la protección contra sobretemperatura está codificada según el hardware (esta es una buena idea), donde los datos se colocan en su BIOS.

abu_bua
fuente
Sé que hay programas, pero estaba buscando una manera de encontrar manualmente los pasos
1
¿Qué quieres decir con manualmente? Todo lo que imprime la temperatura son programas.
abu_bua
no tengo una zona térmica, todo lo que tengo son enfriamiento_dispositivo0 1 y 2 pero no tienen una temperatura de archivo, solo dispositivo_sistema de energía cur_state max_state tipo de sistema uevent
cur y max state son 0 y 10
¿Qué son exactamente los thermal_zones? Mi CPU Intel de 4 núcleos parece tener solo una thermal_zone( sensorssin embargo, enumera correctamente las 4 temperaturas centrales).
Gwyneth Llewelyn
5

Instale Psensor ( psensor ) desde los repositorios predeterminados de Ubuntu y configure Psensor para reproducir automáticamente un sonido de alerta siempre que la temperatura supere el máximo determinado por el usuario. El propósito de esto es permitirle escuchar un sonido de advertencia antes de que su sistema se apague sin agregar sobrecarga de aplicaciones adicionales a su sistema.

Psensor se muestra en el escritorio como un pequeño icono de termómetro en el área de notificación en la esquina superior derecha del escritorio al lado del reloj. Puede hacer clic con el botón derecho en el icono del termómetro en cualquier momento para mostrar las temperaturas del hardware.

karel
fuente