Você está na página 1de 4

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS – UFGD

Bacharel em Sistemas de Informação

Andrei Mattos
Jeovano Coutinho
Vanderson Martins

Resumo de artigo científico

DOURADOS – MS
2018
Introdução

O Paper apresenta um estudo referente às verificações de erro em sistemas Hiper


Performance Computing (HPC) nas variações de verificações esporádicas (sob demanda de
comunicação) e periódicas (ocorrem durante toda a execução do sistema) e concluí que as
verificações esporádicas têm performance igual ou até mesmo pior ao contrastar com as
verificações periódicas, e apresenta uma implementação genérica de verificação de falhas
para aplicações MPI.

O detector de falhas pode ser implementado em várias camadas da aplicação, os autores


optaram por implementar na camada de comunicação MPI a qual pode ser utilizada como
“meio” (plataforma) de implementação e detectora de falhas. Esta abordagem
vantajosamente não necessita de qualquer suporte a detecção de falhas nas plataformas
subjacentes de software ou hardware. A detecção de falhas é um processo independente
em cada nó. A falha é detectada com a falta de comunicação entre dois nós mediante uma
falha em um nó ou na própria rede, porém não é feita a abordagem da causa da
falha(detecção baseada em time-out). Esta abordagem assume que o modelo de sistema
providencia um tempo limite de comunicação. Obedece às propriedades de
Transparência(pode ser embutido na camada de MPI sem qualquer alteração adicional ao
sistema), Portabilidade(Funciona em implementações MPI: MPICH, OpenMPI e LAM/MPI-
family) e Escalabilidade(implementação resolve verificações esporádicas ou periódicas).

Design

O tradicional algoritmo heatbeat por seguir o padrão “todos-para-todos” tem complexidade


de mensagens Θ(n²) e a complexidade de tempo Ω(n). Para uma aplicação MPI não é
necessário que um nó conheça a vida de todos os outros nós. Já uma checagem baseado
em árvore produz um resultado melhor: Θ(n) para mensagens e Ω(log(n)) tempo, contudo
uma pequena falha num nó em altura média pode causar um problema na topologia
causando um grafo disfuncional. A proposta dos autores são dois tipos de detecção de
falhas: uma comunicação esporádica(verifica a cada nova comunicação) e a comunicação
periódica baseada em anel.
Com n processos, uma estrutura em anel resulta em Θ(n) para mensagens e O(1) para o
tempo na checagem paralela no vizinho imediato no anel e O(n) para checagem de todo o
anel, assim cada nó sabe somente o o estado de seu próximo vizinho (nó i verifica o nó
i+1), esta é a verificação periódica, que ocorre até o encerramento da aplicação, a
resposta de verificação é um simples acknowledge, caso não responda, assume-se que o
nó i+1 falhou.
Uma verificação ponto-a-ponto nos dá O(1) para mensagens e o tempo de overhead, esta
abordagem é utilizada para a verificação esporádica, esta mensagem de verificação é
enviada quando a comunicação não recebe sua resposta dentro do período de timeout,
nesta abordagem, quando uma mensagem do nó p é enviada para o nó q, se p excede o
timeout esperando uma resposta de q, então p faz uma chamada MPI bloqueante como
MPI Recv() MPI Wait() para testar a vivacidade de q, caso q responda ao teste de falha e
não responda a mensagem que excedeu o timeout um novo teste é realizado.

Implementação

A implementação se baseia na monitoração do round trip time (RTT). Pode ser


parametrizada por: INTER-PROBE (intervalo de verificações), e TIMEOUT, ambos
parâmetros não são triviais, onde valores baixos podem causar um aumento do
overhead(apesar da melhora na detecção) ou falsos positivos( o nó não ter falhado,
mas disparar o teste por ter um curto timeout). A checagem esporádica empacota a
chamada da rotina de verificação nas chamadas MPI, já a verificação periódica é
independente da aplicação MPI. O detector de falhas é implementado num par de
threads (sender e receiver) obrigando que o o MPI seja iniciado com suporte para
multithreading. O sender envia uma mensagem ALIVE (ping) e espera por uma
mensagem ACK (pong) dentro do timeout estipulado, o receiver recebe a consulta
ALIVE e retorna com ACK

Avaliação de Desempenho

O overhead resultante do detector de falhas foi mensurado através de 5 execuções em


cada configuração com detecção de falhas periódicas e esporádicas, computando o
overhead médio para diferentes intervalos e número de processos. Os experimentos foram
conduzidos em um cluster com 108 nodos com Infiniband QDR. Cada nodo possui uma
memória 2-Way compartilhada com 2 octa-core AMD Opeton 6128, executando o CentOS
5.5 Linux x86 64 como sistema operacional e para a avaliação de desempenho foi utilizada
a biblioteca OpenMPI 1.5.1.

Resultados do benchmark

Após a coleta de dados dos benchmarks efetuados foi possível observar que tanto no teste
com o detector de falhas esporádico quanto no periódico o overhead variou de menos de
1% até 21% e com média de 10% e também que com o uso do detector de falhas
periodicamente ele igualou ou superou em 2-6% o uso esporádico. Após foram conduzidos
testes com checagens periódicas como uma atividade sendo executada ao fundo da
principal, neste teste utilizou um switch com Gigabit Ethernet no mesmo cluster. O resultado
foi que não houve overhead algum nos códigos NPB sobre 128 processos.
Após todos os testes pode-se observar alguns comportamentos, como o overhead em
utilizar testes de falha esporádicos difere significantemente em diferentes benchmarks, cada
MPI faz a chamada da aplicação de forma diferente internamente aonde gera um overhead
diferente, ou seja benchmarks que fazem um maior número de chamadas da MPI tendem a
sofrer mais com overhead. Enfim, os testes mostraram que o uso de detecção de falhas
periodicamente tem um desempenho maior em códigos com comunicação intensa.

Conclusão

Foi criado e implementado duas abordagens diferentes, a onde uma utiliza o conceito de
teste periódico de falhas com uma rede em anel e enquanto a outra utiliza o conceito
esporádico de testes com utilização de mensagens ponto-a-ponto. Os dados experimentais
indicam que enquanto o detector de falhas esporádico minimiza o gasto de banda gerando
probes apenas quando é criado uma chamada da MPI. Em contrapartida o modo periódico
estatisticamente evita conexões conforme o número de processos aumenta.
De modo geral o teste de falhas periódico se mostrou melhor que o seu oponente a onde
existe comunicação intensa.
Referência

Assessing HPC Failure Detectors for MPI Jobs - Kharbas, K. Kim, D. Hoefler,T.
Mueller, F (2012)

Você também pode gostar