Praxistest: Memory Mirroring – Sicherheit versus Performance

05.12.2006 von Bernhard Haluschak
Ein Server bietet von Haus aus umfangreiche integrierte Sicherheitsfunktionen. Dazu zählt die oft unbeachtete Memory-Mirroring-Option. Wir erläutern und testen, wie diese Funktion arbeitet, sowie welche Vor- und Nachteile sie birgt.

Im Server- und Workstation-Umfeld zählen Ausfallsicherheit und Datenkonsistenz zu den wichtigsten Kaufkriterien. Denn jeder Systemausfall, zum Beispiel basierend auf einem Speicherfehler, kann enorme Kosten verursachen. Um dieses Gefahrenpotenzial einzudämmen, besitzen die Systeme verschiedene Verfahren, um einen kritischen Fehler im Speicher zu verhindern.

Zur Pflichtausstattung fehlertoleranter Systeme gehört das ECC-Verfahren für den Hauptspeicher. Es ist in der Lage, Bitfehler zu erkennen und zu korrigieren. Eine weitere wichtige Sicherheitstechnologie, die vor gefährlichen Speicherfehlern schützt, ist die Memory-Mirroring-Funktion. Dieses Verfahren verlangt die doppelte Speichermenge, da es alle Speicherzellen in zweifacher Ausführung benötigt.

Der folgende Artikel beschreibt detailliert die Memory-Mirroring-Technologie, die die Datensicherheit des Hauptspeichers eines Servers oder einer Workstation erhöht. Darüber hinaus testen wir praxisnah, welche Auswirkungen die Funktion auf die Performance eines Systems hat.

Weitere detaillierte Informationen zur Hochverfügbarkeit bietet der Artikel Grundlagen der Hochverfügbarkeit. Grundlagen zu „sicherer“ Speichertechnologie erfahren Sie in dem Beitrag Sicherer Speicher für Server und Workstations.

Memory Mirroring in der Theorie

Das Memory Mirroring ist annähernd vergleichbar mit der RAID1-Funktion bei Festplatten-Arrays. Die Speicherspiegelung erreicht eine 1:1 Redundanz und erfordert in der Minimalkonfiguration von der Hardware zwei identische Speichermodule in zwei verschiedenen Bänken. Daraus resultiert der gravierende Nachteil dieser Technologie: Die hohen Kosten für den Hauptspeicher bei gleichzeitiger Halbierung der nutzbaren Gesamtspeichermenge.

Sind zum Beispiel insgesamt zwei GByte Speicher installiert, erkennt das Betriebssystem lediglich ein GByte des Gesamtspeichers. Den restlichen Speicher blendet der Controller automatisch aus. Dieser "versteckte" Speicher enthält eine exakte Spiegelung der Daten des "aktiven" Speichers.

Die Mirroring-Funktion steuert eine implementierte Hardware im Chipsatz, die das BIOS aktiviert, und arbeitet daher unabhängig vom Betriebssystem. Je nach Größe der eingesetzten Speichermodule müssen die aktiven und die gespiegelten Module die gleichen Eigenschaften besitzen und in den dafür vom Mainboard-Hersteller festgelegten Speichersockeln installiert sein.

Entdeckt der Speicher-Controller eine Fehlerhäufung im aktiven Speicherbereich, schaltet er im laufenden Betrieb ohne Datenverluste auf den gespiegelten Bereich. Gleichzeitig löst der Memory Controller eine Warnung aus und informiert mit entsprechenden Tools den Administrator über den Zustand des Hauptspeichers.

Memory Mirroring in der Praxis

Als Testsystem verwenden wir exemplarisch einen Server von Intel, bestückt mit zwei Xeon-Prozessoren vom Typ 5160, und insgesamt acht GByte Speicher, verteilt auf vier FB-DIMM-Module. Als Unterbau kommt das Intel-Mainboard D44771 mit dem 5000P-Chipsatz zum Einsatz. Dieser Chipsatz arbeitet mit vier DDR2-Speicher-Controllern für FB-DIMMs und unterstützt serienmäßig im BIOS die Memory-Mirroring-Funktion.

Die Memory-Mirroring-Option verbirgt sich in unserem Testsystem in den BIOS-Optionen Advanced und / Memory Configuration /Memory RAS and Performance Configuration / Select Memory RAS Configuration. Dieses Menü bietet neben der Mirroring- auch noch zusätzlich die Sparing-Funktion für den Hauptspeicher an.

Nach dem Auswählen der Speicherspiegelungs-Option muss das System neu gebootet werden. Es arbeitet dann unabhängig vom Betriebssystem. Über entsprechende Management-Tools des Servers lässt sich der Zustand des Speichers im laufenden Betrieb jederzeit kontrollieren, beziehungsweise das System alarmiert den Anwender über mögliche Speicherprobleme.

Ob die Memory-Mirroring-Funktion korrekt arbeitet, lässt sich im System-BIOS überprüfen. Der effektive Speicher sollte in dem entsprechenden Menü die Hälfte des Gesamtspeichers betragen.

Speicher-Benchmarks mit tecMem

Die Cache- und Speicher-Performance der Prozessoren beziehungsweise Hauptspeichers überprüfen wir mit unserem Programm tecMem aus der tecCHANNEL Benchmark Suite Pro. tecMem misst die effektiv genutzte Speicherbandbreite zwischen der Load/Store-Unit der CPU und den unterschiedlichen Ebenen der Speicherhierarchie (L1-, L2-Cache und RAM). Die Ergebnisse erlauben eine getrennte Analyse von Load-, Store- und Move-Operationen.

