Eu tenho um computador (muito antigo) (com uma placa-mãe ASUS A8N-SLI DELUXE e um processador AMD Opteron (tm) 180) que monitorei com munin, e o Vcore Voltage
como lido por lm-sensors
está sempre em um estado Critical
porque o volt de entrada está sempre abaixo do limite mínimo. Eu nunca me incomodei muito por anos, mas hoje eu tentei corrigir esse erro. No entanto, depois de várias horas de solução de problemas, não consegui resolver o problema porque não posso alterar os limites mínimo / máximo que são somente leitura.
Aqui estão minhas descobertas até agora:
O estado crítico vem porque o valor da tensão Vcore de entrada está fora dos valores mínimo / máximo.
Um sensors -u
informa o seguinte:
...
atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:
in0_input: 1.104
in0_min: 1.450
in0_max: 1.750
...
Como você pode ver, o in0_min
é 1.45V
, mas o in0_input
é menor que o min 1.104V
.
Depois de ler a documentação do arquivo de configuração do lm-sensors ( link ) eu descobri que posso corrija os valores min / max com alguma configuração apropriada. Então eu criei um arquivo /etc/sensors.d/atk0110.conf
com o seguinte conteúdo:
chip "atk0110-*"
label in0 "Vcore Voltage"
set in0_min 1.05
Em seguida, executei sensors -s
(leia a seção Set Statement
na página man para mais informações) para que as configurações entrem em vigor e a lança! Eu recebi o seguinte erro:
Error: File /etc/sensors.d/atk0110.conf, line 5: Failed to set value
atk0110-acpi-0: At least one "set" statement failed
Depois de algumas pesquisas, descobri que esse erro ocorre porque esses valores são codificados no BIOS e não podem ser alterados. Eles são expostos através do sistema de arquivos sysfs ao kernel quando o módulo asus_atk0110
é carregado e os valores são lidos a partir do caminho /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/
. Em particular, para in0_min
, o valor é lido desse arquivo: /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/in0_min
.
Minha segunda tentativa foi tentar testar a instrução compute
no arquivo conf de sensores, mas logo descobri que não posso apenas calcular o min / max. Quando alguém usa a instrução compute no arquivo sensors.conf, todas as sub-características de uma entrada são afetadas pela computação. Na página man do sensors.conf:
A compute statement describes how a feature's raw value should be translated to a real-world value, and how a real-world value should be translated back to a raw value again. This is most useful for voltage sensors, because in general sensor chips have a limited range and voltages outside this range must be divided (using resistors) before they can be monitored...
...
...
A compute statement applies to all sub-features of the target feature for which it makes sense.
...
Isso significa que, no meu caso, todos os três valores, in0_input
, in0_min
, in0_max
serão afetados. Então, se eu usar algo assim na configuração:
chip "atk0110-*"
label in0 "Vcore Voltage"
compute in0 @-0.4,@
o que acabo lendo é isto:
atk0110-acpi-0
Adapter: ACPI interface
Vcore Voltage:
in0_input: 0.992
in0_min: 1.050
in0_max: 1.350
Como você pode ver, todos os valores diminuíram em 0,4 volts, então, novamente, o valor de entrada é menor que min e o status Critical permanece.
Existe alguma maneira de ajustar SOMENTE os valores mínimo / máximo em sensores de lm se esses valores forem somente leitura?
Outra opção seria tentar corrigir o problema do lado munin, se possível, mas a origem do problema, neste caso, é lm-sensors, então acredito que é aí que o problema deve ser resolvido.