fragen stichworte

Wie prüfe ich, ob der RAM im ECC-Modus läuft?

Ich habe diesen Beitrag aktualisiert, seit ich den Prozessor ausgetauscht habe, aber der Kern meiner Frage (und leider auch die Ergebnisse) sind die gleichen.


Ich habe meine erste FreeNAS-Box entwickelt und wollte ECC-RAM verwenden, da ich wichtige Daten speichern möchte. Da ich über ein begrenztes Budget verfügte, wollte ich die kostengünstigste Lösung, die noch ECC-RAM unterstützt.

Nach einigen Nachforschungen stellte ich fest, dass ich ein Motherboard, Speicher und eine CPU benötige, die ECC unterstützt. Mein bevorzugtes Motherboard ist das "Gigabyte X150M-Pro ECC", das über den C232-Chipsatz, DDR4 und eine LGA1151-Buchse verfügt.

Ich habe auch ein Kit mit zwei DIMMs von Kingston mit der Modellnummer "KVR21E15S8K2/8" (Datenblatt) gekauft. Gigabyte hat eine Liste der getesteten Speichermodule veröffentlicht, und meine Module werden von ECC (Liste der unterstützten Module) unterstützt.

RAM label

Da ich ein begrenztes Budget habe, brauchte ich eine kostengünstige Skylake-CPU, die ECC unterstützt. Laut Intel unterstützt der Celeron G3900 ECC, also bin ich mit diesem gegangen.

Nach dem Aufbau des Computers wollte ich überprüfen, ob mein System tatsächlich mit ECC-Speicher ausgeführt wird, und das BIOS des Motherboards aufgerufen. Von verschiedenen Internetseiten habe ich herausgefunden, dass einige Motherboards einen speziellen -Abschnitt haben, der erkennen sollte, ob ECC funktioniert, aber mein Motherboard scheint das nicht zu haben. Ich habe alle Menüs überprüft und konnte keinen ähnlichen Abschnitt finden.

Nachdem ich einige Nachforschungen angestellt hatte und einen post auf Unix & Linux StackExchange gefunden hatte, konnte mein Problem nicht gelöst werden. Ich habe das neueste memtest86+ ausprobiert, das aus meiner Sicht nicht einmal den Wert "ECC" anzeigt. Ich habe die ältere 4.20-Version ausprobiert, die von Puget-Systemen verwendet wurde, die "ECC: off" zeigte. Nach dem Lesen des zuvor genannten Beitrags bezweifle ich jedoch, dass er die Wahrheit sagt (vielleicht wurde das Feature deshalb entfernt?). Beide Versionen haben auch nicht die korrekte Geschwindigkeit und Latenz des DIMM ausgelesen, was meine Zweifel in Bezug auf memtest86+ noch verstärkt.

memtest86+ screenshot

Eine andere beliebte Möglichkeit, um herauszufinden, ob ECC funktioniert, besteht darin, den Befehl dmidecode -t memory auszugeben und die Befehle Total Width und Data Width auszulesen. Meine Ergebnisse waren 128 Bits bzw. 64 Bits. Ein Teil der Ausgabe zeigte Details über das Speicherarray mit einem Schlüsselwertpaar Error Correction Type: Single-bit ECC.

Ich habe 72 bits für den Total Width erwartet, also dachte ich, es könnte sich auf Dual Channel beziehen, und die Speichermodule wurden in zwei benachbarte Steckplätze verschoben, was Dual Channel verhindern sollte, aber das Ergebnis war das gleiche. Hier ist die Vollausgabe von dmidecode -t memory.

Ich habe sogar das interessante C-Programm ausprobiert, das von Puget-Systemen veröffentlicht wurde, aber das Ergebnis war 0, was keine Unterstützung der ECC anzeigt.

Nun beginne ich zu bezweifeln, dass die Daten auf der eigenen Website von Intel korrekt sind und meine CPU ECC nicht wirklich unterstützt. Sowohl der Speicher als auch das Motherboard sind speziell mit "ECC" gebrandet, sodass ich diese ausschließen kann.

Ist es möglich, dass für die BIOS-Version ein Update erforderlich ist (derzeit gibt es kein), um ECC zu aktivieren, oder funktioniert ECC tatsächlich bereits und ich konnte es nicht überprüfen? Oder ist meine Wahl der CPU falsch, wenn ich ECC-Speicher ausführen möchte und Intels Website falsch/irreführend ist?

Wenn sich herausstellt, dass meine CPU die falsche Wahl ist, was wäre die nächstbeste Wahl für eine "Budget-ECC-CPU"?

UPDATE: Ich habe einen neuen Hinweis gesehen, dass mein System tatsächlich mit ECC aktiviert ist und das Tool dmidecode nur seltsame Daten meldet. Auf dem FreeNAS-Forum verwendet der Benutzer Dusan Server-Hardware (SuperMicro MB, Xeon-CPU, Kingston DIMM) und hat eine ähnliche Ausgabe mit 128 Bits. Er schrieb jedoch, dass er selbst nicht sicher ist, ob es tatsächlich funktioniert.

