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.
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+
.
Ein weiterer beliebter Weg, um herauszufinden, ob ECC funktioniert, bestand darin, den dmidecode -t memory
Befehl auszugeben und das Total Width
und vorzulesen Data Width
. Meine Ergebnisse waren 128 Bits
und 64 Bits
sind. 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 bits
fü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 dmidecode
Tool 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:
Aus den Kommentaren bei Puget Systems geht auch hervor, dass das ecc_check.c
Programm 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 :
Version 4.20 erkennt meinen Prozessor nicht einmal richtig.
Alle Ideen, wie ich sonst noch auf ECC testen kann, werden sehr geschätzt.