ECC vs. Nicht-ECC

ECC vs. Nicht-ECC

Ich möchte einen Speicherserver (basierend auf GNU/Linux oder FreeBSD) bauen, der ständig eingeschaltet ist. Um Datenbeschädigungen zu vermeiden (was unwahrscheinlich ist, da ich noch nie ein solches Problem hatte, aber Vorsicht ist besser als Nachsicht), möchte ich ECC-RAM verwenden.

Obwohl es nicht so gut ist wie EDD (?) (das viel teurer ist) und zusätzlichen Schutz bietet. ECC scheint nur Einzelbitfehler zu korrigieren.

ECC-registrierter RAM ist nur mit Workstation-/Server-Boards wie Intel Xeon oder AMD Interlagos/Magny-Cours/Valencia G34 oder C32 verwendbar.

ECC unbuffered ist auf Intel Xeon lga1155 oder AMD AM3+ auf Asus-Boards nutzbar.

Die zweite Option ist hinsichtlich Prozessor und Motherboard wesentlich günstiger und ich bezweifle, dass ich mehr als 16 GB RAM brauche (4 x 4 GB ECC ungepuffert sind die größten erschwinglichen Sticks).

Ich habe folgende Zweifel (hauptsächlich in Bezug auf das Asus AM3+-Board): Ist ECC-ungepufferter RAM genauso gut wie ECC-registrierter RAM (aus Sicherheits- und Zuverlässigkeitssicht)? Oder ist es eine schlechtere Wahl? Die Geschwindigkeit ist mir nicht so wichtig.

Weitere Einzelheiten: Der Server wird ein Servergehäuse mit bis zu 24 x 3,5-Zoll-Laufwerken verwenden und sollte so wenig wie möglich verbrauchen. LGA1155 scheint in dieser Hinsicht die bessere Wahl (TDP ~ 20-95 W) gegenüber den anderen (> 80 W) für den doppelten Preis zu sein. Jeder Vorschlag ist willkommen. Sagen wir weniger als 120 W im Leerlauf (~ mit 10 von 24 Festplatten).

Antwort1

Wenn Sie nur 16 GB RAM verwenden – was nicht im Bereich des Server-RAM liegt –, reicht Ihnen so ziemlich jeder Standard-RAM/Standard-Desktop-Sys aus.

Wenn es sich nur um einen Storage-Server handelt, wird nicht einmal so viel CPU-Leistung benötigt.

Wie gesagt: Entscheiden Sie sich für Sandy Bridge, Sie erhalten ein cooles, leistungsfähiges und zuverlässiges System.

Apropos 16-GB-RAM-Bereiche: Um ECC-Sachen müssen Sie sich keine Gedanken machen.

Antwort2

ECC scheint nur Einzelbitfehler zu korrigieren.

Richtig. Um mehr Fehler zu korrigieren, wären mehr Bits erforderlich. So wie es ist, verwenden Sie bereits 10 Bits, um 8 Bits an Informationen zu speichern, und „verschwenden“ 20 % der Speicherchips, um eine einzelne Bitkorrektur und bis zu zwei Bits Fehlererkennung zu ermöglichen.

Es funktioniert folgendermaßen. Stellen Sie sich ein 0oder ein vor 1. Wenn ich eines von beiden lese, muss ich nur hoffen, dass ich das Richtige lese. Wenn eine 0 durch kosmische Strahlung oder einen fehlerhaften Chip in eine 1 umgewandelt wurde, werde ich es nie erfahren.

In der Vergangenheit haben wir versucht, das mit Parität zu lösen. Parität bedeutete, dass pro 8 gespeicherten Bits ein neuntes Bit hinzugefügt wurde. Wir haben geprüft, wie viele Nullen und wie viele Einsen das Byte enthielt. Das neunte Bit wurde so gesetzt, dass es eine gerade Zahl war. (für gerade Parität) Wenn Sie jemals ein Byte gelesen haben und die Zahl falsch war, wussten Sie, dass etwas nicht stimmte. Sie wissen jedoch nicht, welches Bit falsch war.

ECC hat das erweitert. Es verwendet 10 Bits und einen komplexen Algorithmus, um zu erkennen, wann ein einzelnes Bit umgekippt ist. Es weiß auch, was der ursprüngliche Wert war. Eine sehr einfache Erklärung, wie es das macht, wäre folgende:

Ersetze alle 0s durch 000. Ersetze alle 1s durch 111.

Jetzt können Sie sechs Kombinationen lesen:
000
001
010
100
101
111

Wir sind uns nie 100% sicher, was ursprünglich gespeichert wurde. Wenn wir gelesen haben, 000war es vielleicht genau das 000, was wir erwartet haben, oder alle drei Bits haben sich umgedreht. Letzteres ist sehr unwahrscheinlich. Bits werden nicht zufällig umgedreht, obwohl es vorkommt. Nehmen wir für einige einfache Berechnungen an, dass dies in einem von zehn Fällen passiert (in Wirklichkeit ist es viel seltener). Das ergibt die folgenden Chancen, den richtigen Wert zu lesen:

