Sunteți pe pagina 1din 6

Ambientes de Alto Desempenho utilizando Cluster de

Computadores
Gabriel Damaso da Silveira
Hudson de Jesus Lamounier Pinto
Michel Pires da Silva
Universidade de Formiga

Departamento de Ciência da Computação

Instituto de Ciências Sociais Aplicadas e Exatas

Av. Dr. Arnaldo de Senna, 328. Água Vermelha, CEP 35570-000 Formiga, MG, Brasil

{gsilveira, hlamounier, michel}@comp.uniformg.edu.br

Resumo

As máquinas massivamente paralelas, como os supercomputadores, são utilizadas para resolver problemas
que exigem uma intensa movimentação de um grande volume de dados complexos, porém esse tipo de
equipamento não é um bem de fácil aquisição. Muitas vezes se torna inviável o seu uso por universidades
e/ou empresas de pequeno e médio porte, devido ao seu alto custo. Atualmente é possível minimizar tais
custos e garantir o alto desempenho necessário, utilizando-se para isso técnicas baseadas em clusters, as quais
compreendem o uso de computadores de fácil aquisição e softwares de livre distribuição. O objetivo principal
desse artigo é pesquisar e estudar algumas das técnicas de cluster existentes, e implementar e realizar testes
comparativos baseados em benchmarks entre duas delas, o Beowulf e o openMosix.

Palavras chaves: Alto Desempenho, Clusters, Beowulf, openMosix, Clusters Linux.

1 Introdução
A constante demanda por maior poder computacional vem gerando a necessidade de processadores cada
vez mais rápidos [7]. Em algumas aplicações esse poder computacional não é encontrado em computadores
com apenas um único elemento de processamento. As soluções apresentadas para esse problema são bastante
caras e de pouca escalabilidade, pois torna-se necessário a aquisição de supercomputadores de alto custo.
Com o objetivo de suprir a demanda pelo alto poder computacional, foram desenvolvidos equipamentos
como os supercomputadores, estações de trabalho com múltiplos elementos de processamento, interligados
por barramentos de comunicação de altíssima velocidade, capazes de distribuir toda a carga gerada pelas apli-
cações entre seus elementos de processamento, garantindo assim em um tempo consideravelmente reduzido,
a resolução das aplicações, atingindo uma alta performance [4].
A aquisição de supercomputadores, nem sempre chega a ser a alternativa mais adequada, devido ao
altíssimo custo, podendo ainda considerar outros fatores como: possuem softwares proprietários e caros; um
elevado custo para manutenção; possuem uma grande depêndencia dos fornecedores; grande diculdade de
atualização [8].
Como alternativa aos recursos oferecidos pelos supercomputadores, a um custo relativamente baixo,
surgiu a computação baseada em clusters. Pode-se descreve-los como o agrupamento de dois ou mais PC's
trabalhando em paralelo para solucionar determinados problemas. Dentre suas principais características, os
clusters apresentam como destaque [7]:
• Alta Disponibilidade: prover uma alta disponibilidade de recursos e serviços o maior tempo possível,
onde há uma grande dependência dos computadores;
• Alto Desempenho: resolução de problemas muito complexos em tempo hábil;
• Balanceamento de Carga: distribuição equilibrada do processamento em todos os nós que compõe o
cluster;
• Escalabilidade: facilidade de adicionar novos nós para melhoria da performance, à medida que se cresce
a carga de trabalho;
• Tolerância à falhas: o aumento da conabilidade do sistema, a medida que algum dos nós venha a
falhar, o sistema não ca prejudicado;
• Custo Reduzido: custos reduzidos com processamento de alto desempenho utilizando hardware de fácil
disponibilidade, como PC's(Computadores Pessoais);
• Independência de fornecedores: utilização de hardware aberto, software livre e independência de fab-
ricantes e licenças de uso.
Visando abordar o tema cluster em maiores detalhes, esse trabalho tem como nalidade explanar duas
técnicas de clusters mundialmente conhecidas, openMosix [10] e Beowulf [9].
O openMosix é uma extensão do kernel Linux do sistema operacional GNU/Linux. Sua função é criar
uma certa tranparencia para o usuário, demonstrando a ele o conjunto de máquinas como um único su-
percomputador. Para tanto, essa técnica faz uso de migração preemptiva de processos e balanceamento
dinâmico de carga [7].
A migração preemptiva de processos é capaz de migrar qualquer processo do usuário, em qualquer instante
para qualquer nó disponível de maneira transparente [8]. Para tanto, o openMosix faz uso de um algoritmo de
balanceamento dinâmico de carga e prevenção contra a falta de memória. Os mesmos são descentralizados,
não existindo assim a conguração de controlador mestre e nós escravos. Ao contrário do Cluster Beowulf, no
openMosix, cada nó é um mestre para os processos que são criados localmente, e um servidor para processos
remotos, migrados de outros nós do cluster. Sendo assim, é possível acrescentar ou remover qualquer nó do
cluster a qualquer momento, com o mínimo de distúrbios no sistema. Suas funções vão além das aplicações
paralelas, sendo possível a execução de operações sequênciais de forma transparente. Outra característica
interessante é que por ser um projeto de Software Livre, garante-se um baixo custo de montagem e atingindo
um alto desempenho.
Já o projeto Beowulf foi desenvolvido na NASA em 1994 pelos pesquisadores Thomas Sterling e Donald
J. Becker [12]. Essa técnica foi idealizada para suprir a necessidade de um equipamento que processasse na
ordem de um gigaop(um bilhão de operações em ponto utuante por segundo). Mas um supercomputador
desse nível, na época girava em torno de um milhão de dólares, o que não era viável, devido ao equipamento
ter seu uso restrito apenas um grupo de pesquisadores. A partir de então os pesquisadores tiveram a idéia de
interligar 16 microcomputadores com processador 486 DX4, que trabalhassem em paralelo para atender às
necessidades da equipe. Foi então que surgiu a técnica de cluster Beowulf. Uma das mais famosas, utilizando
hardware de fácil aquisição e software totalmente de livre distribuição.
Um típico cluster Beowulf é constituído por vários nós escravos (back-end) controlados por um com-
putador principal (front-end), ao qual se tem acesso direto, interligados por uma rede como a Ethernet, e
fazendo um gateway entre o cluster e uma LAN. O nó controlador é responsável por realizar a distribuição
das tarefas aos nós escravos, que são responsáveis por processá-las e retornar o resultado ao nó controlador.
Os nós escravos, em alguns casos podem ser constituídos por computadores sem monitor, teclado, mouse,
placa de vídeo, e em algumas situações até sem disco rígido, pois são estações exclusivamente dedicadas ás
tarefas do cluster, não utilizadas para outra nalidade, o que se torna o diferencial entre o cluster openMosix
e o Beowulf.
Visando um melhor detalhamento deste artigo junto as duas técnicas de cluster apresentadas acima,
tem-se na seção 2 os objetivos do trabalho, na seção 3 será explanado uma análise das técnicas de cluster
existentes para ns comparativos e na seção 4 serão realizados alguns testes comparativos entre a técnica de
cluster Beowulf [9] e o cluster openMosix [10].

