Technologieaustausch

Datenbankverwaltung – Problem 218 Serverspeicher (20240711)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Datenbankverwaltung – Problem 218 Serverspeicher (20240711)

Autor: Das Aquarium der fettköpfigen Fische (Yin Haiwen)
Oracle ACE Pro: Datenbank (Oracle / MySQL)
PostgreSQL ACE-Partner
10 Jahre Erfahrung in der Datenbankbranche, derzeit hauptsächlich im Bereich Datenbankdienste tätig
Verfügt über OCM 11g/12c/19c, MySQL 8.0 OCP, Exadata, CDP und andere Zertifizierungen
Mo Tianlun MVP, Moli-Star des Jahres, ITPUB-zertifizierter Experte, Mitglied der 100-köpfigen Expertengruppe, OCM-Dozent, technischer Berater der PolarDB-Open-Source-Community, externer technischer Berater von HaloDB, Mitglied der OceanBase-Beobachtungsgruppe, Youth Association MOP Technology Community (Jugenddatenbank). Technischer Berater der Learning Mutual Aid Association
Er hat Titel wie „Direktor“, „Sicherheit“ und „Der größte Feind der inländischen Datenbank“ im Kreis und ist kein berühmter Sozialterrorist (Sozialterrorist).
Öffentliches Konto: Fettköpfiges Fischbecken; CSDN: Fettköpfiges Fischbecken (Yin Haiwen);
Sofern nicht mit Genehmigung nachgedruckt und die Quelle angegeben wird, handelt es sich bei allen um „illegales“ Plagiat

Ich habe zuvor die Hardware erklärt, die an Servern beteiligt ist, z. B. CPU, SSD und Netzwerk. Zusätzlich zum Motherboard, das die oben genannten Komponenten trägt, gibt es im Vergleich zur allgemeinen Desktop-Ebene (allgemeiner Heim-PC) eine sehr wichtige Komponente ) Speicher: Der Serverspeicher verfügt über eine eigene Fehlerkorrekturfunktion, die wir auch als ECC-Speicher (Error Checking and Correcting) bezeichnen.
In dieser Ausgabe wird kurz erläutert, wie ECC-Speicher funktioniert.

1 Erinnerung

Der Speicher ist ein wichtiger Bestandteil des Computers. Er dient dazu, Berechnungsdaten vorübergehend in der CPU zu speichern und Daten mit externen Speichern wie Festplatten auszutauschen. Es ist die Brücke zwischen externem Speicher und CPU. Alle Programme im Computer laufen im Speicher. Solange der Computer läuft, überträgt das Betriebssystem die zu berechnenden Daten aus dem Speicher zur Berechnung an die CPU. Wenn die Berechnung abgeschlossen ist, überträgt die CPU die Ergebnisse.
Die Entstehung von Speicher dient hauptsächlich dazu, die enormen Bandbreiten- und Latenzunterschiede zwischen externem Speicher und dem integrierten Cache der CPU (d. h. L1, L2, L3) auszugleichen. Im Wesentlichen ist er größer als der integrierte Cache der CPU, aber im Allgemeinen Das Zwischendatenübertragungsgerät kann die Vorbereitung von Daten aus einem langsameren externen Speicher im Voraus beschleunigen und so die Wartezeit für den Datenabruf durch die CPU verkürzen oder sogar eliminieren.
Der Speicher, den wir derzeit hauptsächlich auf Servern verwenden, ist DDR-Speicher. Ich werde hier nicht näher darauf eingehen, was DDR ist. Die gängigen Speichergenerationen sind DDR4 und DDR5. Zusätzlich zum allgemeinen Speicher gibt es auch nichtflüchtigen Speicher PMEM, der auf der Speicherschnittstelle (oder PCIe-Schnittstelle) basiert (am Beispiel von Intel Optane), der ein größeres Datenstück zwischen dem Speicher und dem externen Speicher bereitstellt und in der Nähe liegt die Geschwindigkeit des Cache-Bereichs.

2 ECC-Speicher

Im Allgemeinen sind Server mit wichtigen Geschäftssystemen verbunden, die während des Betriebs elektronischer Geräte zu starken elektromagnetischen Störungen führen können Wenn es sich um eine allgemeine PC-Software oder ein Programm handelt, kann es sogar zu Fehlern oder Abstürzen kommen. Wenn dieses Problem jedoch in einem wichtigen System auftritt, kann dies schwerwiegendere Folgen haben (Schließlich möchte die Bank nicht, dass Ihr Vermögen ohne Grund steigt. Ein paar 0, Sie wollen nicht, dass Ihr Vermögen sinkt.)
Dann entstand der ECC-Speicher, der Datenfehler in den Daten proaktiv entdeckt und korrigiert.

3 Prinzipien

Hier sind zwei relativ primitive Lösungen:

3.1 Mehrfachübertragung

Das heißt, ein Datenelement wird in 3 Kopien übertragen. Wenn irgendwo in einer bestimmten Kopie ein Problem auftritt, kann es behoben werden:
bild.png
Es sind aber auch Probleme aufgetreten. Obwohl die Wahrscheinlichkeit des Auftretens sehr gering ist, kommt es zu Problemen bei der Datenüberprüfung und Fehlerkorrektur, wenn zwei Daten an derselben Position Bit-Flips aufweisen:
bild.png
Das größte Problem bei der Verwendung dieser Methode ist die Verschwendung von E/A-Bandbreite.

3.2 Fehlerkorrekturcode

