Wie überprüfe ich, ob RAM im ECC-Modus ausgeführt wird?

11

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


Ich habe meine erste FreeNAS-Box gebaut und wollte ECC-RAM verwenden, da ich kritische Daten speichern möchte. Da ich ein begrenztes Budget habe, wollte ich mich für die günstigste Lösung entscheiden, die weiterhin ECC-RAM unterstützt.

Nach einigen Recherchen stellte ich fest, dass ich ein Motherboard, Speicher und eine CPU benötige, die ECC unterstützt. Mein Motherboard der Wahl ist das "Gigabyte X150M-Pro ECC" mit dem C232-Chipsatz, DDR4 und einem LGA1151-Sockel.

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 scheinen mit funktionierendem ECC ( Liste der unterstützten Module ) unterstützt zu werden.

RAM-Label

Da ich ein begrenztes Budget habe, brauchte ich eine erschwingliche Skylake-CPU, die ECC unterstützt. Laut Intel unterstützt der Celeron G3900 ECC, also habe ich mich für diesen entschieden.

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

Nachdem ich einige Nachforschungen angestellt und einen Beitrag über den Unix & Linux Stackexchange gefunden hatte, der mein Problem nicht gelöst hat. Ich habe das Neueste ausprobiert, memtest86+was nach meinem Kenntnisstand nicht einmal den Wert "ECC" anzeigt. Ich habe die ältere Version 4.20 ausprobiert, die von Puget-Systemen verwendet wurde und "ECC: off" zeigte. Nachdem ich den zuvor erwähnten Beitrag gelesen habe, bezweifle ich jedoch, dass er die Wahrheit sagt (vielleicht wurde das Feature deshalb entfernt?). Beide Versionen haben auch nicht die richtige Geschwindigkeit und Latenz des DIMM ausgelesen, was meine Zweifel an verstärkt memtest86+.

memtest86 + Screenshot

Ein weiterer beliebter Weg, um herauszufinden, ob ECC funktioniert, bestand darin, den dmidecode -t memoryBefehl auszugeben und das Total Widthund vorzulesen Data Width. Meine Ergebnisse waren 128 Bitsund 64 Bitssind. Ein Teil der Ausgabe zeigte Details über das Speicherarray, das ein Schlüssel-Wert-Paar von hatte Error Correction Type: Single-bit ECC.

Ich hatte erwartet , 72 bitsfür das Total Width, so dachte ich , es auf Dual - Channel - Verbindung gebracht werden könnten , und bewegt die Speichermodule in zwei benachbarte Schlitze , die Dual - Channel verhindern sollte, aber das Ergebnis war das gleiche. Hier ist die volle Ausgabe von dmidecode -t memory.

Ich habe sogar das interessante C-Programm ausprobiert, das Puget-Systeme veröffentlicht haben, aber das Ergebnis war 0, dass keine ECC-Unterstützung vorliegt.

Jetzt bezweifle ich, dass die Daten auf Intels eigener Website korrekt sind und meine CPU ECC nicht unterstützt. Sowohl der Speicher als auch das Motherboard sind speziell mit "ECC" gekennzeichnet, sodass ich diese ausschließen kann.

Ist es möglich, dass die BIOS-Version ein Update benötigt (derzeit gibt es keines), um ECC zu aktivieren, oder funktioniert ECC tatsächlich bereits und ich konnte es einfach nicht überprüfen? Oder ist meine CPU-Wahl falsch, wenn ich ECC-Speicher ausführen möchte und die Intel-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 einige neue Anzeichen dafür gesehen, dass mein System möglicherweise tatsächlich mit aktiviertem ECC ausgeführt wird und das dmidecodeTool nur seltsame Daten meldet. Drüben im FreeNAS-Forum verwendet der Benutzer Dusan Server-Hardware (SuperMicro MB, Xeon-CPU, Kingston DIMM) und hat eine ähnliche Ausgabe mit 128 Bits. Aber er schrieb, dass er selbst nicht sicher ist, ob es tatsächlich funktioniert.

UPDATE 2: Wie yagmoth555 in seiner Antwort auf diese Frage erwähnt hat, scheint mein Motherboard nur ECC mit Xeon-Prozessoren zu unterstützen, obwohl ich dachte, dass dieser Hinweis ein Relikt aus früheren Handbüchern ist, die kopiert wurden. Ich denke, das bedeutet, dass ich in einen Xeon-Prozessor schauen muss ..: - /


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

ecc_check und dmidecode

Aus den Kommentaren bei Puget Systems geht auch hervor, dass das ecc_check.cProgramm auf Xeon- und Core i7-Prozessoren nicht funktioniert ..: - /

memtest86+Diesmal habe ich noch etwas mehr ausprobiert und bin mir ziemlich sicher, dass DDR4 oder der C232-Chipsatz überhaupt nicht unterstützt werden, da nicht nur die falsche Geschwindigkeit und das falsche Timing, sondern auch DDR3 anstelle des installierten DDR4 gemeldet werden. Der Prozessor wurde zwar gut erkannt, aber ich habe mit beiden Versionen von memtest86+: immer noch das gleiche Endergebnis erzielt :

memtest86 + v5.01

Version 4.20 erkennt meinen Prozessor nicht einmal richtig.

memtest86 + v4.20

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