2 Objetivos do Trabalho
Existem atualmente diversas técnicas baseadas em clusters, sendo cada qual voltada para uma determinada
área de aplicação, como soluções para computação de alto desempenho, alta disponibilidade e balanceamento
de carga. O principal objetivo desse trabalho é estudar essas diferentes técnicas de cluster e compará-las
com o openMosix e o Beowulf, possibilitando com isso, alcançar as vantagens e as desvantagens que a
implementação de ambos irá nos disponibilizar.
Tendo em vista a criação de uma plataforma de estudos e o melhoramento dos laboratórios de informática
do curso de Ciência da Computação da Universidade de Formiga(UNIFOR-MG), esse trabalho além de
contribuir para pesquisas na área de clusters, abrirá campo para iniciativas como: estudos direcionados na
plataforma GNU/Linux e programação paralela em ambientes de alto desempenho. O equipamento usado
para a montagem do cluster são microcomputadores que já não atendem às expectativas do corpo discente
em alguns aspectos, de modo a não afetar o uso dos laboratórios de informática para atividades acadêmicas,
levando em consideração que quanto mais nós existirem no cluster, e quanto maior a velocidade do canal de
comunicação, maior será o desempenho alcançado.
A gama de atividades que podem ser trabalhadas com o desenvolvimento desse ambiente é vasta, trazendo
um enorme benefício a todos usuários do cluster, que poderão usufruir dos recursos oferecidos pelo mesmo,
não apenas localmente, como também remotamente.

3 Análise das Técnicas de Cluster Existentes