UPDATE 2: Wie yagmoth555 in seine Antwort auf diese Frage erwähnt, scheint mein Motherboard nur ECC mit Xeon-Prozessoren zu unterstützen, obwohl ich dachte, dass diese Notiz ein Relikt von war frühere Handbücher, die kopiert wurden. Ich denke, das bedeutet, dass ich in einen Xeon-Prozessor schauen muss.: -/


UPDATE 3: Ich habe mir jetzt einen Xeon E3-1220v5 gekauft, der natürlich ECC unterstützt und die Anforderung aus dem Handbuch erfüllen sollte. Ich habe alle Tests erneut ausgeführt, um die ECC-Funktionalität zu überprüfen. Die Ergebnisse sind im Wesentlichen identisch:

ecc_check and dmidecode

Aus den Kommentaren bei Puget Systems scheint auch, dass das Programm ecc_check.c auf Xeon- und Core i7-Prozessoren nicht funktioniert.:://rq91>

Ich habe memtest86+ dieses Mal etwas mehr ausgecheckt und bin ziemlich sicher, dass er DDR4 oder den C232-Chipsatz nicht unterstützt, da er nicht nur die falsche Geschwindigkeit und das falsche Timing, sondern auch DDR3 anstelle des installierten DDR4 anzeigt . Der Prozessor wurde zwar einwandfrei erkannt, aber mit beiden Versionen von memtest86+ habe ich immer noch dasselbe Endergebnis:

memtest86+ v5.01

Version 4.20 erkennt meinen Prozessor nicht einmal richtig.

memtest86+ v4.20

Alle Ideen, wie ich noch auf ECC testen kann, werden sehr geschätzt.

antworten

Heute habe ich herausgefunden, dass es eine kommerzielle Version von memtest86 (ohne +) von PassMark gibt, die auch eine kostenlose Version bietet, die glücklicherweise ECC-Checks enthält.

Darüber hinaus unterstützt es auch DDR4 und alle anderen Funktionen von memtest86+.

Mein Ergebnis scheint positiv für die ECC-Unterstützung zu sein, also werde ich dies als erledigt bezeichnen, obwohl ich mit "traditionellen" Tools wie dmidecode das gleiche Ergebnis erzielen wollte.

memtest86 result


Wenn jemand zu einem späteren Zeitpunkt über diesen Post stolpert und weitere Validierungen und Tests benötigt, bietet er auch eine kostenpflichtige Version, die die ECC-Fehlerinjektion unterstützt, um die ECC-Fähigkeiten tatsächlich zu testen.

bearbeitet: Schlechtes neues aus dem Handbuch Ihres Motherboards ...:

enter image description here


Ich sehe, dass Sie BSD/Linux ausführen. Führen Sie das innerhalb des Betriebssystems aus. (Verfügbar für FreeNAS)

dmidecode -t 17

Sie sollten eine Ausgabe wie:

haben

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

Die Gesamtbreite: 72 Bits ist der Teil, nach dem Sie suchen.

Auf Windows-Systemen können Sie

ausführen

wmic MEMORYCHIP get DataWidth,TotalWidth

//ECC Memory DataWidth TotalWidth 64 72

//Non-ECC Memory DataWidth TotalWidth 64 64

Antwort für FreeBSD & amp; Windows hat von dort

übernommen

Mit einem Ryzen 7-Prozessor funktionierte auch keines der erwähnten Tools für mich. Mit einem neueren Linux-Kernel können die Tools in edac-utils, edac-ctl und edac-util den ECC-Status und auch die Anzahl der korrigierten Fehler auslesen. Das Kernel-Protokoll enthält auch Zeilen mit "EDAC" in dmesg, die ebenfalls einige Informationen liefern sollen. Diese Funktionalität kann weiter getestet werden, indem man den RAM übertaktet und überprüft, ob Fehler gemeldet werden (wenn man hoch genug geht), das ist ungefähr so ​​viel Beweis wie möglich, dass es wirklich funktioniert. Aber selbst wenn diese Tools Fehler melden oder nicht funktionieren, bedeutet das nur, dass das Lesen von ECC-Statusinformationen nicht unterstützt wird, es scheint keine 100% zuverlässige Methode zu geben, zu beweisen, dass ECC NICHT funktioniert ...

Für Nicht-Server-Motherboards und Chipsätze bieten nur bestimmte AMD-Motherboards (wie ASRock) und alle AMD-Chipsätze ECC.

Bei Intel wird ECC nur auf Server-Xeon-Chipsätzen verfügbar. Intel deaktiviert ECC auf ihren Desktop-Chipsätzen.