Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung...
Transcript of Seminar „Visualisierung Verteilter Systeme“ - Lydian 1 Lydian · Seminar „Visualisierung...
1Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
LydianLydianhttp://www.cs.chalmers.se/~lydian/
Ein System zur Visualisierung von verteilten Algorithmen
Seminarvortrag von Marc Rintsch24.05.2004
2Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
KurzbeschreibungKurzbeschreibung
Visualisierung von verteilten Algorithmen für den Einsatz in der Lehre vorhandene Archive von
● Netzwerktopologien● Protokollen● „Experimenten“
vorgefertigte Animationsprogramme alles vom Benutzer erweiterbar
3Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
AutorenAutoren
Wer?● Boris Koldehofe● Marina Papatriantafilou● Philippas Tsigas● Phuong Ha-Hoai
Wo?● Informatikinstitut● Chalmers University of Technology &
Göteborg University in Göteborg, Schweden
4Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
InhaltInhalt kleiner Überblick über das System Modell
● Simulator, Protokolle, Netzwerk
Beispiel „Rundruf mit Bestätigung“● Start von Lydian● Visualisierung
ASCII / grafisch
Lydian erweitern● Protokoll, Netzwerk, Animationsprogramme
5Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Das SystemDas System
besteht aus Subsystemen● Simulator (DIAS – Distributed Algorithms Simulator)● Animation (POLKA Framework)
http://www.cc.gatech.edu/gvu/softviz/parviz/polka.html
verwendete Programmiersprachen● C für Protokolle● C++ für Animationsprogramme● „glue code“ in TCL/TK http://www.tcl.tk/
6Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Aufbau des SystemsAufbau des Systems
Experiment● Protokoll● Netzwerk● zusätzliche Parameter
Archive● Protokolle● Netzwerke● Simulationsläufe
Experiment
Protokoll Netzwerk
Simulator
„Run“
Animationsprogramm
7Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ModellModell Simulator
● Ereignisse● Schnittstelle für Knotenprozesse● Übertragungsfehler
Protokoll● formales Modell
Netzwerk● Topologie● Zeitverhalten
8Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Annahmen über das simulierte Annahmen über das simulierte SystemSystem
Netzwerktopologie ist ungerichteter Graph Knoten
● ein Prozess pro Knoten● Kommunikation über Nachrichten● Knoten kann nur eine Nachricht auf einmal verarbeiten● startet in Zustand SLEEPING
wacht entweder „spontan“ auf oder wenn eine Nachricht eintrifft
9Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Simulator ModellSimulator Modell
ereignisgetrieben Zeitverhalten von Nachrichten / Prozessen
● variable Verzögerungen nach verschiedenen Wahrscheinlichkeitsverteilungen möglich
● Prozesse blockieren nach jedem Ereignis für eine bestimmte Zeit
● Nachrichten benötigen Zeit bei der Übertragung● globale Taktzyklen wenn synchrone Protokolle simuliert
werden
10Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Simulator – EreignisseSimulator – Ereignisse
INITPROTOCOL● „weckt“ beim Start der Simulation die Knoten auf● Anzahl der Knoten und Zeitpunkt können in der
Netzwerkbeschreibung festgelegt werden
RECMES● Nachricht empfangen
TIMEOUTS● jeder Knoten hat 5 Timer für Zeitüberschreitungen
11Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Wichtige Aufrufe auf dem Wichtige Aufrufe auf dem SimulatorSimulator
send_to● senden von Nachrichten
pass_message● weiterleiten einer Nachricht
simul_end● beendet die Simulation
12Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ÜbertragungsfehlerÜbertragungsfehler
realistische Simulation benötigt Übertragungsfehler Fehlerarten
● STOP_FAIL Verbindung ist permanent unterbrochen
● INTERMITTENT einzelne Nachrichten gehen zufällig „verloren“
maximale Anzahl betroffener Verbindungen kann vorgegeben werden
13Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Protokoll Modell (1)Protokoll Modell (1)
deterministischer endlicher Automat (DFA) 8-Tupel (K, S, M, T, R, I, A, d) K – endliche Zustandsmenge für einen Knoten S – Startzustand jedes Knotens M – Menge von Nachrichtentypen T – Menge von 5 Timern pro Knoten R – Menge von „Registern“ für jeden Knoten
14Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Protokoll Modell (2)Protokoll Modell (2)
I – Menge von Initialisierungsdaten für „Register“ A – Menge von Aktionen
● Zustand ändern● Nachrichten senden● lokale „Register“ ändern● Timer starten / stoppen
15Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Protokoll Modell (3)Protokoll Modell (3)
d – Übergangsfunktion● bildet Tupel (Zustand, Ereignis) auf eine Aktion ab● formal:
d :K×{INITPROTOCOL}∪M∪T A
16Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Protokoll Modell Protokoll Modell ZusammenfassungZusammenfassung
Knoten haben● einen Zustand● lokale Daten („Register“)● Funktionen / Methoden (Aktionen)● Timer
Kommunikation durch Nachrichten
17Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Netzwerk ModellNetzwerk Modell
Topologie● Knoten● Verbindungen● Positionen in der Ebene
Zeitverhalten● asynchron● synchron
18Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Asynchrones Zeitverhalten (1)Asynchrones Zeitverhalten (1)
Schritt (step)● nach jedem Ereignis blockiert ein Knoten
Verzögerung (delay)● Nachrichten benötigen Zeit bei der Übertragung
Schritt und Verzögerung ändern sich nach jedem Ereignis● verschiedene Verteilungen + Parameter● gleichmässige, geometrische, Normal- (Gauss),
deterministische Verteilung
19Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Asynchrones Zeitverhalten (2)Asynchrones Zeitverhalten (2)
Einschränkung● Änderung von Schritt und Verzögerung nur wenn kein
Timer im Knoten läuft (technische Gründe)● scheinbar harte Einschränkung – in der Praxis aber keine
gravierenden Nachteile erkennbar
20Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Synchrones ZeitverhaltenSynchrones Zeitverhalten
alle lokalen Uhren der Knoten laufen synchron Schritt ist in allen Knoten gleich Verzögerung von Nachrichten ist kleiner oder
gleich dem Schritt
Hauptunterschied zwischen asynchron / synchron● asynchron: Ereignisse bestimmen Systemzeit● synchron: Systemzeit bestimmt Ereignisse
21Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Rundruf mit BestätigungRundruf mit Bestätigung Initiator
● sendet Anfrage an alle Nachbarn● wartet auf Bestätigungen
Bearbeitung von einer Anfrage● wenn schon bekannt, dann Bestätigung zurücksenden● sonst
Sender als „Parent“ merken an alle Nachbarn ausser „Parent“ Anfrage schicken auf alle ausstehenden Bestätigungen warten Bestätigung an „Parent“ senden
22Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ZuständeZustände
Sleeping Waiting
Broadcast empfangen
alle ACKs empfangen
23Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Start von LydianStart von Lydian
Hauptfenster so übersichtlich wie Zustandsdiagramm von Broadcast Protokoll ;-)
24Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Experimentdialog (1)Experimentdialog (1)
Experiment Protokoll Netzwerk Übertragungsfehler Protokollierung Anzahl der Läufe Visualisierung
25Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Experimentdialog (2)Experimentdialog (2)
26Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Experimentdialog (3)Experimentdialog (3)
27Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Experimentdialog (4)Experimentdialog (4)
28Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Experimentdialog (5)Experimentdialog (5)
29Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ASCII Visualisierung (1)ASCII Visualisierung (1)
30Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ASCII Visualisierung (2)ASCII Visualisierung (2)
t – globale Zeit m – Gesamtanzahl verschickter Nachrichten p – Prozess in dem der aktuelle Schritt stattfindet i – Prozess ID von p
Time: ttt Tot. Mess. Send: mm Cur. Proc: pp Id: ii
31Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ASCII Visualisierung (3)ASCII Visualisierung (3)
p – Prozess in dem der aktuelle Schritt stattfindet s – alter Zustand e – Ereignis n – neuer Zustand a - Aktion
Proc.: pp [( ssssss ) x ( eeeeee ) -> ( nnnnnnn ) x ( aaaaaa )]
32Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ASCII Visualisierung (4)ASCII Visualisierung (4) Anzeige
● Prozessnummer / ID● alter Zustand● Ereignis● neuer Zustand● Aktion● protokollspezifische
Zusatzinformationen
Was passiert hier gerade?
33Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Graphische VisualisierungGraphische Visualisierung
Anzeigen● Hauptfenster● Kausalität● Ereignisse für Prozess● Nachrichtenstatistik● Prozessdauer
34Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
HauptfensterHauptfenster
„schlafend“
Initiator
wartet noch auf ACKs
fertig
Broadcast
Bestätigung
erster Broadcastan Empfänger
35Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Ereignisse für ProzessEreignisse für Prozess
erreichbar durch anklicken eines Knotens im Hauptfenster
36Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
KausalitätKausalität
Pfeilfarbe durch lokalen „Farbzähler“ bestimmt● Startwert bei allen Prozessen 0● wird bei jeder Empfangsoperation um 1 erhöht
37Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Nachrichtenstatistik (1)Nachrichtenstatistik (1)
Anzahl gesendeter Nachrichten für jeden Prozess
durchschnittliche Anzahl
Nachrichtengrösse
38Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Nachrichtenstatistik (2)Nachrichtenstatistik (2)
39Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ProzessdauerProzessdauer
40Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Protokoll hinzufügenProtokoll hinzufügen
Zustandstabelleaufstellen● Zustände● Ereignisse
Aktionen definieren● für jedes (Ereignis, Zustand) Paar
Aktionen in C umsetzen
Zustand 1 Zustand 2 ... Zustand nEreignis 1Ereignis 2
...Ereignis m
41Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ZustandstabelleZustandstabelleSLEEPING WAITING
BRD
ACK (Fehler!)
Durchlauf beendet.
parent := Sender Mit ACK antworten.Wenn keine Nachbarn vorhanden, mit ACK antworten.BRD an alle anderen Nachbarn verschicken.Empfänger in der Menge ack speichern.new_state = WAITING
Sender aus ack entfernen.Wenn ack leer und parent != -1ACK an parent senden.new_state = SLEEPING
Wenn ack leer und parent == -1
42Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Globale VariablenGlobale Variablen
int processes – Anzahl der Prozesse int TIME – globale Zeit int me – die eigene Prozessnummer int new_state – Zustand den Aktion setzen kann struct CURMESS – aktuelle Nachricht
43Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Nachrichtenformat (1)Nachrichtenformat (1) System
● time – Zeitpunkt der Auslieferung
● from – Sender (Prozessnummer)
● hops – wie oft weitergeleitet?
● port – Verbindungsnr.● next – nächste
Nachricht in Warteschlange
typedef struct mess { int time; int drsy_time; int kind; int value[10]; long special_field[10]; int from; int hops; int maxhops; int port;
struct mess *next;} MESSAGE;
44Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Nachrichtenformat (2)Nachrichtenformat (2)
Benutzer● kind – Nachrichtentyp● value, special_field –
Inhalt● maxhops – maximale
Anzahl von „hops“
typedef struct mess { int time; int drsy_time; int kind; int value[10]; long special_field[10]; int from; int hops; int maxhops; int port;
struct mess *next;} MESSAGE;
45Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
ProzessKontrollBlock (PCB)ProzessKontrollBlock (PCB) Zugriff: PCB[me].state wichtige Felder
● state – Zustand● id – Prozess ID● adjacents – Anzahl der
Nachbarn● loc_clock – lokale Uhr
andere per Funktion erreichbar oder intern vom Simulator verwendet
typedef struct { int state; int id; int adjacents; PORT *adjust; int step_dur[3]; MESSAGE *mes_buf; TIMER clock[5]; int loc_clock; double dr_loc_clock; int wake_time; int sy_init_time; int dpq; double dr_dpq; int step; int cycle; int idle; int init_time;} PCBS;
46Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Lokale VariablenLokale Variablen
benutzerdefinierte Struktur Zugriff: REG[me].ack Speicheranforderung muss
selbst implementiert werden
typedef struct { int parent; LIST ack;} REGISTERS;
REGISTERS *REG;
void reg_alloc(void) { REG = (REGISTERS*) malloc(processes * sizeof(REGISTERS));}
47Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Implementation (1)Implementation (1)
Benötigte Funktionen● Speicher für „Register“ anfordern● „Register“ initialisieren (init())● Funktion für jede Zelle in der Zustandstabelle
ausser für leere Zellen und „verbotene“ Zellen● Startfunktion für Knoten, die das Protokoll in Gang
setzen (start()) werden in der Netzwerkbeschreibung bestimmt darf nur 1 Knoten im „Broadcast mit ACK“ sein!
48Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Implementation (2)Implementation (2)
void init(void) { int i;
for(i=0; i < processes; ++i) { REG[i].parent = -1; init_list(REG[i].ack); }}
Elternknoten auf „undefiniert“ setzen ack-Listen leeren
49Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Implementation (3)Implementation (3)void sleeping_brd(void) { MESSAGE *mess; int i;
if(PCB[me].adjacents == 1) { mess = create_message(); mess->kind = ACK; send_to(mess, CURMESS->port); } else { REG[me].parent = CURMESS->port; for(i=0; i < PCB[me].adjacents; ++i) { if(i != REG[me].parent) { insert_list(i, REG[me].ack); mess = create_message(); mess->kind = BRD; send_to(mess, i); } } new_state = WAITING; }}
50Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Implementation (4)Implementation (4)
void waiting_brd(void) { MESSAGE *mess;
mess = create_message(); mess->kind = ACK; send_to(mess, CURMESS->port);}
51Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Implementation (5)Implementation (5)void waiting_ack(void) { MESSAGE *mess;
delete_list(CURMESS->port, REG[me].ack); if(empty_list(REG[me].ack) == TRUE) { if(REG[me].parent == -1) { /*initiator*/ new_state = SLEEPING; simul_end(); return; } else { /*send ACK to its parent */ mess = create_message(); mess->kind = ACK; send_to(mess, REG[me].parent); new_state = SLEEPING; } }}
52Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Implementation (6)Implementation (6)
void start(void) { MESSAGE *mess; int i;
if(PCB[me].adjacents == 0) { simul_end(); return; } for(i=0; i < PCB[me].adjacents; ++i) { insert_list(i, REG[me].ack); mess = create_message(); mess->kind = BRD; send_to(mess, i); } new_state = WAITING;}
53Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Neues Protokoll in Lydian Neues Protokoll in Lydian einbindeneinbinden
54Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Netzwerke bearbeitenNetzwerke bearbeiten graphischer Editor bei asynchronem
Zeitverhalten angeben:● Art der Verteilung● Parameter pro Knoten
evt. „spontan“ aufwachende Knoten bestimmen
deren „Weckzeit“ angeben
55Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
VerteilungenVerteilungen Wertebereich 1 bis 100 (ganzzahlig!) gleichmässig
● Parameter: Unter-/Obergrenze
geometrisch● Parameter: Unter-/Obergrenze und Mittelwert
Normalverteilung● Parameter: Obergrenze, Mittelwert und Varianz
deterministisch● Parameter: feste Werte für Schritt und Verzögerung
56Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
AnimationsprogrammeAnimationsprogramme
objektorientiertes Framework in C++
Animator
View
AnimObject Action
Loc
1..*
1..*
0..*
0..*
57Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
KlassenKlassen
View● Zeit (in Frames)● Höhe/Breite
in Pixeln internes
Koordinatensystem
AnimObject● Position (Loc)● Sichtbarkeit● Aktionen (Action)
Loc● Position als (x,y)
Koordinaten
Action● Typ● Startzeit (Frame)● „Pfad“● wird an Animations-
objekte gebunden
58Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
AnimObject – UnterklassenAnimObject – Unterklassen
Line Rectangle Circle Ellipse Polyline Spline
Polygon Pie Text Bitmap
Set
Hello World
59Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
Action – TypenAction – Typen
MOVE ALTER FILL COLOR VIS RESIZE
GRAB RAISE LOWER ALTER_LL ALTER_UR
60Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
FazitFazit
positiv● sehr flexibel● Timeouts● Übertragungsfehler● Netzwerke grafisch
bearbeiten● viele Sichten
negativ● Softwaresystem zu
komplex● eingeschränkt portabel● schlechte Trennung von
System- und Benutzer-daten in C-Datenstruk-turen
61Seminar „Visualisierung Verteilter Systeme“ - Lydian
© 2004 Marc Rintsch <[email protected]>
DankeDanke