Clusters de computadores podem ser subdivididos em várias categorias, onde cada uma delas tem sua própria
característica, sendo utilizada para uma nalidade especíca, seja para manter um serviço crítico no ar, para
dar suporte a aplicações cientícas que exigem um grande poder computacional, para distribuir o uxo
entrante em um determinado servidor, enm, são várias as classicações que os clusters podem se submeter,
entre elas as mais notadas são [5]:
• Alta Disponibilidade (High Availability (HA) and Failover): esse modelo tem a nalidade principal de
prover uma alta taxa de conança, mantendo ao máximo tempo disponível, os serviços e recursos de
forma ininterrupta. Sua forma mais básica de funcionamento é substituir um nó do cluster no momento
que este vier a falhar (failover) por outro, de modo transparente ao usuário. Geralmente são usados
por servidores web, servidores de arquivos e aplicações, bases de dados de missões críticas;
• Balanceamento de Carga (Load Balancing): com a função de distribuir as requisições feitas aos elemen-
tos que o compõe, esse cluster mantém de forma equilibrada o tráfego gerado a determinados serviços,
além redistribuir as requisições enviadas a determinado nó, aos outros nós do cluster, caso este venha
a falhar. Esse tipo de cluster é comumente utilizado em fazendas de servidores web (web farms);
• Combinação HA & Load Balancing: essa técnica combina as características do cluster de Alta Disponi-
bilidade juntamente com as características do cluster de Balanceamento de Carga, provendo assim uma
grande escalabilidade e disponibilidade de serviços e recursos, bastante utilizado em servidores de web,
mail, ftp;
• Alto Desempenho (High Performance Computing (HPC)): utilizado para atender a tarefas que exigem
um grande poder computacional, esse tipo de cluster trabalha de modo a distribuir a carga de processa-
mento entre os elementos que compõe o cluster, reduzindo assim o tempo gasto com seu processamento
paralelo e distribuído. Seu uso se diverge em áreas que geram um grande volume de dados, como sim-
ulações nanceiras, renderização de efeitos especiais em lmes, meteorologia, e em várias outras que
necessitam de um alto poder de processamento.
Grandes corporações precisam de um grande poder computacional e exigem máquinas de alto desem-
penho, outras trabalham com serviços de missão critica e precisam de alta disponibilidade para garantir o
funcionamento de certos equipamentos. Sendo que manter apenas um computador realizando tarefas im-
portantes, não é garantia segura que o serviço vai estar sempre disponível, pois problemas de hardware e
software podem causar a interrupção do serviço.
Os clusters fornecem desempenho e tolerância a falhas, não encontrada em qualquer sistema com Multi-
processamento Simétrico (SMP). Também oferecem maior disponibilidade, pelo fato de que se um nó falhar,
os outros podem continuar fornecendo serviços de dados e a carga de trabalho dos nós defeituosos pode
ser redistribuída para o restante dos nós cluster. Sendo inúmeras as vantagens em se utilizar clusters de
computadores.
3.1 O Cluster Beowulf

Essa técnica de cluster herdou o nome Beowulf de um antigo poema inglês escrito por um anônimo cristão.
O qual narra as três batalhas do herói Beowulf contra o grande gigante Grendel, a mãe do gigante e um
poderoso dragão que guardava um tesouro. 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 eciente 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 [2].
Thomas Sterling e Don Becker, pesquisadores do Goddard Space Flight Center(NASA), desenvolveram
o primeiro cluster de PCs em 1994. O que se foi de fato uma alternativa eciente que alcançava um
desempenho satisfatório, o que podia se comparar a um supercomputador paralelo da época. E com os
poucos recursos nanceiros que o grupo de pesquisa possuía, essa foi uma solução de baixo custo e que
trouxe um grande benefício. Utilizando hardware encontrado nos tradicionais computadores pessoais, foram
utilizados 16 microcomputadores com processadores 486 DX4, placas de rede Ethernet, sistema operacional
GNU/Linux de livre distribuição e de código fonte aberto. O valor gasto para a construção dessa plataforma
foi U$ 50.000,00, o que representava em torno de dez por cento de um supercomputador com desempenho
equivalente da época [8].
Estes microcomputadores foram adequados para atender às necessidades dos cientistas, utilizando bib-
liotecas para troca de mensagens (PVM E MPI) de distribuição livre, e com algumas alterações no sistema
operacional Linux, dotando-o de algumas características que ajudaram no desenvolvimento para uma ambi-
ente de execução de aplicações paralelas.
Segundo Donald Becker, um cluster de PCs, aplicado na resolução de problemas que exigem um grande
desempenho, deve atender ás seguintes características [8]:
• Utilização de componentes comuns, de fácil disponibilidade no mercado de informática;
• Processadores dedicados na execução de tarefas, ao invés de se usar o tempo ocioso destes;
• Uma rede de sistema privada para os nós computacionais;
• Independência de fornecedores de hardware e software;
• Periféricos escaláves;
• Software Livre de código fonte aberto;
• Uso de ferramentas de computação distribuída disponível livremente com alterações mínimas;
• Retorno à comunidade do projeto e melhorias.

