XI Workshop de Testes e Tolerância a Falhas (WTF) - SBRC 2010
XI Workshop de Testes e Tolerância a Falhas (WTF) - SBRC 2010
XI Workshop de Testes e Tolerância a Falhas (WTF) - SBRC 2010
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
36 Anais<br />
3.4. GossipTask<br />
A rotina GossipTask é executada periodicamente, a cada GOSSIP INT ERV AL intervalos<br />
<strong>de</strong> tempo. Ela é responsável pelo envio das mensagens <strong>de</strong> gossip aos outros<br />
processos. A cada execução, a rotina primeiramente verifica se HBT able está vazia. Se<br />
sim, não há nada a ser feito, pois nenhum outro processo é conhecido. No caso <strong>de</strong> existir<br />
alguma entrada na tabela, F ANOUT processos são escolhidos aleatoriamente do conjunto<br />
<strong>de</strong> processos conhecidos (ou menos, no caso <strong>de</strong> o número <strong>de</strong> entradas na HBT able<br />
ser insuficiente). Uma mensagem <strong>de</strong> gossip é enviada para cada um dos processos selecionados.<br />
A mensagem <strong>de</strong> gossip enviada é construída com as informações contidas na<br />
HBT able. Para cada entrada na tabela, uma tupla é adicionada à mensagem.<br />
Também é adicionada uma tupla com o ID e heartbeat do processo local. Após o<br />
envio da mensagem, o processo incrementa seu valor local <strong>de</strong> heartbeat.<br />
3.5. BroadcastTask<br />
Para que os processos possam se encontrar inicialmente, e para que a saída do <strong>de</strong>tector se<br />
estabilize mais rapidamente em caso <strong>de</strong> um número alto <strong>de</strong> falhas simultâneas, a rotina<br />
BroadcastTask é executada periodicamente. A cada execução, existe a chance <strong>de</strong> uma<br />
mensagem <strong>de</strong> gossip do algoritmo ser enviada para todos os outros processos, através<br />
<strong>de</strong> um mecanismo <strong>de</strong> difusão. A probabilida<strong>de</strong> da difusão ser efetuada é calculada com<br />
base em parâmetros do algoritmo e no tempo <strong>de</strong> chegada da última mensagem <strong>de</strong> difusão<br />
recebida. Esta probabilida<strong>de</strong> visa evitar difusões simultâneas e muito frequentes.<br />
Para a implementação do algoritmo, o JXTA-FD utiliza a mesma<br />
função <strong>de</strong> probabilida<strong>de</strong> proposta em [van Renesse et al. 1998], p(t) =<br />
(t/BCAST MAX P ERIOD) BCAST F ACT OR , on<strong>de</strong> t é igual ao número <strong>de</strong> unida<strong>de</strong>s<br />
<strong>de</strong> tempo <strong>de</strong>corridas da última difusão recebida e BCAST MAX P ERIOD<br />
e BCAST F ACT OR são parâmetros do algoritmo. A cada execução da rotina<br />
BroadcastTask uma mensagem <strong>de</strong> gossip é enviada por difusão com probabilida<strong>de</strong><br />
p(t). Desse modo, o tempo médio entre o envio <strong>de</strong> difusões <strong>de</strong>pen<strong>de</strong><br />
diretamente da frequência <strong>de</strong> execução da rotina (controlada pelo parâmetro<br />
BCAST T ASK INT ERV AL), do número <strong>de</strong> processos no sistema e dos parâmetros<br />
do algoritmo. BCAST MAX P ERIOD é o intervalo máximo entre cada difusão, e<br />
quando t se aproxima <strong>de</strong>ste valor, a probabilida<strong>de</strong> p(t) ten<strong>de</strong> a 1. BCAST F ACT OR<br />
<strong>de</strong>ve ser um valor real positivo, e <strong>de</strong>termina o quão antes <strong>de</strong> BCAST MAX P ERIOD<br />
as difusões ten<strong>de</strong>m a ser enviadas. Quanto maior o valor <strong>de</strong> BCAST F ACT OR, mais<br />
próxima do valor BCAST MAX P ERIOD fica a duração do intervalo esperado entre<br />
as difusões.<br />
Como exemplo, para os valores BCAST T ASK INT ERV AL <strong>de</strong> 1 unida<strong>de</strong> <strong>de</strong><br />
tempo, BCAST MAX P ERIOD <strong>de</strong> 20 unida<strong>de</strong>s <strong>de</strong> tempo e um conjunto <strong>de</strong> 1000<br />
processos, para se obter um intervalo <strong>de</strong> aproximadamente 10 unida<strong>de</strong>s <strong>de</strong> tempo entre<br />
uma difusão e a próxima, BCAST F ACT OR <strong>de</strong>ve ser aproximadamente 10.43<br />
[van Renesse et al. 1998].<br />
3.6. CleanupTask<br />
A rotina CleanupTask é responsável por remover entradas antigas da HBT able do processo<br />
local. A cada CLEANUP INT ERV AL unida<strong>de</strong>s <strong>de</strong> tempo, a tabela é percorrida<br />
e entradas que não foram atualizadas a mais <strong>de</strong> REMOV E T IME unida<strong>de</strong>s <strong>de</strong>