Supercomputadores Caseiros: Construindo Clusters com o Linux
Por Marcos Pitanga em 07 de fevereiro de 2002
O nosso colaborador Marcos Pitanga construiu uma rede com vários computadores e distribuiu o processamento de um programa entre eles, aumentando o desempenho de processamento. Maluquice? Cena de ficção científica? Também achamos até vermos as fotos enviadas (ver abaixo). É real. É possível. Leia nesse artigo como Pitanga construiu esse projeto, chamado Multipingüim, usando PCs comuns e o sistema operacional Linux.
Figura 1: Projeto Multipingüim.Introdução
A constante demanda de poder computacional vem gerando a necessidade de processadores cada vez mais rápidos. Na computação de alto desempenho, utilizada para programação científica, multimídia, gerenciamento de grandes volumes de dados etc., a solução passa por máquinas com múltiplos processadores ou ainda clusters proprietários fornecidos por grandes empresas. Ambas soluções são custosas e de pouca escalabilidade. O projeto Multipingüim viabiliza a computação de alto desempenho e a criação de novos cursos, como os de programação paralela, utilizando microcomputadores ligados em rede, e sistema operacional Linux, que possui distribuição gratuita. As bibliotecas de programação também são distribuídas sem ônus e são perfeitamente compatíveis com as de solução proprietária.
Metodologia
O primeiro passo consiste em buscar uma plataforma que tornassem viável o uso de ambientes distribuídos, permitindo programação paralela, utilizando apenas produtos de distribuição gratuita. Com base nos estudos da NASA, optei pela plataforma Linux, distribuição RedHat 7.1 e Conectiva 7.0 com a biblioteca MPI para troca de mensagens. Para os testes de implementação foi utilizado um laboratório montado para esta finalidade contendo 3 microcomputadores ligados em rede de 100 mbits.
A melhor solução seria utilizar a própria estrutura de uma rede de computadores, um sistema operacional de distribuição gratuita e um conjunto enorme de ferramentas de programas gratuitos disponíveis que transforma esta rede de computadores em um supercomputador de baixo custo, para execução de programação paralela.
Várias vantagens podem ser colocadas neste tipo de filosofia de alto desempenho de computação, são elas:
- Quanto mais computadores na rede mais rápido fica sua estrutura;
- Componentes de fácil disponibilidade;
- Fácil manutenção;
- Independência de fornecedores de hardware;
- Custos muito baixo;
- Disponibilidade para criação de cursos de computação paralela;
- Se um computador do sistema parar não precisa esperar seu conserto para recomeçar seu trabalho;
- Você pode construir um na sua própria casa para colocar em prática seus estudos em programação paralela sem gastar muito dinheiro ou perder seu precioso tempo deslocando-se para instituições de ensino (normalmente universidades federais) para testar seus programas.
- Custo zero para o sistema operacional e ferramentas de apoio (podem ser retirados da internet gratuitamente);
Este tipo de serviço é conhecido como clustering de alto desempenho, um tipo de solução de alta performance de computação de baixo custo, com altos índices de aproveitamento. Como referência a podemos citar a produção do filme Titanic, onde 105 computadores montados em uma rede local de alta velocidade, equipados com sistema operacional gratuito (Linux), microcomputadores tradicionais da Digital Corporation foram utilizados para realizar os cálculos de renderização das imagens, 40% a menos do que se tivesse adquirido um supercomputador para realização desta mesma tarefa, e que no decorrer do tempo poderia ficar obsoleto.
Neste tipo de filosofia entra o projeto Multipingüim, que vem a demonstrar nos laboratórios da UNESA este tipo de implementação com todas as suas vantagens e a possibilidade de abertura de cursos inéditos em uma universidade particular em computação paralela.
Construindo o Multipingüim
As versões utilizadas no Multipingüim foram Conectiva Linux 7.0 (kernel 2.2.19cl) e o Red Hat 7.1 (Kernel 2.4.2). Foi utilizada uma arquitetura de cluster denominada Beowulf, que vemos na Figura 2.
Figura 2: Cluster Beowulf típico.O computador principal (front-end) denominado pinguim.mestre, é o equipamento na qual está instalado:
- A distribuição do sistemas de arquivos via NFS (Network File System);
- Configuração do relacionamento de confiança entre os computadores escravos hosts.equiv, evitando assim a implementação de um servidor de autenticação NIS (Network Information Service);
- Servidor RARP;
- Distribuição de ip’s dinâmicos via protocolo DHCP;
- Resolução de nomes via arquivo hosts - evita latência não utilizando assim o serviço de DNS;
- Serviço de boot remoto (TFTP);
- Acesso remoto aos nós através de rlogin, ssh, ftp, rsh, rwho, rwall;
- Gerência dos nós através de duas aplicações: bWatch, SCMS (Smile Cluster Management System);
- Bibliotecas paralelas: MPICH 1.2.2, PVM 3.4.4;
- Bibliotecas matemáticas: ATLAS, BLAS, SCALAPACK, FFTW;
- Aplicações de renderização de imagens com o PVMPOV e patch para MPI;
- Escalonadores de tarefas: SQMS, MAUI;
- Analisadores de Performance - NetPipe, NetPerf, UnixBench, LMbench, Stream, Bonnie;
- Sincronização através de rsync;
E uma futura implementação ainda não testada é a colocação de um distribuidor de processos dinâmicos no cluster como o Bproc (patch ao kernel do Linux desenvolvido pela NASA) e o KSIX (processo daemon da Kasetstat University da Tailândia);
Observe que é interessante que exista uma alta disponibilidade e redundância de hardware no controlador mestre ou que separe alguns serviços para outros servidores tais como distribuição do sistemas de arquivos e gerenciamento do cluster.
Computador Mestre
- Dual Pentium III 550 MHz
- 512 KB de memória cache
- 384MB de SDRAM PC-133
- Gravador de CD HP 9100c
- Placa Mãe com chipset Intel810
- 2 (duas) placas de rede 3Com 3c509
- Host SCSI on-board Adaptec
- Disco rígido de 9,1 GB SCSI Ultra Wide
- 2 (dois) Discos rígidos de 4,3 GB SCSI
- Monitor de 17” SVGA Hansol
- Mouse Microsoft PS/2
- Teclado de 102 teclas
Computadores Escravos
- Quantidade: 02 (dois)
- Processador Pentium III 600 EB
- Placa de Rede 3Com 3C509 PCI
- Placa de Rede on-board SIS900 (utilizado para monitoramento remoto)
- Floppy Disk de 1,44 MB
- Placa mãe Pcchips modelo M756+
Estrutura da Rede Local
- Fast Ethernet 100 Mbps
- Switch TrendNet 10/100 8 portas - store and forward
- Cabos CAT5 padrão EIA 568A
- Rack de construção sob medida
- Chave Comutadora 4 x 4 x 4 para teclado, mouse e monitor
- Teclado, mouse e monitor para gerenciamento dos nós
Testes de Desempenho
Para testarmos s distribuição de processamento, usamos o programa Povray para renderizar uma imagem padrão (skyvase.pov). Usando apenas o micro mestre, essa renderização foi distribuída somente entre seus dois processadores (já que ele era um Dual Pentium III). Essa renderização levou 70 segundos, como vemos na Figura 3.
Figura 3: Renderização usando apenas o micro mestre, dividindo o processamento entre seus dois processadores (70 segundos).Distribuindo o processamento entre o computador mestre e um escravo (pinguim_01), o tempo de renderização caiu para 56 segundos, como vemos na Figura 4.
Figura 4: Renderização usando o micro mestre e um micro escravo (pinguim_01). 56 segundos.Distribuindo o processamento entre o computador mestre e os dois escravos, o tempo de renderização caiu para 30 segundos, como você pode converir na Figura 5.
Figura 5: Renderização usando os três micros. 30 segundos.Por último, distribuimos o processamento entre os três micros (um mestre e dois escravos) e ainda, no micro mestre, configuramos para ele distribuir o processamento entre seus dois processadores (já que, como vimos anteriormente, ele era um Dual Pentium III). Com isso, o tempo de renderização caiu para 21 segundos.
Figura 6: Renderização usando os três micros e os dois processadores do micro mestre. 21 segundos.Conclusão
Vimos que a execução sendo executada somente no micro mestre, mesmo dividindo o processamento entre seus dois processadores, o tempo de renderização foi de 70 segundos. Distribuindo esse processamento com mais duas máquinas, esse tempo caiu para incríveis 21 segundos. Isso demonstra como é válido a construção de supercomputadores classe Beowulf com PCs convencionais, a um custo que não é alto.
Originalmente em http://www.clubedohardware.com.br/artigos/Supercomputadores-Caseiros-Construindo-Clusters-com-o-Linux/370
© 1996-2012, Clube do Hardware. Todos os direitos reservados.
É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998.
Não nos responsabilizamos por danos materiais e/ou morais de qualquer espécie promovidos pelo uso das informações contidas no Clube do Hardware.