terça-feira, 23 de novembro de 2010

Cluster de Alta Performance com PelicanHPC

Este é o primeiro tutorial sobre HPC(High Performance Cluster - Cluster de Alta Performance). A foco central do tutorial é COMO FAZER, então deixemos a "lorota" de lado e vamos logo pro que interessa.

Ferramentas necessárias:



PelicanHPC(imagem ISO)
VirtualBox(Ambiente de Testes)
Wireshark(para a análise de troca de mensagens dentro da rede do Cluster)

Configurando as Máquinas Virtuais
Não vou me prender em como se cria as máquinas virtuais no VirtualBox configuradas em rede sem um servidor DHCP presente(pré-requisito para o nosso sistema em Cluster, já que o Nó Master é quem vai assumir esse papel).



Nó Master(Front End) e Nó Escravo(Slave)
No VirtualBox criamos duas máquinas virtuais com o nome de PelicanHPC-Master_FrontEnd(Nó Master) e PelicanHPC-Slave(Nó Escravo)com as seguintes especificações:
*256 MB de Memória RAM
*CD-ROM
*Sem disco rígido
*Interface de Rede(no Master existem duas interfaces de rede, uma para a Internet e outra para a rede interna do Cluster.)
Nota.: Sabendo que o sistema executa na memória esteja certo de ter o suficiente para que tudo ocorra sem problemas.

Inicializando o Sistema

PelicanHPC: Nó Master e Nó Escravo


Inicializando o sistema e dando o boot pelo CD seguimos os passos abaixo:


Imagem1: PelicanHPC Nó Master - Boot

Selecione a opção Start Debian Live ou aguarde até que o contador termine e dê sequência selecionando por default a opção citada.


Imagem2: PelicanHPC Nó Master – Selecione o dispositivo de armazenamento permanente


Depois de carregar o sistema a tela seguinte será exibida(Imagem2):
A opção padrão ram1 armazena os dados na RAM, caso você queira selecionar um disco rígido ou pendrive basta digitar por exemplo hda1 ou sda5 de acordo com a sua partição (tenha certeza de que sua partição está formata em ext2 ou ext3).

Imagem3: PelicanHPC Nó Master – Scripts de configuração e arquivos de exemplo

Na tela acima(Imagem3) é exibida a mensagem perguntando se você deseja copiar para o dispositivo de armazenamento os scripts de configuração e arquivos de exemplo. Selecione Yes para confirmar.

Imagem4: PelicanHPC Nó Master – Altere a senha do usuário user

Para finalizar é exibido uma mensagem(Imagem4) para que você altere a senha do usuário user,altere da maneira que melhor lhe convir.

Imagem5: PelicanHPC Nó Master - Login

Assim que você confirmar, a tela de login (Imagem5) será apresentada.

Depois de se logar no sistema com o usuário user e a senha que você definiu durante o início do sistema, execute o comando pelican_setup, como na imagem abaixo(Imagem6):

Imagem6: PelicanHPC Nó Master – Execute o comando pelican_setup

Seguindo os passos a seguir dê continuidade a configuração do Nó Master. Escolha a interface de rede que está conectada a rede do Cluster(Imagem7).

Imagem7: PelicanHPC Nó Master – Selecione a interface de rede conectada ao Cluster

Na próxima etapa(Imagem8) assegure-se de que não há nenhum servidor DHCP ativo em sua rede e confirme a mensagem selecionando a opção Yes.

Imagem8: PelicanHPC Nó Master – Inicializando o servidor DHCP da rede

A mensagem seguinte(Imagem9) informa que é hora de ligar as máquinas escravos do Cluster e que caso você esteja redimensionando o Cluster fique ciente de que as atividades que estão sendo executadas serão interrompidas. Responda Yes para dar prosseguimento a configuração.

Imagem9: PelicanHPC Nó Master – Hora de inicializar os nós escravos

Depois de verificar se há máquinas ativas no Cluster é exibido a quantidade de nós ativos presentes na rede(Imagem10).

Imagem10: PelicanHPC Nó Master - Verificando nós ativos

A seguir inicializamos o nosso Nó Escravo que está configurado para dar o boot pela rede. O nó carrega o sistema pela rede e carrega a imagem do disco(ISO) na máquina escravo(Imagem11).

Imagem11: PelicanHPC Nó Escravo – Boot pela Rede

A sequência automática de passos te levará até a tela de login do sistema(Imagem12).

Imagem12: PelicanHPC Nó Escravo

Nesse momento deve-se retornar ao Nó Master para recontar o número de nós ativos na rede. Para isso selecione a opção No. Se tudo estiver OK a mensagem agora exibirá um nó ativo(o Nó Escravo)(Imagem13).

Imagem13: PelicanHPC Nó Master – Nó escravo ativo

Selecione a opção Yes e prossiga.

Confirme as condições atuais(Imagem14) do Cluster e siga em frente com os passos.

Imagem14: PelicanHPC Nó Master – Condições atuais do Cluster

