9.4 Konsistenz im Verteilten System

Werbung
9. Speicherkonsistenz
9.1 Typologie verteilter Systeme (revisit)
9.1.1 Rechnernetze:






Insbesondere Internet.
Kopiersemantik (FTP, HTTP ...).
Dienstfragmente (QoS, Naming, .. ).
kein Betriebssystem (DNS, WOS ... ).
Suboptimale Nutzung (Verbindungen ..).
Wachstum und kreatives Chaos (global).
9.1.2 Verteilte Dateisysteme





Remote Disk vs. remote Files.
Zugriff auf entfernte Volumes.
Zugriff auf nicht-lokale Dateien.
Allgemein montierbare Verzeichnisbäume.
Replikation von Dateien & Verzeichnissen.
9.1.3 Netzwerkbetriebssysteme



-
Übertragen von Daten zwischen Stationen.
Weitgehend autonome Stationen:
eigene Bedienerschnittstellen,
eigene Betriebssystemkopie,
ohne Netz arbeitsfähig.
Substitution einzelner lokaler Dienste:
diskless Workstations,
Remote Login,
LMHOSTS ...


-
Lokalisierbare Dienste im Netz:
drucken und speichern,
Rechner hochfahren,
Namensdienste,
Mail-Server,
Help-Desk.
Beispiele:
Novell Netware,
Windows NT,
Linux ...
9.1.4 Verteilte Betriebssysteme:



-
Explizite Kommunikation:
Datagramm-Nachrichten,
Sockets und Streams,
Entfernte Prozeduraufrufe,
Verteilte Objekte & Methoden ( .net, rmi ),
Corba, Java Spaces (Jini) ...
Implizite Kommunikation:
transparente Prozeduraufrufe,
transparente Variablenzugriffe,
identisches API - lokal & im Netz,
softwaregestützt (Compiler & Run-Time),
oder hardwaregestützt (MMU, Segmente, ... ).
Gemeinsamer verteilter Speicher DSM:
explizite oder implizite Kommunikation,
verteilte gemeinsame Adressräume
verteilte Objekte & Variablen ...

-
Zielsetzung:
skalierbares System,
einfache Programmierung,
lokale und verteilte Programme,
sichere und effiziente Ausführung,
Konsistenzgarantie für die verteilten Daten.
9.2 Kenngrößen & Charakteristika



-
Zugriffstransparenz:
Logische Namen (nicht physische),
Single-System image,
Einheitliches API.
Ortstransparenz:
Dateien und Verzeichnisse,
Terminalzugang,
Rechenleistung,
Hauptspeicher,
Prozesse.
Dienstetransparenz:
Netzwerk-Browser und Dateisystem,
Internet-Anschluss,
Namensdienst,
Drucker ...



-
Skalierbarkeit
additive Resourcenkumulation,
Inkrementelle Erweiterung,
Nutzung von Gerätepools,
Lastverteilung.
Fehlertoleranz
Graduelle Leistungsabnahme bei Defekten,
Partitionierung und Fusion,
Transaktionssicherheit,
Replikation,
Migration.
Plattformintegration …
Formate und Byteordnung,
Betriebssysteme,
Hardware.
9.3 Verteilte nebenläufige Zugriffe
9.3.1 Lesen & Schreiben im Netz



-
Problem ist die hohe Verzögerung/Latenz.
Fall A: keine Kopien im Netz (unrepliziert)
ortsfeste oder migrierende Seiten,
Seiten-Eigentümer kann sofort zugreifen,
Kommunikationspartner brauchen länger.
Fall B: Kopien im Netz (repliziert):
lesen einer Seite ist sofort möglich,
entweder auf alle Kopien schreiben (update),
oder alle Kopien löschen und nur auf Original schreiben (invalidate).
 Matrixdarstellung:
Ortsfeste Seiten,
R/WOperation
transportiere
n
Migrierende
Speicherteile
, lokale
Operation
ohne Replikation
Verzögerung für
alle, außer für
Eigentümer
mit Replikation
sofort lesen,
überall schreiben,
"write update"
langsam lesen,
langsam
schreiben,
Seitenflattern
aus Cache lesen,
Original
schreiben,
"write
invalidate"
 Nach einem "write invalidate" müssen die Seiten von den interessierten
Lesern erneut angefordert werden.
9.3.2 Nebenläufige Ausführung
 Sequentielles Programm A:
