Comment vérifier si la RAM fonctionne en mode ECC?

11

J'ai mis à jour ce post depuis que j'ai remplacé le processeur, mais le cœur de ma question (et malheureusement aussi les résultats) sont les mêmes.


J'ai construit ma première boîte FreeNAS et je voulais utiliser la RAM ECC car je veux stocker des données critiques. Parce que je suis sur un budget, je voulais opter pour la solution la plus abordable qui prendrait toujours en charge la RAM ECC.

Après avoir fait quelques recherches, j'ai découvert que j'avais besoin d'une carte mère, d'une mémoire et d'un processeur prenant en charge ECC. Ma carte mère de choix est le "Gigabyte X150M-Pro ECC" qui a le chipset C232, la DDR4 et une prise LGA1151.

J'ai également acheté un kit de deux modules DIMM fabriqués par Kingston avec le numéro de modèle "KVR21E15S8K2 / 8" ( fiche technique ). Gigabyte a publié une liste de modules de mémoire testés et mes modules semblent être pris en charge avec le fonctionnement ECC ( liste des modules pris en charge ).

Étiquette RAM

Puisque je suis sur un budget, j'avais besoin d'un processeur Skylake abordable qui prend en charge ECC. Selon Intel, le Celeron G3900 prend en charge ECC, donc je suis allé avec celui-ci.

Après avoir construit l'ordinateur, je voulais vérifier que mon système fonctionne bien avec la mémoire ECC et être entré dans le BIOS de la carte mère. À partir de divers sites Internet, j'ai découvert que certaines cartes mères ont une section spéciale qui devrait indiquer si ECC fonctionne, mais ma carte mère ne semble pas avoir cela. J'ai vérifié tous les menus et je n'ai pas trouvé de section similaire.