000-> Entweder 000(99,9 % sicher) oder ein dreifacher Flip (1/1000 Chance)

001-> Wir wissen, dass etwas schiefgelaufen ist. Aber entweder ist es so 000und ein Bit ist umgedreht (Chance 1:10) oder es ist so 111und zwei Bits sind umgedreht (Chance 1:100). Behandeln wir es also so, als ob wir lesen, 000aber protokollieren den Fehler.

010-> Wie oben.

100-> Wie oben.

011-> Wie oben, aber unter der Annahme, dass es sich um ein111

101-> Wie oben, aber unter der Annahme, dass es sich um ein111

110-> Wie oben, aber unter der Annahme, dass es sich um ein111

111-> Entweder 111(99,9 % sicher) oder ein dreifacher Flip (1/1000 Chance)

111-> Entweder 000(99,9 % sicher) oder ein dreifacher Flip (1/1000 Chance)

ECCs machen ähnliche Tricks, aber effizienter. Für 8 Bits (ein Byte) verwenden sie nur 10 Bits zur Erkennung und Korrektur.


ECC-registrierter RAM kann nur mit Workstation-/Server-Boards verwendet werden. Ungepufferter ECC kann auf Intel Xeon lga1155 oder AMD AM3+ auf Asus-Boards verwendet werden.

Ich habe bereits erwähnt, was der ECC-Teil war, jetzt der registrierte vs. ungepufferte Teil.

Bei modernen CPUs befindet sich der Speichercontroller auf dem CPU-Chip, was bei AMD Opteron-Chips schon seit langem der Fall ist, und bei Intel seit der Core i-Serie. Die meisten Desktop-CPUs kommunizieren dann direkt mit den DIMM-Sockeln, die den RAM enthalten. Es funktioniert und es ist keine zusätzliche Logik erforderlich. Das ist günstig zu bauen und die Geschwindigkeit ist hoch, da es keine Verzögerung vom Speichercontroller zum RAM gibt.

Ein Speichercontroller kann jedoch bei hohen Geschwindigkeiten nur einen begrenzten Strom liefern. Das bedeutet, dass es eine Grenze dafür gibt, wie viele Speichersockel einem Motherboard hinzugefügt werden können. (Und um es noch komplexer zu machen, auch für die Menge, die die DIMMs verwenden können, was zu Speicherrängen führt. Das werde ich überspringen, da dies bereits zu lang ist.)

Auf Serverplatinen möchten Sie oft mehr Speicher verwenden als auf einem Desktop-System. Daher wird dem Speicher ein „Register“-Puffer hinzugefügt. Lesevorgänge von den Chips auf dem DIMM werden zuerst in diesen Puffer kopiert. Einen Taktzyklus später verbindet sich dieser Puffer mit dem Speichercontroller, um die Daten zu übertragen.

Dieser Puffer/dieses Register verzögert die Arbeit und verlangsamt den Speicher. Das ist unerwünscht und wird daher nur auf Platinen mit vielen Speicherbänken verwendet/benötigt. Die meisten Consumer-Platinen benötigen dies nicht und die meisten Consumer-CPUs unterstützen es nicht.

Direkt angeschlossener, ungepufferter RAM vs. gepufferter/registrierter RAM ist kein Fall, in dem einer besser oder schlechter als der andere ist. Sie haben nur unterschiedliche Kompromisse in Bezug auf die Anzahl der verfügbaren Speichersteckplätze. Registrierter RAM ermöglicht mehr RAM auf Kosten der Geschwindigkeit (und möglicherweise der Kosten). In den meisten Fällen, in denen Sie so viel Speicher wie möglich benötigen, gleicht dieser zusätzliche Speicher den RAM, der mit einer etwas langsameren Geschwindigkeit läuft, mehr als aus.

Ich habe folgende Zweifel (hauptsächlich in Bezug auf das Asus AM3+-Board): Ist ECC-ungepufferter RAM genauso gut wie ECC-registrierter RAM (aus Sicherheits- und Zuverlässigkeitsgründen)? Oder ist es eine schlechtere Wahl? Die Geschwindigkeit ist mir nicht so wichtig.**

Aus Sicherheits- und Stabilitätsgründen sind ECC-ungepuffert und ECC-registriert dasselbe.


Weitere Details: Der Server nutzt ein Servergehäuse mit bis zu 24 x 3 ½'' Laufwerken und sollte möglichst wenig verbrauchen.

