La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi Avanzati a.a. 2010/2011

Presentazioni simili


Presentazione sul tema: "Algoritmi Avanzati a.a. 2010/2011"— Transcript della presentazione:

1 Algoritmi Avanzati a.a. 2010/2011
Lezione del 25/05/2011 – Causality and Time Prof.ssa ROSSELLA PETRESCHI a cura di Emanuel Fadlun

2 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Gli orologi logici Premesse Spesso è utile conoscere l’ordine degli eventi in un sistema distribuito Questa conoscenza può essere raggiunta anche in un sd asincrono che non ha nessun modo di misurare il tempo. Ciò è possibile osservando la relazione di causalità tra gli eventi. Assunzioni: Due eventi che accadono su uno stesso processo possono sempre essere ordinati Un evento di ricezione di un messaggio segue sempre l’evento di invio del messaggio stesso Corso di Algoritmi Avanzati – anno accademico 2010/2011

3 Relazione Happened-Before
Gli eventi possono quindi essere ordinati secondo una relazione di causa-effetto. Lamport introduce il concetto di relazione di happened-before o ordinamento causale. Dati due eventi e ed e’ allora e precede e’ , indicato con e ↦ e’ se è verificata una delle seguenti condizioni: 1. gli eventi e ed e’ appartengono allo stesso processo ed e accade prima di e’ 2. gli eventi e ed e’ appartengono a processi distinti, dove e è l’evento di invio di un messaggio ed e’ è l’evento di ricezione di tale messaggio; 3. esiste un evento e’’ tale che e ↦ e’’ e e’’ ↦ e’ se ¬(e ↦ e’) ed ¬(e’ ↦ e ), i due eventi sono detti concorrenti e si scrive: e || e’ Corso di Algoritmi Avanzati – anno accademico 2010/2011

4 Relazione Happened-Before: Esempio
Corso di Algoritmi Avanzati – anno accademico 2010/2011

5 se e ↦ e’ allora C(e) < C(e’)
Clock logico scalare L’idea è di ordinare gli eventi del sistema assegnando a ciascun evento un numero naturale chiamato timestamp. Il Clock Logico è un contatore software monotonicamente crescente Ogni processo Pi ha il proprio clock logico Ci usato per applicare i timestamp agli eventi L’ordinamento è basato sulla relazione “happened before ↦” Ad ogni evento e viene associato un timestamp Ci(e), tale che: se e ↦ e’ allora C(e) < C(e’) Corso di Algoritmi Avanzati – anno accademico 2010/2011

6 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Algoritmo per mantenere correttamente I clock logici scalari Ogni processo Pi mantiene un contatore Ci inizializzato a 0 e segue le seguenti regole di aggiornamento: quando Pi esegue un evento, prima incrementa il contatore Ci di una unità (Ci:= Ci +1) e quindi associa un timestamp all’evento il cui valore è pari al valore corrente di Ci quando Pi invia un messaggio, esegue l’evento di trasmissione e allega al messaggio il timestamp associato a tale evento ricavato dalla regola precedente quando Pi riceve un messaggio con timestamp T, pone Ci:= max(Ci, T) e quindi esegue l’evento di ricezione del messaggio (ovvero applica la regola al primo punto) Corso di Algoritmi Avanzati – anno accademico 2010/2011

7 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Timestamp scalari in un esempio di esecuzione e1 e2 e3 e4 e5 p0 1 2 3 7 8 e6 e7 e8 e9 p1 2 4 5 6 e10 e11 e12 e13 e14 e15 e16 p2 1 2 3 4 5 6 7 Corso di Algoritmi Avanzati – anno accademico 2010/2011

8 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Analisi del modello Limiti Se e ↦ e’ allora C(e) < C(e’) ma non è vero il viceversa! Guadando i timestamp di due eventi non è possibile stabilire se essi siano concorrenti o meno. Causa La relazione happens-before è un ordinamento parziale mentre i logical timestamps sono interi con la relazione < di ordinamento totale quindi le informazioni riguardo alla non causalità vengono perse Soluzione Dobbiamo scegliere i logical timestamps da un dominio che non sia totalmente ordinato Corso di Algoritmi Avanzati – anno accademico 2010/2011

