18.03.2015 Views

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

SHOW MORE
SHOW LESS

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>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!