1 Sistemi Distribuiti

Transcript

1 Sistemi Distribuiti
Università degli Studi di Napoli Federico II
Facoltà di Ingegneria
Corso di Laurea Specialistica in Ingegneria Informatica
Corso di
Sistemi Distribuiti
Prof. Stefano Russo
Stato globale
nei
Sistemi Distribuiti
Sommario
• Stato globale di un sistema distribuito
• Tagli
• Linearizzazione e raggiungibilità
• Algoritmo di snapshot distribuito di Chandy e Lamport
• Proprietà dello snapshot
• Esempio applicativo: termination detection distribuita
Riferimenti:
G. Coulouris et al.: Distributed Systems: Concepts and Design
(Cap. XI §5), IV ed., 2005.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
2
Stato globale di un sistema distribuito
In molte applicazioni distribuite è utile conoscere lo stato globale in
cui si trova correntemente il sistema.
Intuitivamente, lo stato globale di un sistema distribuito consiste di:
• stato locale di ciascun processo; in cosa consista lo stato locale,
dipende da ciò cui si è interessati, può includere p.es. il valore di
variabili locali, i record di una base dati, o lo stato di alcuni file;
• messaggi inviati ma non ancora ricevuti, che si possono dunque
pensare come in transito nei canali di comunicazione tra
processi.
La determinazione dello stato globale è complessa per via della
mancanza di un tempo globale in un sistema distribuito, né d’altra
parte è possibile una sincronizzazione perfetta dei clock locali.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
3
1
Stato globale di un sistema distribuito:
Alcuni problemi tipici
p2
p1
object
reference
message
a. Garbage collection
garbage object
p1
p2
wait-for
b. Deadlock
wait-for
p2
p1
activate
passive
c. Termination
Corso di Sistemi Distribuiti, prof. S. Russo
passive
4
Lo stato globale nei sistemi distribuiti
Eventi e storia di un processo
L’occorrenza di una singola azione in piè un evento e.
Gli eventi sono di due tipi:
• eventi interni al processo (es.: aggiornamento di una variabile);
• eventi di invio o ricezione di messaggi.
L’insieme degli eventi di un processo pi può essere ordinato totalmente in
base alla relazione di precedenza temporale:
• e → e′ se e solo se e si è verificato prima e′ di in pi.
La storia (locale) di un processo pi è la successione di eventi che ha
luogo in pi, ordinata in base alla relazione di precedenza temporale:
• storia(pi) = hi = <ei0, ei1, ei2,…>
La storia (locale) iniziale di pi fino all’evento k è:
• storia(pi,k) = hik = <ei0, ei1, …, eik>
Corso di Sistemi Distribuiti, prof. S. Russo
5
Lo stato globale nei sistemi distribuiti
Taglio
Un taglio dell’esecuzione di un sistema distribuito è un
sottoinsieme della sua storia globale, costituito dall’unione di
storie iniziali dei processi:
c
c
c
taglio
C = h1 1 ∪ h2 2 ∪ … ∪ hN N
La frontiera del taglio è l’insieme di tutti gli ultimi eventi
verificatisi negli N processi pi prima del taglio:
c
frontiera
F = { ei i} i = 1, …, N
0
e1
1
2
e1
3
e1
e1
p1
m1
p2
m2
0
e2
Corso di Sistemi Distribuiti, prof. S. Russo
1
e2
Lo stato globale nei sistemi distribuiti
2
e2
Physical
time
6
2
Tagli consistenti
Un taglio C è consistente se, per ogni evento e contenuto,
contiene anche tutti gli eventi “happened-before” e:
c
c
c
CC = h1 1 ∪ h2 2 ∪ … ∪ hN N / ∀ e ∈ CC, f → e ⇒ f ∈ CC
0
e1
1
2
e1
3
e1
e1
p1
m1
p2
m2
0
e2
1
e2
2
e2
Physical
time
Taglio inconsistente
Taglio consistente
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
7
Stato globale e stato globale consistente
Uno stato globale S di un sistema distribuito è una unione di
stati dei singoli processi:
S0 = (S1, , S2…, SN)
Non tutti i possibili stati globali sono significativi.
Uno stato globale consistente CS di un sistema distribuito è
uno stato globale corrispondente ad un taglio consistente.
L’evoluzione di un sistema distribuito è una successione di
transizioni tra stati globali consistenti:
S0 → S1 → S2 → …
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
8
Esecuzione ed esecuzione consistente
Una esecuzione (run) di un sistema distribuito è un ordinamento
totale degli eventi in una storia globale H, consistente con
l’ordinamento di ogni storia locale.
Non tutte le esecuzioni attraversano solo stati globali consistenti.
Una esecuzione consistente (consistent run) o linearizzazione
di un sistema distribuito è un ordinamento totale degli eventi in
una storia globale H, consistente con tutte le relazioni HB
(happened-before) tra gli eventi.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
9
3
Linearizzazione e raggiungibilità
Una linearizzazione è una esecuzione.
Una linearizzazione attraversa solo stati globali consistenti.
Uno stato globale S’ si dice raggiungibile da S se esiste una
linearizzazione che passa per S e poi per S’.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
10
Algoritmo di snapshot di Chandy e Lamport (1/5)
Ipotesi:
• i processi non sono soggetti a fallimenti;
• i canali non sono soggetti a fallimenti: la comunicazione è
affidabile e prima o poi ogni messaggio viene ricevuto una
e una sola volta;
• i canali sono unidirezionali e di tipo FIFO;
• il grafo dei processi e dei canali è fortemente connesso
(c’è un percorso tra ogni coppia di processi).
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
11
Algoritmo di snapshot di Chandy e Lamport (2/5)
Caratteristiche dell’algoritmo:
• qualunque processo può dar inizio all’algoritmo in un
qualsiasi istante;
• i processi non interrompono le loro elaborazioni e lo
scambio messaggi durante lo snapshot;
• lo stato osservato dall’algoritmo distribuito è consistente;
• lo stato osservato dall’algoritmo distribuito può non
corrispondere a nessuno stato globale effettivamente
attraversato dal sistema in un qualche istante.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
12
4
Algoritmo di snapshot di Chandy e Lamport (3/5)
L’algoritmo fa uso di messaggi marker, che svolgono un doppio ruolo:
- obbligano il ricevente a salvare il proprio stato, se ancora non l’ha
fatto;
- servono a discriminare i messaggi da includere nello stato del canale.
Organizzazione di un
processo (canali entranti,
uscenti, stato locale, file
system locale, marker) per
l’algoritmo di Chandy e
Lamport
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
13
Algoritmo di snapshot di Chandy e Lamport (4/5)
Marker receiving rule for process pi
On pi’s receipt of a marker message over channel c:
if (pi has not yet recorded its state) it
records its process state now;
records the state of c as the empty set;
turns on recording of messages arriving over other incoming channels;
else
pi records the state of c as the set of messages it has received over c
since it saved its state.
end if
Marker sending rule for process pi
After pi has recorded its state, for each outgoing channel c:
pi sends one marker message over c
(before it sends any other message over c).
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
14
Algoritmo di snapshot di Chandy e Lamport (5/5)
Dinamica:
b) Un processo Q receve un marker per la prima volta, registra il suo
stato e invia un marker su ogni canale di uscita
c) Q registra tutti i messaggi entranti
d) Q riceve un marker su un canale entrante e termina la
registrazione dello stato di quel canale
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
15
5
Esemplificazione dell’algoritmo di snapshot (1/2)
c2
p1
p2
c1
$1000
(none)
$50
2000
account
widgets
account
widgets
Corso di Sistemi Distribuiti, prof. S. Russo
16
Lo stato globale nei sistemi distribuiti
Esemplificazione dell’algoritmo di snapshot (2/2)
1. Global state S 0
2. Global state S 1
3. Global state S 2
4. Global state S 3
<$1000, 0>
<$900, 0>
<$900, 0>
<$900, 5>
p1
p1
p1
p1
c2
(empty)
c1
(empty)
c2
(Order 10, $100), M
c1
(empty)
c2
(Order 10, $100), M
c1
(five widgets)
c2
(Order 10, $100)
c1
(empty)
p2
<$50, 2000>
p2
<$50, 2000>
p2
<$50, 1995>
p2
<$50, 1995>
(M = marker message)
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
17
Terminazione dell’algoritmo di snapshot distribuito
L’algoritmo di snapshot distribuito termina certamente, se si
assume che un processo che riceve un marker:
- salvi il suo stato in un tempo finito;
- invii i marker sui canali uscenti in un tempo finito.
In tali ipotesi, se esiste un percorso tra un processo pi e un
processo pj, allora pj registrerà il suo stato in un tempo finito dopo
che pi ha registrato il suo stato.
Poiché per ipotesi il grafo di processi e canali è strettamente
connesso, tutti i processi registreranno il proprio stato entro un
tempo finito dopo che qualche processo ha dato inizio
all’algoritmo, registrando il proprio stato.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
18
6
Proprietà dello snapshot
Siano ei, ej due generici eventi rispettivamente in pi, pj, con ei → ej, i ≠ j.
Lo stato globale è consistente se, qualora ej appartenga al taglio, anche ei
appartiene al taglio (nel caso i = j ciò è ovvio).
Lo stato globale selezionato dall’algoritmo di snapshot è consistente.
Dimostrazione: se ej appartiene al taglio, allora si è verificato prima che pj
registrasse il suo stato, e non è possibile che ei si sia verificato dopo che pi
aveva registrato il suo stato.
Infatti, poiché ei → ej, esiste una sequenza di messaggi m1, ..., mh (h ≥ 1)
che contribuisce a determinare la relazione ei → ej. Se per assurdo pi
avesse registrato il suo stato prima del verificarsi di ei, poiché i canali sono
FIFO e per via delle due regole dell’algoritmo, un marker avrebbe dovuto
raggiungere pj prima di ej. Per la regola di ricezione, pj avrebbe allora
registrato il suo stato prima di ej; ciò contraddice l’ipotesi che ej sia nel
taglio.
Corso di Sistemi Distribuiti, prof. S. Russo
19
Lo stato globale nei sistemi distribuiti
Raggiungibilità degli stati nell’algoritmo di snapshot
Sinit: stato globale del sistema, immediatamente prima che il primo
processo registri il suo stato;
Ssnap: stato globale osservato dall’algoritmo;
Sfinal: stato globale del sistema alla terminazione dell’algoritmo,
immediatamente dopo l’ultima azione di registrazione di uno stato.
actual execution e
Sinit
recording
begins
pre-snap: e '0 ,e '1,...e 'R-1
Corso di Sistemi Distribuiti, prof. S. Russo
0 ,e 1 ,...
recording
ends
S snap
S final
post-snap: e 'R ,e 'R+1 ,...
Lo stato globale nei sistemi distribuiti
20
Stabilità e raggiungibilità dello snapshot
La proprietà di raggiungibilità dello stato Ssnap osservato con
l’algoritmo distribuito è utile per determinare la validità di
predicati stabili.
Infatti, se un predicato stabile P è vero nello stato Ssnap, allora è
vero anche nello stato finale Sfinal, poiché per definizione un
predicato stabile vero in uno stato S resta vero in ogni stato
raggiungibile da S.
Analogamente, se un predicato stabile P è falso nello stato
Ssnap, allora deve essere falso anche nello stato Sinit.
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
21
7
Stato globale nei
Sistemi Distribuiti
Esempio:
il problema della
termination detection
Termination Detection (1/5)
Problema:
Determinare se una computazione distribuita è terminata.
Una computazione distribuita può ritenersi terminata quando:
- i processi non hanno in corso elaborazioni e sono al più in uno
stato passivo;
- nello stato osservato (snapshot) non ci sono messaggi in transito
(inviati ma non ancora ricevuti).
Si suppone che lo scambio di messaggi nel sistema sia affidabile, cioè i messaggi
sono consegnati:
- certamente (prima o poi),
- inalterati,
- una e una sola volta (nessuna duplicazione)
- nell’ordine di spedizione (per ciascun canale –> canali FIFO)
Corso di Sistemi Distribuiti, prof. S. Russo
23
Lo stato globale nei sistemi distribuiti
Termination Detection (2/5)
Soluzione - Versione modificata del Distributed Snapshot di Chandy e Lamport (1985)
Un processo P invia il MARKER ad un processo Q; Q annota P come suo
predecessore (Q è successore di P).
Come previsto dall’algoritmo di C&L, Q inoltra il MARKER su tutti i canali in
uscita, ed avvia la registrazione dei canali in ingresso.
Appena Q termina la sua parte di snapshot, invia uno dei seguenti messaggi a P:
DONE ⇔ Tutti i successori di Q hanno restituito DONE, ovvero se
Q non ha ricevuto alcun messaggio nell’intervallo [t0-tn]
CONTINUE in tutti gli altri casi
t0 t0+d
Registrazione
Stato Locale
Corso di Sistemi Distribuiti, prof. S. Russo
t1
ti
Inoltro
Ricezione 1° Marker
MARKERS su canale in ingresso
tn
Ricezione Marker
su i-esimo canale
Lo stato globale nei sistemi distribuiti
Invio DONE o
CONTINUE
Ricezione Marker
su n-esimo canale
24
8
Termination Detection (3/5)
Il processo che ha avviato lo snapshot riceve un
messaggio DONE se e solo se tutti i processi nel sistema
distribuito hanno inviato un messaggio DONE.
In tal caso nessun messaggio è in circolazione nel sistema
e la computazione può ritenersi terminata.
Corso di Sistemi Distribuiti, prof. S. Russo
25
Lo stato globale nei sistemi distribuiti
Termination Detection (4/5)
Esempio – Computazione non terminata
1. M
REC
P1
REC
6. CONTINUE
Msg=0
DO
5.
4.
M
5.
D
O
P2
N
E
NE
Msg=1
Msg=0
M LO
L
4 . . HE
2
M
3.
P1 riceve:
1 messaggio DONE
1 messaggio CONTINUE
P3
La computazione non
è terminata!
Msg=0
Corso di Sistemi Distribuiti, prof. S. Russo
26
Lo stato globale nei sistemi distribuiti
Termination Detection (5/5)
Esempio – Computazione terminata
1. M
REC
P1
REC
P2
5. DONE
Msg=0
DO
4.
3.
M
4.
D
O
NE
3.
Msg=0
M
N
E
2.
M
P1 riceve:
2 messaggi DONE
P3
Msg=0
Corso di Sistemi Distribuiti, prof. S. Russo
Lo stato globale nei sistemi distribuiti
La computazione è
terminata!
27
9