A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 5: Terminação e algoritmos básicos Ajay Kshemkalyani e Mukesh Singhel Distributed Computing: Principles, Algorithms, and Systems Cambridge University.

Apresentações semelhantes


Apresentação em tema: "Capítulo 5: Terminação e algoritmos básicos Ajay Kshemkalyani e Mukesh Singhel Distributed Computing: Principles, Algorithms, and Systems Cambridge University."— Transcrição da apresentação:

1 Capítulo 5: Terminação e algoritmos básicos Ajay Kshemkalyani e Mukesh Singhel Distributed Computing: Principles, Algorithms, and Systems Cambridge University Press

2 Topologias e abstrações Sistema: Grafo não direcionado com pesos nas arestas G(N,L), onde n = |N|, l = |L| Topologia física Nós (Vértices): Nós da rede, todos os hosts (participando ou não) Arestas: toda a Lan, Links da WAN, ligação direta entre hosts Ex. Figura 5.1(a) topologia + todos os links da WAN Topologia lógica: Nós (Vértices): Hosts onde a aplicação é executada Arestas: Canal lógico entre estes nós Totalmente conectado (Ex. Figura 5.1(b)) Topologia sobreposta (overlay) Superposição na topologia lógica Meta: Coleta eficiente de informação, distribuição ou procura Ex. anel, árvore, malha, hipercubo

3 Abstrações de Topologia Figura 5.1: Topologia vista sob diferentes níveis de abstração

4 Classificação e conceitos básicos Execução do aplicativo vs. Execução do algoritmo de controle Algoritmo de controle: Para monitorar e prover funções auxiliares. Ex. ST, MIS, CDS, eleição de líder, gravação de estado global (deadlock terminação), check point Sobreposto ao aplicativo, mas sem interferir Envia e recebe eventos internos, sendo transparente a aplicação Ex. protocolo Algoritmos centralizados e distribuídos Centralizado: Assimétrico; configuração cliente-servidor; gargalos são processamento e banda; há pontos de falha Distribuídos: Mais balanceados; dificuldade de criar algoritmos perfeitamente distribuídos (Ex. Algoritmos de snapshot, baseados em árvores, etc...) Algoritmos simétricos e assimétricos

5 Classificação e conceitos básicos Algoritmos anônimos: id dos processos não são utilizados na tomada de nenhuma decisão (em tempo de execução run-time) Estruturalmente elegantes, mas difíceis ou impossíveis de implementar. Ex. Eleição de líder Algortimos uniformes: O número de processadores n, não pode ser um parâmetro do código Permite escalabilidade, entrada e saída de processos da computação é simples e apenas os vizinhos tem noção da mudança de topologia Algoritmos adaptativos: Seja K ( n) o número de processadores participando no contexto do problema X quando este é executado. A complexidade deve ser expressa como função de K e não n. Ex. Exclusão mutua: O overhead de acesso à seção crítica é expresso em termos de K

6 Classificação e conceitos básicos Determinístico vs. Não determinístico: Execução não determinística contém ao menos 1 recebimento não determinístico, enquanto o determinístico contém nenhum Não determinístico: Pode receber a mensagem de qualquer fonte. Determinístico: A fonte é especificada. Dificuldades Sistemas assíncronos: Deterministico: todas as execuções produzem a mesma ordem parcial de eventos (utilizado em debugging, detecção de predicados instáveis, etc...) Não deterministico: as execuções podem produzir a ordem parcial de eventos diferentes (tempo de envio e possível congestionamento imprevisível, atraso local variável)

7 Classificação e conceitos básicos Sistema Assíncrono vs. síncrono: Síncrono: Limitado pelo delay de mensagens Escorregamento de relógios conhecidos. Limite superior de execução de um passo lógico conhecido Assíncrono: Nenhum dos critérios anteriores é valido Algoritmos para solução de problemas dependem muito de modelos de sistema inteiramente assíncronos Controle on-line vs. Controle off-line: On-line: Executa enquanto o dado está sendo gerado. Vantagem clara para debugging, scheduling, etc... Off-line: Requer que todo o dado seja analisado antes da execução.

