lm-sensores como configurar / calcular corretamente apenas valores mínimo / máximo somente leitura?

2

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 Voltagelido por lm-sensorssempre está em um Criticalestado 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 -urelata 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.confcom 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 Statementna 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_mino valor é lido a partir deste arquivo: /sys/bus/acpi/drivers/ATK0110/ATK0110:00/hwmon/hwmon1/in0_min.

Minha segunda tentativa foi tentar a computedeclaraçã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_maxserã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.

Vangelis Tasoulas
fonte

Respostas:

2

Esta resposta resolve o problema do lado de munin, alterando os limiares de aviso / críticos que munin usa. Portanto, embora meu problema esteja resolvido, não vou marcar a resposta como a solução. Idealmente, o problema deve ser resolvido em torno dos sensores lm.

Vá para o nó que usa o sensors_voltplug - in e execute o comando munin-run sensors_volt config. O comando retornará uma lista de chave / valor reconhecida por munin:

# munin-run sensors_volt config
graph_title Voltages
graph_vlabel Volt
graph_args --base 1000 --logarithmic
graph_category sensors
volt1.label Vcore Voltage
volt1.warning 1.51:1.69
volt1.critical 1.45:1.75
volt2.label  +3.3 Voltage
volt2.warning 3.12:3.48
volt2.critical 3.00:3.60
volt3.label  +5.0 Voltage
volt3.warning 4.70:5.30
volt3.critical 4.50:5.50
volt4.label +12.0 Voltage
volt4.warning 11.60:12.80
volt4.critical 11.20:13.20

Esses valores / chave podem ser alterados no munin.confnó principal.

No meu caso, quero alterar os valores volt1.warninge volt1.critical, portanto, na seção em que o host está definido, adicionei as seguintes linhas:

[host.localdomain]
    address 1.2.3.4
    use_node_name yes
    sensors_volt.volt1.warning 1.05:1.40
    sensors_volt.volt1.critical 1.00:1.45

Portanto, agora os valores de aviso mínimo / máximo foram definidos em 1,05V / 1,40V e os valores críticos em 1V / 1,45V.

Vangelis Tasoulas
fonte
0

No caso de você não sobrecarregar o sistema, você deve ignorar o Vcore:

chip "atk0110-*"
 ignore in0
Oliver R.
fonte
-1

Você precisa ser root para executar o comando set, para que você precise usá sudo sensors -s-lo e, em seguida, ele deve alterar os limites. Quando você executa os sensores novamente, os limites devem ser agora, conforme você os define.

BonnieTwin
fonte