Auf diese Weise wird am Anfang der Daten ein Fehlerkorrekturcode hinzugefügt, d. h. vor jedem Datenelement wird ein Fehlerkorrekturcode hinzugefügt. Wenn die Anzahl der Einsen in den Daten eine gerade Zahl ist, ist der Fehlerkorrekturcode 0, und wenn die Zahl ungerade ist, ist der Fehlerkorrekturcode 1.
bild.png
Wenn der Fehlerkorrekturcode nicht mit der Anzahl von Einsen übereinstimmt, werden die Daten erneut übertragen.
bild.png
Dies führt auch zu einem Problem. Bei jeder Überprüfung kann nur festgestellt werden, ob die gesamten Daten normal sind. Theoretisch wird keine Fehlerkorrektur durchgeführt, und eine erneute Übertragung erhöht die Verzögerung.
Wenn gleichzeitig zwei Datenfehler gleichzeitig auftreten, kann der Zweck der Überprüfung immer noch nicht erreicht werden.

3.3 Hamming-Code

Hamming-Code ist die wichtigste Verifizierungs- und Fehlerkorrekturmethode, die derzeit im ECC-Speicher verwendet wird.
Gehen wir hier Schritt für Schritt vor. Gehen wir davon aus, dass Bit 2 für die Paritätsprüfung im rechten Teil verantwortlich ist und Bit 2 den Wert 0 hat. Wenn in den Daten ein Fehler vorliegt und die Paritätsprüfung ergibt, dass in der rechten Hälfte kein Problem vorliegt, liegt das Problem in der linken Hälfte, andernfalls liegt das Problem in der rechten Hälfte.
bild.png
Wie in der Abbildung unten gezeigt, führt Bit 1 eine Paritätsprüfung für die Spalten 2 und 4 durch, dann speichert Bit 1 1. Wenn bei der Paritätsprüfung in den Spalten 2 und 4 ein Problem auftritt, liegt das Problem in den Spalten 2 und 4, andernfalls liegt ein Problem in den Spalten 1 und 3 vor.
bild.png
Durch die Kombination der beiden oben genannten Methoden lässt sich leicht feststellen, bei welcher Datenspalte ein Problem vorliegt:
bild.png
Verwenden Sie als Nächstes eine ähnliche Methode, indem Sie Bit 4 verwenden, um die Zeilen 2 und 4 zu überprüfen, und Bit 8, um die untere Hälfte zu überprüfen. Durch Zeilentrennung und Partitionsparitätsprüfung können Sie die spezifische Position des Fehlers ermitteln und eine Fehlerkorrektur (Flip) durchführen. Das ist es.
bild.png
Die Prämisse der obigen Beurteilung ist jedoch, dass ein Problem mit den Standarddaten vorliegt. Nachdem die obige Methode zur Beurteilung verwendet wurde, ist das Datenbit Nr. 0 nicht im Schutz enthalten. Ob es falsch ist oder nicht das obige Ergebnis der Paritätsprüfung. Daher verwenden wir Bit 0, um den gesamten Datenblock mit der Methode in 3.2 zu überprüfen.
bild.png
In diesem Fall kommt es bei zwei Fehlern zu Konflikten zwischen den Ergebnissen der vollständigen Festplattenparitätsprüfung und der Partitionsparitätsprüfung. Es ist nicht möglich, den Fehlerort zu bestimmen, es kann jedoch festgestellt werden, dass der gesamte Datenblock abnormal ist. Übertragen Sie die Daten einfach erneut.
bild.png
Wenn jedoch drei Datenfehler vorliegen, ist eine Beurteilung unmöglich.
bild.png
Auf andere Weise werden wir feststellen, dass die Positionen der Prüfcodes alle 2 hoch N-te Potenz sind:
bild.png
Der Prüfcode muss nur in der N-ten Potenz von 2 platziert werden. Je größer der Block, desto weniger Inhalt nimmt der Fehlerkorrekturcode ein, aber desto größer ist auch die Wahrscheinlichkeit mehrerer Bit-Flips. Die allgemeine ECC-Übertragungsblockgröße beträgt 72 Bit, 64 Bit sind Daten und 8 Bit sind Fehlerkorrekturcode. Daher benötigt ein Speicher mit einer Kapazität von 8G im Allgemeinen nur acht Speicherpartikel von 1G, während ein ECC-Speicher mit einer Kapazität von 8G neun Speicherpartikel von 1G benötigt. Das zusätzliche 1G wird zum Speichern der zusätzlichen Fehlerkorrekturcodekapazität verwendet.
Allerdings wird die Computerfehlerkorrektur die Fehlerposition definitiv nicht auf die übliche „alberne“ Weise berechnen. Hier können wir den Charme der Binärform nutzen, um dies zu erreichen.
bild.png
Wir nehmen alle Positionen heraus, die 1 sind, und führen eine vertikale binäre ODER-Operation durch, um direkt die problematische Position zu erhalten:
bild.png

Anhang: Es gibt auch einen LDPC (Low Density Parity-Check Code), bei dem es sich um einen Paritätsprüfcode mit niedriger Dichte handelt. Das spezifische Implementierungsprinzip wird hier nicht erläutert. Diese Methode kann das Problem des Multi-Bit-Flippings ermitteln Wird für die SSD-Korrektur verwendet. Aufgrund der hohen Geschwindigkeit und der Implementierungskosten des Speichers werden zur Implementierung von ECC immer noch Hamming-Codes verwendet.

Zusammenfassen

In dieser Ausgabe wird kurz vorgestellt, wie ECC-Speicher die Fehlerkorrektur implementiert.
Die alte Regel ist, zu wissen, was geschrieben steht.