8 Classificação e conceitos básicos Algoritmos Wait-Free: Resistentes a n - 1 falhas de processos. Operações em qualquer processo deve ser completada em um número certo de passos Robusto, mas caro Possível para exclusão mútua Pode nem sempre ser possível de se fazer. Ex. Problema do produtor-consumidor Canais de comunicação: Ponto-aponto: FIFO, Não FIFO, Na camada de aplicação. Normalmente provida pelo protocolo de comunicação.

9 Medições e métricas de complexidade Cada métrica é especificada utilizando-se o limite inferior (), o limite superior (O) e complexidade justa (θ): Métricas Complexidade de espaço por nó Complexidade de espaço do sistema ( n da complexidade por nó). Ex. Pior caso de todos os nós pode nunca ocorrer simultaneamente Complexidade de tempo por nó Complexidade de tempo do sistema. Os nós executam totalmente concorrentemente? Complexidade de mensagens Número de mensagens Tamanho das mensagens Complexidade de tempo das mensagens: depende do número de mensagens, tamanho das mensagens, concorrência de envio e referencia de mensagens. Outras métricas: Send e Receive, multicast. Como implementar? Memória compartilhada: Tamanho da memória compartilhada; Operações de sincronização

10 Lista de Algoritmos Distribuídos

11 Sync 1-initiator ST (enchente)

12 1-init Spanning Tree Síncrono: Exemplo Figura 5.2: árvore em negrito Raiz designada. Nó A no exemplo Cada nó identifica seu pai Como identificar nós filhos

13 1-init Spanning Tree Síncrono: Complexidade Terminação: Depois do diâmetro ser encontrado Como um processo pode terminar depois de setar seu pai? Complexidade: Espaço Local: O(Grau) Espaço Global: O(ΣEspaço Local) Tempo local: O(Grau + Diâmetro) Complexidade de tempo de mensagem: d pulos de mensagens Complexidade de mensagem: Maior que 1, menor que 2 mensagens / arestas, então [l, 2l] Spanning Tree: análogo a breadth-first search

14 1-init Spanning Tree Assíncrono

15 1-init Spanning Tree Assíncrono: Operação Root inicia a enchente de QUERY para identificar os vértices da árvore Pai: 1 nó pelo qual se recebe um QUERY ACCEPT (resp +) enviado como resposta; QUERY enviado para os vizinhos Terminação: quando ACCEPT ou REJECT (resp -) recebido de um vizinho não pai. Porque? QUERY de um não pai respondido com um REJECT É necessário rastrear os vizinhos? Determinar os filhos e quando terminar? Porque o tipo de mensagem REJECT é necessário? A mensagem de REJECT pode ser eliminada? Como? Qual o impacto?

16 1-init Spanning Tree Assíncrono: Complexidade Terminação: Depois de receber um REJECT ou ACCEPT de um vizinho não Pai Complexidade: Espaço Local: O(Grau) Espaço Global: O(ΣEspaço Local) Tempo local: O(Grau) Complexidade de tempo de mensagem: d + 1 pulos de mensagens Complexidade de mensagem: Maior que 2, menor que 4 mensagens / arestas, então [2l, 4l] Spanning Tree: Pior caso altura igual a n - 1

17 1-init Spanning Tree Assíncrono: Exemplo Figura 5.3: árvore em negrito Raiz designada. Nó A no exemplo Vértices da árvore: QUERY + ACCEPT msg Cross-edges e back-edges 2(QUERY + REJECT) msg

