Eu tenho um computador (muito antigo) (com uma placa-mãe ASUS A8N-SLI DELUXE e um processador AMD Opteron (tm) 180) monitorado com munin, e o Vcore Voltage
lido por lm-sensors
sempre está em um Critical
estado porque o volt de entrada está sempre abaixo o limite mínimo. Eu nunca me incomodei muito por anos, mas hoje tentei consertar essa informação incorreta. No entanto, após várias horas de solução de problemas, não consegui resolver o problema porque não consigo alterar os limites mínimo / máximo que são somente leitura.
Aqui estão minhas descobertas até agora:
O estado Crítico ocorre porque o valor da tensão de entrada Vcore está fora dos valores mínimo / máximo.
A sensors -u
relata 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 in0_min
é 1.45V
, mas o in0_input
é menos de min 1.104V
.
Depois de ler a documentação do arquivo de configuração do lm-sensores ( https://linux.die.net/man/5/sensors.conf ), descobri que posso corrigir os valores mínimo / máximo com alguma configuração adequada. 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
Então eu executei sensors -s
(Leia a seção Set Statement
na página de manual para obter mais informações) para que as configurações entrem em vigor e prosperem! 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 pesquisar no Google, 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 no caminho /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/
. Em particular, para in0_min
o valor é lido a partir deste arquivo: /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/in0_min
.
Minha segunda tentativa foi tentar a compute
declaração no arquivo conf de sensores, mas logo descobri que não posso apenas calcular o mínimo / máximo. Quando se usa a instrução de computação no arquivo sensors.conf, todos os sub-recursos de uma entrada são afetados pela computação. Na página de manual do sensor.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 parecido com isto na configuração:
chip "atk0110-*"
label in0 "Vcore Voltage"
compute in0 @-0.4,@
o que eu acabo lendo é o seguinte:
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ídos em 0,4 volts, novamente o valor de entrada é menor que min e o status de munição crítica permanece.
Existe alguma maneira de ajustar APENAS os valores mínimo / máximo nos sensores lm se esses valores forem somente leitura?
Outra opção seria tentar resolver o problema do lado de munin, se possível, mas a fonte do problema neste caso é lm-sensores, então acredito que é aí que o problema deve ser resolvido.