1 / 47

Capítulo 5: Terminação e algoritmos básicos

Capítulo 5: Terminação e algoritmos básicos. Ajay Kshemkalyani e Mukesh Singhel Distributed Computing: Principles, Algorithms, and Systems Cambridge University Press. Topologias e abstrações. Sistema: Grafo não direcionado com pesos nas arestas G(N,L), onde n = |N|, l = |L| Topologia física

havyn
Download Presentation

Capítulo 5: Terminação e algoritmos básicos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 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) • 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.

  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] > (LENGTHj[K] + weightj,k)) • Nó i tem peso weightijestimado 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 Ω( cn ) exponencial e complexidade de tempo Ω( cn .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Ω(cn.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(n3) • 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(n2) 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 + n3) 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(n2) (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 / 2k 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

More Related