Documente Academic
Documente Profesional
Documente Cultură
Computadores
Gabriel Damaso da Silveira
Hudson de Jesus Lamounier Pinto
Michel Pires da Silva
Universidade de Formiga
Av. Dr. Arnaldo de Senna, 328. Água Vermelha, CEP 35570-000 Formiga, MG, Brasil
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.
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.
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].
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.
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.