Como verificar se a RAM está sendo executada no modo ECC?

11

Atualizei este post desde que substituí o processador, mas o núcleo da minha pergunta (e infelizmente os resultados também) são os mesmos.


Construí minha primeira caixa do FreeNAS e queria usar a RAM do ECC, pois desejo armazenar dados críticos. Por estar com um orçamento limitado, queria buscar a solução mais acessível que ainda suportasse a RAM do ECC.

Depois de fazer algumas pesquisas, descobri que preciso de uma placa-mãe, memória e uma CPU que suporte ECC. Minha placa-mãe preferida é o "Gigabyte X150M-Pro ECC", que possui o chipset C232, DDR4 e um soquete LGA1151.

Também comprei um kit de dois DIMMs fabricados pela Kingston com o número do modelo "KVR21E15S8K2 / 8" ( folha de especificações ). A Gigabyte publicou uma lista de módulos de memória testados e meus módulos parecem ser suportados pelo ECC ( lista de módulos suportados ) em funcionamento.

Etiqueta RAM

Como estou com um orçamento, precisava de uma CPU Skylake acessível que suporte ECC. Segundo a Intel, o Celeron G3900 suporta ECC, então eu fui com esse.

Depois de montar o computador, queria verificar se meu sistema está realmente funcionando com memória ECC e entrei no BIOS da placa-mãe. Em vários sites da Internet, descobri que algumas placas-mãe têm uma seção especial que informa se o ECC está funcionando, mas minha placa-mãe parece não ter isso. Verifiquei todos os menus e não consegui encontrar uma seção semelhante.

Depois de fazer mais algumas pesquisas e encontrei um post sobre a troca de pilha Unix e Linux que não resolveu meu problema. Eu tentei o mais recente memtest86+que, pelo que pude dizer, nem mostra o valor "ECC". Eu tentei a versão 4.20 mais antiga que os sistemas Puget usavam, que mostrava "ECC: off". No entanto, depois de ler o post mencionado anteriormente, duvido que ele diga a verdade (talvez seja por isso que o recurso foi removido?). Ambas as versões também não leram a velocidade e latência corretas do DIMM, o que aumenta minhas dúvidas memtest86+.

captura de tela do memtest86 +

Outra maneira popular de descobrir, se o ECC está funcionando, era emitir o dmidecode -t memorycomando e ler o Total Widthe Data Width. Meus resultados foram 128 Bitse 64 Bitsrespectivamente. Uma parte da saída mostrou detalhes sobre a matriz de memória com um par de valores-chave Error Correction Type: Single-bit ECC.

Eu esperava 72 bitso Total Width, então pensei que poderia estar relacionado ao canal duplo e movi os módulos de memória para dois slots adjacentes, o que deveria impedir o canal duplo, mas o resultado foi o mesmo. Aqui está a saída completa de dmidecode -t memory.

Eu até tentei o interessante programa C publicado pelos sistemas Puget, mas o resultado foi que 0não indicava suporte ao ECC.

Agora, estou começando a duvidar que os dados no site da Intel estejam corretos e minha CPU não suporte realmente o ECC. Tanto a memória quanto a placa-mãe são marcadas especificamente com "ECC", para que eu possa descartá-las.

É possível que a versão do BIOS precise de uma atualização (atualmente não existe) para ativar o ECC ou o ECC já está funcionando e eu simplesmente não consegui verificar? Ou minha escolha de CPU está errada, se eu quiser executar a memória ECC e o site da Intel estiver errado / enganoso?

Se minha CPU for a escolha errada, qual seria a próxima melhor opção para uma "CPU ECC de orçamento"?

ATUALIZAÇÃO: Vi algumas novas indicações de que meu sistema pode estar em execução com o ECC ativado e a dmidecodeferramenta apenas relata dados estranhos. No fórum do FreeNAS, o usuário Dusan está usando hardware de servidor (SuperMicro MB, CPU Xeon, Kingston DIMM) e possui uma saída semelhante 128 Bits. Mas ele escreveu que não tem certeza, se realmente funciona.

ATUALIZAÇÃO 2: Como yagmoth555 mencionou em sua resposta a esta pergunta, parece que minha placa-mãe suporta apenas ECC com processadores Xeon, embora eu pensasse que essa anotação era uma relíquia de manuais anteriores que foram copiados. Eu acho que isso significa que eu preciso procurar em um processador Xeon ..: - /


ATUALIZAÇÃO 3: Comprei um Xeon E3-1220v5 agora que, obviamente, suporta ECC e deve atender aos requisitos do manual. Eu executei todos os testes novamente para verificar a funcionalidade do ECC e os resultados são basicamente idênticos:

ecc_check e dmidecode

Pelos comentários da Puget Systems, também parece que o ecc_check.cprograma não funciona nos processadores Xeon e Core i7 ..: - /

memtest86+Dessa vez, fiz um check-out mais e tenho certeza de que ele não suporta DDR4 ou o chipset C232, pois relata não apenas a velocidade e os horários errados, mas também o DDR3 em vez do DDR4 instalado. No entanto, ele detectou o processador muito bem, mas ainda assim obtive o mesmo resultado final nas duas versões do memtest86+:

memtest86 + v5.01

