Sérgio Duarte - ⓒ2011 - DI/FCT/UNL Mestrado em Engenharia Informática
Sistemas Distribuídos I
Capítulo 3
Tempo físico e Relógios lógicos
Mestrado em Engenharia Informática Sistemas Distribuídos
Tempo
Em Sistemas Distribuídos, o tempo é uma questão importante e levanta problemas interessantes...
‣ Precisa de ser medido com elevada precisão
‣ Precisa de ser medido de forma consistente pelas diversas componentes de um sistema
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Tempo
Um relógio global e absoluto não existe!
‣ Este facto incontornável assenta nos melhores conhecimentos de Física actual...
‣ A avaliação do tempo está dependente do referencial de observação
‣ o tempo pode fluir a velocidades distintas para observadores diferentes ‣ observadores distintos podem testemunhar eventos (não causais) por
uma ordem diferente
Mestrado em Engenharia Informática Sistemas Distribuídos
Tempo: Medição
O tempo é uma grandeza relativa e mede-se por contagem de eventos periódicos que ocorreram desde uma referência no passado.
A regularidade dos eventos e a fidelidade do processo de
detecção dos eventos definem as características de precisão do relógio.
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Tempo: Relógios Físicos
Não existem dois relógios físicos exactamente iguais!
‣ A condição física (e as condições ambientais) introduz(em) imprecisão...
‣ Dois relógios “perfeitamente” sincronizados num dado momento, mais tarde ou mais cedo irão mostrar medições distintas...
Para muitas aplicações distribuídas, os relógios físicos não são suficientemente precisos...
‣ impossibilidade ordenar correctamente eventos com base em estampilhas obtidas de relógios físicos distintos...
‣ a percepção da possível causalidade entre eventos pode desaparecer
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios de Software
C(t) = α H(t) + β
‣ manipulando α e β, pode-se “acertar” o relógio de software
pilha
contador cristal
relógio
Clock tick periódico
Valor de referência
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Relógios: Desvio e Deriva
Não havendo dois relógios exactamente iguais, significa que cada um mede o tempo à sua maneira...
‣ A diferença instantânea entre os valores de qualquer par de relógios é conhecido como desvio (skew)
‣ O desvio existe e tende a aumentar porque todos os relógios estão sujeitos a deriva, ou seja não medem o tempo de forma precisa e constante: tendem a atrasar-se ou adiantar-se um relativamente aos outros...
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios: Precisão
Existem limites físicos para a precisão de um relógio...
Tecnologia Deriva (sDeriva (s-1-1))
cristal de quartzo
10
-6 ~11,6 diasquartzo de
alta-precisão
10
-8 ~ 3,2 anosⓒ2009 - DI/FCT/UNL Sérgio Duarte
Relógios: Sincronização
Devido à deriva, o desvio entre os relógios tende a aumentar; Periodicamente, é necessário proceder a um acerto ou
sincronização
A sincronização é feita com base num valor de referência que se pretende que seja o mais preciso possível...
‣ idealmente usa-se o tempo fornecido por um relógio atómico
Mestrado em Engenharia Informática Sistemas Distribuídos
Tempo: Normas Internacionais
O Tempo Atómico Internacional (TAI) é o valor de referência internacional para medir o passar do tempo.
‣ Criado em 1967
‣ Baseado na média de vários relógios atómicos distribuídos por várias instituições mundiais
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Tempo: Normas Internacionais
O Tempo Universal Coordenado
*é o valor de
referência internacional para a hora oficial.
‣ É derivado a partir de Tempo Atómico Internacional
e é sincronizado com o “tempo sideral” pela adição
de “segundos de salto” para fazer face ao
abrandamento do período de rotação da Terra.
‣ É distribuído de variadas formas, com precisão
diversa: GPS, Rádio, Internet(NTP), etc.
* Coordinated Universal Time - UTCMestrado em Engenharia Informática Sistemas Distribuídos
Relógios Físicos: Sincronização
A necessidade (frequente) de etiquetar os eventos ocorridos num sistema distribuído com uma hora e data conduz à
necessidade de sincronizar os relógios físicos envolvidos...
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Relógios Físicos: Sincronização
O objectivo da sincronização é garantir que o desvio máximo entre quaisquer par de relógios físicos do sistemas não excede um determinado valor.
A sincronização pode ser:
‣ Interna (envolvendo apenas os relógios físicos do sistema em questão)
‣ Sincronização de frequências...
‣ Externa ou temporal (envolvendo também um ou mais relógios externos)
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios Físicos: Sincronização Interna
A sincronização interna apenas pretende limitar o desvio máximo existente entre os relógios físicos pertencentes às componentes de um (mesmo) sistema.
A sincronização interna não evita desvios ou deriva face a outros relógios (e à hora UTC).
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Relógios Físicos: Sincronização Externa
A sincronização externa tem como objectivo garantir que o desvio de todos os relógios físicos de um sistema em relação a um relógio UTC externo de referência está dentro de um dado limitedado um limite de precisão D, tal que D > 0, e um relógio externo S, então:
| S(tutc) - Ci(t) | < D, para i = 1, 2, 3, ..., N
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios Físicos: Sincronização
Por definição, quando os relógios de um sistema distribuído estão sincronizados externamente, então também estão sincronizados internamente
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Relógios: Correcção
Existem várias noções de correcção para relógios físicos... ‣ Deriva limitada - impor determinada precisão ao relógio hardware Hi(t)
‣ impedir saltos excessivos durante a operação normal
‣ Monotonia - o tempo só avança...
‣ Ci(t) é uma função monótona crescente (entre pontos de sincronização):
C
i(t) = α H
i(t) + β
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógio: Falhas
Um relógio físico que não cumpra as condições de correcção desejadas considerada-se “avariado”
‣ A avaria pode ser permanente (fail stop)
‣ Nos demais casos, as avarias dizem-se falhas arbitrárias ou bizantinas
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Sincronização: Algoritmos
A sincronização de relógios físicos num sistema
distribuído pode ser conseguida através da troca de
mensagens...
‣ Porém, as mensagens podem sofrer atrasos que dão origem a incerteza...
‣ Tal impõe limites à precisão que é possível conseguir...
Mestrado em Engenharia Informática Sistemas Distribuídos
Sistemas Síncronos
Como obter Ttrans
?
‣ Não é possível saber...‣ Num sistema síncrono, os limites para
Ttrans
são conhecidos ou passíveis de avaliação...min ≤ Ttrans ≤ max → incerteza u = (max - min)
Cj(t) ← ti + (max + min) / 2
garante-se que o desvio é no máximo u / 2
pi pj
Ci(t) = ti Cj(t) ← ti + Ttrans ????
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Sistemas Síncronos
Generalizando, prova-se que a sincronização de N relógios num sistema distribuído tem como limite óptimo para o desvio que é possível conseguir de:
u (1 - 1 / N), N = 1, 2, 3, ...
‣ Conclusão: O erro (precisão) é dominado pelo desempenho dos canais de comunicação utilizados.
Mestrado em Engenharia Informática Sistemas Distribuídos
Sistemas Assíncronos
Na prática, a maioria dos sistemas são assíncronos, não sendo conhecidos os limites superiores de grandezas como o tempo máximo de transmissão de mensagens...
Ttrans = min + x , x > 0
‣ A sincronização de relógios físicos em condições assíncronas apenas pode convergir com garantias probabilísticas;
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Sincronização: Algoritmo de Cristian
Assume que Tround é pequeno face ao erro desejado e que a rede é
simétrica:
ts + min ≤ Ci(t) ≤ ts + Tround - min
desvio = (Tround - 2 min)
precisão + ( Tround / 2 - min)
É possível melhorar a precisão, repetindo o processo e escolhendo o menor Tround
‣ Em situações de congestão, tal pode agravar o problema...
Time Server pi S(tUTC) = ts Ci(t) ← ts + Tround/ 2 m(ts) T round t
Mestrado em Engenharia Informática Sistemas Distribuídos
Sincronização Interna: Algoritmo de Berkeley
Intenção: Sincronizar os relógios de vários computadores sem acesso a
uma fonte UTC externa, tipicamente ligados numa rede local ou intranet. ‣ Um computador actua como master. Se falhar, outro toma o seu lugar. ‣ Periodicamente, o master recebe o valor dos relógios dos outros
computadores
‣ O master cálcula a média e difunde o ajuste que cada computador tem de fazer ao seu relógio:
‣ ti = m(ti) + Tround / 2
‣ Ajuste: dti = ti - média( t1, t2, t3, ...) ;
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
Sincronização Interna: Algoritmo de Berkeley
Pontos Fortes do Algoritmo:
‣ O ajuste dos relógios com base na média de um número elevado de máquinas tende a reduzir a deriva;
‣ Ignorar valores muito distantes da média permite tolerar relógios avariados
‣ A actualização dos relógios pelo envio do ajuste a efectuar evita a incerteza introduzida pela propagação de mais uma mensagem.
Nota: Os relógios evoluem em conjunto, mas o tempo medido não tem qualquer relação com o exterior
Mestrado em Engenharia Informática Sistemas Distribuídos
NTP: Network Time Protocol
Protocolo previsto para redes WAN
‣ normalizado pela IETF, no RFC 1305 de 1992 (versão 3)
Permite a um conjunto de computadores na Internet (uma WAN) obterem o tempo UTC ‣ recorre a fontes primárias de tempo UTC (GPS, rádio, telefone, etc.)
Permite a sincronização mesmo na presença de grandes variações do RTT
‣ emprega técnicas estatísticas para filtrar respostas inadequadas de servidores pois memoriza a história dos mesmos
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
NTP: Network Time Protocol
Existem servidores com receptores externos UTC
Os outros servidores organizam-se hierarquicamente em níveis (strata) e sincronizam-se com os níveis superiores
‣ topologia dinâmica, UDP
Tipos de Sincronização:
‣ Multicast: o servidor difunde o tempo em UDP multicast
‣ Chamada RPC: semelhante ao alg. Cristian
‣ Simétrico: entre servidores dos níveis superiores
3 3 3 3
1
2 2
fonte externa UTC
Mestrado em Engenharia Informática Sistemas Distribuídos
NTP : Protocolo Sincronização Simétrica
Cada mensagem leva os três últimos valores conhecidos. ‣ m’ contém os últimos valores de T1, T2 e T3.
Tempo para responder pode ser longo
Mesmo que uma mensagem se perca, os valores estão coerentes.
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
NTP: Cálculo do Offset (desvio)
Objectivo: Estimar a diferença dos relógios (EO)
Seja tm1,tm2 o tempo de trânsito real das mensagens m1,m2 e O o offset real (desvio) T2 = T1 + O + tm1 ≣ tm1= T2 - T1 - O [tm1= 24 - 2 - O = 22 - O]
T4 = T3 - O + tm2 ≣ tm2= T4 - T3 + O [tm2= 10 - 27 + O = -17+O] Tempo de trânsito estimado de m1+m2:
di= tm1+tm2= T2-T1 - O + T4 - T3 + O = T2 - T1 + T4 -T3 [ di= 24 - 2 + 10 - 27 = 5] 24 25 26 21 22 23 27 28 29 30 Server A time 4 5 6 1 2 3 7 8 9 10 Server B time T1=2 T2=24 T3=27 T4=10 m1 m2
Mestrado em Engenharia Informática Sistemas Distribuídos
NTP: Cálculo do Offset (desvio)
ⓒ2009 - DI/FCT/UNL Sérgio Duarte
NTP: Procura de Precisão
Os servidores mantêm a história das interacções que tiveram com os outros servidores
‣ Sincronizam-se com vários outros servidores ‣ Filtram resultados, excluindo valores extremos
‣ Avaliam a qualidade da informação fornecida por um servidor com base na sua “distância” à raiz
‣ Mudam de configuração à procura de melhores pares
Na Internet, a precisão conseguida é da ordem de 10 ms.
Mestrado em Engenharia Informática Sistemas Distribuídos
O que estudar...
G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, Addison-Wesley, 4th Edition, 2005
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Lógicos
Relógios de Lamport Relógios Vectoriais
Mestrado em Engenharia Informática Sistemas Distribuídos
Case study
Como se implementar um Chat Room? ‣ Requisitos:
‣ N participantes
‣ As mensagens não se perdem... ‣ Ordenação????
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Eventos
Entendem-se como eventos as acções individuais conduzidas por um processo à medida que executa...
‣ acções de comunicação ‣ transformações de estado
A sequência de eventos ocorridos num processo denota a sua história...
Mestrado em Engenharia Informática Sistemas Distribuídos
Eventos
Registar a história de um processo consiste, então, em enumerar (ordenadamente) os eventos que nele ocorrem...
‣ preservando a relação (temporal/causal) entre os eventos...
Num processo isolado pi, com um único processador, existe sempre uma ordenação total única (→i) entre eventos:
‣ e →ie’, se e só se e ocorre antes de e’, em pi
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Tempo: Eventos e Relógios
Pode-se usar o valor do relógio para registar quando um evento ocorreu.
‣ Ao valor do relógio que fica associado ao evento chama-se estampilha temporal
‣ A relação →i pode então ser ser capturada e reproduzível de uma forma concreta através destas estampilhas
Será possível estender a ideia para um sistema distribuído? ‣ Sim, parcialmente, mas necessitamos de sincronizar os relógios...
Mestrado em Engenharia Informática Sistemas Distribuídos
Estampilhas: Relógios Sincronizados
É possível constatar que m0
deve ser anterior a m1 e m3
porque a estampilha temporal da sua emissão é inferior
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Estampilhas : Relógios Não Sincronizados
Qual o evento que ocorreu antes? ‣ O envio de m1 ou m3?
O envio de m0 ou m3? O envio de m0 ou m1?
t=5
t=3
Relógios não sincronizados
t=4 m1 m2 m3 t=3 m0
Mestrado em Engenharia Informática Sistemas Distribuídos
Estampilhas : Limitações
As estampilhas temporais ordenam eventos correctamente desde que o tempo de propagação das mensagens seja duas vezes superior ao desvio dos relógios físicos em causa.
Alternativamente, os eventos a ter que ser espaçados no tempo em pelo menos duas vezes o desvio máximo dos relógios...
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Físicos : Alternativas...
Não sendo possível sincronizar os relógios físicos de um sistema distribuído perfeitamente como fazer para ordenar eventos de forma coerente em todo o sistema?
‣ dar menos importância à qualidade física do tempo
‣ centrar o problema na questão da causalidade dos eventos
Mestrado em Engenharia Informática Sistemas Distribuídos
Relação “Happened Before” (Lamport 1978)
A relação aconteceu antes * (→) é uma ordem parcial que pretende respeitar a causalidade física entre os eventos de um sistema distribuído.
Definição:
HB1: se ∃ pi : ea →i eb então ea → eb
HB2: esend(m) → ereceive(m), para qualquer mensagem m HB3: se ea → eb e eb → ec, então ea → ec (transitividade)
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relação “Happened Before” : Exemplo
a → c → f d → e b → g c → d e → g a → c → d → e → g b a c d e g f a || b c || b d || b ...
Mestrado em Engenharia Informática Sistemas Distribuídos
Relação “Happened Before” : Considerações
A relação aconteceu antes apenas regista relações de causalidade que derivam exclusivamente das mensagens enviadas no próprio sistema.
A relação aconteceu antes estabelece potenciais relações de causalidade entre eventos.
‣ Se ea → eb, então ea poderá ter causado eb, ou não.
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Lógicos (Lamport 1978)
Um relógio lógico (de Lamport) é um contador monótono crescente usado para atribuir uma estampilha temporal a um evento.
Cada processo pi, mantém um relógio lógico Li actualizado da seguinte forma:
‣ LC1 :
‣ Se e é um evento executado em pi, faz-se:
Li := Li + 1 [ alternativamente, Li := Li + x , x > 0 ]
C(e) := Li, com C(e) a estampilha temporal atribuída ao evento e
‣ LC2 :
‣ Se e = esend(m), usa-se a regra anterior e envia-se (m,t), com t =C(send(m))
‣ Se e = ereceive(m,t), faz-se Li=max(Li, t) e, de seguida, aplica-se a regra LC1
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios Lógicos : Exemplo
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Lógicos : Ordenação Total
Por vezes, é interessante ordenar totalmente os eventos que ocorrem num sistema distribuído
Tal é possível juntando às estampilhas de Lamport um qualquer identificador extra que torne os seus valores globalmente únicos
‣ O identificador do processo (guid), por exemplo.
‣ Dado um evento e, executado no processo pi ( i = 1, 2, 3, ..n) com estampilha temporal Le, a estampilha temporal global é:
(Le, i).
‣ A ordem global das estampilhas temporais é definida por: (La, i) < (Le2, j), sse La < Lb ∨ La = Lb e i < j
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios Lógicos
Dados dois eventos, ea e eb, tem-se ea → eb C(ea) < C(eb)
‣ Pode-se demonstrar por indução no comprimento da sequência de eventos que estabelecem ea → eb
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Lógicos: Limitações
Os relógios lógicos não permitem decidir se dois eventos são concorrentes...
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios Lógicos: Limitações
Os relógios lógicos não permitem decidir se dois eventos são concorrentes...
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Vectoriais
Um relógio vectorial num sistema com n processos é um vector de n inteiros, V[1..n].
‣ Cada processo pi mantém um relógio vectorial Vi, inicializado a zeros, que usa para atribuir uma estampilha temporal aos eventos locais e actualiza da seguinte forma:
‣ VC1 : Inicialmente, Vi[j] = 0, i, j = 1, 2, 3,..., n
‣ VC2 : Antes de etiquetar um evento e em pi, faz-se: Vi[i] := Vi[i]+1 ; C(e)=Vi
‣ VC3 : Se e = esend(m), aplica-se a regra anterior e envia-se (m, t[] ), com t[] = C(send(m))
‣ VC4 : Se e = ereceive(m,t) em pi, faz-se Vi[j] = max( Vi[j], t[j]) , j = 1, 2, ... n e, depois, aplica-se a regra
base b a c d e g f [1,0,0] [2,0,0] [3,0,0] [0,0,1] b a c d e g f [1,0,0] [2,0,0] [3,0,0] [0,0,1] [2,1,0] [2,2,0] [2,2,2]
Mestrado em Engenharia Informática Sistemas Distribuídos
Relógios Vectoriais : Ordenação
Dados dois relógios vectoriais Va e Vb, tem-se:
Va = Vb, sse Va[i] = Vb[i], ∀i Va ≤ Vb, sse Va[i] ≤ Vb[i], ∀i
Va < Vb, sse Va ≤ Vb ⋀ Va ≠ Vb Va[i] ≤ Vb[i], ∀i ∧∃j, Va[j] < Vb[j]
Dados dois eventos, ea e eb, tem-se ea → eb C(ea) < C(eb)
‣ Intuitivamente, como um relógio vectorial resume os eventos vistos, se ea→eb então necessariamente o resumo dos eventos vistos aquando de eb tem de incluir todos os eventos vistos aquando de ea (incluindo ea).
Dados dois eventos, ea e eb, tem-se C(ea) < C(eb) ea → eb
(c) 2011 - DI / FCT / UNL Sérgio Duarte
Relógios Vectoriais: Concorrência
A comparação de relógios vectoriais permite inferir se dois eventos ea e eb são concorrentes (ea || eb).
A condição de concorrência é dada por:
ea || eb ¬ C(ea) ≤ C(eb) ∧ ¬ C(eb) ≤ C(ea)
‣ Intuitivamente, se ea e eb são concorrentes, então nem o resumo de ea pode incluir eb nem o resumo de eb pode incluir ea. Se cada resumo não inclui o outro evento é porque
nenhum evento aconteceu no passado do outro.
b a c d e g f [1,0,0] [2,0,0] [3,0,0] [0,0,1] [2,1,0] [2,2,0] [2,2,2] b || c
Mestrado em Engenharia Informática Sistemas Distribuídos
O que estudar...
G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, Addison-Wesley, 4th Edition, 2005