9 Clock logico vettoriale
Ad ogni evento e viene assegnato un vettore V(e) di dimensione pari al numero dei processi con la seguente proprietà: e → e’ se e solo se V(e) < V(e’) Definiamo un ordinamento parziale per i vector timestamp. Siano v (e) e v (e’) due vettori di n interi associati rispettivamente all’evento e ed e’ v (e) ≤ v(e’) sse per ogni i, 0 ≤ i ≤ n-1, v(e) [i] ≤ v(e’) [i] v (e) <v (e’) sse v (e) ≤ v (e’) e v (e) ≠ v (e’) I vettori v (e) e v (e’) sono incomparabili se nè v (e) ≤ v (e’) nè v (e’) ≤ v (e). Corso di Algoritmi Avanzati – anno accademico 2010/2011

10 Clock logico vettoriale
Il clock logico vettoriale per un sistema di N processi è dato da un vettore di N interi Ciascun processo pi mantiene il proprio clock vettoriale Vi Per il processo pi, Vi[i] è il clock logico locale Ciascun processo usa il suo clock vettoriale per assegnare il timestamp agli eventi Analogamente al clock scalare, il clock vettoriale viene allegato al messaggio m ed il timestamp diviene vettoriale Con il clock vettoriale si catturano completamente le caratteristiche della relazione happened-before. e → e’ se e solo se V(e) < V(e’) e1 || e2 sse V (e1 ) e V(e2) sono incomparabili. Corso di Algoritmi Avanzati – anno accademico 2010/2011

11 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Algoritmo per mantenere correttamente i clock logici vettoriali Ogni processo pi inizializza il proprio clock vettoriale Vi Vi [j] = ∀ j= 1,2..N Prima di eseguire un evento, pi incrementa la sua componente del clock vettoriale Vi[i] = Vi[i] + 1 Quando Pi invia il messaggio m a pj Genera l’evento send(m) Allega al messaggio m, il timestamp t = Vi Quando Pj riceve il messaggio m con timestamp t Aggiorna il proprio clock logico Vj [j] = max ( t[j], Vj [j] ) ∀ j = 1,2..N Genera l’evento di receive(m) Dopo che si è eseguito un evento, Pi assegna all’evento il timestamp vettoriale con valori pari a Vi Corso di Algoritmi Avanzati – anno accademico 2010/2011

12 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Timestamp vettoriali in un esempio di esecuzione e1 e2 e3 e4 e5 p0 <1,0,0> <2,0,0> <3,0,0> <4,4,5> <5,4,5> e6 e7 e8 e9 p1 <1,1,0> <1,2,3> <1,3,3> <2,4,5> e10 e11 e12 e13 e14 e15 e16 p2 <0,0,1> <0,0,2> <0,0,3> <2,0,4> <2,0,5> <2,3,6> <2,3,7> Corso di Algoritmi Avanzati – anno accademico 2010/2011

13 Precedenza causale tra eventi di broadcast
Un evento di broadcast è dato dall’invio di un messaggio m da parte „ di un processo pi a tutti i processi del sistema. un evento e=broadcast(m) precede causalmente un evento e’=broadcast(m’) „ se una delle seguenti condizioni è verificata: e ed e’ sono eventi generati dallo stesso processo e broadcast(m) avviene prima di broadcast(m’) e ed e’ sono generati da processi diversi e l’evento e’ è generato dopo aver consegnato m 3. ∃ m’’ tale che broadcast(m) → broadcast(m’’) ∧ broadcast(m’’) → broadcast(m’) Garantisce che l’ordine in cui i processi consegnano i messaggi al livello applicativo non possa violare l’ordine indotto dalla relazione happened-before dei corrispondenti eventi di broadcast Corso di Algoritmi Avanzati – anno accademico 2010/2011