Après avoir fait plus de recherches et trouvé un post sur l'échange de pile Unix et Linux qui n'a pas résolu mon problème. J'ai essayé le dernier memtest86+qui, d'après ce que j'ai pu voir, ne montre même pas la valeur "ECC". J'ai essayé l'ancienne version 4.20 utilisée par les systèmes Puget qui montrait "ECC: off". Cependant, après avoir lu le post mentionné précédemment, je doute qu'il dise la vérité (c'est peut-être pourquoi la fonctionnalité a été supprimée?). Les deux versions n'ont pas non plus lu la vitesse et la latence correctes du DIMM, ce qui ajoute à mes doutes memtest86+.

memtest86 + capture d'écran

Une autre façon populaire de savoir, si ECC fonctionne, était d'émettre la dmidecode -t memorycommande et de lire le Total Widthet Data Width. Mes résultats étaient 128 Bitset 64 Bitsrespectivement. Une partie de la sortie montrait des détails sur la matrice de mémoire qui avait une paire clé-valeur de Error Correction Type: Single-bit ECC.

Je m'attendais 72 bitsà cela Total Width, j'ai donc pensé que cela pourrait être lié au double canal et j'ai déplacé les modules de mémoire dans deux emplacements adjacents qui devraient empêcher le double canal, mais le résultat était le même. Voici la sortie complète de dmidecode -t memory.

J'ai même essayé l'intéressant programme C publié par Puget Systems, mais le résultat a été 0, n'indiquant aucun support ECC.

Maintenant, je commence à douter que les données sur le site Web d'Intel sont correctes et que mon processeur ne prend pas réellement en charge ECC. La mémoire et la carte mère sont spécifiquement marquées avec "ECC", donc je peux les exclure.

Est-il possible que la version du BIOS nécessite une mise à jour (il n'y en a actuellement aucune) pour activer l'ECC ou l'ECC fonctionne-t-il déjà et je n'ai tout simplement pas pu le vérifier? Ou mon choix de CPU est-il incorrect, si je veux exécuter la mémoire ECC et que le site Web d'Intel est faux / trompeur?

Si mon CPU s'avère être le mauvais choix, quel serait le prochain meilleur choix pour un "CPU ECC économique"?

MISE À JOUR: J'ai vu une nouvelle indication que mon système pourrait en fait fonctionner avec ECC activé et que l' dmidecodeoutil rapporte simplement des données étranges. Sur le forum FreeNAS, l'utilisateur Dusan utilise du matériel de qualité serveur (SuperMicro MB, Xeon CPU, Kingston DIMM) et a une sortie similaire avec 128 Bits. Mais il a écrit qu'il n'est pas sûr de lui-même, si cela fonctionne réellement.

MISE À JOUR 2: Comme yagmoth555 l'a mentionné dans sa réponse à cette question, il semble que ma carte mère ne supporte que ECC avec les processeurs Xeon, bien que je pensais que cette note était une relique des manuels précédents qui avaient été copiés. Je suppose que cela signifie que je dois examiner un processeur Xeon ..: - /


MISE À JOUR 3: J'ai acheté un Xeon E3-1220v5 maintenant qui, bien sûr, prend en charge ECC et devrait répondre aux exigences du manuel. J'ai exécuté à nouveau tous les tests pour vérifier la fonctionnalité ECC et les résultats sont fondamentalement identiques:

ecc_check et dmidecode

D'après les commentaires de Puget Systems, il semble également que le ecc_check.cprogramme ne fonctionne pas sur les processeurs Xeon et Core i7 ..: - /

J'ai vérifié un memtest86+peu plus cette fois et je suis assez certain qu'il ne prend pas du tout en charge la DDR4 ou le chipset C232, car il signale non seulement la mauvaise vitesse et le mauvais timing mais également la DDR3 au lieu de la DDR4 installée. Cependant, il a très bien détecté le processeur, mais j'ai toujours obtenu le même résultat final avec les deux versions de memtest86+:

memtest86 + v5.01

La version 4.20 ne détecte même pas correctement mon processeur.

memtest86 + v4.20

Toutes les idées sur la façon dont je peux tester ECC sont très appréciées.

comfreak
la source
Eh bien, si votre machine ne supportait pas ECC, cela ne démarrerait pas :)
Orphans
1
@Orphans Avant de trouver la carte mère, j'en ai vu d'autres moins chères qui réclamaient le "support ECC" sur d'autres chipsets comme le Z170, etc. Je me demande donc si mon cas en est un comme ça?
comfreak
Si ECC vous le voyez généralement dans la section POST. Pouvez-vous appuyer sur ESC pendant le démarrage pour voir l'écran boit?
yagmoth555
Essayez également memtest de memtest86.com
citrin
@comfreak hmm, vous avez raison.
Orphelins

Réponses:

4

Aujourd'hui, j'ai découvert qu'il existe une version commerciale de memtest86(sans le +) de PassMark qui propose également une version gratuite qui inclut heureusement ECC-Checks.

En outre, il prend également en charge DDR4 et toutes les autres fonctionnalités de memtest86+.

Mon résultat semble être positif pour le support ECC, donc je l'appellerai fait, même si j'espérais obtenir le même résultat avec des outils "traditionnels" comme dmidecode.

résultat memtest86


Si quelqu'un tombe sur ce message à un moment ultérieur et a besoin de validation et de tests supplémentaires, il propose également une version payante qui prend en charge l'injection d'erreurs ECC pour tester réellement les capacités ECC.

comfreak
la source
3

Modifié : Mauvaise nouvelle depuis le manuel de votre carte mère ...:

entrez la description de l'image ici


Je vois que vous exécutez BSD / linux, exécutez cela à l'intérieur du système d'exploitation; (Disponible pour FreeNAS )

dmidecode -t 17

Vous devriez avoir une sortie comme:

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

La largeur totale: 72 bits est la pièce que vous recherchez.

Sur le système Windows, vous pouvez exécuter

wmic MEMORYCHIP get DataWidth,TotalWidth

// ECC Memory DataWidth TotalWidth 64 72

// Mémoire non ECC DataWidth TotalWidth 64 64

La réponse pour FreeBSD et Windows a pris à partir de

yagmoth555
la source
C'est essentiellement ce que j'ai déjà essayé dmidecode -t memoryet mon résultat était de 128 bits Totalet 64 bitsData
comfreak
@comfreak dmidecode -t 17 retourner quoi?
yagmoth555
J'obtiens essentiellement la même sortie comme dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak
@comfreak bien, 128 n'a aucun sens pour moi. généralement c'est 64 non ecc ou 64b + 8b (72) pour ECC (miroir ?? 64 + 64?). mais la recherche dans 'dmidecode total width 128' liste beaucoup de freenas post ... beaucoup semblent essayer de détecter l'ECC avec le script python
./ecc_check.py
Mon hypothèse était que cela pourrait être lié au double canal, mais j'obtiens même le même résultat lorsque je mets les deux modules dans deux canaux distincts, ce qui signifie que le double canal ne devrait pas fonctionner.
comfreak
3

En utilisant un processeur Ryzen 7, aucun des outils mentionnés n'a fonctionné pour moi non plus. Cependant, avec un noyau Linux assez récent, les outils dans edac-utils, edac-ctl et edac-util peuvent lire l'état ECC et également des choses comme le nombre d'erreurs corrigées. Le journal du noyau contiendra également des lignes avec "EDAC" dans dmesg, ce qui devrait également fournir des informations. Cette fonctionnalité peut être testée en overclockant la RAM et en vérifiant que les erreurs sont signalées (si elles sont suffisamment élevées), c'est à peu près autant de preuves que possible que cela fonctionne vraiment. Cependant, même si ces outils signalent des erreurs ou ne fonctionnent pas, cela signifie uniquement que la lecture des informations d'état ECC n'est pas prise en charge, il ne semble pas y avoir de moyen fiable à 100% de prouver que ECC ne fonctionne PAS ...

user415177
la source
1
Avez-vous essayé Passmarks memtest86? (Celui que j'ai mentionné dans ma réponse)
comfreak
Bien que votre sortie puisse varier, pour vérifier les informations EDAC dans dmesg, vous pouvez l'exécuter dmesg | grep EDAC(vous devrez peut-être l'exécuter avec les privilèges root). Par exemple, sur un système basé sur Ryzen avec une mémoire ECC installée et activée dans le BIOS (le cas échéant), vous pouvez voir une ligne qui ressemble àamd64: Node 0: DRAM ECC enabled.
Joe
0

Pour les cartes mères et les chipsets non serveur, seules les cartes mères AMD spécifiques (comme ASRock) et les chipsets AMD proposent ECC.

Pour Intel, ils ne rendent ECC disponible que sur les chipsets Xeon du serveur. Intel désactive ECC sur leurs chipsets de bureau.

d hee
la source
C'est peut-être vrai, mais cela ne répond pas à la vraie question qui a été posée ici.
comfreak
Cela s'applique à la question opérationnelle car il exécute une puce Intel non xeon. La réponse est qu'il ne peut pas vérifier.
d hee
La dernière phrase de votre réponse est incorrecte, car le chipset C232 par exemple est un "chipset de bureau" et prend en charge ECC. En dehors de cela, la question est plus générale, comme la façon de vérifier, comme si vous ne savez pas si elle est prise en charge ou non.
comfreak