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
Tempo e sincronizzazione
nei
Sistemi Distribuiti
Sommario
• Tempo
- timer, eventi, clock, skew, drift, UTC
• Sincronizzazione degli orologi
- esterna (algoritmo di Cristian)
- interna (algoritmo di Berkeley)
- con server distribuiti (NTP)
• Relazione happened-before
• Tempo logico e orologi logici di Lamport
Riferimenti:
G. Coulouris et al.: Distributed Systems: Concepts and Design
(Cap. XI §1-4), IV ed., 2005.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
2
Il tempo nei sistemi distribuiti
In un sistema distribuito, ogni nodo è dotato di un proprio
orologio, ed è possibile che ad un evento x, che accade dopo un
altro evento y, sia assegnato un istante precedente a quello di y.
Ciò comporta problemi in molte applicazioni.
Es.: compilazione con make, utility basata sulle date dei file.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
3
1
Modello di sistema distribuito
Consiste di un insieme ℘ di N processi pi, i=1, 2, …, N:
• ciascun processo è in esecuzione su un diverso processore;
• i processori non condividono memoria;
• ciascun processo pi ha uno stato si, che trasforma nella sua esecuzione;
• lo stato di un processo include il valore di tutte le sue variabili, nonché
di tutti gli oggetti locali (es.: archivi);
• ciascun processore è dotato di un proprio orologio fisico (clock);
• non esiste un orologio fisico globale, ma esiste la nozione di un tempo
reale “effettivo” in un sistema di riferimento assoluto.
Un processo pi può eseguire le seguenti azioni:
• send o receive di un messaggio;
• variazioni del suo stato si.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
4
Eventi e storia di un processo
L’occorrenza di una singola azione in piè un evento e.
L’insieme degli eventi di un processo pi può eseguire ordinato totalmente
in base alla relazione di precedenza temporale →:
• e → e′ se e solo se e si è verificato prima e′ di in pi.
L’ordinamento è ben definito (anche in caso di multithreading) in quanto
ciascun processo è in esecuzione su un processore dedicato.
La storia di un processo pi è la successione di eventi che ha luogo in pi,
ordinata in base alla relazione →:
• storia(pi) = hi = <ei0, ei1, ei2,…>
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
5
Orologi fisici (1/2)
Un orologio fisico di un computer (computer clock, meglio detto:
timer) è un dispositivo tipicamente costituito da:
• un cristallo di quarzo, che oscilla a una frequenza nota;
• un registro contatore;
• un registro di inizializzazione (holding register);
• un registro di memorizzazione.
Ciascuna oscillazione del cristallo decrementa il contatore di una
unità. Quando il contatore raggiunge lo zero, il contatore viene reimpostato al valore indicato dal registro di inizializzazione.
Il clock può dunque essere programmato per generare interruzioni
periodiche, p.es. 60 volte al secondo (clock tick). Ad ogni
interruzione, il valore del registro di memorizzazione viene aggiornato.
Il risultato è il valore di un clock hardware Hi(t).
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
6
2
Orologi fisici (2/2)
Il sistema operativo legge dal registro il valore Hi(t) del clock
hardware, lo moltiplica per un fattore di scala ed aggiunge un offset,
fornendo il valore di un clock software Ci(t):
• Ci(t) = α Hi(t)+ β.
Ci(t) rappresenta una misura approssimata del tempo “effettivo” t per
il processo pi.
A due eventi successivi possono essere associati valori distinti di
Ci(t) solo se la risoluzione del clock (periodo tra gli aggiornamenti
del clock) è minore dell’intervallo temporale tra i due eventi.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
7
Attributi di un clock – definizioni (1/2)
Tempo effettivo o reale t: il tempo “vero” in ciascun istante, in un sistema
di riferimento assoluto nominale, indicato da un ideale orologio di
riferimento perfetto.
Clock offset: differenza tra la lettura istantanea del clock locale rispetto a t;
Clock frequency: il tasso con cui il clock locale progredisce
(derivata prima rispetto a t);
Clock skew: differenza tra le frequenze del clock locale e reale;
Clock drift: variazione nel tempo della frequenza del clock locale
(derivata seconda del clock locale rispetto a t);
Clock adjustment: variazione subitanea degli attributi di un clock locale,
per effetto di un’azione di sistema o d’utente.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
8
Attributi di un clock – definizioni (2/2)
In letteratura la differenza tra le letture di due orologi viene spesso indicata
con il termine clock skew, anziché offset.
Network
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
9
3
Tempo astronomico
I secondi misurati nel tempo solare NON hanno durata costante.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
10
Tempo Atomico Internazionale
Con l’invenzione dell’orologio atomico nel 1948, il tempo non è più
misurato su base astronomica, ma su base fisica, contando le transizioni
dell’atomo di cesio 133.
Il secondo è definito come il tempo nel quale l’atomo di cesio 133 effettua
esattamente 9.192.631.700 transizioni (valore scelto per rendere il secondo
pari alla durata media di un secondo misurato su base solare nel 1958).
Ad oggi circa 50 laboratori nel mondo possiedono orologi atomici.
Ciascuno di essi comunica periodicamente la propria ora al Bureau
International de l’Heure (BIH) a Parigi.
Il BIH calcola il valore medio, che rappresenta il Tempo Atomico
Internazionale (TAI).
I secondi TAI hanno durata costante.
Attualmente, 86.400 secondi TAI sono circa 3 ms meno della durata media
del giorno solare (che si allunga nel tempo).
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
11
Universal Coordinated Time (UTC)
È il sistema basato su orologi atomici, con la correzione di leap seconds,
introdotti appena la differenza tra il tempo atomico e quello solare
raggiunge la soglia di 800 ms.
È alla base dei moderni sistemi civili.
Ha sostituito il vecchio standard del Greenwich Mean Time (GMT),
basato sul tempo astronomico.
Ad oggi, sono stati introdotti circa 50 leap seconds nel tempo UTC.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
12
4
Relazione tra clock locale e UTC (1/2)
In un mondo ideale:
Ci(t) = t, per ogni i e per ogni t,
quindi dC/dt = 1.
Nella realtà, si ha dC/dt > 1
(dC/dt < 1) quando il clock
procede più rapidamente
(lentamente) del tempo effettivo.
In pratica, molti costruttori
specificano per il clock una
costante ρ tale che:
1 - ρ ≤ dC/dt ≤ 1 + ρ
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
13
Relazione tra clock locale e UTC (2/2)
Se due clock divergono dal tempo UTC in direzioni opposte, dopo un
intervallo ∆t dalla sincronizzazione possono differire al più di 2ρ ∆t.
Se si vuole che due orologi non differiscano di un valore maggiore di
δ, essi vanno sincronizzati (via software) ogni δ/2ρ secondi.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
14
Sincronizzazione dei clock
Per molte applicazioni, l’ora “effettiva” è fondamentale. Per tali
sistemi sono spesso necessari orologi fisici esterni.
Per ragioni di efficienza e affidabilità, poi, gli orologi sono
tipicamente ridondati.
Si pongono dunque due tipi di problemi:
• come sincronizzare un orologio locale con un orologio esterno?
• come sincronizzare più orologi tra loro?
I due problemi sono rispettivamente indicati:
- Sincronizzazione esterna:
• algoritmo di Cristian (1989).
- Sincronizzazione interna:
• algoritmo di Berkeley (Gusella e Zatti, 1989).
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
15
5
Algoritmo di Cristian (1/3)
È un algoritmo di sincronizzazione esterna, che si basa
sull’utilizzo di un time server passivo, dotato di un
dispositivo che riceve il segnale di una sorgente UTC.
Su richiesta, un processo server invia un messaggio
contenente l’ora t, misurata col proprio orologio basato su
UTC.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
16
Algoritmo di Cristian (2/3)
.
Il processo cliente p misura il round-trip-time TRTT come
intervallo temporale tra gli istanti To e T1. L’accuratezza della
misura dipende dal clock drift. Tipicamente si può assumere
che p possa poi aggiornare il clock locale al valore t+TRTT/2.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
17
Algoritmo di Cristian (3/3)
Cristian definisce il suo algoritmo probabilistico: si raggiunge
la sincronizzazione solo se il round-trip-time (RTT) dei
messaggi è sufficientemente piccolo rispetto all’accuratezza
richiesta.
Es.: su una rete LAN, il RTT generalmente non supera i 10 ms.
Un clock con un drift rate di 10-6 secondi/secondo varia di non
più di 10-5 secondi.
Detto min il tempo minimo di trasmissione dei messaggi, l’ora
dell’orologio del server all’istante T1 è compresa in [t+min,
t+TRTT-min], intervallo ampio TRTT-2min. L’accuratezza è
quindi ±(TRTT/2-min).
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
18
6
Algoritmo di Berkeley (1/3)
È un algoritmo di sincronizzazione interna ideato
principalmente per reti intranet.
Si basa sull’utilizzo di un time server attivo, dotato di un
dispositivo che riceve il segnale di una sorgente UTC.
Un nodo viene selezionato come master.
Gli altri nodi con cui deve essere effettuata la
sincronizzazione fanno da slave.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
19
Algoritmo di Berkeley (2/3)
Il master:
• effettua periodicamente il polling dei nodi slave;
• calcola una stima dell’ora locale di ciascuno slave, in base
al round-trip time (analogamente all’algoritmo di Cristian);
• calcola l’ora media (inclusa la propria);
• comunica ad ogni slave di quanto variare il clock locale.
L’accuratezza dell’algoritmo dipende dal round-trip time dei
messaggi tra il master e gli slave. Per aumentarla, il master:
• stima un round-trip time massimo nominale;
• elimina dal calcolo della media le letture dei clock
associate a valori del round-trip time maggiori del massimo.
In questo modo si limita l’effetto dei clock che vanno troppo
veloci o lenti.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
20
Algoritmo di Berkeley (3/3)
Per aumentare ulteriormente la precisione, l’algoritmo prevede
di non considerare le letture di eventuali faulty clocks.
A tale scopo, il master considera nel calcolo della media solo il
sottoinsieme dei clock locali che non differiscono tra essi di un
valore prestabilito.
Si dice che il master effettua una media tollerante ai guasti
(fault tolerant average).
Nel caso in cui il master si guasti, è prevista l’elezione di un
nuovo master.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
21
7
Network Time Protocol (1/5)
È un protocollo per un time service per nodi di rete Internet.
L’obiettivo di NTP è di offrire ai nodi Internet un servizio di
sincronizzazione con l’ora UTC.
NTP si propone di offrire tale servizio in maniera:
• affidabile, anche in caso di lunghe perdite di connettività;
• scalabile, adatto all’elevato numero di client e server su Internet;
• sicura, mediante meccanismi di protezione da interferenze
accidentali o maliziose con il time service.
Il servizio NTP è fornito da una rete di server connessi a Internet,
secondo una organizzazione logica gerarchica.
Corso di Sistemi Distribuiti, prof. S. Russo
22
Tempo e sincronizzazione nei sistemi distribuiti
Network Time Protocol (2/5)
I server NTP sono classificati in:
• server primari, direttamente connessi a una sorgente UTC;
• server secondari, sincronizzati direttamente con server primari.
1
2
3
2
3
3
Le frecce indicano segnali di sincronizzazione,
i numeri indicano gli strati nella gerarchia.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
23
Network Time Protocol (3/5)
I server NTP possono sincronizzarsi secondo tre modalità:
• multicast mode,
• procedure call mode,
• symmetric mode.
Il multicast mode è previsto per reti LAN. Il server effettua
periodicamente il multicast dell’ora ai nodi sulla LAN. I nodi
regolano la propria ora su quella del server.
Il procedure call mode è analogo all’algoritmo di Cristian: il server
accetta richieste e risponde con la lettura corrente del proprio clock.
Questa modalità è usata p.es. dai file server su una LAN o su LAN
adiacenti.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
24
8
Network Time Protocol (4/5)
Il symmetric mode è usato dai livelli più bassi della gerarchia, per
raggiungere maggiore precisione.
Tutte le modalità usano messaggi UDP.
In procedure call mode e symmetric mode, i server si scambiano
coppie di messaggi, che contengono l’ora locale dei due eventimessaggio più recenti, oltre a quello corrente.
Server B
Ti-2
Ti-1
m
Time
m'
Time
Server A
Ti- 3
Ti
Corso di Sistemi Distribuiti, prof. S. Russo
25
Tempo e sincronizzazione nei sistemi distribuiti
Network Time Protocol (5/5)
o: offset “vero” tra due clock
t, t’: tempi di trasmissione effettivi di m, m’
Ti-2 = Ti-3 + t + o
Ti = Ti-1 + t’ – o
delay di = t + t’ = Ti-2 - Ti-3 + Ti - Ti-1
o = oi + (t’ –t)/2,
oi = (Ti-2 - Ti-3 + Ti-1 – Ti )/2 stima dell’offset
oi – di/2 <= o <= oi + di/2 misura dell’accuratezza della stima oi
Server B
Ti-2
Ti-1
m
Time
m'
Time
Server A
Corso di Sistemi Distribuiti, prof. S. Russo
Ti- 3
Ti
Tempo e sincronizzazione nei sistemi distribuiti
26
Relazione happened-before
La relazione tra eventi HB (happened-before, “è accaduto prima di”),
indicata con il simbolo →, è definita dalle condizioni:
HB1: Se esiste un processo pi tale che e →i e′ (cioè pi osserva che e
accade prima di e′ ), allora e → e′
HB2: ∀ messaggio m: send(m) → receive(m)
HB3: Se e → e′ e e' → e'', allora e → e''.
La relazione HB definisce un ordinamento parziale degli eventi in un
sistema distribuito.
L’interpretazione è che se e → e′, allora c’è un nesso di potenziale
causalità tra gli eventi e ed e′.
Corso di Sistemi Distribuiti, prof. S. Russo
Tempo e sincronizzazione nei sistemi distribuiti
27
9
Eventi in un sistema distribuito
p1
a
b
m1
Physical
time
p2
c
d
m2
p3
e
f
a → b (per HB1)
b → c e d → f (per HB2)
a → f (per HB3)
Corso di Sistemi Distribuiti, prof. S. Russo
a→
⁄ e (per HB1)
e→
⁄ a
a || e (eventi concorrenti)
28
Tempo e sincronizzazione nei sistemi distribuiti
Marcatura temporale degli eventi con orologi logici
p1
1
2
a
b
m1
3
4
c
d
Physical
time
p2
m2
1
5
e
f
p3
Corso di Sistemi Distribuiti, prof. S. Russo
29
Tempo e sincronizzazione nei sistemi distribuiti
Marcatura temporale degli eventi con orologi-vettore
(1,0,0) (2,0,0)
p1
a
b
m1
(2,1,0)
p2
c
(2,2,0)
d
Physical
time
m2
(2,2,2)
(0,0,1)
p3
e
Corso di Sistemi Distribuiti, prof. S. Russo
f
Tempo e sincronizzazione nei sistemi distribuiti
30
10