Como encontro as temperaturas sem o software de terceiros?

12

Estou sensors-detectem execução no meu sistema lm-sensorsporque meu sistema fica desligado quando assisto a vídeos do youtube

Então, eu estou querendo saber como posso encontrar as temperaturas do ventilador e da CPU manualmente sem um software de terceiros lm-sensors? Só não tenho certeza de onde eles estão armazenados.

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
fonte
Qual versão do Ubuntu você está executando?
Wjandrea
11
Depende do seu processador. Para muitos processadores Intel recentes, o programa turbostat lerá os MSRs (Machine Specific Registers) e exibirá a temperatura do pacote e do núcleo. Edite sua pergunta e adicione seu processador faça um modelo. Se for um que eu conheço, responderei como fazê-lo manualmente.
Doug Smythies
seria a RAM adicional i adicionado ter um problema .., a RAM é de 1333 megatransfers por segundo, e a CPU é um máximo MHz: 2800,0000
11
O que você quer dizer com terceiros? Quanto do Ubuntu você acha que é um software inicial?
Muru
11
Não sei exatamente quantas partes o Ubuntu usa antes que o usuário intercepte a distribuição para uso. Eu sei em um aspecto geral que o Ubuntu é um sistema operacional Linux que eu me referi como o primeiro participante, seguido por mim e depois pela pergunta em mãos, deixando meu programa questionável como terceiro, em vez de dizer uma variante fora do comum. ou depois de patrocinadores da ubtunu e / ou softwares de programadores volentários, então não sei exatamente.

Respostas:

12

Parece que o que você quer é /sys/class/hwmone /sys/class/thermal.

Ambos fornecem acesso baseado em shell simples aos dados que você deseja (o diretório hwmon também incluirá outros tipos de sensores). Cada um possui um diretório para cada interface de sensor em seu sistema (que pode ter mais de um sensor).

Três outras coisas a serem observadas:

  • A menos que você tenha um sistema realmente ruim, executar o sensorscomando uma vez por segundo não deve ter nenhum efeito perceptível. De fato, a leitura regular dos arquivos nos diretórios mencionados acima pode ter mais efeito.
  • Os gráficos são seus amigos aqui. Eu sugeriria obter algo como netdata ou collectd em execução para que você tenha dados em tempo real (ou quase em tempo real) a serem observados.
  • Verifique suas tensões também. O que sua descrição também pode ser devido a uma fonte de alimentação que não pode atender aos requisitos de energia do sistema. Isso será indicado por quedas significativas de tensão quando o sistema estiver sob carga alta.
Austin Hemmelgarn
fonte
Essa deve ser a resposta aceita, porque lida com a pergunta real: "como posso encontrar as [...] temperaturas manualmente? [...]? Só não tenho certeza de onde elas estão armazenadas". Depois, alguns /proc/cpuinfomostrando um processador AMD. Não sei por que o OP aceitou uma resposta específica da Intel que requer a instalação de outra ferramenta.
23418 Aaron F
@AaronF: Eu não discordo. Eu escrevi uma resposta específica da Intel porque o OP me pediu. Nenhuma outra ferramenta precisa ser instalada? A razão pela qual li as temperaturas dos pacotes diretamente via MSRs e não via /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_inputé que a maior parte do meu trabalho é com sistemas extremamente inativos, e o último método tem muito mais sobrecarga, resultando em um resultado consistente de 4 a 5 graus mais alto. Obviamente, não há diferença para um sistema muito carregado.
Doug Smythies
11
@DougSmythies Eu pensei que sua resposta era muito boa e completa, e é por isso que não diminuí a votação nem deixei um comentário negativo por baixo :-) O programa rdmsr faz parte do msr-tools, que não é instalado por padrão no meu Intel máquina (rodando Ubuntu, talvez outras distros instalado por padrão, se detectar Intel?)
Aaron F
@ AaronF: Eu esqueci que o msr-tools é um pacote adicional necessário. Portanto, meu método também precisa de uma ferramenta adicional, que não é o que o OP queria.
Doug Smythies
2
Olá @ DougSmythies e Aaron F, eu originalmente escolhi DougSmythies como a principal resposta, porque ele foi o primeiro a fornecer assistência e sua resposta foi muito clara sobre como procurar a temperatura manualmente, bem como usar a solução manual em um aplicativo fácil de usar. programa com suporte a mdmsr, foi de fato uma decisão difícil, pois as duas respostas foram muito informativas, mas como os dois concordaram que essa resposta era a melhor. Reverti a resposta principal para Aaron, obrigado por seu apoio. Feliz caça
9

