Como saber se o RAM ECC está funcionando?

15

Estou planejando obter RAM ECC para substituir a RAM não-ECC que eu já instalei na 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 em dmidecode --type memory , que atualmente é impresso para cada RAM:

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

(Por exemplo, eu esperaria que com 1 bit de ECC por byte a largura dos dados permanecesse 64 bits, mas a largura total para ler 72 bits.)

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

Atualização: Mais tarde, pensei em edac-utils. Instalando-os, recebo Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set . Isso me deu edac-util e edac-ctl executáveis. Um desses pode ser usado para esse fim?

    
por a CVn 26.06.2014 / 12:14

2 respostas

10

Parece que não há uma maneira infalível de saber , no entanto, várias abordagens podem obter algum tipo de resposta. Aparentemente, você praticamente tem que experimentar os diferentes até encontrar um que diga que a ECC está funcionando.

No meu caso, memtest86 + 4.20 não poderia ser persuadido a perceber que estava lidando com a RAM ECC; mesmo se eu configurasse para o ECC On, ele ainda informava ECC: Disabled na linha do IMC. Eu ainda não tentei com uma versão mais recente. No entanto (possivelmente depois de instalar o edac-utils, infelizmente eu fiz os dois essencialmente ao mesmo tempo), o Linux reporta 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

que é uma boa indicação. Fazer manualmente /etc/init.d/edac restart não cria entradas de log semelhantes e, olhando para um log mais antigo de algumas reinicializações, 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 memory também fornece duas indicações bastante strongs: a propriedade "tipo de correção de erro" da matriz de memória física (que, no entanto, por algum motivo mostrou o mesmo na memória RAM não-ECC , então isso pode estar relacionado ao suporte da placa-mãe e não às capacidades 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 largura total e largura de dados de cada dispositivo de memória, respectivamente (os bits adicionais são 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
    
por 27.06.2014 / 14:46
5

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

Esta ferramenta bacana mostrará rapidamente se a memória é habilitada para ECC. Eu também acredito que irá realizar validação ECC ao fazer o teste real.

Aqui está uma captura de tela (ligeiramente desatualizada):

    
por 26.06.2014 / 13:57