comfreak
quelle
Nun, wenn Ihre Maschine ECC nicht unterstützt, würde es nicht starten :)
Orphans
1
@Orphans Bevor ich das Motherboard gefunden habe, habe ich einige billigere gesehen, die "ECC-Unterstützung" für andere Chipsätze wie Z170 usw. beanspruchten. Es stellt sich heraus, dass das Board nur mit ECC-Speicher ausgeführt werden kann (nicht abstürzt), es aber effektiv nicht verwendet. Also frage ich mich, ob mein Fall so ist?
Comfreak
Wenn ECC normalerweise in der POST-Sektion angezeigt wird. Können Sie während des Startvorgangs ESC drücken, um den Startbildschirm anzuzeigen?
Yagmoth555
Versuchen Sie auch memtest von memtest86.com
citrin
@comfreak hmm, du hast recht.
Waisenkinder

Antworten:

4

Heute habe ich herausgefunden, dass es eine kommerzielle Version von memtest86(ohne +) von PassMark gibt, die auch eine kostenlose Version bietet, die dankenswerterweise 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, daher werde ich dies als erledigt bezeichnen, obwohl ich gehofft hatte, mit "traditionellen" Tools wie dem gleichen Ergebnis zu erzielen dmidecode.

memtest86 Ergebnis


Wenn jemand zu einem späteren Zeitpunkt auf diesen Beitrag stößt und weitere Validierungen und Tests benötigt, bietet er auch eine kostenpflichtige Version an, die die ECC-Fehlerinjektion zum tatsächlichen Testen der ECC-Funktionen unterstützt.

comfreak
quelle
3

Bearbeitet : Schlecht neu aus Ihrem Motherboard-Handbuch ...:

Geben Sie hier die Bildbeschreibung ein


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

dmidecode -t 17

Sie sollten eine Ausgabe haben wie:

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 Bit ist der Teil, den Sie suchen.

Auf einem Windows-System können Sie ausführen

wmic MEMORYCHIP get DataWidth,TotalWidth

// ECC Memory DataWidth TotalWidth 64 72

// Nicht-ECC-Speicherdatenbreite Gesamtbreite 64 64

Antwort für FreeBSD & Windows nahm von dort

yagmoth555
quelle
Das ist im Grunde das, dmidecode -t memoryTotalData
womit
@comfreak dmidecode -t 17 was zurückgeben?
Yagmoth555
Ich bekomme im Grunde die gleiche Ausgabe wie dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak
@comfreak gut, 128 machen für mich keinen Sinn. normalerweise ist es 64 non ecc oder 64b + 8b (72) für ECC (Spiegel 64 + 64?). Aber bei der Suche nach 'dmidecode total width 128' werden viele Freenas-Posts aufgelistet ... viele scheinen zu versuchen, die ECC mit dem Python-Skript
./ecc_check.py
Ich ging davon aus, dass es sich möglicherweise um einen Zweikanal handelt, aber ich erhalte sogar das gleiche Ergebnis, wenn ich die beiden Module in zwei separate Kanäle einfüge, was bedeutet, dass Zweikanal nicht funktionieren sollte.
Comfreak
3

Mit einem Ryzen 7-Prozessor funktionierte auch keines der genannten Tools für mich. Mit einem ausreichend aktuellen Linux-Kernel können die Tools in edac-utils, edac-ctl und edac-util jedoch 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 enthalten sollten. Diese Funktionalität kann weiter getestet werden, indem der RAM übertaktet und überprüft wird, ob Fehler gemeldet werden (wenn sie hoch genug sind). Dies ist ungefähr so ​​viel Beweis, wie Sie bekommen können, dass es wirklich funktioniert. Selbst wenn diese Tools Fehler melden oder nicht funktionieren, bedeutet dies nur, dass das Lesen von ECC-Statusinformationen nicht unterstützt wird. Es scheint jedoch keine 100% zuverlässige Möglichkeit zu geben, zu beweisen, dass ECC NICHT funktioniert ...

user415177
quelle
1
Haben Sie Passmarks memtest86 ausprobiert? (Die, die ich in meiner Antwort erwähnt habe)
Comfreak
Während Ihre Ausgabe variieren kann, können Sie sie ausführen, um in dmesg nach EDAC-Informationen zu suchen dmesg | grep EDAC(möglicherweise müssen Sie diese mit Root-Rechten ausführen). Auf einem Ryzen-basierten System mit installiertem und aktiviertem ECC-Speicher im BIOS (falls zutreffend) wird möglicherweise eine Zeile angezeigt, die wie folgt aussiehtamd64: Node 0: DRAM ECC enabled.
Joe,
0

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

Für Intel stellen sie ECC nur auf Server-Xeon-Chipsätzen zur Verfügung. Intel deaktiviert ECC auf seinen Desktop-Chipsätzen.

d hee
quelle
Das mag wahr sein, aber es beantwortet nicht die eigentliche Frage, die hier gestellt wurde.
Comfreak
Dies gilt für die Operationsfrage, da er einen Intel-Chip ohne XEON verwendet. Die Antwort ist, dass er nicht überprüfen kann.
He
Nur der letzte Satz Ihrer Antwort ist falsch, da der C232-Chipsatz beispielsweise ein "Desktop-Chipsatz" ist und ECC unterstützt. Abgesehen davon ist die Frage allgemeiner, wie bei der Überprüfung, ob Sie nicht wissen, ob sie unterstützt wird oder nicht.
Comfreak