14 Causal Broadcast: Specifica
Se due messaggi di broadcast m e m’ sono tali che broadcast(m) → broadcast(m’), allora ogni processo deve consegnare m prima di m’ Se i broadcast di m e m’ sono concorrenti, allora i processi sono liberi di consegnare m ed m’ in qualsiasi ordine. Corso di Algoritmi Avanzati – anno accademico 2010/2011

15 Causal Broadcast: Illustrazione
m1 p1 m3 p2 p3 m4 m2 m1 → m3 quindi tutti i processi devono consegnare m1 prima di m3 m1 || m2 quindi m1 e m2 possono essere consegnati diversamente da tutti i processi m2 → m4 quindi tutti i processi devono consegnare m2 prima di consegnare m4 Corso di Algoritmi Avanzati – anno accademico 2010/2011

16 Causal Broadcast: Algoritmo
Assumiamo che il modello sia asincrono e senza guasti Ogni processo pi mantiene un vector clock VCi che tiene traccia della conoscenza corrente del numero di messaggi inviati da ciascun processo. In particolare VCi [j] rappresenta la conoscenza del numero di messaggi che Pj ha inviato in broadcast e consegnati da Pi Ogni messaggio di broadcast m ha allegato un timestamp vettoriale m.VC che rivela quanti messaggi ogni processo ha inviato in broadcast nel passato causale del broadcast di m Un processo Pi deve ritardare la consegna di un messaggio m fino a che tutti i messaggi inviati in broadcast nel “passato causale” di m sono consegnati da Pi Corso di Algoritmi Avanzati – anno accademico 2010/2011

17 Causal Broadcast: Pseudo Codice
Ogni processo pi implementa le seguenti regole per gestire il causal broadcast Procedure broadcast (m) m.VC=Vi //timestamp da allegare a m For all j ∈ {1 … N} Send(m) to pj // invio del messaggio di broadcast VCi[i] = VCi[i] //aggiornamento del clock locale Upon receive m from pj Delay the delivery until ∀ k ∈ {1 … N} m.VC[ k ] ≤ VCi [k] If i≠j then then VCi [j] = VCi [j] //aggiornamento del clock locale deliver m to the upper layer //evento di deliver Corso di Algoritmi Avanzati – anno accademico 2010/2011

18 Causal Broadcast: Esempio
Quando m’ arriva a P2, la sua consegna deve essere ritardata pochè m’ è arrivato a P2 prima di m, e l’invio di broadcast di m precede causalmente m’ Corso di Algoritmi Avanzati – anno accademico 2010/2011

19 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Gli orologi fisici Premesse In un sistema distribuito i processi girano su macchine diverse connesse in rete Cooperano per portare a termine una computazione Comunicano attraverso lo scambio di messaggi Molti algoritmi richiedono sincronizzazione per essere portati a termine I nodi possono avere necessità di effettuare azioni sincronizzate rispetto allo stesso tempo assoluto E’ impossibile avere un unico clock fisico comune a tutti i processi Corso di Algoritmi Avanzati – anno accademico 2010/2011

20 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Timestamping Ogni processo etichetta con un timestamp un evento. Soluzione banale: Ogni processo etichetta gli eventi con il proprio clock fisico. Considerazioni Si può ricostruire l’ordinamento degli eventi di uno stesso processo Non si può ricostruire l’ordinamento degli eventi tra processi diversi Corso di Algoritmi Avanzati – anno accademico 2010/2011

21 Corso di Algoritmi Avanzati – anno accademico 2010/2011
asincrono vs sincrono In un sistema distribuito asincrono non ci sono vincoli sulla velocità di esecuzione dei processi Non ci sono vincoli sul ritardo di trasmissione dei messaggi Non ci sono vincoli sul tasso di scostamento dei clock In un sistema distribuito sincrono esistono dei vincoli sulla velocità di esecuzione di ciascun processo Ciascun messaggio trasmesso su un canale di comunicazione è ricevuto in un tempo limitato Ciascun processo ha un clock locale con un tasso di scostamento del clock (clock drift rate) dal clock reale conosciuto e limitato Corso di Algoritmi Avanzati – anno accademico 2010/2011