O cluster Beowulf compreende um nó mestre (front-end), que é responsável por distribuir as tarefas
aos demais nós do cluster,que são estações denominadas escravos ou back-ends, estes são exclusivamente
dedicados às tarefas do cluster e recebem as tarefas enviadas pelo nó mestre. Essa técnica passou a ser
amplamente explorada e utilizada para vários ns, onde o objetivo é a aquisição de um ambiente capaz de
processar grandes volumes de dados [8].

3.2 O Cluster openMosix

O projeto openMosix surgiu em 10 de fevereiro de 2002, como uma extensão do projeto Mosix, ele é baseado na
GPLv2, para manter os privilégios dessa solução para cluster Linux disponível com código aberto, coordenado
pelo Ph.D Moshe Bar[1].
A técnica openMosix é uma extensão ao kernel linux para clustering, que possibilita a conversão de uma
rede clássica de computadores desktop num supercomputador para aplicações linux [8].
Dentre as possíveis congurações para esse tipo de cluster, tem-se:
• Utilizar uma distribuição Linux diretamente de um CD de inicialização. Estas distribuições são voltadas
exatamente para a montagem de clusters, facilitando muito o aprendizado de iniciantes no mundo dos
supercomputadores. Pode-se citar como exemplo de distribuições de inicialização através de CD, a
distribuição ClusterKnoppix [3].
• Como segunda opção tem-se a utilização de uma distribuição Linux qualquer com instalação física
na máquina. Deve-se utilizar um kernel Linux e aplicar um patch neste kernel, habilitando-o às
necessidades do openMosix. A distribuição Linux a ser utilizada depende muito da opção da pessoa
responsável pelo cluster, pois o importante é o kernel Linux estar habilitado para trabalhar com o
openMosix.
O openMosix que faz com que um cluster de computadores se comporte como um grande e único super-
computador através da utilização de migração preemptiva de processos e balanceamento dinâmico de carga
[8].
A implementação da Migração Preemptiva de processos é capaz de migrar qualquer processo do usuário,
em qualquer instante e para qualquer nó disponível de maneira transparente. Para atingir um melhor
desempenho este é controlado por Algoritmos de Balanceamento Dinâmico de Carga e de prevenção contra
falta de memória. Estes algoritmos são projetados para responder dinamicamente as variações da utilização
dos recursos nos diversos nós. Isto garante que o cluster se comporte muito bem, seja numa conguração
com poucas ou com muitas maquinas. Ou seja, se o programa que estamos rodando em um máquina estiver
consumindo muitos recursos, o sistema varre a rede e procura uma máquina que esteja mais disponível
no momento, em termos de memória e CPU, e desloca seu programa ou parte dele para ser executado
remotamente, fazendo com que o sistema ganhe desempenho.
Também como características do openMosix destacam-se:
• Escalabilidade: completamente transparente, basta lançar um novo nó na rede sem requisitos adi-
cionais, e será automaticamente acoplado como um nó pelo cluster;
• Adaptatividade: a arquitetura de cada nó é completamente indiferente, desde que a versão do Open-
Mosix seja a mesma;
• Não necessita recompilação das aplicações: qualquer aplicação poderá beneciar desse sistema sem
alterações ao código.
Desvantagens do openMosix:
• processos com baixa computação, como aplicativos com alta comunicação interprocessos;
• aplicações com memória compartilhada;
• aplicações dependentes do hardware que necessitam de acesso a um periférico de um nó em especial;
• aplicações com muitas threads não ganham desempenho;
• não se ganha desempenho quando se roda um único processo, tal como um browser, por exemplo.
Sendo assim o sistema openMosix comporta-se de modo semelhante a um sistema do Multiprocessamento
Simétrico, que permite a um determinado sistema operacional distribuir tarefas entre dois ou mais proces-
sadores permitindo que esses compartilhem o processamento de instruções requisitadas pelo sistema, mas
com a grande vantagem de ser facilmente escalável até largas centenas de nós.

4 Comparação entre os cluster Beowulf e openMosix


