web-dev-qa-db-fra.com

Comment vérifier si RAM fonctionne en mode ECC?

J'ai mis à jour cet article 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 ECC RAM car je veux stocker des données critiques. Parce que j'ai un budget limité, je voulais opter pour la solution la plus abordable qui prendrait encore en charge ECC RAM.

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, DDR4 et un socket 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 ).

RAM label

Comme 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 un section spéciale qui devrait dire 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é la dernière 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 que les systèmes Puget utilisaient 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 module DIMM, ce qui ajoute à mes doutes envers memtest86+.

memtest86+ screenshot

Une autre façon populaire de savoir, si ECC fonctionne, était d'émettre le dmidecode -t memory commande et lire le Total Width et Data Width. Mes résultats étaient 128 Bits et 64 Bits respectivement. 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 pour le Total Width, j'ai donc pensé que cela pouvait ê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 le sortie complète de dmidecode -t memory.

J'ai même essayé l'intéressant programme C que les systèmes Puget ont publié, mais le résultat a été 0, indiquant l'absence de prise en charge 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 ait besoin d'une mise à jour (il n'y en a actuellement aucune) pour activer ECC ou est-ce que ECC fonctionne 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 processeur s'avère être le mauvais choix, quel serait le prochain meilleur choix pour un "processeur ECC économique"?

MISE À JOUR: J'ai vu quelques nouvelle indication que mon système pourrait réellement fonctionner avec ECC activé et le dmidecode outil rapporte simplement des données étranges. Au forum FreeNAS, l'utilisateur Dusan utilise du matériel de qualité serveur (SuperMicro MB, CPU Xeon, 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 ont é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 relancé tous les tests pour vérifier la fonctionnalité ECC et les résultats sont fondamentalement identiques:

ecc_check and dmidecode

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

J'ai vérifié memtest86+ encore une fois cette fois et je suis quasiment 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 aussi la DDR3 au lieu de la DDR4 installée. Cependant, il a détecté très bien 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.

11
comfreak

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

De plus, 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.

memtest86 result


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.

4
comfreak

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

enter image description here


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

Le 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 provient de

3
yagmoth555

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 aussi 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 le 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 seulement 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 ...

3
user415177

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 du serveur Xeon. Intel désactive ECC sur leurs chipsets de bureau.

0
d hee