18 Spanning Tree Assíncrono: Iniciação concorrente Figura 5.4: Inicio concorrente em A, G e J Opção1 : Unir Sts parciais. Dificuldade: baseado em conhecimento local. Pode levar a ciclos. Opção 2: Permitir apenas 1 instancia do ST e descartar as outras. Seleciona Raiz com maior id. Algoritmo Um nó pode espontaneamente iniciar o algoritmo tornando-se Raiz Cada Raiz inicia variações do algoritmo 1-init. Terminação: apenas a Raiz detecta a terminação. Precisa de uma mensagem extra para informar aos outros. Complexidade de tempo: O(l) Complexidade de mensagens: O(nl)

19 Spanning Tree Assíncrono (1/2)

20 Spanning Tree Assíncrono (2/2)

21 DFS Spanning Tree Assíncrono Lida com inicialização concorrente como o algoritmo não DFS. Quando QUERY, ACCEPT ou REJECT chegam a ação depende se: myroot < = newroot Terminação: apenas a Raiz que terminou com sucesso detecta e informa via arestas da ST. Complexidade de tempo: O(l) Complexidade de mensagens: O(nl)

22 DFS Spanning Tree Assíncrono

23 Broadcast e convergecast em uma árvore Figura 5.5: Estrutura de árvore para broadcast e convergecast Como fazer BC e CC em um anel? E em uma malha? Custo?

24 Broadcast e convergecast em uma árvore Broadcast em um sistema distribuído BC1. Raiz envia informação de broadcast para seus filhos e termina BC2. Quando um não Raiz recebe a informação de seu pai. Copia a informação e repassa para seus filhos e termina Convergecast: Coleta informação no Raiz para computar uma função global CVC1. Nó folha envia seu relatório para seu pai e termina CVC2. Um nó interno da árvore recebe o relatório de todos os seus filhos realiza uma operação e repassa para seu pai e termina CVC3. Nó Raiz. Recebe o relatório de todos os seus filhos. Calcula a função e termina. Usos: Calcular máximos e mínimos, Eleição de líder, computar funções de estado global. Complexidade de tempo O(h); Complexidade de Mensagens: n - 1

25 Menor caminho com fonte única: Bellman-Ford Síncrono Grafo com pesos, sem ciclos com pesos negativos. Nenhum nó tem visão global, apenas topologia local. Assume-se: cada nó conhece outros n; necessário para a terminação Depois de K rodadas: tamanho até qualquer nó é minimo com K pulos Depois de K rodadas: O tamanho até todos os nós com até k pulos de distancia da MST final estabilizou Terminação: n – 1 rodadas Complexidade de tempo: n – 1 rodadas Complexidade de mensagen: (n – 1) / mensagens

26 Bellman-Ford Síncrono: Código

27 Distance Vector Routing Utilizado no roteamento de internet (popular no meio dos anos 80), muda dinamicamente os grafos, onde os pesos das arestas representam o delay ou a carga nos canais. Variação do algoritmo síncrono de Bellman-Ford; O loop externo é infinito. Procura o menor caminho para cada destino. Tamanho substituído por LENGTH[1..n]; pai substituído por PARENT[1..n] K-ésimo componente representa o melhor caminho até LENGTH[k] Em cada iteração: Aprica-se a inequação de triangulação para cada destino independentemente Inequação de triangulação: (LENGTH[k] > (LENGTH j [K] + weight j,k )) Nó i tem peso weight ij estimado utilizando RTT ou avaliando o delay até o vizinho j

28 Menor caminho com fonte única: Bellman-Ford Assíncrono Grafo com pesos, sem ciclos com pesos negativos. Nenhum nó tem visão global, apenas topologia local. Número de mensagens Ω( c n ) exponencial e complexidade de tempo Ω( c n.d ) exponencial no pior caso, onde c é uma constante. Se todos os links tiverem o mesmo peso, o algoritmo computa o caminho mínimo de saltos; a tabela de caminho mínimo de saltos para todos os destinos é computada utilizando-se Ω(c n.l) mensagens