Não se pode determinar qual das técnicas de cluster é melhor, isso depende da necessidade que se tem para
o uso de um cluster, tanto o Beowulf como o openMosix utiliza o kernel do Linux como base, e fazem uma
rede de computadores comportarem como uma única máquina virtual paralela, distribuindo a carga gerada
por aplicações.
Uma das principais diferenças está no fato de que no openMosix não há a necessidade de um nó controlador
(mestre), cada estação de trabalho do openMosix é um mestre, pois este verica na rede qual máquina está
menos sobrecarregada para realizar o balanceamento da carga. Enquanto no Beowulf há a necessidade de
um nó mestre, também denominado como front-end, que controla a distribuição das tarefas entre os nós
escravos (back-ends).
Outro fator que diferencia os dois tipos de cluster, é que o cluster Beowulf tem a capacidade de dividir
grandes volumes de dados em pequenas partes, para que cada nó do cluster processe uma parte, enquanto
o cluster openMosix migra apenas processos inteiros dos usuários para outros nós da rede, e recolhe os
resultados.
No cluster openMosix, todos os computadores da rede podem ser utilizados normalmente, e quando um
deles estiver sobrecarregado, é feita a migração de processos para um computador menos carregado, sempre
procurando balancear a carga do cluster. No Beowulf não é possível utilizar os nós do cluster para tarefas
que não seja exclusivamente destinadas a ele, todos os nós do cluster são altamente dedicados às tarefas que
lhe são enviadas pelo nó mestre, utilizando as bibliotecas de passagem de mensagens MPI ou PVM.
As duas tecnologias de cluster, possibilitam a resolução de diversos problemas que envolvem grande
volume de processamento. Por exemplo o openMosix além de executar aplicações paralelas, pode contribuir
para melhoria do desempenho em uma determinada rede de computadores, e o Beowulf por ser uma técnica
muito potente de cluster, é amplamente explorado pelas universidades e aplicado para diversas situações em
que se necessite de um ambiente de alto desempenho.

5 Considerações Finais
A aplicação das técnicas de clusters, em cursos que com matérias ans à computação, pode vir a ser a alter-
nativa mais rápida e viável em termos de custo/benefício para agregar a tecnologia paralela nas diciplinas
que até então se mostravam totalmente teóricas. Neste artigo foram apresentadas duas das diversas técni-
cas existentes, as quais serão aplicadas no Curso de Ciência da Computação da Universidade de Formiga
(UNIFOR-MG). O objetivo é deixar a disposição do aluno e dos professores um ambiente paralelo, o qual
poderá vir a ser utilizado como laboratório de novas pesquisas associadas ao curso.
Uma vez implementada as duas técnicas propostas, serão realizados testes comparativos de desempenho
a m de observar qual dessas pode vir a melhor suprir as necessidades do curso. Tais testes serão realizados
aplicando-se benchmarks paralelos para detalhar o desempenho em MIPS (milhões de instruções por segundo)
que cada técnica apresenta quando é submetida a uma quantidade especíca de carga. Com os resultados,
objetiva-se identicar se o OpenMosix e/ou o Beowulf podem apresentar caracteríscias distintas ou próximas
ao serem avaliadas segundo o balanceamento de carga.

Referências
[1] Emerson Alecrim. Cluster. 2005.
[2] Ataualpa Albert Carmo Braga. Aspectos técnicos envolvidos na construção de um cluster beowulf. 2003.
[3] março de 2006 Cluster Knoppix. http://bofh.be/clusterknoppix/.
[4] Lidiane Lins da Rocha. Clusters - visao geral. 2004.
[5] Madianita Bogo Daniel Cândido de Oliveira, Yzaac Gonçalves da Silva. Desenvolvimento de um cluster
de alto desempenho com pvm. 2004.
[6] R. KAWASAKI. Protocolo otimista time warp para sincronização de simulação distribuída orientada a
eventos. Master's thesis, USP São Carlos, 1998.
[7] Marcos Pitanga. Computação em cluster. 2003.
[8] Marcos Pitanga. Construindo Supercomputadores com Linux. 2 edition, 2004.
[9] Beowulf Project. http://www.beowulf.org, março de 2006.
[10] Open Mosix Project. http://www.openmosix.sourceforge.net, março de 2006.
[11] T. Sterling. Beowulf Cluster Computing with LINUX. 2002.
[12] Hugo Emanuel Gonçalves Teixeira. Clusters beowulf. Master's thesis, Faculdade de Engenharia da
Universidade do Porto, 2000.

S-ar putea să vă placă și