22 Tempo fisico in un sistema distribuito asincrono
Non è osservabile I processi hanno clock diversi ed è impossibile sincronizzarli L’impossibilità di una sincronizzazione deriva dall’impredicibilità dei ritardi della comunicazione Il tempo di due eventi che accadono in processi diversi non può generalmente essere utilizzato per decidere quando un evento precede l’altro Corso di Algoritmi Avanzati – anno accademico 2010/2011

23 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Prima soluzione Tentare di sincronizzare con una certa approssimazione i clock fisici locali ad ogni processo attraverso opportuni algoritmi. In questo caso il processo può etichettare gli eventi con il valore del suo clock fisico che risulta sincronizzato con gli altri con una certa approssimazione. Sfrutta il fatto che il sistema distribuito è sincrono! Corso di Algoritmi Avanzati – anno accademico 2010/2011

24 Clock hardware e software
All’istante di tempo reale t, il sistema operativo legge il tempo dal clock hardware Hi (t) del computer Quindi produce il clock software: Ci(t) = aHi (t) + b che approssimativamente misura l’istante di tempo fisico t per il processo Pi. Se Ci si comporta abbastanza bene allora può essere usato come timestamp per gli eventi che occorrono in pi. Il periodo che intercorre tra due aggiornamenti del valore del clock per poter distinguere due differenti eventi deve essere: Trisoluzione < Δ T tra due eventi rilevanti Corso di Algoritmi Avanzati – anno accademico 2010/2011

25 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Un pò di terminologia Diversi clock locali possono avere valori diversi Skew: differenza istantanea fra il valore di due qualsiasi clock Drift: i clock contano il tempo con frequenze differenti, quindi divergono nel tempo rispetto al tempo reale. Drift rate: differenza per unità di tempo di un clock rispetto ad un orologio ideale A causa del drift rate bisogna eseguire una sincronizzazione periodica per riallineare i clock Corso di Algoritmi Avanzati – anno accademico 2010/2011

26 Corso di Algoritmi Avanzati – anno accademico 2010/2011
UTC Coordinated Universal Time è uno standard internazionale per mantenere il tempo Basato sul tempo atomico L’output dell’orologio atomico è inviato in broadcast da stazioni radio e da satelliti Computer con ricevitori possono sincronizzare i loro clock con questi segnali Corso di Algoritmi Avanzati – anno accademico 2010/2011

27 Sincronizzazione dei clock fisici
Sincronizzazione esterna I clock Ci ( per i= 1,2,..N ) sono sincronizzati con una sorgente di tempo S (UTC), in modo che, dato un intervallo I di tempo reale: |S(t) – Ci (t)| < D per 1≤i ≤N e per tutti gli istanti in I Sincronizzazione interna Due clock Ci e Cj sono sincronizzati l’uno con l’altro in modo che: |Ci (t) – Cj (t)| < D per 1 ≤ i,j ≤N nell’intervallo I Corso di Algoritmi Avanzati – anno accademico 2010/2011

28 Correttezza dei clock fisici
Un clock hardware è corretto se il suo drift rate si mantiene all’interno di un bound ρ > 0 limitato Se il clock H è corretto, allora l’errore che si commette nel misurare un intervallo di istanti reali [t,t’] (con t’>t) è limitato: (1- ρ) (t’-t) ≤ H (t’) – H (t) ≤ (1+ ρ) (t’ – t) Corso di Algoritmi Avanzati – anno accademico 2010/2011

29 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Quando sincronizzare? Consideriamo due clock che abbiano lo stesso tasso di scostamento pari a ρ Supponiamo che dopo la sincronizzazione i due clock si scostino dall’UTC in senso opposto Per garantire che i due clock non differiscano mai più di δ, occorre sincronizzarli almeno ogni δ/2ρ secondi Corso di Algoritmi Avanzati – anno accademico 2010/2011

