Sistemas Distribuídos - CI721

Jéfer Benedett Dörr
Última atualização - Mon May 2 23:31:14 2011

FASE 2

Implemente o algoritmo Hi-ADSD. Aqui está a função c(i,s,j) implementada Utilize o vetor State[0..N-1] para armazenar informações de diagnóstico: uma entrada State[i] deste vetor é -1 se o estado do nodo i é desconhecido; 0 se o nodo i é sem-falha; 1 se o nodo i é falho. Um nodo que inicializa desconhece o estado de todos os outros, menos o seu próprio estado. Na medida em que testes são executados todos os nodos descobrem o estado dos demais. Estruture seu log de forma a mostrar quais testes vão sendo executados e qual informação é obtida dos nodos testados.

Simule a execução de um evento: um nodo sem-falha fica falho, ou vice-versa. Repita para diversos tamanhos de sistema e eventos diferentes. Em cada caso mostre: (a) a latência, isto é tempo desde a ocorrência do evento até todos os nodos completarem seu diagnóstico; (b) o número de testes executados por todos os nodos durante o intervalo da latência.

Atenção: são duas semanas de prazo, organize-se para completar de maneira adequada. Cada dia de atraso serão descontados 25% da nota.

Deve ser feita uma página Web, que contém:

Relatório HTML explicando como o trabalho foi feito (use desenhos, palavras, o que você quiser): o objetivo é detalhar as suas decisões para implementar seu trabalho.

Código fonte dos programas em C, comentados. ATENÇÃO: acrescente a todo programa a terminação ".txt" para que possa ser diretamente aberto em um browser. Exemplos: cliente.py.txt ou servidor.c.txt

Log dos testes executados: mostre explicitamente diversos casos testados, lembre-se é a partir desta listagem de testes que o professor vai medir até que ponto o trabalho está funcionando.

Acrescente às páginas do TP os programas de simulação elaborados a partir das tarefas da aula prática de simulação que ocorreram na aula de laboratório.


Relatório

FonteOriginal

FonteTXT

Para a simulação foi utilizada a biblioteca SMPL juntamente com a função c(i,s,j) fornecida pelo professor. Comparando com o trabalho anterior ADSD, pode se perceber que inicialmente eles utilizam a mesma quantidade de testes. Entretanto, quando o número de nodos aumenta, o Hi-ADSD utiliza um número significativamente menor de testes, se destacando depois dos 32 nodos.

N Hi-ADSD Adaptive-DSD
4 4 4
8 9 8
16 16 16
32 25 32
64 36 64
128 49 128
256 64 256
512 81 512
1024 100 1024

LOGS:

log2: Um log simples com 2 dimensões para testar o programa, inicialmente falhando no tempo 25 e restaurando no tempo 95, do total de tempo de 300. A falha ocorreu após todos os nodos sairem do estado indeterminado.

log4: Log de dimensão 4, usando os mesmos tempos de falha e recuperação do anterior, levou 15 iterações (valor próximo de n) para reconhecer todos os nodos sem falha. E a Falha foi detectada depois de 120 testes, demorando duas rodadas.

log5: Log de dimensão 5, contendo 32 nodos, falhando no tempo 25 e restaurando no 95 de 300. Identificou todos os nodos sem falha antes de completar a segunda rodada de testes, com a quantidade de 142 testes. A falha na segunda rodada já foi detectado por todos os nodos.

log10: Log de dimensão 10, contendo 1024 nodos, na segunda rodada, quando o nodo 1018 executava seus testes, foi completada a roda que verificou todos os nodos sem falha, logo em seguida no tempo qunado o nodo 1023 terminou seus testes , o nodo 2 falhou no tempo 25, na segunda rodada todos os nodos já sabiam da falha.

log12: Log de dimensão 12, contendo 4096 nodos

Log +: Acima de 12 dimensões não foi possível simular no programa.