Para listar os todos os nós(incluindo o Nó Master) do Cluster execute o comando lamnodes. Se tudo estiver como na imagem(Imagem15) abaixo seu Cluster está pronto para ser utilizado.

Imagem15: PelicanHPC Nó Master – Verificando nós ativos com o comando lamnodes

Testando o Sistema
Executando o comando octave você chega até a tela abaixo(Imagem16).

Imagem16: PelicanHPC Nó Master – Octave

Executando uma Aplicação Paralela no Octave
Execute o comando parallel_performance no console do Octave(Imagem17).

Imagem17: PelicanHPC Nó Master – Executando o parallel_performance

Para verificar o andamento do processo execute em outro terminal do Nó Master o comando htop(Imagem18).

Imagem18: PelicanHPC Nó Master – Processamento da máquina(comando htop)

Após a realização da tarefa em apenas um nós do Cluster(o Nó Master) é exibido na tela(Imagem19) o tempo necessário para ser executada a tarefa.

Imagem19: PelicanHPC Nó Master – Tempo total de execução da tarefa em apenas um nó(Master)

Assim que a execução é finalizada no Nó Master o programa agora é executado nos dois nós do Cluster, para verificar o andamento do processo acesse o terminal dos dois nós e execute o comando htop(Imagem20).

Imagem20: Visão geral do Cluster executando um programa nos nós do Cluster

Ao final do processo é exibido na tela o tempo necessário para se realizar a mesma tarefa nos nós do Cluster(Imagem21).

Imagem21: PelicanHPC Nó Master - comparativo entre os tempos de execução nos nós do Cluster

Analisando a Troca de Mensagens com o Wireshark
Execute o (antes do processo parallel_performance ser executado)Wireshark e selecione a interface de rede do VirtualBox conectada ao Cluster, como na imagem abaixo(Imagem22):

Imagem22: Análise da Rede do Cluster – Selecionando a interface de rede conectada ao Cluster

Assim que as máquinas do Cluster estiverem executando as tarefas em todos os seus nós o tráfego de mensagens inicia e se mantém intenso até o fim da execução do programa paralelo(Imagem23).

Imagem23: Análise da rede do Cluster – Troca de mensagens intensa

-That's all folks!

Até a próxima..

Fontes:
Artigo de Revista
SHARMA, Mayank; Crunch big numbers with your very own high-performance computing cluster.LINUX MAGAZINE, p 30, 31, 32, 34 35.EDIÇÃO 130, JUNHO 2009

Páginas Web
OCTAVE. 2009. Wikipedia, The Free Encyclopedia. Último acesso em 06 de dezembro de 2009. Disponível em: http://pt.wikipedia.org/wiki/Octave.
GNU OCTAVE. 2009. Octave, GNU. Último acesso em 06 de dezembro de 2009. Disponível em: http://pt.wikipedia.org/wiki/Octave.
GANGLIA. 2009. Ganglia, Monitoring System. Último acesso em 06 de dezembro de 2009. Disponível em: http://ganglia.sourceforge.net/.

16 comments:

Arthur disse...

muiti interessante...mas pra que serve isso?

Tárikly Lira disse...

Obrigado pelo comentário Arthur!

Respondendo sua dúvida, aplicações voltadas para:
*Modelagem 3D - Desenho gráfico(animações)
*Ciência Biológica
*Simulação de armas nucleares
*Genética - Aumento da performance de algoritmos
*Análise Sísmica(extração petrolífera)
*Geoprocessamento
*Computação Científica
*Análise Financeira
*DNS, NIS, SMTP - Procolos de Aplicação
*Análise Meteorológica
*Nanotecnologia molecular
..

Que exigem muito desempenho de uma máquina, e as tarefas requisitadas por estes tipos de aplicações podem demorar muito tempo(;muito, mas muito mesmo) para serem concluídas.

Um exemplo bem simples é o caso da Renderização.
Em 2001, o primeiro Shrek gastou 5 milhões de horas de processamento na renderização. Em 2004, Shrek 2 gastou mais de 10 milhões de horas de processamento. E em 2007, Shrek 3 gastou mais de 20 milhões de horas
de processamento na renderização e consumiu 24TB de espaõ de armazenamento dos 30TB disponíveis. Para a renderização de Shrek 3, a Dreamworks utilizou sua render farm que conta com mais de 3000 processadores. São utilizados servidores HP DL145 G2, com 2 GB de memória para cada núcleo, sendo que cada servidor possui quatro núcleos e sistema operacional Red Hat Linux¹.

Abraço,

¹ Dados disponíveis em http://www.linuxjournal.com/article/9653

Alen Vieira disse...

e como fica a questão da interface da rede? nat?brigde?

Tárikly Lira disse...

