Holger Sattel Seminar Rechnerarchitektur WS 2003/04 Universität Mannheim Lehrstuhl Rechnerarchitektur Prof. Dr. U. Brüning
Inhaltsverzeichnis Grundlagen / Begriffe Fehlertoleranz Fehlertoleranz in (Rechen-)Clustern Zusammenfassung / Anmerkungen Quellen 2
Hochverfügbarkeit - Definitionen MTBF ( Mean Time Before Failure ) Zuverlässigkeit der Hard- und Software MTTR ( Mean Time To Repair ) Erkennung, Diagnose, Reparatur, Inbetriebnahme Availability = MTBF MTBF + MTTR 2 Wege zur Erhöhung von Availability: Erhöhung der MTBF Verringerung der MTTR 3
Erhöhung der MTBF Zuverlässige Hardware Fehlerprävention ( fault prevention ) Regelmäßige Inspektionen Rechtzeitiges Tauschen von Verschleißteilen Klimaanlage Zuverlässige Software Code Audits Defensives Programmieren Redundante Stromversorgung UPS Eigene Generatoren 4
Verringerung der MTTR Automatische Reparatur: Redundante Hardware RAID Systeme Redundante Netzteile Fehlertoleranzmechanismen Manuelle Reparatur: Gut geschultes Personal Verfügbarkeit der Komponenten Schneller Bootvorgang ( Filesystem) 5
Hochverfügbarkeit vs. Fehlertoleranz Hochverfügbarkeit Bezieht sich nur auf den Wert von Availability Fehlertoleranz Hardware: fault tolerance (klassisch) Transparent für das Betriebssystem bzw. Software Software: software fault tolerance Fehlertoleranz gegen Software-Fehler Clustersysteme automatische Reparatur Erhöhung der Verfügbarkeit Kein Daten-/Verbindungsverlust 6
Hochverfügbarkeitsklassen Anzahl der 9er in Availability Meist nur Hardware Fehler berücksichtigt! Klasse 2 3 4 5 6 7 Availability 99% 99.9% 99.99% 99.999% 99.9999% 99.99999% Ausfallzeit pro Jahr 3.6 Tage 8.76 Stunden 52 Minuten 5 Minuten 30 Sekunden 3 Sekunden 7
AEC-Klassen AEC = Availability Environment Classifications AEC-0 ( Conventional ) Datenintegrität ist nicht gewährleistet. AEC-1 ( High Reliable ) Datenintegrität ist gewährleistet. AEC-2 ( High Available ) Minimale Ausfälle. Neues Einloggen notwendig. AEC-3 ( Fault Resilient ) Keine Ausfälle. Kein neues Einloggen notwendig. AEC-4 ( Fault Tolerant ) Keine Ausfälle. Kein Performanceverlust. AEC-5 ( Disaster Tolerant ) Unter keinen Umständen Ausfälle. 8
Fehlertoleranz - Begriffe Fault Der eigentliche Defekt Error Der ungültige Systemzustand Failure Der Systemausfall Beispiel: Fehlerhaftes RAM Fault: Bit-Flip im RAM Error: Variable hat falschen Pointer Failure: SIGSEGV bei Sprung zu Pointer 9
Fehlerklassifikationen Dauer Permanent Sporadisch Ursache Fehler im Betrieb (physikalisch) Fehler im Design Verhalten Modul liefert kein Ergebnis (oder zu langsam) Modul liefert falsches Ergebnis 10
Fehlertoleranz - Voraussetzungen Redundanz + kein Single Point of Failure Hardware Mehrfache Berechnung von Daten Daten Mehrfache Speicherung von Daten Software Vergleich von Daten ( Fehlererkennung) Backup der Daten Mehrfache Berechnung von Daten 11
Fehlertoleranz - Ablauf Fehlererkennung ( Error Detection ) Erkennung des Fehlers Schadenseingrenzung ( Damage Confinement ) Bestimmung des Schadens Fehlerbehebung ( Error Recovery ) Versetzen des Systems in gültigen Zustand Fehlerbehandlung ( Fault Treatment ) Sicherstellen, dass Fault nicht mehr auftritt 12
Fehlererkennung (1) Replication Checks Ausnutzen von Redundanz Timing Checks Objekt liefert kein Ergebnis nach bestimmter Zeit Runtime Constraint Checking Checksummen, erlaubte Wertebereiche Diagnostic Checks Heartbeat, Hintergrund - Tests 13
Fehlererkennung (2) Replication Checks Hardware Redundanz TMR - Triple Modular Redundancy 3 unabhängige Einheiten rechnen parallel Vergleich der Ergebnisse mittels Komparators Software Redundanz N-version Programming N unabhängig voneinander entwickelte Module rechnen parallel Vergleichbar TMR Zeit Redundanz 14
Fehlererkennung (3) Timing Checks Problem Bestimmung des besten Timeouts Zu kurz: falscher Fehler Zu lang: unnötig gewartete Zeit Runtime Constraint Checking Code- u. Performance-Overhead Assertions Diagnostic Checks Vergleich von Ist- und Soll-Ergebnissen 15
Schadenseingrenzung Aufbau des Systems in Komponenten Grenzen der Komponenten als Firewall Redundanz der Komponenten Hilft bei permanenten Fehlern Transaktionen ACID (Atomicy, Consistency, Isolation, Durability) Hilft bei sporadischen Fehlern 16
Fehlerbehebung Vorwärtsgerichtete Fehlerbehebung ( forward error recovery ) Nachteil: Fehler müssen vorausgeahnt werden nicht für alle Fehler möglich! Beispiel: Fehlerkorrigierende Hamming-Codes Rückwärtsgerichtete Fehlerbehebung ( backward error recovery ) Nachteil: Benötigt Informationen über früheren Systemzustand Checkpointing Langsam 17
Fehlerbehandlung Cold Standby Backup System wird erst im Fehlerfall eingesetzt Vorteil: kein Overhead im Betrieb Nachteil: Langsame Recovery Warm Standby Backup System wird regelmäßig synchronisiert Relativ schnelle Recovery Hot Standby Backup System läuft ständig synchron mit Vorteil: keine Recovery nötig Nachteil: Synchronisation kompliziert 18
Checkpointing Software Fault Tolerance Regelmäßiges Speichern des Systemzustandes auf externem Speicher Ziel: Wiederherstellen dieses Systemzustands Probleme: Wann und wie oft speichern? Größe der Daten System muss meistens gestoppt werden während des Checkpointing-Prozesses Beispiel: Prozesse Backward fault recovery 19
Verschiedene Clustersorten 2 Sorten von Clustern Fokus auf Hochverfügbarkeit eines Dienstes Meist kommerzielle Systeme Oftmals nur eine Applikation (Finanzsysteme, Datenbanken) Relativ wenige hochwertige Knoten Eng gekoppelte Systeme ( hot standby ) Z.B. IBM Parallel Sysplex Rechencluster ( Numbercrunching ) Basierend auf MPI oder PVM Applikationen laufen nicht permanent Viele billige Knoten Wissenschaftliche Berechnungen Lose gekoppelte Systeme Standardmäßig haben Beowulf, Wolfpack keine Fehlertoleranz Spezialbibliotheken 20
Fehlertoleranz in Rechenclustern Cluster oft aus billigen Komponenten hohe Ausfallquote Laufzeit einer Berechnung > MTBF Einfacher Neustart im Fehlerfall nicht möglich Fehlertoleranz nötig, damit Berechnung überhaupt möglich Neue Fehlerquellen in Clustern Verbindungen Fehlertoleranz: Routingalgorithmen, Message Logging Rechenknoten Master/Slave Modelle Distributed Checkpointing Mehrere unabhängige Betriebssysteme Synchronisationsprobleme 21
Master/Slave Modell Master Hat kompletten Systemzustand lokal Einfaches Checkpointing Verteilt die Aufgaben an Slaves Fügt Ergebnisse zusammen Slaves werden per Timeout überwacht Slaves Kommunikation nur mit Master Rechnen immer nur kleine Aufgaben Nur geringe Fehlertoleranz notwendig Vorteile/Nachteile Nicht für jede Berechnung geeignet Master darf nicht ausfallen 22
Distributed Checkpointing Abbild des globalen Systemzustandes Neustart des Gesamtsystems (am Checkpoint) Konsistenz des Checkpoints nicht trivial Problem Gültiger Zeitpunkt Nachrichten können unterwegs sein Globaler vs. Lokaler Checkpoint Synchronisation vor globalem Checkpoint 23
Fehlertolerante Kommunikation Fehlertoleranz in Library gekapselt (MPI) 2 Ansätze Fehlertolerante Verbindungen (z.b. LA-MPI) Fehlertoleranz bei Knotenausfall (z.b. CoCheck) Verbindungen Message Logging Knotenausfall Checkpointing Verschiedene Ansatzpunkte Application Level User definiert mögliche Punkte für Checkpointing Library Level Implizites Checkpointing bei z.b.: Barrieren Compilerunterstütztes Checkpointing 24
Beispiel: LA-MPI Los Alamos MPI Fehlertolerante Verbindungen Message Logging Implementiert für Terascale Clusters Nicht gegen Knotenausfälle Liegt unterhalb der MPI-Schicht 25
Beispiel: LA-MPI (Schema) Schema: Quelle: http://www.ccs.lanl.gov/ccs1/projects/la-mpi/lampi-papers/ics02.pdf 26
Beispiel: CoCheck CoCheck tumpi TU München, 1996 Checkpointing System für MPI Fehlertoleranz bei Knotenausfall Basiert auf Condor Lastverteilungs System + Process Migration Single Process Checkpointing Vorgehensweise Synchronisation Leeren der Kommunikationskanäle Single Process Checkpoint Fortsetzen 27
Zusammenfassung / Anmerkungen Klassische Fehlertoleranz meist nur gegen Hardwarefehler Cluster sind sehr selten fault tolerant (AEC-4) (Ausnahme: IBM Parallel Sysplex) Fehlertoleranz in verteilten Anwendungen wird praktisch immer über Libraries realisiert (Rechencluster) Fehlertoleranz Kommunikation Message Logging Rechenknoten Checkpointing 28
Quellen Gregory F. Pfister, In Search Of Clusters, Second Edition, ISBN 0-13- 899709-8 Parag K. Lala, Self-Checking and Fault-Tolerant Digital Design, ISBN 0-12- 434370-8 Brian Selic, Fault tolerance techniques for distributed systems, http://www-106.ibm.com/developerworks/rational/library/114.html Weikuan Yu, Compiler-Supported Checkpointing for MPI Fault Tolerance, Dept. Of Information and Computer Science, Ohio State University Richard L. Graham a.o., A Network-Failure-Tolerant Message-Passing System For Terascale Clusters, http://www.ccs.lanl.gov/ccs1/projects/lampi/lampi-papers/ics02.pdf Georg Stellner. CoCheck: Checkpointing and Process Migration for MPI. In Proceedings of the International Parallel Processing Symposium, pages 526--531, Honolulu, HI, April 1996. IEEE Computer Society Press, 10662 Los Vaqueros Circle, P.O. Box 3014, Los Alamitos, CA 90720-1264. http://citeseer.nj.nec.com/stellner96cocheck.html Harvard Reasearch Group, AEC Klassen, http://www.hrgresearch.com/ha/index.html 29