Sistemi Distribuiti La Nozione di Tempo nei Sistemi Distribuiti dott. Ing. Silvia Bonomi bonomi@dis.uniroma1.it
Introduzione In un Sistema Distribuito 1. I processi girano su macchine diverse connesse in rete 2. I processi cooperano per portare al termine una computazione 3. La comunicazione avviene esclusivamente attraverso lo scambio di messaggi OSSERVAZIONE: Molti algoritmi richiedono sincronizzazione per essere portati al termine Molti algoritmi richiedono che gli eventi siano ordinati CONSEGUENZA: Il tempo è un fattore critico!!!
Modello della Computazione Componenti del sistema: n processi e canali di comunicazione Ogni processo genera una sequenza di eventi interni ed esterni (send/receive) e k i, k-simo evento generato da P i L evoluzione di una computazione può essere visualizzata con un diagramma spazio-tempo. La nozione di tempo è vitale nei sistemi distribuiti per dare ordine agli eventi che si susseguono; Es. Differenti computer devono ordinare transazioni di commercio elettronico in modo consistente. 3
Storia di una Computazione Denotiamo con i la relazione di ordinamento su un processo p i tra due eventi: e i e se e solo se e è accaduto prima di e in p i Storia locale E la sequenza di eventi generati da un singolo processo history(p 1 ) = h 1 = <e 11, e 12, e 1 3, e 1 4, e 1 5, e 16 > Storia locale parziale prefisso della storia locale h 1 m = e 1 1 e 1 m Storia globale: insieme delle storie locali H = i h i per 1 i n
Il Tempo nei Sistemi Distribuiti (1/2) Soluzione Si usa la tecnica del timestamping: ogni computer etichetta (con un timestamp) un evento. In questo modo è possibile realizzare una history globale del sistema Soluzione banale: Ogni processo etichetta gli eventi con il proprio clock fisico Funziona? L ordinamento degli eventi di uno stesso processo si può ricostruire!!! E l ordinamento di eventi tra processi diversi? In un sistema distribuito e impossibile avere un unico clock fisico condiviso da tutti i processi
Il Tempo nei Sistemi Distribuiti (2/2) 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). Il timestamping e quindi basato sulla nozione di tempo fisico (clock fisico). E sempre possibile mantenere l approssimazione dei clock limitata? In un modello asincrono NO!! In un modello asincrono il timestamping non si puo basare sul concetto di tempo fisico. A questo scopo verra introdotta la nozione di clock basata su un tempo logico (clock logici).
Il Clock Fisico All istante di tempo reale t, il sistema operativo legge il tempo dal clock hardware H i (t) del computer, quindi produce il software clock C i (t)= αh i (t) + β che approssimativamente misura l istante di tempo fisico t per il processo p i. Es. C i (t) e un numero a 64 bit che da i nanosecondi trascorsi all istante t da un istante di riferimento (es. boot della macchina). In generale il clock non e completamente accurato: può essere diverso da t. Se C i si comporta abbastanza bene allora può essere usato come timestamp per gli eventi che occorrono in p i. Quanto deve essere la risoluzione del clock (periodo che intercorre tra gli aggiornamenti del valore del clock) per poter distinguere due differenti eventi? T risoluzione < ΔT tra due eventi rilevanti
Clock Fisici in un Sistema Distribuito Diversi clock locali possono avere valori diversi: Skew: the difference in time between two clocks (Galli) (differenza istantanea fra il valore di due qualsiasi clock) Drift: i clock contano il tempo con differenti frequenze (fenomeno dovuto a variazioni fisiche dell orologio), quindi divergono Drift Rate: the gradual misalignment of once synchronized clocks caused by the slight inaccuracies of the time-keeping mechanisms (differenza per unita di tempo rispetto ad un orologio ideale), es. drift rate di 2microsec/sec significa che il clock incrementa il suo valore di 1sec+2microsec ogni secondo. Normali orologi al quarzo deviano di circa 1 sec in 11-12 giorni. (10-6 secs/sec). Orologi al quarzo ad alta precisione hanno un drift rate di circa 10-7 o 10-8 secs/sec
Coordinated Universal Time (UTC) UTC è uno standard internazionale per mantenere il tempo. Basato su International Atomic Time, quindi e basato sul tempo atomico ma e occasionalmente aggiustato utilizzando il tempo astronomico. I clock fisici che usano oscillatori atomici sono i piu accurati (drift rate 10-13 ) L output dell orologio atomico e inviato in broadcast da stazioni radio su terra e da satelliti (es. GPS), In Italia: Istituto Galileo Ferraris Computer con ricevitori possono sincronizzare i loro clock con questi segnali Segnali da stazioni radio su terra hanno un accuratezza di circa 0.1-10 millisecondi; segnali da GPS hanno un accuratezza di circa 1 microsec.
Sincronizzazione di Clock Fisici (1/2) Sincronizzazione esterna I clock C i (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) - C i (t) < D per i = 1, 2, N e per tutti gli istanti in I I clock C i hanno un accuratezza che si mantiene all interno del bound D. Sincronizzazione interna I clock di due computer sono sincronizzati l uno con l altro in modo che: C i (t) - C j (t) < D per i = 1, 2, N nell intervallo I In questo caso i due clock C i e C j si accordano all interno del bound D.
Sincronizzazione di Clock Fisici (2/2) Osservazioni I clock sincronizzati internamente non sono necessariamente esternamente sincronizzati. Tutti i clock possono deviare collettivamente da una sorgente esterna sebbene rimangano sincronizzati entro il bound D. Se l insieme dei processi P e sincronizzato esternamente entro un bound D allora segue dalle definizioni che e anche internamente sincronizzato entro un bound 2D
Nozione di clock corretto (1/2) Un clock hw H e corretto se il suo drift rate si mantiene all interno di un bound ρ > 0 limitato. (es. 10-6 secs/ sec), il drift rate di un clock corretto e almeno -ρ e al massimo +ρ Se il clock H e corretto allora l errore che si commette nel misurare un intervallo di istanti reali [t,t ] (con t >t) e limitato: (1 - ρ ) (t - t) H(t ) - H(t) (1 + ρ ) (t - t) (in questo modo si evitano salti del valore del clock) perfect clock fast clock slow clock
Nozione di Clock Corretto (2/2) Per il clock sw C spesso basta una condizione di monotonicita t' > t implica C(t ) > C(t) - Es. condizione facility Unix make: 200 files compilati alle 17,00 con C(17,00)=17,30, 3 modificati alle 17,15. - Se no monotonicita e C(17,15)=17,20 non ricompila nulla! Si puo garantire monotonicita con un clock hw che va veloce: scelgo opportunamente i valori a e b Clock guasto: se non rispetta le condizioni di correttezza crash failure un clock che smette di funzionare arbitrary failure qualsiasi altro guasto (es. Y2K bug che dopo il 31/1/1999 mette 1/1/1900 anziche 1/1/2000) Si noti che la correttezza non implica accuratezza...
Sincronizzazione interna in un sistema sincrono Caratteristiche di un sistema Sincrono Il tempo di esecuzione di ciascuno step è limitato (sia con lower bound che con upper bound) Ciascun messaggio trasmesso su un canale è ricevuto in un tempo limitato Ciascun processo ha un clock locale con in drift rate dal clock reale conosciuto e limitato Algoritmo 1. Un processo p 1 manda il suo tempo locale t ad un processo p2 tramite un messaggio m 2. p2 setta il suo clock a t+ttransito dove Ttransito è il tempo di trasmissione del messaggio m 3. Ttransito è sconosciuto ma min Ttransito max 4. Chiamiamo u=(max-min) l incertezza sul tempo di trasmissione 5. Se il ricevitore setta il suo tempo a t+(max+min)/2 allora è possibile mantenere lo skew al più a u/2 SISTEMA ASINCRONO: T trans = min + x con x >= 0
Sincronizzazione mediante Time Server Time Service Centralizzati Request-driven Esempio Cristian Algorithm Broadcast-based Esempio Berkeley Unix algorithm - Gusella & Zatti (1989) Distribuiti (Network Time Protocol)
Algoritmo di Cristian Un time server S riceve il segnale da una sorgente UTC (sincronizzazione esterna) Un processo p richiede il tempo con m r e riceve t in m t da S p setta il suo clock a t + T round /2 T round e il round trip time registrato da p mr p mt Time server,s Osservazioni: Un singolo time server potrebbe guastarsi, Cristian suggerisce l uso di un gruppo di server sincronizzati Non prevede server maliziosi
Accuratezza dell algoritmo di Cristian Caso 1 Il tempo impiegato dal messaggio di ritorno è maggiore rispetto alla stima fatta utilizzando RTT/2 ed in particolare è uguale a (RTT-min) Δ = stima del messaggio di ritorno - tempo reale = (RTT/2) - (RTT - min) = (-RTT+2min)/2 = -RTT/2 +min = -(RTT/2 - min) Caso 2 Il tempo impiegato dal messaggio di ritorno è minore rispetto alla stima fatta utilizzando RTT/2 ed in particolare è uguale a (RTT-min) Δ = stima del messaggio di ritorno - tempo reale = (RTT/2) - min = + (RTT/2 - min) Quind l accuratezza dell algoritmo di Cristian è ± (T round /2 - min) dove min e il minimo tempo di trasmissione p S m r min m r RTT m t RTT/2 m t min
Request-Driven Synchronization RTT=20
Algoritmo Berkeley Algoritmo Berkeley: algoritmo per la sincronizzazione interna di un gruppo di computer Il master richiede, attraverso broadcast, il valore dei clock delle altre macchine del sistema distribuito, quindi colleziona i valori dei clock degli altri (slaves) Il master usa i round trip time per stimare i valori dei clock degli slave Prende la media di questi Manda l aggiustamento opportuno agli slave (se l aggiustamento prevede un salto indietro nel tempo, lo slave non setta il nuovo valore ma rallenta) L accuratezza del protocollo dipende da un round-trip time nominale massimo: il master non considera valori di clock associati a RTT superiori al massimo Fault tolerance: se un master cade un altra macchina viene eletta master (in un tempo non limitato a priori) E tollerante a comportamenti arbitrari (slave che inviano valori errati di clock): Il master prende un certo numero valori di clock (da un sottoinsieme di slave). Questi valori non differiscono tra loro per una quantità specificata.
Berkeley Algorithm: esempio T S1 = 690 T new = 690 + 5 = 695 T new = 700-5 = 695 T M = 700 d 1 =690-700 = -10 d 2 =705-700 = 5 d 1 =695-700 = - 5 Avg= (0-10 - 5 + 5)/2= - 5 Adj S1 = -5 +10= 5 Adj S2 = -5-5 = -10 Adj S3 = -5 +5 = 0 Adj M = -5 + 0 = - 5 T S2 = 705 T S3 = 695 T new = 705-10 = 695 T new = 695 + 0 = 695
Berkeley Algorithm Osservazione: Che cosa significa rallentare un clock? Non si può pensare di imporre un valore di tempo passato ai processo slave che si trovano con un valore di clock superiore a quello calcolato come clock sincrono. Ciò provocherebbe un problema di ordinamento causa/effetto di eventi e verrebbe violata la condizione di monotonicità del tempo. Quindi la soluzione e quella di mascherare una serie di interrupt che fanno avanzare il clock locale in modo di rallentare l avanzata del clock stesso. Il numero di interrupt mascherati è pari al tempo di slowdown diviso il periodo di interrupt del processore.
Network Time Protocol (NTP) Time service per Internet - sincronizza client a UTC: Reliability da server e path ridondanti, e scalabile, autentica time sources Primary servers are connected to UTC sources Secondary servers are synchronized to primary servers Synchronization subnet - lowest level servers in users computers 1 2 2 3 3 3
NTP sincronizzazione di server La sottorete di sincronizzazione si riconfigura in caso di guasti es. Un primary che perde la connessione alla sorgente UTC puo diventare un server secondario Un secondario che perde la connessione al suo primary (crash del primary) può usare un altro primary Modi di sincronizzazione: Multicast: un server all interno di una LAN ad alta velocita manda in multicast il suo tempo agli altri che settano il tempo ricevuto assumendo un certo ritardo (non molto accurato) Procedure call: un server accetta richieste da altri computer (come algoritmo di Cristian). Alta accuratezza. Utile se non e disponibile un multicast hw. Simmetrico: coppie di server scambiano messaggi contenenti info sul timing. Usata quando e necessaria un accuratezza molto alta (per gli alti livelli della gerarchia)
Messaggi scambiati da coppie di peers Tutti i modi di sincronizzazione usano UDP Ogni msg porta timestamps di eventi recenti: Local times di Send e Receive del messaggio precedente Local times di Send del messaggio corrente Il ricevente segna il tempo in cui riceve il msg T i ( si ha T i-3, T i-2, T i-1, T i ) Nel modo simmetrico il ritardo tra l arrivo di un messaggio e l invio del successivo potrebbe essere non trascurabile Server B T i-2 T i-1 Time m m' Server A T i- 3 T i Time
Accuratezza di NTP Per ogni coppia di msg scambiati tra i due server, NTP stima un offset o i tra i 2 clock ed un ritardo d i (tempo di trasmissione totale per i 2 msg) Supponi che il vero offset del clock di B rispetto ad A sia o e i tempi di trasmissione dei msg m ed m siano rispettivamente t e t T i-2 = T i-3 + t + o e T i = T i-1 + t - o Quindi il tempo totale di trasmissione dei msg: d i = t + t = T i-2 - T i-3 + T i - T i-1 E (sottraendo le equazioni) o = o i + (t - t )/2 con o i = (T i-2 - T i-3 + T i - T i-1 )/2 Considerando che t, t >0 si può dimostrare che o i - d i /2 o o i + d i /2. Quindi o i è una stima dell offset e d i è una misura dell accuratezza della stima NTP servers filtrano le coppie <o i, d i >, stimano l affidabilita dei dati dalla differenza con la stima, cosi seleziona i peers che usa per sincronizzarsi Accuratezza di 10 millisecs su Internet paths (1 su LANs)
Il tempo in un sistema asincrono Tempo Fisico: proprietà globale osservabile? NO in un sistema distribuito asincrono: clock diversi e impossibilità di sincronizzarli? L impossibilità di una sincronizzazione precisa deriva dall impredicibilità dei ritardi della comunicazione Quindi, il tempo di due eventi che accadono in processi diversi non può generalmente essere utilizzato per decidere quando un evento precede l altro