Alen Vieira, nosso Cluster pode ser implementado dentro de uma rede local que NÃO tenha um servidor DHCP. Sendo assim se faz necessário que pelo menos uma das interfaces de rede esteja no modo HostOnly(com servidor DHCP desabilitado), já que em modo Bridge(onde a interface de rede deve receber um IP de sua rede local) ou NAT(onde a interface de rede deve receber um IP mapeado e ter acesso a Internet) existe um servidor DHCP.
O que deve ser feito é:
Na máquina Nó Master deve existir DUAS interfaces de rede. (Por quê???)
Como o nosso objetivo é disponibilizar nosso Cluster na Internet conectamos a ela uma interface que vai estar conectada em Bridge ou NAT(ou seja, que vai receber um IP via DHCP), e a nossa outra interface de rede deve ser a que vai estar conectada em HostOnly(com o servidor DHCP desabilitado) que é também o modo em que as interfaces de rede dos Nós Escravos devem estar conectados.
Sacou ?
Dá uma olhada nos passos partir da execução do pelican_setup a imagem8 é auto explicativa.

Obrigado pelo comentário, qualquer coisa é só falar!

[]'s

Valmir disse...

Mestre Tárikly, usando o virtualbox-2.1-amd64, pelo menos aqui não funcionou, visto que os nodes ao carregar dão a mensagem "Kernel panic -not syncing - unable to mount root fs on unknown-block(253,32)"
O que está errado?
gil

Tárikly Lira disse...

@Valmir, meu caro! Que versão do PelicanHPC você está usando ? E em que ponto do tutorial você parou que está recebendo a a mensagem do "Kernel panic ..." ?
Nota-se que você está utilizando uma versão desatualizada do VirtualBox, se você puder atualizar seria ótimo, se não, tente isso: antes de inicializar a máquina virtual desabilite a interface de rede completamente(desconecte o cabo também). Em seguida "ligue" a VM e verifique se a mensagem aparece novamente. Caso não ocorra, desligue a VM e habilite a interface de rede e mantenha o cabo de rede desconectado até o ponto de login. (Eu tive esse problema frequentemente e os passos anteriores geralmente davam conta.)
Espero que resolva o seu caso.

[]'s

Valmir disse...

Péra, péra! Errei total. O virtualbox é o 3.2.6. O Pelicanhpc é que é o 2.1-amd64. Tentei também com pelicanhpc-2.2rc.amd64 mas ainda não tá pronto (dá problema com a senha na máquina virtual master e não loga). Tentei achar o pelicanhpc-1.9 mas não encontrei mais nos repositórios.
Obrigado pela resposta e pelo tutorial, exelente! Ocê é um paraibano danado mesmo :). Valeu!
gil

Tárikly Lira disse...

@Valmir, é ótimo saber que o tutorial lhe serviu! Obrigado pelos comentários, e qualquer coisa é só falar!

[]'s

Fabio LED disse...
Este comentário foi removido pelo autor.
Fabio LED disse...

Opa,
Seguinte esta distribuição do Linux, da suporte a clusterização para Sistemas de arquivos, CTDB - Cluster Trivial DataBase?

Estou montando um cluster de performance para sistemas de arquivos, hgc utilizando o Debian + Samba + CTDB. Entretanto estou enfrentando muitos problema para colocar o CTDB rodando.

Obrigado

renan disse...

Ola Amigo,

Muito bom seu tutorial, apenas um detalhe que não rodou no meu cluster foi o comando lamnodes. Você poderia me explicar o que pode ter ocorrido.

Ate mais

Renan

Tárikly Távora disse...

@renan, meu caro.
O problema com o comando lamnodes é que ele não está mais presente nas versões atuais do PelicanHPC, e a versão que utilizei no tutorial foi a 1.9.1-32bits.

Que bom saber que o tutorial lhe serviu e obrigado pelo comentário!

Abraço,

renan disse...
Este comentário foi removido pelo autor.
renan disse...

Ola,

Muito obrigado pela sua resposta, estou utilizando seu tutorial para apresentação de um trabalho na faculdade de cluster na disciplina de sistemas distribuídos.

Outra questão que apresentou problema foi na hora de rodar o octave e o parallel_performance, ele executa a primeira parte, ams na hora de rodar nos slaves, da erro em 2 scripts, no LAM_Init.

Já que utilizou uma outra versão, será que é pedir muito que você disponibilize essa versão pra gente fazer o download e testar.

Ate mais

Muito obrigado

Renan

Tárikly Távora disse...

@renan, você pode encontrar a versão 1.9.1-32-bits no endereço:
http://download.mi.hs-heilbronn.de/pelicanhpc/archive/pelicanhpc-v1.9.2-32bit.iso

E todas as versões anteriores do PelicanHPC estão disponíveis em:

http://download.mi.hs-heilbronn.de/pelicanhpc/

Será que é pedir muito que você me enviasse seu trabalho sobre Cluster?!

Abraço,

e qualquer é só falar!

renan disse...

Mais uma vez muito obrigado.

Com relação ao trabalho, o professor pediu apenas que fosse apresentado o cluster funcionando com algum teste de performance, ele não pediu nenhuma documentação, mas se caso ele pedir depois para montarmos, envio pra você.

Ate mais

Renan