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 ).
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+
.
Une autre façon populaire de savoir, si ECC fonctionne, était d'émettre la dmidecode -t memory
commande et de 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
à 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' dmidecode
outil 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:
D'après les commentaires de Puget Systems, il semble également que le ecc_check.c
programme 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+
:
La version 4.20 ne détecte même pas correctement mon processeur.
Toutes les idées sur la façon dont je peux tester ECC sont très appréciées.
Réponses:
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
.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.
la source
Modifié : Mauvaise nouvelle depuis le manuel de votre carte mère ...:
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
La réponse pour FreeBSD et Windows a pris à partir de là
la source
dmidecode -t memory
et mon résultat était de 128 bitsTotal
et 64 bitsData
dmidecode -t memory
: slexy.org/view/s2JimvAzl6En 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 ...
la source
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.
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.
la source