Title: Cap
1Capítulo 5 Terminação e algoritmos básicos
- Ajay Kshemkalyani e Mukesh Singhel
- Distributed Computing Principles, Algorithms,
and Systems - Cambridge University Press
2Topologias 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
3Abstrações de Topologia
- Figura 5.1 Topologia vista sob diferentes níveis
de abstração
4Classificaçã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
5Classificaçã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
6Classificaçã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)
7Classificaçã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.
8Classificaçã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.
9Mediçõ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
10Lista de Algoritmos Distribuídos
11Sync 1-initiator ST (enchente)
121-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
131-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(SEspaç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
141-init Spanning Tree Assíncrono
151-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?
161-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(SEspaç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
171-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
18Spanning Tree Assíncrono Iniciação concorrente
- 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)
- 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.
19Spanning Tree Assíncrono (1/2)
20Spanning Tree Assíncrono (2/2)
21DFS 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 lt 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)
22DFS Spanning Tree Assíncrono
23Broadcast 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?
24Broadcast 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
25Menor 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
26Bellman-Ford Síncrono Código
27Distance 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 LENGTH1..n pai
substituído por PARENT1..n - K-ésimo componente representa o melhor caminho
até LENGTHk - Em cada iteração
- Aprica-se a inequação de triangulação para cada
destino independentemente - Inequação de triangulação (LENGTHk gt
(LENGTHjK weightj,k)) - Nó i tem peso weightij estimado utilizando RTT ou
avaliando o delay até o vizinho j
28Menor 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 O( cn ) exponencial e
complexidade de tempo O( 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 O(cn.l)
mensagens
29Bellman-Ford Assíncrono Código
30All-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)
31All-All shortest Path (Menor caminho)
Floyd-Warshall
- Depois das iternções do pivo do loop externo
- Invariante
- LENGTHi,j é o menor caminho passando por nós
intermediários do conjunto i,...,pivo. VIAi,j
é o primeiro salto correspondente
- Complexidade (centralizado) O(n3)
32Floyd-Warshall Distribuido
- Linha i de LENGTH1..n,1..n, VIA1..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 LENGTHpivot,t
em cada iteração do pivo? - Sink tree Distribuída (dinâmica) em cada
iteração de pivo, todos os nós s LENGTHs,t ?
8 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 LENGTHpivo, de
seu pai na sink tree.
33Floyd-Warshall Distribuídos Estruturas de dados
34Floyd-Warshall Distribuídos Código
35Flyd-Warshall Distribuido sink tree dinâmica
- Renomear LENGTHi.j e VIAi,j como LENj e
PARENTj - Em cada nó i, na iteração do pivo
- Se LENpivo ? 8 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 PARENTpivo
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(ln)) Mensagens Total (nl n3) espaço
de mensagens.
36Floyd-Warshall Distribuído Sink Tree
- Figura 5.7 Identificando os nós Pai-Filho da
árvore
37Enchente 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) - STATEVEk é o dado do processo k
- Complexidade de mensagens 2dl mensagens, cada
uma com tamanho n - Complexidade de tempo d turnos
38Enchente controlada Assíncrona
39Enchente controlada Síncrona
40Minimum 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)
41GHS 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
42Aresta de saída de peso mínimo exemplo
Figura 5.8 Agrupando os MWOE dos componentes.
(a) Ciclo len 2 é possível. (b) Ciclo len gt 2
não é possível
- 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.
43MST 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
44GHS Síncrono Tipos de mensagens
45GHS Síncrono Código
46GHS 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.
47MST 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