Como saber se o RAM ECC está funcionando?

Como saber se o RAM ECC está funcionando?

Estou planejando adquirir alguma RAM ECC para substituir a RAM não ECC que atualmente instalei na minha placa-mãe Asus M5A97 Pro (chipset AMD 970, CPU FX-6100).

Depois de instalar a RAM,como posso saber se o recurso ECC da RAM está funcionando corretamente?

Pensei no dmidecode --type memoryque atualmente é impresso entre outros para cada stick de RAM:

Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits

(Por um lado, eu esperaria que com 1 bit de ECC por byte a largura dos dados permanecesse em 64 bits, mas a largura total fosse de 72 bits.)

Isso pode ser usado para determinar se o ECC está operacional? Ou o nível do dmidecode é muito baixo para isso? O que mais eu poderia usar (exceto esperar e ver se um erro de ECC aparece nos logs, o que indicaria que está funcionando, mas não que não está funcionando)?

Atualizar:Mais tarde pensei em edac-utils. Instalando-os, eu entendo Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set. Isso me deu edac-utile edac-ctlexecutáveis. Um desses pode ser usado para esse fim?

Responder1

Parece quenão há nenhuma maneira infalível de saber, no entanto, várias abordagens podem fornecer algum tipo de resposta. Aparentemente, você terá que tentar os diferentes até encontrar um que diga que o ECC está funcionando.

No meu casomemtest86+ 4.20não foi possível persuadi-lo a perceber que estava lidando com RAM ECC; mesmo que eu tenha configurado para ECC On, ele ainda reporta ECC: Disabledna linha IMC. Ainda não tentei com uma versão mais recente. No entanto (possivelmente depois de instalar o edac-utils, infelizmente fiz as duas coisas essencialmente ao mesmo tempo), o Linux relata nos logs de inicialização (intercalados com algumas outras entradas):

[    4.867198] EDAC MC: Ver: 2.1.0
...
[    4.874374] MCE: In-kernel MCE decoding enabled.
[    4.875414] AMD64 EDAC driver v3.4.0
[    4.875438] EDAC amd64: DRAM ECC enabled.
...
[    4.875542] EDAC amd64: CS0: Unbuffered DDR3 RAM
[    4.875545] EDAC amd64: CS1: Unbuffered DDR3 RAM
[    4.875546] EDAC amd64: CS2: Unbuffered DDR3 RAM
[    4.875548] EDAC amd64: CS3: Unbuffered DDR3 RAM

o que é uma boa indicação. Fazer manualmente /etc/init.d/edac restartnão cria entradas de log semelhantes e, olhando para um log mais antigo de algumas reinicializações atrás, vejo:

[   13.886688] EDAC MC: Ver: 2.1.0
[   13.890389] MCE: In-kernel MCE decoding enabled.
[   13.891082] AMD64 EDAC driver v3.4.0
[   13.891107] EDAC amd64: DRAM ECC disabled.
[   13.891116] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load.
[   13.891117]  Either enable ECC checking or force module loading by setting 'ecc_enable_override'.
[   13.891118]  (Note that use of the override may cause unknown side effects.)

dmidecode --type memorytambém fornece duas indicações bastante fortes: a propriedade "tipo de correção de erros" da matriz de memória física (que, no entanto, por algum motivomostrou o mesmo em RAM não ECC, então isso pode estar relacionado ao suporte da placa-mãe e não aos recursos da memória),

Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC

e a largura total e largura de dados de cada dispositivo de memória, respectivamente (sendo os bits adicionais aqueles usados ​​para o ECC):

Handle 0x0028, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0026
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits

Responder2

Existe uma maneira muito simples e eficaz de fazer isso, desde que você tenha acesso ao console do seu servidor/PC e possa reiniciá-lo:memtest86+

Esta ferramenta bacana mostrará rapidamente se a memória está habilitada para ECC. Também acredito que ele realizará a validação ECC ao fazer os testes reais.

Aqui está uma captura de tela (um pouco desatualizada): insira a descrição da imagem aqui

Responder3

Tentarei resumir minha experiência com hardware real. Não tenho placas M5A, mas tenho duas placas M4A com chipsets AMD.

AM3

Alguns pontos:

  • As placas-mãe M4A8xx suportam oficialmente ECC.
  • AMD Phenom II e Athlon II suportam ECC. (outros podem funcionar)
  • Os chips AMD Phenom suportam relatórios de erros através do módulo "edac_mce_amd". Este módulo funciona sem ECC e reporta cache ou outros erros relacionados à CPU.
  • RAM ECC é compatível com "amd64_edac".

Neste ponto, a placa M4A funcionou com RAM ECC por mais de 2 anos e não vi erros relatados. Algumas placas parecem não relatar erros corrigíveis (CE). Aconselho você a definir horários instáveis ​​sem ECC e ativá-lo depois para verificar se está funcionando. Você pode usar o Memtest86, mas esse software não relatará eventos ECC, apenas mostrará que a RAM agora está estável com ECC habilitado. O próprio kernel mostra apenas mensagens sem detalhes, não importando quais parâmetros do kernel são passados ​​para o parâmetro de inicialização 'mce':

[Hardware error] Machine Check Exception

Eles também não são contabilizados nas entradas 'edac' em/sys. Nos testes, esses erros serão corrigidos, mas não sei como isso lidará com erros incorrigíveis.

Essas placas ASUS também não parecem relatar nenhum tipo de erro relacionado a erros de CPU. Fiquei ciente dessa funcionalidade pela primeira vez quando uma placa ASRock danificada começou a travar, mas devido ao UE relatado ao sistema operacional. Em placas compatíveis, elas aparecem nas mensagens do kernel no seguinte formato:

[Hardware error] Machine Check Excpetion logged
[Hardware error] ERROR DETAILS, ETC, ETC

Eles não são registrados no log do MCE, mas são manipulados especificamente pelo kernel. (O módulo edac_mce_amd) Isso é útil porque erros não corrigidos podem ser descartados se estiverem em um buffer ou outra opção, como encerrar um processo que teria sua memória corrompida.

Nessas placas ASUS, o relatório de erros da CPUnão está funcionando. Isso é muito ruim porque você pode corromper alguns dados se a fonte de alimentação ou o VRM da placa-mãe estiverem danificados e começarem a gerar erros. Eu não usaria isso sem testar regularmente a estabilidade da CPU.

AM4

Nas placas ASUS AM4, as versões anteriores funcionariam como AM3, mas o relatório de erros de memória estava funcionando corretamente - você poderia ler /sys e obter contagens de erros ou consultar o log do kernel. No BIOS atual, você deve instalar o RAS Daemon e usar o comando 'ras-mc-ctl' para ler as contagens de erros.

Não testei o relatório e o tratamento de erros de CPU nessas plataformas.

informação relacionada