Quais sensores posso monitorar no meu AMD Threadripper 1950x em uma mobo ASRock x399 Taichi no Linux. Foi anunciado no ano passado que o monitoramento de temperatura estava funcionando para processadores Ryzen e que supostamente estava incluído no kernel 4.15, de acordo com isso: https://www.phoronix.com/scan.php?page=news_item&px=AMD-Zen-Temps -Hwmon-Próximo . No entanto, parece que as temperaturas estão compensadas, o que foi corrigido no kernel 4.18.6 de acordo com isso: https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.18.6-k10temp-Correct
Tanto quanto posso dizer, não há absolutamente nenhuma conversa sobre monitoramento de temperatura por núcleo no Linux, como está disponível no Windows.
No entanto, outras fontes sugerem que talvez eu precise construir módulos especificamente baseados na minha placa-mãe. Essas instruções parecem sugerir que eu possa construir os drivers de kernel apropriados com base na saída de sensores-detect: https://linuxconfig.org/monitor-amd-ryzen-temperatures-in-linux-with-latest-kernel-modules
De acordo com a detecção de sensores, tenho o nct6775, mas não consigo encontrar nenhum sinal de que tenho o módulo de kernel apropriado (não mostrado com lsmod, há algum outro lugar que eu deva procurar?). Infelizmente, não posso compilar a partir do repositório porque ele não está mais no github.
Então essas são minhas perguntas:
Quais drivers e módulos do kernel fornecem quais informações? Especificamente, quais fornecem as leituras por núcleo disponíveis no Windows?
Qual é o status dos drivers de temperatura para Ryzen no linux: completos, incompletos, hackeados e nunca confiáveis?
Se eu conseguir construir o nct6775, o que isso me dará além do K10 que já tenho? Onde mais eu poderia ir para obter a fonte para construí-los?
Por que isso é tão mal documentado? Não é ter informações claras sobre isso um ano e meio após o lançamento do curso, a AMD está sendo incomumente inútil para os padrões da indústria?
Há muitas tentativas de responder à pergunta geral no link a seguir. Infelizmente, nenhum deles é abrangente, então tentarei melhorá-los. Linux: Como encontrar o driver de dispositivo usado para um dispositivo?
No seu caso, o dispositivo sensor pode ser encontrado em um dos links mostrados em
ls -l /sys/class/hwmon/*
. Você pode tentar estender esse comando e encontrar seu módulo do kernel imediatamente:No entanto, este comando faz algumas suposições. Não funcionará em todos os casos. Se o comando não funcionar, reduza-o verificando cada elo individual na cadeia. Há três casos possíveis.
Você tem um
driver
link, mas nenhummodule
link.Isso significa que o driver está embutido no kernel! O que meio que responderia à sua pergunta :-).
É igualmente possível
ls -l
nodriver
link. Ou seja, para ver o nome do driver, altere o comando acima para remover a/module
peça. Muitas vezes, o nome do driver é o mesmo que o nome do módulo carregável, mas às vezes eles são diferentes.O
driver
link não está imediatamente abaixodevice
de , mas ...Se o comando acima não funcionar, talvez seja necessário substituir
device
pordevice/device
, ou assim por diante.O
device
link leva você ao dispositivo pai. Mas às vezes o driver está no dispositivo do avô, ou ainda mais :-).Nenhum dos pais
device
tem umdriver
link ou não há nenhumdevice
link pai.O
device
link leva você ao dispositivo pai. Por exemplo, você pode ter um dispositivo de rede/sys/class/wlan0
e/sys/class/wlan0/device
pode apontar para uma placa PCI que fornecewlan0
.No seu caso, posso imaginar não ter nada parecido com um dispositivo no
pci
barramento padrão. Nesse caso, o driver deve definir seu próprio dispositivo personalizado, em/sys/devices/platform/
. Isso é exatamente o que ocoretemp
driver da minha CPU Intel faz.Mas se o seu driver errar, ele criará um dispositivo sem pai e, portanto, sem
device
link. Sensores (hwmon
dispositivos) são um dos dispositivos filhos mais obscuros; Já vi isso acontecer várias vezes antes. Olhando emls /sys/devices/virtual/*
, parece que tenho três dispositivos que erram, e todos eles sãohwmon
dispositivos.Se não houver "físico" / pai
device
- então não pode haverdriver
. Esse é o comportamento esperado para dispositivos genuinamente virtuais, como loopback (lo
) oubridge
dispositivos de rede. Ele reflete o modelo de dispositivo do kernel Linux. Em um dispositivo físico, você pode remover o driver que está vinculado a ele e potencialmente vincular um driver diferente. Não faria sentido oferecer suporte a isso sem ter um dispositivo físico. É lamentável porque não existe um método equivalente como este, para encontrar o módulo que implementa um dispositivo virtual.Conteúdo:
1. Exemplo de resultados procurando em /sys
Mas os outros resultados não parecem tão úteis :-). O que é
virtual/thermal/thermal_zone0/hwmon0
?hwmon
dispositivos (e alguns outros tipos) também têm um arquivoname
. Por exemplo, oiwlwifi
sensor, que é realmente fornecido pela minha placa Intel Wi-Fi. Mas o driver está com bugs e o declarou como um dispositivo virtual.Aqui está um dispositivo diferente, onde o driver está no "avô":
Também não há módulo para este driver, porque este está embutido no kernel. Você pode confirmar isso se encontrar a opção correspondente na configuração de compilação do kernel. Isso não é necessariamente nomeado da mesma forma que o módulo.
2. Encontrei o nome do módulo, agora...
Você disse que não tem 100% de certeza do que fez. Se você encontrou o nome do módulo, mas ficou preocupado porque não se lembra se o instalou de um site desconhecido, aqui estão algumas coisas que você pode ver.
Você pode recarregar um módulo e verificar o caminho de onde seu módulo foi recarregado:
Então você pode consultar seu gerenciador de pacotes para confirmar se o arquivo do módulo veio do pacote do kernel de distribuição. Por exemplo, para RPM:
Seu gerenciador de pacotes também deve permitir que você verifique se os arquivos do pacote instalado não foram modificados.
Não é tão simples confirmar de onde veio o pacote :-). Normalmente você olha para o nome do pacote e adivinha :-). Você pode obter uma lista de pacotes disponíveis e de onde eles vêm, por exemplo, com
dnf info kernel
, mas não acho que o dnf possa mostrar a soma de verificação do arquivo RPM que foi instalado ou dos RPMs disponíveis.