tecMem: Speicher-Performance im Detail

Konfiguration

Load 32 [MByte/s]

Store 32 [MByte/s]

Move 32 [MByte/s]

Load 64 [MByte/s]

Store 64 [MByte/s]

Load 128 [MByte/s]

Store 128 [MByte/s]

Ohne Memory Mirroring

2884

2944

2862

3585

2688

3710

2675

Mit Memory Mirroring

2862

2948

2415

3567

2329

3700

2313

Erst bei 32-Bit-Move-Befehlen werden zwischen aktivierter und deaktivierter Memory-Mirroring-Funktion deutliche Leistungsunterschiede sichtbar. Die Differenz beträgt etwa 16 Prozent. Die Leistungswerte der 32-Bit-Load- und Store-Operationen bleiben nahezu unverändert. Hier scheint der Overhead die Speicher-Performance zu bremsen.

Anders als beim 32-Bit-Store-Kommando ändert sich beim 64-Bit- und 128-Bit-Store-Kommando aus den MMX- beziehungsweise SSE-Befehlssätzen der Speicherdurchsatz gravierend zugunsten des Hauptspeichers ohne Mirroring-Funktion. Die Leistungsunterschiede erreichen Werte von 15 und 14 Prozent. Dagegen beeinträchtigen die Load-Operationen bei Speicherspiegelung die Datengeschwindigkeit des Hauptspeichers nicht.

SPECint_base2000

Wir setzen die SPEC-Benchmarks praxisnah ein und kompilieren sie für das Base-Rating. Dazu verwenden wir Intels C++ 9.1 und Fortran 9.1 sowie MS Visual Studio 2005 .NET für alle Integer-Tests. Auch AMD und Intel verwenden diese Compiler für das Base-Rating, wie man an den von beiden Firmen offiziell gemeldeten Integer-Resultaten sehen kann.

Der SPECint_base2000-Benchmark arbeitet single-threaded und nutzt die Vorteile von Hyper-Threading, Dual- und Quad-Core nicht. Die ermittelten Werte gelten als Indiz für die Integer-Performance der Prozessoren beziehungsweise des Hauptspeichers.

SPECint_rate_base2000

Bei den Integer-Berechnungen von SPECint_rate_base2000 ermittelt die Benchmark-Suite den maximalen Durchsatz durch Verwendung mehrerer Tasks. Dabei arbeiten multiple Kopien des Benchmarks parallel. Typischerweise entspricht die Anzahl der Tasks/Kopien der Anzahl der - virtuellen - Prozessoren des Systems.

So läuft SPECint_rate_base2000 beim System mit 2x Xeon 5160 mit vier Kopien. Bei diesem Test wird der Vorteil von mehreren Kernen ausgenutzt.

SPECfp_base2000

Wir setzen die SPEC-Benchmarks praxisnah ein und kompilieren sie für das Base-Rating. Dazu verwenden wir Intel C++ 9.1 und MS Visual Studio 2005 .NET sowie Intel Fortran 9.1 für alle Fließkommatests. Auch AMD und Intel benutzen diese Compiler für das Base-Rating bei den Fließkomma-Benchmarks, wie man an den von beiden Firmen offiziell gemeldeten FP-Resultaten sehen kann.

Der SPECfp_base2000-Benchmark arbeitet single-threaded und nutzt die Vorteile von Hyper-Threading, Dual- und Quad-Core nicht. Die ermittelten Werte gelten als Indiz für die Floating-Point-Performance der Prozessoren beziehungsweise des Hauptspeichers..

SPECfp_rate_base2000

Bei den Floating-Point-Berechnungen von SPECfp_rate_base2000 ermittelt die Benchmark-Suite den maximalen Durchsatz durch Verwendung mehrerer Tasks. Dabei arbeiten multiple Kopien des Benchmarks parallel. Typischerweise entspricht die Anzahl der Tasks/Kopien der Anzahl der - virtuellen - Prozessoren des Systems.

So läuft SPECfp_rate_base2000 beim System mit 2x Xeon 5160 mit vier Kopien. Bei diesem Test wird der Vorteil von mehreren Kernen ausgenutzt.

Fazit

Jeder Ausfall durch einen defekten Hauptspeicher bei Servern oder Workstations kann hohe Kosten verursachen. Die Systemhersteller nutzen verschiedene Sicherheitsmechanismen, um solche Gefahren abzuwenden. Neben dem serienmäßigen ECC-Korrekturverfahren besitzen viele Systeme zusätzlich die Memory-Mirroring-Funktion. Dieses Verfahren speichert alle Daten im Hauptspeicher in zweifacher Ausführung. Bei einem Ausfall eines Speichermoduls kann das System auf die funktionsfähige gespiegelte „Reserve“ im laufenden Betrieb umschalten.

Wie unsere Tests belegen, kostet mehr Systemsicherheit je nach Anwendung auch Performance. Besonders speicherintensive Programme, die viele 64/128-Bit-Store-Befehle nutzen, müssen sich bei der Geschwindigkeit einschränken. So muss der Anwender in Benchmarks wie dem SPECfp_rate_base2000 bis zu 18 Prozent Leistungsverlust hinnehmen. Zusätzlich entstehen durch die doppelte Speichermenge auch höhere Hardwareausgaben. Doch diese sind im Vergleich zu einem Ausfall eines Servers und den dadurch bedingten Kosten zu relativieren.

Die geringen Leistungseinbußen sollten zwar beim Betrieb eines Systems berücksichtigt werden, aber in kritischen IT-Umgebungen keine Rolle spielen. (hal)