29 Bellman-Ford Assíncrono: Código

30 All-All shortest Path (Menor caminho): Floyd-Warshall Figura 5.6: (a) Inequação triangular para o algoritmo de Floyd-Warshall. (b) Relação VIA por um ramo da árvore para um dado par (s,t)

31 All-All shortest Path (Menor caminho): Floyd-Warshall Complexidade (centralizado): O(n 3 ) Depois das iternções do pivo do loop externo Invariante LENGTH[i,j] é o menor caminho passando por nós intermediários do conjunto {i,...,pivo}. VIA[i,j] é o primeiro salto correspondente

32 Floyd-Warshall Distribuido Linha i de LENGTH[1..n,1..n], VIA[1..n,1..n] armazenado em i, que é responsável por atualizar a linha. (logo, i atua como fonte) Correspondência com o algoritmo centralizado, linh(4) Como o nó i acessa o dado remoto LENGTH[pivot,t] em cada iteração do pivo? Sink tree Distribuída (dinâmica): em cada iteração de pivo, todos os nós s | LENGTH[s,t] estão na sink tree, com sink em t Como sincronizar as execuções da iteração do loop externo em nós diferentes? Simular sincronizador: Ex. Utilizar mensagem de recebimento para pegar os dados LENGTH[pivo,*] de seu pai na sink tree.

33 Floyd-Warshall Distribuídos: Estruturas de dados

34 Floyd-Warshall Distribuídos: Código

35 Flyd-Warshall Distribuido: sink tree dinâmica Renomear LENGTH[i.j] e VIA[i,j] como LEN[j] e PARENT[j] Em cada nó i, na iteração do pivo: Se LEN[pivo] no nó i, então o pivo distribui LEN[*] para todos os nós (incluindo i) na sink tree do pivo. Arestas Pai-Filho na sink tree devem possuir ID, como? Um nó envia IN_TREE para PARENT[pivo]; NOT_IN_TREE para os outros vizinhos Recebendo um IN_TREE de k, k é um filho na sink tree do pivo Esperar IN_TREE ou NOT_IN_TREE de todos os vizinhos. Essas mensagens são uma sincronização Pivo broadcast LEN[*] para toda sua sink tree. Essas mensagens são uma sincronização. Agora todos os Nós executam a inequação de triangulação em passos pseudo- exclusivos Complexidade de tempo: O(n 2 ) Execução / nós. Mais o tempo para n broadcasts Complexidade de mensagens: n iterações 2 IN_TREE ou NOT_IN_TREE msg de tamanho O(1) n – 1 PIV_LEN msg de tamanho O(n): O(n) msg Total O(n(l+n)) Mensagens; Total (nl + n 3 ) espaço de mensagens.

36 Floyd-Warshall Distribuído: Sink Tree Figura 5.7: Identificando os nós Pai-Filho da árvore

37 Enchente Controlada (sem ST) Canais FIFO Enchente assíncrona Utilizado para Verificar o estado de links de roteamento no IPV4 Complexidade: 2l mensagens no pior caso; Tempo: d seqüências de saltos Enchente Síncrona(para adquirir um dado de cada processo) STATEVE[k] é o dado do processo k Complexidade de mensagens: 2dl mensagens, cada uma com tamanho n Complexidade de tempo: d turnos

38 Enchente controlada Assíncrona

39 Enchente controlada Síncrona

40 Minimum Spanning Tree (MST) Assumindo um grafo não direcionado com pesos. Se os pesos não são únicos assume-se algum critério de desempate como ID dos nós para ordenação total dos pesos dos vértices Revisão de definições: Floresta, Spanning forest, Spanning tree, MST Kruskal's MST Assumindo uma floresta de componentes de grafos Manter uma lista ordenada de vértices Em cada n – 1 iterações, identificar o vértice de peso minimo que conecta dois componentes diferentes Incluir este nó na MST O(l log(l) ) Prim MST Começar com apenas um único nó Em cada n – 1 iteração, selecionar o vértice de peso mínimo incidente neste nó. Continua-se utilizando este novo nó O(n 2 ) (ou O(n log(n)) utilizando pilhas Fibonacci em grafos densos)