24 Laufwerke verbrauchen viel Strom. Wie viel, hängt von den Laufwerken ab. Mein 140 GB 15K RPM SAS-Laufwerk verbraucht im Leerlauf nur 10 Watt, genauso wie die 1 TB SATA 7k2-Festplatte. Im Betrieb verbrauchen beide mehr.

Multiplizieren Sie das mit 24. 24 x 10 Watt im Leerlauf bedeuten 240 Watt, nur um die Platten am Drehen zu halten und den Luftwiderstand zu überwinden. Bei Betrieb verdoppeln Sie das ungefähr.


In diesem Sinne scheint LGA1155 bei doppeltem Preis die bessere Wahl (TDP ~ 20–95 W) gegenüber den anderen (> 80 W) zu sein.

Intel ist zum Zeitpunkt des Schreibens und bei den von Ihnen erwähnten CPUs besser bei CPUs mit geringem Stromverbrauch.

Jeder Vorschlag ist willkommen. Sagen wir weniger als 120 W im Leerlauf (~ bei 10 von 24 Festplatten).

Wenn Sie sich für FreeBSD entscheiden, sollten Sie sich ZFS genauer ansehen. Es kann großartig sein. Viele seiner fortgeschritteneren Funktionen (z. B. Deduplizierung und/oder Komprimierung) verbrauchen viel CPU-Leistung und benötigen viel Speicher. ZFS für die grundlegende Verwendung mit ZRAID funktioniert auf beiden von Ihnen genannten CPU-Sets und mit 16 GB gut, aber wenn Sie Funktionen wie Deduplizierung aktivieren, sollten Sie sich den empfohlenen Speicherbedarf für Ihre Festplattenkapazität genau ansehen; bis zu 5 GB pro TB Speicher werden von empfohleneinige Führer.

Zwei weitere Dinge:

  1. Ich habe nichts über den Anschluss der Laufwerke gelesen. Einige Karten haben bis zu 10 SATA-Anschlüsse. Für alles darüber hinaus benötigen Sie jedoch Zusatzkarten. Wenn Sie Hardware-RAID in Betracht ziehen, ist es möglicherweise am besten, dies von Anfang an einzuplanen.
  2. Laufwerksfehler: Sollten SieSATA-Port-Multiplikatorendann schauen Sie sich genau an, wie sie reagieren, wenn ein SATA-Laufwerk ausfällt. Das ist oft nicht schön. Kein großes Problem für eine Heiminstallation, aber schon gar nicht für Unternehmen. Sie müssen möglicherweise auch berücksichtigen, wie einzelne Laufwerke mit Fehlern umgehen. Der Grund, warum einige Laufwerke als für „NAS“ oder „RAID“ geeignet gekennzeichnet sind, besteht darin, dass sie Fehler anders behandeln als normale Laufwerke. Ohne RAID möchten Sie, dass das Laufwerk so oft wie möglich einen erneuten Versuch unternimmt. Mit RAIDSie möchten, dass das Laufwerk schnell ausfällt, sodass Sie von einer anderen Kopie lesen können.

Antwort3

Zwei verschiedene Probleme.

ECC vs. Nicht-ECC

  • Nutzen Sie ECC überall dort, wo Verfügbarkeit wichtig ist
  • kostet mehr – braucht (ein Vielfaches von) 9 Chips statt 8
  • Zur Verwendung muss das Motherboard dies unterstützen.

Registriert vs. ungepuffert:

  • Mit Registered DIMMs kann (viel) mehr RAM installiert werden
    • Geringere elektrische Belastung der Speichercontroller-Schnittstelle
  • Aber alle installierten DIMMs müssen registriert sein oder nicht
    • müssen ungepufferte DIMMS entfernt werden, wenn auf Registered aktualisiert wird
  • Außerdem ist es teurer und ein Zyklus langsamer zu erreichen
    • Ungepuffert bedeutet etwas geringere Latenz, falls das wichtig ist
    • alle wahlfreien Zugriffe dauern ohnehin viele Zyklen
    • Beachten Sie, dass sich die absolute Zugriffslatenz (Zeit in Nanosekunden) im Laufe der Geschichte der DRAM-Verwendung in PCs nicht wesentlich verbessert hat.
      • Kosten, Kapazität und Bandbreite wurden deutlich verbessert
      • Speichercaches verbergen ohnehin die Latenz für die meisten Speicherzugriffe
    • Längere Latenzzeiten beeinträchtigen die Single-Thread-Echtzeitleistung am meisten
      • hat normalerweise keine großen Auswirkungen auf Server-Anwendungsfälle
    • Kein/minimaler Unterschied bei Bandbreite und Gesamtleistung
      • sequentielle Zugriffsbandbreite unverändert
      • Bei L2/L3-Caches werden die tatsächlichen Zugriffsmuster meist durch gleichzeitiges Ersetzen von Zeilen im Cache bestimmt, es handelt sich also ohnehin meist um „Burst“-Zugriffe.

verwandte Informationen