O kernel do Linux suporta a detecção e correção de erros (EDAC ) recursos de alguns chipsets. Em um sistema compatível com ECC , o status do seu controlador de memória pode ser acessado via sysfs:
/sys/devices/system/edac/mc
A árvore de diretórios nesses locais deve corresponder ao seu hardware, por exemplo:
/sys/devices/system/edac/mc/mc0/csrow2/power
/sys/devices/system/edac/mc/mc0/csrow0/power
/sys/devices/system/edac/mc/mc0/dimm2/power
/sys/devices/system/edac/mc/mc0/dimm0/power
/sys/devices/system/edac/mc/mc1/power
...
Dependendo do seu hardware, você pode ter que carregar explicitamente o driver edac correto, cf.:
find /lib/modules/$(uname -r) -name '*edac*'
O edac-utils
package fornece um frontend de linha de comando e uma biblioteca para acessar esses dados, por exemplo:
edac-util -rfull
mc0:csrow0:mc#0memory#0:CE:0
mc0:csrow2:mc#0memory#2:CE:0
mc0:noinfo:all:UE:0
mc0:noinfo:all:CE:0
mc1:noinfo:all:UE:0
mc1:noinfo:all:CE:0
Você pode configurar algum tipo de cron-job que chame periodicamente eac-util
e insira os resultados em seu sistema de monitoramento, onde você poderá configurar algumas notificações.
Além disso, executar mcelog
geralmente é uma boa ideia. Depende do sistema, mas erros de ECC incorrigíveis / corrigíveis provavelmente são relatados como exceção de verificação de máquina ( MCE ), bem . Quer dizer, até mesmo breves períodos de afogamento da CPU devido a temperaturas mais altas são reportados como MCE.