Eu tenho um laptop (thinkpad) com 2 cpus. Atualmente, eu posso ler as temperaturas da CPU nos arquivos abaixo com cat (1):
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
Minha pergunta é por que o kernel armazena essas informações em tantos lugares diferentes e qual é o arquivo "padrão" para ler a temperatura de uma CPU?
Isso está acontecendo devido a distribuições systemd (eu estou usando o Arch Linux) ou Linux não systemd, como o Slackware, ter uma abordagem diferente?
fonte
Primeiro,
/sys/class
é uma maneira conveniente de encontrar coisas/sys
. Você encontrará tudo o que há dentro, na verdade, é um link simbólico; Tenho certeza de que sua primeira estrofe está vinculada à sua terceira estrofe.A segunda estrofe é o kernel que lê a temperatura diretamente do CPU / chipset. A terceira estrofe é o kernel que obtém o valor do BIOS via ACPI. Enquanto no sistema eles podem dar a mesma resposta, eles não precisam (por exemplo, o BIOS pode estar usando sensores diferentes, calculando a média de alguns juntos ou aplicando algum ajuste específico da placa).
Finalmente, cada estrofe tem duas leituras diferentes, porque provavelmente existem dois termômetros. Ou pelo menos, a API do hardware permite isso.
fonte
Dê uma olhada nos arquivos * _label para ver o que está sendo relatado - eis o meu i5:
(grep "" é usado apenas como "gato com nomes de arquivos")
Então, aqui está uma temperatura total da CPU, mais uma temperatura por núcleo.
Em um sistema maior, com várias CPUs, você pode ver dezenas de entradas.
fonte