Sistemas Distribuídos: Conceitos e Projeto Relógios Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 11 de junho de 2013 Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 1 / 39
Agenda 1 Sincronização de Relógios Físicos 2 Relógios Lógicos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 2 / 39
Sincronização de Relógios Físicos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 3 / 39
Serviços de Tempo Em sistemas centralizados, a representação do tempo é incrementada de forma uniforme e monotônica; Ou seja, não existe ambiguidade com relação a eventos relacionados ao tempo; Em ambientes distribuídos, cada máquina possui sua própria percepção do tempo; Sem um consenso global é difícil coordenar atividades como coleta de lixo ou validação do tempo de expiração de uma mensagem recebida. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 4 / 39
Relógios Físicos Algumas aplicações, como aplicações de tempo real, requerem que os relógios de máquinas distribuídas permaneçam sincronizados; Problemas: Como sincronizar os relógios com a hora correta do mundo real? Como sincronizar os relógios entre si? Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 5 / 39
Precisão do Relógio Cada máquina possui um temporizador que gera H interrupções por segundo (tics). Estes tics são utilizados para manter um relógio de software. Chamemos este relógio de C; Quanto o tempo for t, idealmente teríamos Cp(t) = t para todo p, onde Cp(t) é o tempo na máquina p; Infelizmente cada fabricante define uma constante definida como razão de erro tal que: 1 ρ dc/dt 1+ρ Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 6 / 39
Medindo o Tempo Desde a invenção dos relógios mecânicos no século XVII, o tempo é medido astronomicamente; Transição do sol: evento do sol atingir o ponto mais alto; Dia solar: intervalo entre duas transições do sol; Segundo solar: 1/86.400 de um dia solar. Em 1940 foi estabelecido que o período de rotação da Terra não é constante e vem diminuindo progressivamente; Acredita-se que a 300 milhões de anos atrás um ano tinha aproximadamente 400 dias; Passou-se a medir o comprimento de um dia utilizando-se muitos dias, obtendo-se a média dos mesmos antes de dividir por 86.400. O resultado é o segundo solar médio. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 7 / 39
Medindo o Tempo Com a invenção do relógio atômico em 1948 passou-se a medir o tempo de forma mais precisa e independente da Terra; 1 segundo é o tempo que o átomo de cesium 133 leva para realizar 9.192.631.770 transações; Periodicamente 50 laboratórios enviam ao BIH (Bureau International de l Heure) em Paris quantos ticks seus relógios atômicos realizaram; A média chama-se TAI (International Atomic Time): quantidade de ticks do cesium 133 desde 1 de Jan de 1958 dividido por 9.192.631.770. Como o dia solar está ficando mais longo, hoje 86.400 segundos TAI são 3 msec menor que um dia solar médio; Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 8 / 39
Medindo o Tempo Isso no futuro poderia causar o descompasso do tempo médio com o observado na natureza. Este problema já ocorreu no passado: Em 1582 o papa Gregório XIII decretou que 10 dias do calendário deveriam ser omitidos; Levou 170 anos para que países protestantes adotassem o calendário Gregoriano. Solução: o BIH introduz segundos sempre que a diferença entre o TAI e o tempo solar excede 800 msec; Este tempo é chamado UTC: Universal Coordinated Time. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 9 / 39
Fontes UTC NIST (National Institute of Standards and Technology) disponibiliza diversos métodos de acesso com precisão próxima a 1 milisegundo: Através de linhas telefônicas utilizando-se modem; Através de uma estação de rádio de ondas curtas: conhecidos a velocidade de propagação do sinal e a distância do cliente a estação, o tempo de propagação pode ser calculado e o atraso compensado. Utilização do serviço disponibilizado pelo GPS (Global Positioning System); Satélites GPS utilizam órbitas baixas não geoestacionárias (sua distância com relação a Terra varia) o que dificulta o cálculo do atraso de comunicação; Satélites geoestacionários podem ser utilizados mas o tempo de propagação do sinal é alto (aproximadamente 125 milisegundos); TVs a cabo também transmitem informações de tempo. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 10 / 39
Arquitetura de um Serviço de Tempo Distribuído Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 11 / 39
O Problema da Sincronização de Relógios Físicos Em um ambiente distribuído, cada nó possui seu próprio relógio e existe um tempo não negligenciável de comunicação; É teoricamente impossível obtermos um tempo global físico; Devemos, então, buscar uma aproximação do mesmo. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 12 / 39
Algoritmo Centralizado (Cristian 1989) Define-se um nó com receptor UTC denominado servidor de tempo (TS); Periodicamente cada nó envia uma msg a TS solicitando o tempo atual; TS responde com seu tempo corrente. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 13 / 39
Algoritmo Centralizado: 1 o Problema O tempo informado pode ser maior ou menor que o tempo local; Não se pode atualizar o relógio local abruptamente; Se o tempo informado for menor, uma mudança abrupta poderia contradizer eventos anteriores; Se for maior, poderia confundir processos esperando por um time-out. Este problema é menos sério que o anterior. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 14 / 39
Algoritmo Centralizado: 2 o Problema O tráfego da requisição e da resposta leva um determinado tempo; Seja T 0 o tempo de envio da requisição e T 1 o tempo de recebimento da resposta; O tempo de propagação da mensagem poderia ser estimado como: (T 1 T 0 )/2; Cristian sugere realizar uma série de medições e descartar aquelas que excedam um dado valor por terem sido vítimas de congestionamentos na rede. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 15 / 39
Algoritmo de Berkley Um time daemon periodicamente consulta todos os nós perguntado por sua hora local; Após coletar as respostas, ele computa a média destes tempos e envia uma mensagem a todos contendo esta média; Ao receber a msg, cada nó atualiza seu relógio local; Este método é aplicável quando não se tem um servidor UTC. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 16 / 39
Algoritmo Distribuído Cada nó periodicamente realiza um broadcast de seu tempo local e inicia um temporizador esperando mensagens dos outros nós; Tendo expirado o tempo, cada nó calcula a nova hora de acordo com uma das seguintes abordagens: Média das mensagens recebidas; Exclui as mensagens cujo valor esteja fora de um dado limite e calcula a média das msgs restantes; Descarta m valores mais altos e baixos e calcula a média das msgs restantes. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 17 / 39
Algoritmo Distribuído Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 18 / 39
Múltiplas Fontes UTC Se for necessário uma sincronização muito precisa com o UTC, pode-se equipar o sistema distribuído com múltiplas fontes UTC; Os nós contendo o tempo UTC devem se sincronizar entre si; Cada TS pode realizar o broadcast de uma faixa de tempo UTC ± IC (por ex.:, precisamente a cada minuto UTC); O intervalo de confiança IC é obtido estatisticamente; Cada TS ao receber as mensagens calcula seu novo tempo. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 19 / 39
Network Time Protocol (NTP) Largamente adotado pela Internet; Escalável através de uma organização hierárquica; No topo da estrutura estão os servidores primários que estão diretamente conectados com fontes UTC; Cada nível da hierarquia é denominado um stratum; Quanto menor o stratum de um participante, mais preciso é o seu tempo devido a sua proximidade com uma fonte primária. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 20 / 39
Arquitetura NTP Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 21 / 39
Informações NTP NTP disponibiliza aos clientes as seguintes informações relativas ao servidor primário: Clock offset: diferença entre os dois relógios. Ou seja, o quanto que o cliente deve ajustar seu relógio para permanecer sincronizado com o servidor primário; Round-trip delay entre o cliente e o servidor primário; Dispersion: reflete o erro máximo para o relógio local do cliente em relação ao relógio do servidor primário. Quanto maior o fator de dispersão, menos confiável é o tempo no cliente. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 22 / 39
Características NTP A precisão da sincronização é obtida através de técnicas estatísticas que requerem muitas comparações de informação de tempo; Tolerância a falhas é obtida através de servidores redundantes e caminhos redundantes entre eles; Segurança é obtida utilizando-se autenticação e verificação de endereço de retorno; Criptografia também pode ser utilizada; No entanto, a camada de segurança no entanto gera um delay que aumenta a imprecisão. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 23 / 39
Modos de Sincronização NTP 1 Multicast: o servidor de tempo periodicamente realiza um broadcast de seu tempo corrente. Utilizado em LANs; 2 Cliente/Servidor: o servidor aguarda requisições dos participantes no sistema; 3 Simétrico: consiste de um par de servidores trocando informações de tempo. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 24 / 39
Relógios Lógicos Relógios Lógicos Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 25 / 39
Relógios Lógicos Relógios Lógicos Em geral, podemos utilizar a sincronização de relógios físicos para determinar se um evento ocorreu antes de outro a não ser que eles tenham ocorrido muito próximos uns aos outros; Se a imprecisão no sincronismo UTC é alto ou intervalos UTC de eventos se sobrepõem, não é possível determinar a ordem de ocorrência dos eventos. Para muitas aplicações, os eventos não necessitam ser escalonados ou sincronizados em relação a um relógio real; Muitas vezes, o importante é apenas a ordem da execução de eventos; Algoritmos que permitem a sincronização de eventos desta forma são chamados de relógios lógicos. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 26 / 39
Relógios Lógicos Exemplo: Make Se o arquivo fonte input.c possui tempo 2151 e o objeto correspondente input.o 2150, make sabe que input.c foi alterado desde a criação de input.o e, portanto, deve ser recompilado; O que aconteceria em um sistema distribuído sem sincronismo de tempo? Output.c foi modificado após a criação de output.o; No entanto, seu tempo (2143) é menor. Make não o recompilaria; Perceba que o que importa para o make não é o tempo absoluto dos eventos e sim seu tempo relativo (sua ordem). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 27 / 39
Relógios Lógicos Algoritmo de Lamport Em 1978 Lamport desenvolveu um algoritmo baseado nas observações: Se dois processos não interagem não é necessário sincronizar seus relógios já que a ausência de sincronismo não será observada; O importante não é que os processos estejam de acordo com uma hora global e sim na ordem de ocorrência dos eventos. Cada processo P i mantêm um relógio lógico C i que é sempre incrementado positivamente na ocorrência de eventos; Em um mesmo processo, se um evento a ocorre antes de b, serão atribuídos tempos tais que C(a) < C(b); Processos interagem através de operações send e receive, que são consideradas eventos; Um par send e receive de P i a P j deve possuir a propriedade C i (send) < C j (receive) já que uma mensagem não pode ser recebida antes de ser enviada. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 28 / 39
Relógios Lógicos Relação Aconteceu-Antes O relógio lógico é baseado na relação denominada aconteceu-antes; A expressão a b é lida a aconteceu antes de b e significa que todos os processos acordam que o evento a ocorreu antes do evento b; Esta relação é baseada nas regras: 1 Se a b dentro de um mesmo processo, então C(a) < C(b) 2 Se a é o evento de envio de uma mensagem de P i e b é o evento do recebimento da mensagem em P j, então Ci(a) < Cj(b) Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 29 / 39
Relógios Lógicos Implementação das Regras do Algoritmo de Lamport A regra 1 pode ser facilmente implementada já que ocorre dentro do mesmo processo; A regra 2 pode ser implementada se o processo emissor enviar na mensagem seu tempo lógico e o processo receptor atualizar seu relógio lógico tal que C j (b) = max(ts a +d,c j (b)), onde TS a é o tempo do evento de envio e d é um número positivo. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 30 / 39
Relógios Lógicos Implementação das Regras do Algoritmo de Lamport Figura: Exemplo: à esquerda o algoritmo de Lamport não foi utilizado. Na figura à direita o algoritmo de Lamport corrige os tempos lógicos dos processos. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 31 / 39
Relógios Lógicos Propriedades da Relação Aconteceu-Antes É transitiva: Se a b e b c, então a c; Define a causalidade entre dois eventos; Dois eventos, a e b, são ditos disjuntos ou concorrentes caso nem a b nem b a; Relógios lógicos de eventos concorrentes não estão relacionados um ao outro. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 32 / 39
Relógios Lógicos Exemplos de Causalidade Figura: Possuem relação de causalidade: [(a,e,c),(a,e,h)]. Eventos concorrentes: [(b,e),(f,h)] Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 33 / 39
Relógios Lógicos Ordenação Parcial de Eventos Usando as duas regras descritas anteriormente todos os eventos que possuam uma relação causal estarão ordenados por seus relógios lógicos; Isto resulta em um grafo de eventos apenas parcial; Dado dois eventos disjuntos a e b, C i (a) < C j (b) não implica que a b; Além disto é possível que C i (a) = C j (b). Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 34 / 39
Relógios Lógicos Ordenação Total de Eventos Uma ordenação total de eventos pode ser obtida caso a seguinte regra adicional seja empregada: Para todos os eventos a e b, C(a) C(b) Esta regra pode ser implementada concatenando-se ao valor do relógio lógico o número identificador do processo. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 35 / 39
Relógios Lógicos Vetor de Relógios Lógicos Mesmo com a ordenação total, não é possível responder se um evento a ocorreu antes de um evento b caso C i (a) < C j (b) já que eles podem ser concorrentes; Neste método, cada processo P i mantêm um vetor de relógios lógicos associado a cada evento; O vetor lógico associado ao evento a no processador i é denotado por: VC i (a) = [TS 1,TS 2,...,C i (a),...,ts n ] onde: n é a quantidade de processos cooperantes C i (a) é o tempo do relógio lógico do evento a em P i e é também representado por TS i TS k (para todo k = 1...n, exceto i) é a melhor estimativa do tempo do relógio lógico em P k. Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 36 / 39
Relógios Lógicos Implementação Todos os vetores de relógios são inicializados com zero no início da execução do processo; O relógio lógico dentro de um processo é incrementado da mesma forma da regra 1 utilizada em relógios simples; A regra 2 é modificada da seguinte forma: Seja a o evento de envio de uma mensagem m de P i para P j e b o evento de recebimento da mesma em P j P j atualiza seu vetor VC j (b) tal que TS k (b) = max(ts k (a),ts k (b)) Ou seja, P j atualiza as entradas do vetor para todo k = 1...n com o maior valor entre TS a e TS b além de incrementar seu relógio lógico Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 37 / 39
Relógios Lógicos Consequências É óbvio que se um evento a em P i aconteceu antes do evento b em P j então VC i (a) < VC j (b), o que significa que TS k (a) TS k (b) para todo k e também TS j (a) < TS j (b) já que existe um caminho causal entre o evento a e o evento b; Para eventos disjuntos, não é possível ter VC i (a) < VC j (b) a não ser que a b, já que o processo P i, que contêm o evento a, certamente possui o valor mais atual de seu próprio tempo que qualquer estimativa de outro processo. Ou seja, C i (a) é maior ou igual a TS i em outros vetores; De forma similar, VC j (b) < VC i (a) somente ocorrerá caso b a. Portanto, podemos concluir que é possível dizer se dois eventos possuem relação causal comparando o valor de seus vetores de relógios lógicos: Se VC i (a) < VC j (b) Então a b Senão a e b são concorrentes Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 38 / 39
Relógios Lógicos Vetor de Relógios Lógicos: Exemplo Eventos (a, e, c) possuem relação causal e satisfazem VC 1 (a) < VC 2 (e) < VC 3 (h) Eventos disjuntos (b, f) jamais podem satisfazer VC 1 (b) < VC 2 (f) ou VC 2 (f) < VC 1 (b) Francisco Silva (UFMA/LSD) SD: Conceitos e Projeto 11 de junho de 2013 39 / 39