1.
a:= 0;
2.
b:= 0;
3.
a:= 10;
4.
b:= 20;
5.
c:= a+ b;
- ergibt 30 als Resultat in der Variablen "c"
- 120 mögliche Permutationen (5*4*3*2)
- welche Permutat. ergeben richtiges Resultat ?
 Auflösung in Lese- & Schreibbefehle (z.B. für eine Kellermaschine):
"a:=0":
"b:=0":
"a:=10":
"b:=20":
"c:=a+b":
"const(0); write(a)"
"const(0); write (b)"
"const(10); write (a)"
"const(20); write (b)"
"read(a); read(b); add; write (c)"
 Unsynchronisierte Parallelisierung für drei Prozessoren zum Beispiel:
CPU #1
a:=0;
b:=20;
CPU #2
b:=0;
c:=a+b;
CPU #3
a:=10;
- mögliche Resultate für c: { 0, 10, 20, 30 } .
9.3.3 Inkorrekte Ausführungssequenzen:
 Die Reihenfolge der Lese- und Schreib-operationen ist unbestimmt, auf
Grund der Nachrichtenlatenzen über das Netz.
 Falsche Resultate können entstehen, ob-schon die Reihenfolge der
Instruktionen aus der Sicht der einzelnen Prozessoren erhalten bleibt
(sequentielle Konsistenz):
0:
CPU #1
CPU #2
CPU #3
a:=10;
a:=0;
b:=20;
b:=0;
c:=a+b;
10:
CPU #1
a:=0;
CPU #2
CPU #3
b:=0;
a:=10;
c:=a+b;
b:=20;
9.3.4 Sequenzen mit korrektem Resultat:
 Pro Variable muss der Zugriff in der richtigen Reihenfolge garantiert werden
(mit Locks oder sonst irgendwie).
30:
CPU #1
a:=0;
CPU #2
CPU #3
a:=10;
b:=0;
b:=20;
c:=a+b;
 Kausaler Zusammenhang zwischen:
"a:=10;" und "c:=a+b;"
"b:=20;" und "c:=a+b;"
 Datenflussanalyse/-graph hierzu:
 Das nachfolgende Beispiel liefert ein korrektes Resultat, obschon die Instruktionsreihenfolge nicht eingehalten wird:
30:
CPU #1
CPU #2
b:=0;
CPU #3
b:=20;
a:=0;
a:=10;
c:=a+b;
 Der Datenflussgraph wird berücksichtigt,
 Für kausal nicht zusammenhängende Operationen kann die Reihenfolge auch
innerhalb einer CPU vertauscht werden.
 Es gibt Prototypen von Datenflussmaschi-nen, welche die Abhängigkeiten
zwischen Instruktionen an die Hardware delegieren.
9.4 Konsistenz im Verteilten System
9.4.1 Multiprozessorkonsistenz
 Aus der Sicht der einzelnen CPUs sind die Speicherzugriffe streng sequentiell
und die Sicht auf den Speicher "konsistent".


In Wirklichkeit aber:
sind oft veraltete Werte im Hauptspeicher,
Sonderbehandlung nötig für TLB-Tabellen,
verschränken sich nebenläufige Zugriffe,
Ausnahmen für Streaming-Instruktionen.
Für den scheinbar sequentiellen Zugriff sorgt ein ausgefeiltes Bus-Protokoll –
sogar in einer Mehrprozessorkonfiguration.
9.4.2 Der Speicherungskontrakt
 Der Speicherungsmechanismus garantiert gegenüber den zugreifenden
Prozessen, verschiedene Regeln nach welchen er die Schreiboperationen
sichtbar werden lässt.

-
Zum Beispiel:
Sofort, bzw. Getaktet,
Sichtbar nach Anforderung,
Gleiche Sicht für alle Stationen,
Konsistent aus der Sicht einer Station,
Entsprechend einer verteilten Zeitskala,
Geordnet nach einem Zeitstempelverfahren ...
9.4.3 Strikte Konsistenz
 Leseoperationen liefern den zuletzt geschriebenen Wert. - Unabhängig davon
welcher Prozess geschrieben hat.
 Problem: in einem Netz gibt es keine globale Zeit mehr. Der Begriff "zuletzt"
ist unscharf.
Stationen
Verteilter
Speicher
Read/Write Q
 Lese- und Schreiboperationen werden in die Warteschlange unseres Modells
eingefügt.
 Atomare Lese- und Schreiboperationen.
 Die Ausführung der Instruktionen und das Einfügen in die Warteschlange