41 GHS algoritmo de MST síncrono Gallagher-Humblet-Spira MST distribuído utiliza estratégia de Kruskal. Começa com uma floresta de componentes do grafo. MWOE (Aresta de peso mínimo de saída): Saída é saída lógica, ex. Indica a direção da expansão do componente. Spanning tree de componentes conectados combinado com os MWOES mantem as propriedades das Spanning trees. Combinação concorrente de MWOEs: Depois da k-ésima iteração, n / 2 k componentes. Até o máximo de log n iterações Cada componente possui um nó líder na iteração Cada iteração em um componente possui 5 passos iniciados pelo líder: Fase de broadcast-convergecast: líder identifica as MWOE Fase de broadcast: líder (potencial) para a próxima iteração é identificado Ase de broadcast: entre as componentes agrupadas, 1 lider é selecionado; Ele se identifica para todos os novos componentes

42 Aresta de saída de peso mínimo: exemplo Observação 5.1 Para qualquer Spanning forest {(Ni, Li) | i = 1..k } do grafo G, considerando qualquer componente (Nj, Lj). Denotamos por λj, o nó com o menor peso entre todos os incidentes apenas no no Nj. Então qualquer sub-grafo G da MST que inclui todos os nós em cada Li da spanning forest deve incluir λj. Figura 5.8: Agrupando os MWOE dos componentes. (a) Ciclo len = 2 é possível. (b) Ciclo len > 2 não é possível

43 MST: exemplo Figura 5.9: Fases da iteração de um componente. (a) Root broadcast SEARCH_MWOE; (b) Ocorre um convergecast REPLY_MWOE; (C) Root broadcast ADD_MWOE; (d) se a MWOE também é escolhido como MWOE pelo componente no outro lado do MWOE, O processo incidente com maior ID é o líder na proxima iteração; Broadcast NEW_LEADER

44 GHS Síncrono: Tipos de mensagens

45 GHS Síncrono: Código

46 GHS: Complexidade Log n rodadas (Síncrono). Complexidade de tempo: O(n log n) Complexidade de mensagens: Em cada iteração, O(n) mensagens pelas arestas da árvore (passos 1,3,4,5) Em cada iteração, L mensagens de EXAMINE para determinar as MWOEs Corretude requerida pelas operações síncronas: No passo (2), EXAMINE é utilizado para determinar se um vizinho não marcado pertence a mesma componente. Se o nó de uma aresta não marcada estiverem em níveis diferentes há problemas. Considerando EXAMINE enviado na aresta (j,k) pertencente a mesma componente. Mas k pode não saber que esta pertence a nova componente e ao novo líder ID; responde com +ve Pode levar a ciclos.

47 MST: Assíncrono GHS síncrono é simulado utilizando-se mensagens / passos extras Novo Líder faz BC / CC nas arestas marcadas da nova componente No passo (2), destinatário de um EXAMINE pode atrasar a resposta se estiver em um turno anterior. N log n mensagens extras No novo turno, informar cada vizinho: Enviar EXAMINE quando todos os vizinhos nas arestas não marcadas estiverem no mesmo nível L log n mensagens extras Engenharia de GHS Assíncrono Mensagens O( n log n + l) tempo: O(n log n(l + d)) Desafios Determinar o nível de nós adjacentes Se as componentes estão em níveis diferentes, busca coordenada pelas novas MWOEs


Carregar ppt "Capítulo 5: Terminação e algoritmos básicos Ajay Kshemkalyani e Mukesh Singhel Distributed Computing: Principles, Algorithms, and Systems Cambridge University."

Apresentações semelhantes


Anúncios Google