A versão 4.20 nem detecta meu processador corretamente.

memtest86 + v4.20

Todas as idéias sobre como mais posso testar o ECC são muito bem-vindas.

comfreak
fonte
Bem, se você máquina não suportar ECC, não iria começar :)
Orphans
1
@ Órfãos Antes de encontrar a placa-mãe, vi algumas mais baratas que alegavam "suporte ECC" em outros chipsets como o Z170 etc. Acontece que isso significa apenas que a placa pode funcionar (não travar) com a memória ECC, mas não a usará efetivamente. Então, eu estou querendo saber se o meu caso é assim?
comfreak
Se o ECC normalmente você o vê na seção POST. Você pode pressionar ESC durante a inicialização para ver a tela do boit?
yagmoth555
Tente também memtest de memtest86.com
citrin 20/10
@comfreak hmm, você está certo.
Órfãos

Respostas:

4

Hoje eu descobri que há uma versão comercial do memtest86(sem +) da PassMark que oferece uma versão gratuita também que felizmente incluiu ECC-cheques.

Além disso, ele também suporta DDR4 e todos os outros recursos do memtest86+.

Meu resultado parece ser positivo para o suporte do ECC, por isso chamarei isso de concluído, mesmo esperando obter o mesmo resultado com ferramentas "tradicionais", como dmidecode.

resultado memtest86


Se alguém se deparar com essa postagem posteriormente e precisar de mais validação e testes, também oferecerá uma versão paga que suporta a injeção de erro do ECC para realmente testar os recursos do ECC.

comfreak
fonte
3

Editado : Novidades ruins no manual da placa-mãe ...:

insira a descrição da imagem aqui


Vejo você rodar BSD / linux, rodar dentro do sistema operacional; (Disponível para FreeNAS )

dmidecode -t 17

Você deve ter uma saída como:

dmidecode 2.12 SMBIOS 2.5 present.

Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2

A largura total: 72 bits é a parte que você está procurando.

No sistema Windows, você pode executar

wmic MEMORYCHIP get DataWidth,TotalWidth

// Memória ECC DataWidth TotalWidth 64 72

// Memória não ECC DataWidth TotalWidth 64 64

A resposta para o FreeBSD e Windows levou a partir daí

yagmoth555
fonte
Isso é basicamente o que eu já tentei com dmidecode -t memorye meu resultado foi 128 bits Totale 64 bitsData
comfreak
@comfreak dmidecode -t 17 return what?
yagmoth555
Eu basicamente obter a mesma saída como dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak
@ quebra bem, 128 não faz sentido para mim. normalmente é 64 não ecc ou 64b + 8b (72) para ECC (espelho ?? 64 + 64?). mas 'total dmidecode largura 128' busca lista um monte de FreeNAS postar ... um monte parecem tentar detectar a ECC com script python ./ecc_check.py
yagmoth555
Minha suposição era de que ele poderia estar relacionado ao canal duplo, mas eu até obtive o mesmo resultado ao colocar os dois módulos em dois canais separados, o que significa que o canal duplo não deve funcionar.
comfreak
3

Usando um processador Ryzen 7, nenhuma das ferramentas mencionadas funcionou para mim também. No entanto, com um kernel Linux recente o suficiente, as ferramentas do edac-utils, edac-ctl e edac-util podem ler o status do ECC e também coisas como número de erros corrigidos. O log do kernel também conterá linhas com "EDAC" no dmesg, que também deve fornecer algumas informações. Essa funcionalidade pode ser testada ainda mais com overclocking da RAM e verificando se os erros são relatados (se estiverem altos o suficiente), ou seja, a maior prova possível de que ela realmente funciona. No entanto, mesmo que essas ferramentas relatem erros ou não funcionem, isso significa apenas que a leitura das informações de status do ECC não é suportada, parece não haver uma maneira 100% confiável de provar que o ECC NÃO está funcionando ...

user415177
fonte
1
Você tentou Passmarks memtest86? (O que eu mencionei na minha resposta)
comfreak
Embora sua saída possa variar, para verificar as informações do EDAC no dmesg, você pode executar dmesg | grep EDAC(pode ser necessário executar isso com privilégios de root). Por exemplo, em um sistema baseado em Ryzen com memória ECC instalada e ativada no BIOS (se aplicável), é possível ver uma linha parecidaamd64: Node 0: DRAM ECC enabled.
Joe
0

Para placas-mãe e chipsets que não sejam servidores, apenas placas-mãe AMD específicas (como ASRock) e quaisquer chipsets AMD oferecem ECC.

Para a Intel, eles disponibilizam o ECC apenas nos chipsets do servidor Xeon. A Intel desativa o ECC em seus chipsets de desktop.

d hee
fonte
Isso pode ser verdade, mas não responde à pergunta real que foi feita aqui.
Comfreak 25/09
Isso se aplica à questão operacional, pois ele está executando um chip Intel não xeon. A resposta é que ele não pode verificar.
d Hee
Apenas a última frase da sua resposta está incorreta, pois o chipset C232, por exemplo, é um "chipset de desktop" e suporta ECC. Além disso, a questão é mais geral, como em como verificar, como se você não sabe se é suportado ou não.
Comfreak 25/09