Cluster HPC – High Performance Computing.

Propaganda
Faculdade de Tecnologia de Guaratinguetá.
doze, março de 2009.
Cluster HPC – High Performance Computing.
Diogo Salles, Thiago Pirro, Camilo Bernardes, Paulo Roberto, Ricardo Godoi, Douglas, Fauzer.
Sistemas Distribuídos – Luiz Eduardo Guarino
Resumo
A utilização de supercomputadores necessita investimento de alto custo, o que para muitos é
um grande problema, porém este artigo irá tratar de Clusters HPC, uma solução alternativa
que para muitas universidades e empresas vem atendendo a necessidade de alta performance
de processamento de forma muito mais viável, além disso apresenta os seus principais
conceitos.
Palavras-chave: Cluster HPC, Custo, Alta Performance.
Introdução
Em busca de um poder de processamento semelhante ao dos supercomputadores a um
custo imensamente inferior, surgiram estações de trabalho com múltiplos elementos de
processamento, agrupados por barramentos de comunicação de altíssima velocidade, capazes
de distribuir toda a carga gerada pelas aplicações entre os elementos de processamento,
garantindo assim um tempo consideravelmente reduzido na resolução das aplicações, e
melhorando significativamente o desempenho.
É construído muitas vezes a partir de computadores convencionais, sendo que estes
vários computadores são ligados em rede e comunicam-se através do sistema de forma que
trabalham como se fosse uma única máquina de grande porte. A idéia inicial que conduz ao
cluster foi desenvolvida na década de 1960 pela IBM como uma forma de interligar grandes
mainframes, visando obter uma solução comercialmente viável de paralelismo.
Na prática o Cluster HPC é utilizado em diversas aplicações onde haja a necessidade
de alto desempenho de processamento como: pesquisas climáticas, sequenciamento genético,
estudos geofísicos, simulação de explosões nucleares, servidores web, aplicações financeiras,
mecanismos de busca, etc.
1 Cluster
Para PITANGA (2003), um cluster é um sistema que compreende dois ou mais
computadores, ligados em rede, na qual trabalham em conjunto para executar aplicações ou
realizar outras tarefas, de tal forma para que os usuários que os utilizam tenham a impressão
que somente um único sistema responde para eles, criando assim uma ilusão de um recurso.
Este conceito é denominado transparência do sistema. Utiliza-se de um tipo especial de
sistema operacional classificado como sistema distribuído. Como características fundamentais
para a construção destas plataformas incluem-se elevação da confiança, distribuição de carga
e desempenho.
2
2 Aplicações para Clusters
Os clusters podem ser usados para uma infinidade de aplicações. Basicamente, para
qualquer uma que exija processamento pesado. Como exemplos de aplicações, temos previsão
meteorológica (previsão do tempo e condições climáticas), simulações geotérmicas (ou seja,
simulação de eventos no solo), renderização de efeitos especiais (muito usado em filmes),
simulações financeiras, distribuição de carga, etc.
Basicamente, qualquer tipo de aplicação crítica, ou seja, aplicações que não podem
parar de funcionar ou não podem perder dados (como os sistemas de bancos, por exemplo),
podem utilizar as tecnologias de cluster, desde que devidamente configurados para não serem
sujeitas a falhas graves. Assim, o cluster deve contar com nobreaks ou geradores que
garantam o funcionamento do sistema mesmo nos casos de queda de energia, além de meios
de manutenção e detecção de falhas eficientes.
3 Cluster de Alto desempenho – HPC (High performance computing).
A computação de alto desempenho é uma necessidade em certos ramos da pesquisa
científica e do desenvolvimento de software. Nas últimas décadas muita pesquisa tem sido
feita e muitos computadores de alto desempenho têm sido montados. Normalmente são
equipamentos caros. Na última década, entretanto, tem se consolidado uma nova tendência,
que são os clusters de alto desempenho. Estes consistem em criação de computadores
paralelos a partir de computadores comuns encontrados no mercado, atingindo o alto
desempenho em computação com um custo baixo.
Também conhecido como cluster de alta performance ele funciona permitindo que
ocorra uma grande carga de processamento com um volume alto de gigaflops em
computadores comuns e utilizando sistema operacional gratuito o que diminui seu custo.
Este modelo de cluster aumenta a disponibilidade e performance para as aplicações,
particularmente as grandes tarefas computacionais. Uma grande tarefa computacional pode
ser dividida em pequenas tarefas que são distribuídas ao redor das estações (nodos), como se
fosse um supercomputador massivamente paralelo. É comum associar este tipo de cluster ao
projeto Beowulf da NASA. Estes clusters são usados para computação cientifica ou análises
financeiras, tarefas típicas para exigência de alto poder de processamento.
Medidas de Desempenho de Computadores (operações de ponto flutuante por segundo) :
megaflop 106
gigaflop
109
Teraflop 1012
petaflop
1015
Exaflop
1018
zettaflop 1021
yottaflop 1024
3
4 Cluster Beowulf
Recebeu esse nome, pois se assimila muito com o lendário herói inglês, pois enfrenta
um poderoso adversário, o alto processamento. A versão literária enfrenta batalhas contra
monstros e dragões, enquanto a real se encontra como uma alternativa eficiente e de baixo
custo à computação que demanda um grande poder de processamento, que até então era
dominada pelo monopólio dos grandes fornecedores.
O sistema é dividido em um nodo controlador denominado front-end (particularmente
denomino de nó mestre), cuja função é controlar o cluster, monitorando e distribuindo as
tarefas. Os demais nós são conhecidos como clientes ou backends (bem eu denomino nós
escravos), e são exclusivamente dedicados para processamento das tarefas enviadas pelo nó
controlador, e não existe a necessidade de teclados e monitores, e eventualmente até sem a
utilização de discos rígidos (diskless), e podem ser acessadas via login remoto (telnet ou ssh).
Os nós principais (front-end) desempenham duas funções importantes: funcionam
como servidores de arquivos e como gateways para o ambiente externo ao cluster. Como
servidor de arquivo, os nós principais oferecem mecanismos para armazenar arquivos de
usuários e arquivos dos demais clusters. No papel de gateway, eles permitem que os demais
nós do Cluster, se necessário, possam acessar qualquer computador, justificando, assim, o
porquê de os nós principais possuírem duas interfaces de rede.
Os demais nós do Cluster (backends), executam os processos paralelamente, sendo
esta a sua única função. Como as tarefas são executadas de maneira paralela, as aplicações
devem ser escritas atentando-se para esta condição, a fim de se explorar ao máximo esta
arquitetura.
Figura 1. Cluster Beowulf Típico.
O que distingue o Cluster Beowulf dos outros tipos são as seguintes características:
- A conexão dos nós pode ser feita por redes do tipo Ethernet;
- Existe um servidor responsável por controlar todo o cluster, principalmente quanto a
distribuição de tarefas e processamento. Este servidor é chamado de Front-end;
- O sistema operacional é baseado Linux, sendo necessário que ele contenha todos os
programas para cluster;
4
- Podem-se usar computadores comuns, inclusive modelos considerados obsoletos;
- Não é necessário usar equipamentos próprios para clusters. Basta equipamentos comuns às
redes e os tradicionais PCs.
De maneira generalizada, o Cluster Beowulf permite a construção de sistemas de
processamento que podem alcançar altos valores de gigaflops. Isso tudo com o uso de
computadores comuns e de um sistema operacional com código-fonte livre, ou seja, além de
gratuito, pode ser melhorado para a sua finalidade.
Entre os requisitos para o sistema operacional de um Cluster Beowulf, estão a
necessidade de se ter as bibliotecas para Parallel Virtual Machine (PVM) ou para Message
Passing Interface (MPI). Ambos os tipos são usados para a troca de mensagens entre os nós
do cluster. O MPI é mais avançado que o PVM, pois pode trabalhar com mensagens para
todos os computadores ou para apenas um determinado grupo (por exemplo, quando somente
este grupo vai realizar determinada tarefa).
Os clusters não servem para processar dados em tempo real, mas apenas para
processar grandes quantidades de dados, que podem ser quebrados em pequenas partes e
divididos entre os vários computadores. Uma área onde são populares é na aplicação de
efeitos especiais e renderização de imagens para filmes de cinema. Há inclusive casos de
filmes como o Shrek e o Final Fantasy, que foram renderizados inteiramente utilizando
clusters Beowulf.
5 Cluster Mosix
Mosix é a sigla para Multicomputer Operating System for UNIX. Trata-se de um
projeto que teve inicio nos anos 80 em Jerusalem é um conjunto de ferramentas de cluster
para Linux, tem como característica principal, fazer com que o cluster se comporte como um
grande e único supercomputador lançando mão da migração preemptiva de processos e
balanceamento dinâmico de carga.
A implementação da Migração Preemptiva faz com que um processo em um nó com
poucos recursos seja transportado para outro nó que tenha maior disponibilidade, melhorando,
assim, o desempenho do sistema.
Diferente do Beowulf no Mosix não existe um nó mestre que controle os outros nós do
cluster utiliza algoritmos descentralizados a grande vantagem nesse tipo de cluster é a
possibilidade de incluir ou remover um computador do cluster sem que o desempenho seja
afetado, nenhum distúrbio seja notado.
O Mosix possui também algoritmos que monitoram e identificam qual a velocidade
dos nós, a memória livre disponível, a carga da CPU, a comunicação interprocessos (IPC) e a
velocidade de acesso de cada processo. Outra vantagem do Mosix e ser transparente para o
usuário. Assim que é iniciado um aplicativo o Mosix envia os processos ao melhor
computador no momento na rede e monitora sua execução. Tudo isso sem que o usuário
perceba ou seja de forma transparente.
O sistema Mosix é utilizado em diversas aplicações dentre elas Processos CPU-bound:
processos com longos tempos de execução e baixo volume de comunicação entre processos,
ex: aplicações científicas, engenharia e outras aplicações que demandam alta performance de
computação, Grandes compilações, Banco de dados que não usem memória compartilhada.
O MOSIX é eficiente na tarefa de distribuição dinâmica de processamento entre os
computadores do cluster. Esse tipo, assim como o Beowulf, é muito utilizado por
universidades em pesquisas e projetos. Por ser baseada em Linux, sua implementação é
transparente, além de ser relativamente fácil de instalar.
5
Considerações Finais
Quando a necessidades de alto desempenho e de alta disponibilidade em um projeto
que ainda possui limitações em orçamentos, procuram-se alternativas que possam suprir todas
essas necessidades. Assim sendo, forma-se um contexto favorável para a utilização do
Cluster, que possui baixo custo de implantação, se comparado a outras soluções proprietárias,
como por exemplo, os supercomputadores, e pode ser desenvolvido sobre uma plataforma
aberta, tirando todas as vantagens do desenvolvimento dinâmico do software livre.
Referências Bibliográficas
PINTO, Hudson J. L., SILVA, Michel P. e SILVEIRA, Gabriel D. Ambientes de Alto Desempenho
utilizando Cluster de Computadores: Universidade de Formiga, Departamento de Ciência da
Computação, Instituto de Ciências Sociais Aplicadas e Exatas. Formiga, MG, Brasil.
PITANGA, Marcos. Computação em cluster: o estado da arte da computação. Rio de Janeiro:
Brasport Livros e Multimídia Ltda, 2003.
SOUZA, Marcelo S. Análise do Servidor Web Apache em Clusters OpenMosix com Memória
Compartilhada Distribuída: CEBACAD, Centro Baiano de Computação de Alto Desempenho,
Universidade Católica do Salvador (UCSal), Salvador, Bahia – Brasil.
Download