Esta resposta é sobre uma maneira de monitorar a temperatura do processador manualmente para alguns processadores Intel, acessando diretamente o MSR (Machine Specific Registers).

A primeira coisa a observar é, neste caso, o que é lido no MSR é relativo ao Tcc, a temperatura limite, portanto, é necessário um cálculo adicional para determinar a temperatura real.

Consulte o Manual do desenvolvedor de software das arquiteturas Intel® 64 e IA-32 ou, no seu caso, o equivalente da AMD.

No meu caso, quero os bits 22-16 do MSR em 0x1B1, também conhecido como IA32_PACKAGE_THERM_STATUS. O Tcc do meu i7-2600K mais antigo é de 98 graus.

Aqui está um script simples para monitorar a temperatura (e a frequência da 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

E aqui está um exemplo de saída, onde adiciono alguma carga de CPU após algum tempo (a temperatura varia de 31 a 73 graus):

$ 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
fonte
Por que você usa eval?
Wjandrea
@ Doug: Ótima resposta para usar msr! No entanto, o registro de msr certo não é 0x19c ? E a temperatura é TEMP = TCC - [0x19c bits 22:16]. Portanto, é necessário ler o TCC primeiro.
abu_bua
@abu_bua: Não sei se 0x19c funciona ou não, mas o que estou usando faz. E sim, codifiquei o TCC para o meu processador em vez da melhor solução que seria lê-lo no processador.
Doug Smythies
11
você instalou sudo apt install msr-tools?
Abu_bua
11
msr-tools é o pacote. Seria man rdmsre man wrmsrpara dois dos comandos individuais dentro do pacote.
Doug Smythies
5

Eu não sei o que você realmente quer. O programa lm-sensor (e, portanto, o sensorscomando) faz uso da biblioteca libsensor ; caso você use o Ubuntu 18.04, é libsensors4 , versão 3.4.0-4. Esta é a mesma biblioteca que lê a temperatura que pode ser vista no sysdiretório

Para resumir, sensores é uma boa escolha. Para observar a temperatura, use continuamente

watch -n 1 sensors

Se você deseja escrever um programa, é necessário dar uma olhada nos libsensors man libsensorsou no /usr/share/doc/. Você tem que incluir #include <sensors/sensors.h>. Ele usará os sensors.confarquivos /etc/sensors3.conf e / ou /etc/sensors.conf . Mais configurações (usuários) podem ser encontradas em /etc/sensors.d/, se usadas.

Se você acha que estão faltando alguns sensores, dê uma olhada no diretório /sys/class/thermalou no link /sys/devices/virtual/thermal.

Para obter as temperaturas de todas as zonas térmicas, use

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

77000
66000
67000

A temperatura é medida em miliCelcius (mC), no caso acima de 77,0, 66,0, 67,0 ° C.

Para assistir continuamente use

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

Neste diretório, você também pode encontrar informações sobre seus dispositivos de refrigeração (ventilador) e como os reguladores PID são programados.

Eu também gostaria de afirmar que alguma proteção contra superaquecimento é codificada com base em hardware (é uma boa ideia), onde os dados são colocados em sua BIOS.

abu_bua
fonte
Eu sei que há programas, mas eu estava procurando uma maneira de encontrar manualmente th etemps
11
O que você quer dizer com manualmente? Tudo o que imprime a temperatura são programas.
Abu_bua
eu não tenho um thermal_zone, tudo o que tenho são cooling_device0 1 e 2, mas eles não manter uma temperatura de arquivo, Só cur_state dispositivo max_state tipo de subsistema de energia uevent
cur e max state são 0 e 10
O que exatamente são os thermal_zones? Minha CPU Intel de 4 núcleos parece ter apenas uma thermal_zone( sensorsno entanto, lista corretamente todas as 4 temperaturas de núcleo).
Gwyneth Llewelyn
5

Instale o Psensor ( psensor ) nos repositórios padrão do Ubuntu e configure o Psensor para reproduzir automaticamente um som de alerta sempre que a temperatura ultrapassar o máximo determinado pelo usuário. O objetivo disso é permitir que você ouça um som de aviso antes que o sistema seja desligado sem adicionar sobrecarga de aplicativo adicional ao sistema.

O Psensor é exibido na área de trabalho como um pequeno ícone de termômetro na área de notificação, no canto superior direito da área de trabalho, próximo ao relógio. Você pode clicar com o botão direito do mouse no ícone do termômetro a qualquer momento para exibir as temperaturas do hardware.

karel
fonte