30 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Algoritmo di sincronizzazione interna in un SD sincrono tra due processi Un processo P1 manda il suo clock locale t ad un processo P2 tramite un messaggio m P2 riceve m e imposta il suo clock a t+Ttrasm dove Ttrasm è il tempo di trasmissione del messaggio m Ttrasm non è noto ma, essendo il SD sincrono, Tmin ≤ Ttrasm ≤ Tmax Sia u = (Tmax – Tmin) l’incertezza sul tempo di trasmissione, ovvero l’ampiezza dell’intervallo Se P2 imposta il suo clock a t+ (tmax +tmin)/2 è possibile mantenere lo skew tra i due clock al più pari a u/2 In generale, con N clock il bound ottimo sullo skew è pari a u * (1-1/N) Corso di Algoritmi Avanzati – anno accademico 2010/2011

31 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Network Time Protocol Sincronizzazione esterna accurata rispetto a UTC Sorgenti UTC Server primari Server secondari sincronizzati da server primari 3 Sottorete di sincronizzazione: server foglia eseguiti su macchine utente Corso di Algoritmi Avanzati – anno accademico 2010/2011

32 NTP : Riconfigurazione
Se un server primario perde la connessione alla sorgente UTC esso diventa un server secondario Se un server secondario perde la connessione al suo primario esso può usare un altro primario Corso di Algoritmi Avanzati – anno accademico 2010/2011

33 NTP : Tipologie di sincronizzazione
Multicast Un server all’interno di una LAN manda in multicast il suo tempo agli altri che settano il tempo ricevuto assumendo un certo ritardo. Non è molto accurato. Simmetrico Coppie di server scambiano messaggi contenenti informazioni sul timing. Usata quando è necessaria un’accuratezza molto alta Corso di Algoritmi Avanzati – anno accademico 2010/2011

34 NTP: Sincronizzazione
Tutti i modi di sincronizzazione usano UDP Ogni messaggio contiene timestamp di eventi recenti Tempi locali di Send e Receive del messaggio precedente m Tempo locale di Send del messaggio corrente m’ Il ricevente segna il tempo locale Ti in cui riceve il messaggio m’ Server B Ti-2 Ti-1 Time m m’ Time Ti-3 Ti Server A Corso di Algoritmi Avanzati – anno accademico 2010/2011

35 Corso di Algoritmi Avanzati – anno accademico 2010/2011
NTP: Accuratezza Per ogni coppia di messaggi m e m’ scambiati tra due server, NTP stima un offset relativo oi tra i due clock ed un ritardo dj ( tempo di trasmissione totale per m ed m’ Supponendo che il vero offset del clock di B rispetto ad A sia o e che i tempi di trasmissione di m e m’ siano rispettivamente t e t’ Ti-2 = Ti-3+t+o e Ti = Ti-1+t’ - o Il tempo totale di trasmissione dei messaggi è: di = t+t’ = Ti-2 – Ti-3 + Ti – Ti-1 Sottraendo le prime due equazioni si ottiene: o= oi + (t’-t)/2 con oi = (Ti-2 – Ti-3 +Ti-1 – Ti)/2 oi è una stima dell’offset di è una misura dell’acuratezza della stima I server NTP filtrano le coppie <oi,di>, stimano l’affidabilità dei dati dalla differenza con la stima e selezionano il peer che usano per sincronizzarsi scegliendo oi corrispondente al minimo di Accuratezza di 10 ms su Internet e 1 ms su LAN Corso di Algoritmi Avanzati – anno accademico 2010/2011

36 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Bibliografia Attiya H., Welch J. Distributed Computing, McGraw-Hill Capitolo 6 - Causality and Time G.Coulouris, J.Dollimore, T.Kindberg. Distributed Systems. Concepts and Design. Addison Wesley Corso di Algoritmi Avanzati – anno accademico 2010/2011

37 Corso di Algoritmi Avanzati – anno accademico 2010/2011
Fine Domande? Corso di Algoritmi Avanzati – anno accademico 2010/2011


Scaricare ppt "Algoritmi Avanzati a.a. 2010/2011"

Presentazioni simili


Annunci Google