erfolgt nach einem starren Zeitraster (~ Nicht verteilt).
9.4.4 Sequentielle Konsistenz
 Alle Prozesse sehen die Schreiboperationen in der gleichen Reihenfolge.
 Die Sequenz der Operationen eines Prozes-ses bleibt unverändert.
 Die Verschränkung mit den Operationen anderer Prozesse ist jedoch unbestimmt.
Stationen
Verteilter
Speicher
Read/Write Q
 Die Warteschlangen werden nach einem zufälligen Auswahlverfahren bedient.
9.4.5 Kausale Konsistenz
 Die Forderung nach sequentieller Ausführung bezüglich eines Prozessors wird aufge
geben, nur kausal voneinander abhängige Operationen sind zeitlich geordnet.
 Die kausale Abhängigkeit ergibt sich zum Beispiel aus der operationalen Semantik
eines sequentiellen Programmes.
 Allenfalls auch aus der expliziten Synchro–nisierung eines parallelen Programmes.
 Das Rechnersystem muß den Datenfluss–graphen realisieren:
Stationen
Verteilter
Speicher
9.4.6 PRAM Konsistenz
 Die Reihenfolge innerhalb eines Prozesses wird von allen Stationen gleich gesehen.
 Unterschiedliche Prozesse erscheinen evtl. verschoben für verschiedene Stationen.
 Pipelined RAM Konsistenzmodell:
Stationen
9.4.7 Schwache Konsistenz
 Die beteiligten Prozesse sehen Schreibzu-griffe in beliebiger Reihenfolge, solange sie
nicht explizit ihren Speicher aktualisieren (~synchronisieren).
 Ein Prozess riskiert, veraltete Daten in seinem Speicher zu finden, wenn er nicht
explizit seinen Speicher synchronisiert:
Sync( )
 Update: der schreibende Prozeß verschickt spontan seine Änderungen ("propagate").
 Invalidate: der schreibende Prozeß erklärt die Daten für ungültig. Bei Bedarf werden
diese dann angefordert.
9.4.8 Release-Konsistenz
blocked
acquire
propagate
release





"acquire" versucht den Eintritt in eine kritische Region.
"release" verlässt die kritische Region.
"acquire" blockiert, falls schon ein Prozess die kritische Region betreten hat.
Teilnehmender Prozess tritt mit "acquire" in eine kritische Region ein, zum:
arbeiten mit gemeinsamen Variablen,
propagieren der Variablen,
aufrufen von "release".
Lazy Release: propagiert die Variablen erst wenn der nächste Prozess
Zugang zu den Variablen der kritischen Region wünscht.
9.4.9 Entry-Konsistenz
blocked
acquire(a)
acquire(b)
propagate(a)
release(a)


propagate(b)
release(b)
Es werden Zugriffsrechte auf gemeinsame Variablen vergeben:
separat pro Variable,
exklusiv zum Schreiben,
nicht exklusiv nur zum Lesen.
Feingranulare Synchronisierung auf Objektebene  ggf. weniger
Blockierungen
 Komplizierter zu programmieren.
 Variablen bei Bedarf propagieren ähnlich wie beim Lazy Release Verfahren.
9.4.10
Optimistische Konsistenz
 Alle Schreiboperationen werden vorerst im lokalen Speicher vorgenommen.
 Berechungen werden in rücksetzbare Transaktionen unterteilt.
 Ergeben sich Schreib/Lesekonflikte bei der Validierung, so werden
ausgewählte Trans-aktionen zurückgesetzt und erneut versucht.
 Am Ende einer Transaktion wird der gemeinsame Speicher aktualisiert bzw.
synchronisiert.
Stations
write
read
?
validate
Verteilter Speicher
9.5 Seitenbasierter gemeinsamer Speicher
MMU
Netz
virtueller Speicher

-
phys. Speicher
Abbildung des logischen Adressraumes auf Stationen im Cluster:
Hardwaremässig mithilfe MMU und Paging,
mithilfe einer Segmentierung (HW oder SW),
evtl. R/W-Befehle über Netz transportieren.



Vorteile:
einfaches Programmiermodell,
keine expliziten Nachrichten,
"single-system" Perspektive,
keine Serialisierung.
Nachteile:
Datenaufkommen für ganze Pages,
False sharing.
Verschiedene Konsistenzmodelle möglich.
Herunterladen