Montagem de Cluster.docx

44
Montagem de Cluster Artigo referente à montagem completa de um Cluster com o sistema Debian Wheezy, podendo ser adaptado para outras distribuições. INTRODUÇÃO A montagem do Cluster, aqui apresentada, foi realizada manualmente quase em sua totalidade, com o fim de ter controle total de onde os arquivos ficarão. Pois o sistema, logicamente, é todo feito de arquivos, e cada arquivo, para ser encontrado no sistema, deve estar em seu caminho e um caminho de arquivo deve fazer referência a outro. É assim que todo e qualquer sistema se encontra. Existe várias maneiras de montar um cluster, talvez essa aqui apresentada, não seja a melhor, mas foi a mais indicada para o que se propôs. Ao final, nas conclusões, estão imagens com o teste feito no cluster com o HPL (High-Performance Linpack), software de benchmark (referência) e teste de desempenho. Este Cluster foi montado para Modelagem Atômica e Molecular, e a fim de realizar simulações. E será otimizado com o tempo. O artigo não se detém em muitas explicações sobre Cluster Beowulf ou outro tipo de Cluster ou sobre definições de cada programa instalado no Cluster. Apenas dá breves comentários antes da instalação de cada um. Também não se perde em explicações sobre comandos, pois a instalação de um Cluster requer que o vivente já tenha algum conhecimento sobre GNU/Linux. Porém, nada impede que os neófitos interessados em GNU/Linux, com algum esforço, não consigam concluir a instalação a contento. RECOMENDAÇÕES

Transcript of Montagem de Cluster.docx

Montagem de Cluster

Artigo referente montagem completa de um Cluster com o sistema Debian Wheezy, podendo ser adaptado para outras distribuies.INTRODUOA montagem do Cluster, aqui apresentada, foi realizada manualmente quase em sua totalidade, com o fim de ter controle total de onde os arquivos ficaro. Pois o sistema, logicamente, todo feito de arquivos, e cada arquivo, para ser encontrado no sistema, deve estar em seu caminho e um caminho de arquivo deve fazer referncia a outro. assim que todo e qualquer sistema se encontra.

Existe vrias maneiras de montar um cluster, talvez essa aqui apresentada, no seja a melhor, mas foi a mais indicada para o que se props.

Ao final, nas concluses, esto imagens com o teste feito no cluster com o HPL (High-Performance Linpack), software de benchmark (referncia) e teste de desempenho.

Este Cluster foi montado para Modelagem Atmica e Molecular, e a fim de realizar simulaes. E ser otimizado com o tempo.

O artigo no se detm em muitas explicaes sobreCluster Beowulfou outro tipo de Cluster ou sobre definies de cada programa instalado no Cluster. Apenas d breves comentrios antes da instalao de cada um.Tambm no se perde em explicaes sobre comandos, pois a instalao de um Cluster requer que o vivente j tenha algum conhecimento sobreGNU/Linux.

Porm, nada impede que os nefitos interessados em GNU/Linux, com algum esforo, no consigam concluir a instalao a contento.RECOMENDAES1. Siga a sequncia de passos, cada biblioteca deve estar no diretrio correto. Se voc mudar o caminho, lembre-se de alterar tambm em todos os locais onde a biblioteca referida for usada.2. Iremos instalar e configurar nos diretrios/opte/usr/local. NoDebian, os diretrios/usr/locale/opt, so os nicos diretrios onde o sistema no "mete a mo", ou seja, so diretrios prprios para instalaes "aliengenas", por assim dizer. Alm do que, dessa maneira, as instalaes ficam melhor organizadas.

3. O Debian no toca nos arquivos em/usr/local/ou em/opt, portanto, ao compilar um programa a partir do cdigo fonte, instale-o em/usr/local/ou/opt, para que no interfira com o Debian.4. Nome de mquina: servidor, no0X (no01, no02, no03, etc).5. Nome de usurio: kluster.6. Mesmo nome de usurio para todos (kluster), e na instalao do sistema, deve ser o mesmo Estado (no meu caso, Rio Grande do Sul) no fuso horrio.7. Uma boa configurao comea na prpria instalao do sistema e no seu particionamento.8. O particionamento e a configurao do sistema utilizados esto nas pginas 1 e 2 desse artigo: Configurao do sistema, DHCP, compartilhamento e DNS no Debian Squeeze

Abaixo, segue ossources.listutilizados nos sistemas. So arquivos bsicos, uma vez que somente o servidor est com a parte grfica e os ns esto sem a parte grfica.

sources.listservidor:

## deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 CD Binary-1 20130615-23:06]/ wheezy main#deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 CD Binary-1 20130615-23:06]/ wheezy main

deb http://ftp.br.debian.org/debian/ wheezy main contrib non-freedeb-src http://ftp.br.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-freedeb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'deb http://ftp.br.debian.org/debian/ wheezy-updates main contrib non-freedeb-src http://ftp.br.debian.org/debian/ wheezy-updates main contrib non-free

deb http://mirrors.kernel.org/debian/ wheezy-updates main contrib non-freedeb-src http://mirrors.kernel.org/debian/ wheezy-updates main contrib non-free

deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-freedeb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free

sources.listns:

## deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 CD Binary-1 20130615-23:06]/ wheezy main#deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 CD Binary-1 20130615-23:06]/ wheezy main

deb http://ftp.br.debian.org/debian/ wheezy main contrib non-freedeb-src http://ftp.br.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-freedeb-src http://security.debian.org/ wheezy/updates main contrib non-free

# wheezy-updates, previously known as 'volatile'deb http://ftp.br.debian.org/debian/ wheezy-updates main contrib non-freedeb-src http://ftp.br.debian.org/debian/ wheezy-updates main contrib non-free

deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-freedeb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free

deb http://ftp.debian.org/debian/ wheezy-backports main contrib non-free

CONFIGURAES DE HARDWARE E SOFTWARE- Debian Wheezy 64 bits em todas as mquinas;- Sistema de arquivos Btrfs;- Servidor instalado com a parte grfica e ns sem a parte grfica.

Servidor: Processador Core 2 Quad Q8300 2.50 GHz; HD 320 GB; 08 GB de memria RAM; KernelLinux3.10.10; Placa de vdeo GeForce 8600 GT; Placa de rede off-board.

N 01: Processador Core 2 Duo E8200 2.66 GHz; HD 250 GB; 04 GB de memria RAM; Kernel Linux 3.10.10; Placa de rede off-board.

N 02: Processador Pentium Dual Core 1.6 GHz; HD 80 GB; 05 GB de memria RAM; Kernel Linux 3.10.7; Placa de rede off-board.

N 03: Processador Core 2 Quad Q8400 2.66 GHz; HD 250 GB; 04 GB de memria RAM; Kernel Linux 3.11.0; Placa de rede off-board.

N 04: Processador Pentium 4 - 3.0 GHz; HD 80 GB; 02 GB de memria RAM; Kernel Linux 3.11.1; Placa de rede off-board.

N 05: Processador Pentium 4 - 3.0 GHz; HD 80 GB; 03 GB de memria RAM; Kernel Linux 3.10.7; Placa de rede off-board.

N 06: Processador Core 2 Quad Q8300 2.50 GHz; HD 250 GB; 03 GB de memria RAM; Kernel Linux 3.10.7; Placa de rede off-board.

HARDWARE DE REDE E ALIMENTAOA escolha do Hardware de rede importantssima na montagem de um Cluster. Deve ser um Hardware de boa ou tima qualidade. A qualidade das placas de rede das mquinas do Cluster importantssima tambm. Lgico que isso depende do oramento disponvel. 01 Switch TP-LINK TL-SG1008D 8 portas Gigabit; 02 Nobreaks SMS NET 4+ 1400 VA com duas baterias automotivas externas de 45 Ah; Cabeamento categoria 6 (cabos e RJ-45).

Foi conectado um cabo direto do modem porta 1 do Switch para prover Internet ao cluster. Nas outras portas foram conectadas as mquinas.

O servidor recebeu o nome deservidore os ns receberam os nomes deno01,no02,no03,no04,no05en06. Sendo que, na instalao do sistema, foi configurado o usurio de nomeklusterpara todos e todas as senhas ficaram 123456.

Foram instalados os softwares e bibliotecas abaixo. As dependncias que no esto na lista abaixo, esto discriminadas durante o artigo: Mpich-3.0.4; Pvfs-2.8.2; Blas; Lapack-3.4.2; Blacs; Scalapack-2.0.2; Hpl-2.1; Ganglia Web Frontend 3.3.8; Ganglia Monitor 3.3.8; Siesta-3.2-pl3; Gromacs 4.6.3 (no ser demonstrada sua instalao).CLUSTER 1Cluster uma palavra da lngua inglesa e significa "grupo, aglomerado". Um Cluster um aglomerado de qualquer coisa. Um Cluster, para fins de definio do escopo do artigo, um aglomerado de computadores.

So vrios computadores trabalhando e processando em conjunto. E, para tanto, fazem uso de implementaes especiais que permitem aos computadores do Cluster trocar informaes e mensagens entre si e manter a unidade do processamento.

Basicamente, os Clusters dividem-se em duas categorias: Cluster de Alta Disponibilidade (HA- High Availability) Cluster de Alto Desempenho de Computao (HPC- High Performance Computing)

Os ClusterHA, tm por finalidade, manter os servios de forma segura e disponvel pelo maior tempo possvel. Os clustersHPC, tm por finalidade, prover um grande poder computacional e uma grande capacidade de processamento.

Aps os prolegmenos, sem mais delongas, vamos iniciar. Mas antes, quero deixar bem frisado que a instalao, particionamento e configurao do sistema so importantes. Atente bem para isso.

Foi optado fazer a instalao manualmente no servidor e em cada n, pois so somente 7 mquinas e no havia pressa.

AS INSTALAES NOS NS FORAM REALIZADAS ACESSANDO REMOTAMENTE PELO SERVIDOR. PRIMEIRO FOI CONFIGURADO O SERVIDOR AT A ETAPA DO SSH, DEPOIS FORAM REALIZADAS TODAS AS INSTALAES E CONFIGURAES DOS NS, E O SERVIDOR FOI TERMINADO POR LTIMO.

Em caso de muitas mquinas, faa uma instalao em um n e crie uma imagem ou copie essa instalao de outra maneira que for melhor. Na Internet existem vrios tutoriais de automatizao da instalao doGNU/Linux.

A montagem do Cluster foi feita manualmente, pois um cluster heterogneo, ou seja, as mquinas no so iguais. Porm, mesmo em caso de Cluster heterogneo com muitas mquinas, possvel automatizar as instalaes, talvez, depois tenha somente que fazer uma ou outra alterao em uma ou outra mquina, mas nada que seja difcil. A partir daqui, vamos considerar que o sistema esteja instalado e configurado. Durante o artigo, ser indicado quando a instalao for do servidor e/ou dos ns.

1. Preparando o sistema (servidor e ns):

# apt-get update# aptitude safe-upgrade

2. Instalando e atualizando pacotes (servidor e ns):

# aptitude install build-essential module-init-tools kernel-package initramfs-tools# aptitude install autoconf libaal-dev wget liblzo2-dev gzip libncurses5 libncurses5-dev dpatch udev

Vamos instalar pacotes, a mais do que o necessrio, para compilao dos programas que queremos. Caso, futuramente, for preciso compilar o kernel ou compilar e instalar um outro pacote, bastar atualizar o sistema.# aptitude install openjdk-7-jre # Somente se for trabalhar com Java - servidor e ns

3. Se voc quiser dar uma otimizadinha no sistema, siga os passos abaixo, caso contrrio, go to step 4.

Servidor e ns:

# aptitude install cgroup-bin

Entrar no arquivo:

# vim /etc/rc.local

Colocar o contedo:

mkdir -p /dev/cgroup/cpumount -t cgroup cgroup /dev/cgroup/cpu -o cpumkdir -m 0777 /dev/cgroup/cpu/userecho "1" > /dev/cgroup/cpu/user/notify_on_releaseecho "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

Salvar e sair.

Criar o arquivo:

# vim /usr/local/sbin/cgroup_clean

Colocar o contedo:

#!/bin/shif [ "$1" != "/user" -a "$1" != "/user/" ]; thenrmdir /dev/cgroup/cpu$1fi

Salvar e sair.

# chmod +x /usr/local/sbin/cgroup_clean

Modificar o arquivo:

# vim /etc/bash.bashrc

# this file has to be sourced in /etc/profile.if [ "$PS1" ] ; thenmkdir -m 0700 /dev/cgroup/cpu/user/$$echo $$ > /dev/cgroup/cpu/user/$$/tasksfi

Salvar e sair.

4. Instalando mais pacotes necessrios (servidor e ns):

# apt-get update# apt-get install gfortran-*# Aqui tem que ser o apt-get

Reiniciar:

# shutdown -r now

CLUSTER 25. Criando os arquivos necessrios (servidor e ns):

# ifconfig# Para ver qual a placa de rede eth0 ou eth1# vim /etc/network/interfaces

O arquivointerfacesacima, do servidor. Em algumas mquinas, a placa de rede utilizada com IP fixo ficou aeth0, em outras, aeth1. Adapte para a sua configurao de hardware.

# vim /etc/hosts

O arquivo/etc/hostsdeve ser igual, tanto no servidor como nos ns.

# vim /etc/hosts.equiv

O arquivo/etc/hosts.equiv, deve ser o mesmo em todas as mquinas do cluster.

# vim /home/.rhosts

O arquivo/home/.rhosts, deve ser o mesmo em todas as mquinas do Cluster.

# vim /root/.rhosts

# vim /etc/securetty

No arquivosecuretty, somente acrescente as linhas:

consolershssh

# vim /opt/hostfile

O arquivo/opt/hostfiledeve ser rigorosamente o mesmo em todas as mquinas.CLUSTER 36. Instalando NTP (servidor e ns)NTP(Network Time Protocol), ou Protocolo de Tempo para Redes, permite a sincronizao do tempo em servidores ou mquinas em uma rede, buscando em uma estrutura confivel de outros servidores NTP, para obter a hora certa.O NTP necessrio para fins de sincronizao de tempo entre as mquinas do cluster.# aptitude install ntp

Acessar o arquivo:# vim /etc/ntp.confE configurar:

Arquivo de configurao NTP do servidor acima. Acrescente as linhas necessrias em seus respectivos lugares.

Arquivo de configurao NTP dos ns acima. Acrescente e comente as linhas necessrias em seus respectivos lugares.7. Aumentando descritores e swappiness (opcional: servidor e ns)Um Descritor de Arquivo (FD - File Descriptor) um nmero inteiro positivo que o processo usa para referenciar um determinado arquivo aberto. Quando um processo precisa acessar um arquivo, ele faz isso atravs do descritor do arquivo. Os descritores, propriamente ditos, so mantidos pelo kernel. O tamanho dessa tabela varia de sistema para sistema.

swappinnes o processo de troca responsvel por controlar a quantidade de memria RAM e swap que ser utilizada pelo sistema. uma varivel contida no cdigo fonte do kernel.

Alterando:

# sysctl -w fs.file-max=921600# vim /etc/sysctl.confAcrescentar no final:fs.file-max=921600vm.swappiness=10

Reinicie.

Para ver a alterao da swappiness, execute:# sysctl vm.swappiness8. Servidor SSH:# aptitude install ssh # Servidor e nsNo servidor, gerando a chave com 1024 bits:# ssh-keygen -b 1024 -t rsaCopiando a chave para os ns. V mudando os IPs no comando abaixo:# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] testar, vamos executar o shell nos ns a partir do servidor. Na primeira vez, dever pedir a senha, digite a senha.# ssh 192.168.1.7 -n 'echo $SHELL'Ou:# rsh 192.168.1.7 -n 'echo $SHELL'Dever aparecer:/bin/bashV mudando os IPs no comando acima e teste todos.Em caso de algum erro e de no conseguir acessar alguma mquina, acesse o arquivo abaixo no servidor e apague todo o contedo dentro dele:# vim /root/.ssh/known_hostsDepois, ao acessar um n com, por exemplo,# ssh no01Dever aparecer uma mensagem "Are you sure you want to continue...", digiteyes. Ir pedir a senha, digite-a e, na prxima vez, no pedir mais senha.CLUSTER 49. Instalando PVFS2 (servidor e ns)PVFS (Parallel Virtual File System), um sistema de arquivos concebido para proporcionar alto desempenho para aplicaes paralelas, onde tem grande concorrncia de acesso a muitos arquivos e grande volume de I/O (Entrada e Sada de Dados) a arquivos em comum (compartilhados).

A instalao do PVFS2 interessante em Clusters com grande volume de dados. Aqui foi instalado para fins de testes.Caso esteja fazendo um Cluster caseiro, recomendo utilizar o NFS e v para o passo 10.

Nos ns e no servidor:Antes de instalar o PVFS2 deve-se instalar as seguintes bibliotecas:

# apt-get install libdb5.1 libdb5.1-devAps isso, instale o PVFS2:# cd /usr/src# wgetftp://ftp.parl.clemson.edu/pub/pvfs2/pvfs-2.8.2.tar.gz# mkdir /opt/mpich# Criando o caminho para a MPICH, mesmo sem ter instalado ela ainda# mkdir /opt/pvfs2# tar -xzvf pvfs-2.8.2.tar.gz# ls# cd pvfs-2.8.2# ./configure --help | less# Se quiser ver as opes de configurao# ./configure --prefix=/opt/pvfs2 --enable-shared --disable-segv-backtrace --with-mpi=/opt/mpich

Deve terminar sem erros com a linha:PVFS2 version string: 2.8.2# makeDever terminar com a ltima linha:GENCONFIG examples/fs.conf# make installAcrescentar no arquivo (servidor e ns):# vim /etc/fstabtcp://servidor(ou no0X):3334/pvfs2-fs /mnt/pvfs2 pvfs2 defaults,noauto 0 0

# mkdir /mnt/pvfs2# update-rc.d -f exim4 remove# Remover MTA para no atrasar a inicializao, somente nos nsConfigurando a varivel de ambiente, entrar no arquivo:# vim ~/.bashcrcE acrescentar no final:LD_LIBRARY_PATH=/opt/pvfs2/lib:$LD_LIBRARY_PATHexport LD_LIBRARY_PATH

Salvar e sair. Reiniciar:# shutdown -r nowExecutar no servidor (com os ns ligados e, logicamente, com o PVFS2 j instalado e configurado):

# /opt/pvfs2/bin/pvfs2-genconfig /etc/pvfs2-fs.conf# Somente no servidor

Criando um novo storage e preparando para iniciar pela primeira vez:# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f# Somente no servidorOu:# /usr/local/sbin/pvfs2-server /etc/pvfs2-fs.conf -fEle deve retornar:/opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f[S 09/15 15:50] PVFS2 Server on node servidor version 2.8.2 starting...[D 09/13 15:50] PVFS2 Server: storage space created. Exiting.

Qualquer uma das formas anteriores ir funcionar, pois o PVFS2 cria um arquivopvfs2-serverautomaticamente em/usr/local/sbin, mesmo estando configurado para instalar em/opt/pvfs2.

Iniciando:

# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf # Somente no servidor[S 09/09 15:55] PVFS2 Server on node servidor version 2.8.2 starting...

Copiar o arquivopvfs2-fs.confpara os ns. muito importante que este arquivo seja exatamente o mesmo em todas as mquinas do Cluster:# scp /etc/pvfs2-fs.conf 192.168.1.X:/etc/Aps copiar entre em cada n (ou, como foi dito anteriormente, faa uma instalao padro completa em um n e crie uma imagem para ser aproveitada nos outros ns):

# ssh 192.168.1.XCriando os arquivos necessrios:# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f/opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f[S 09/15 22:54] PVFS2 Server on node no01 version 2.8.2 starting...[D 09/13 22:54] PVFS2 Server: storage space created. Exiting.

# opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf[S 09/09 22:55] PVFS2 Server on node no01 version 2.8.2 starting...

# logout

No servidor:

# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf

Testando:

# /opt/pvfs2/bin/pvfs2-ping -m /mnt/pvfs2

Automatizando o PVFS2 no Debian:

Copie o arquivopvfs2-server.rc, renomeando-o:

# cp /usr/src/pvfs-2.8.2/examples/pvfs2-server.rc /etc/init.d/pvfs2-serverE altere de acordo com as suas necessidades, para isso, voc ter que ter conhecimentos em Shell Script. Ou faa o download do arquivopvfs2-serverj alteradoaqui. E copie ele para/etc/init.d/com o nome depvfs2-server, sem a extenso.sh.

Se alterar algum caminho de pasta durante a instalao e configurao do PVF2, altere no arquivo tambm. Depois, d permisso para execuo:

# chmod +x /etc/init.d/pvfs2-server

E coloque norc.local:/etc/init.d/pvfs2-server start

exit 0

A automatizao do PVFS2 no servidor e nos ns a mesma. Dessa maneira, poder iniciar, parar, checar e reiniciar o PVFS2 na linha de comando:/detc/init.d/pvfs2-serverstart,stop,statuserestart.

Como falado anteriormente, se preferir, faa toda a instalao em um n e no servidor, teste os acessos e o funcionamento e depois crie uma imagem do n e copie-a para os outros alterando os arquivos necessrios (IP, hosts, etc) e teste o funcionamento novamente.

10. Servidor NFSTem a mesma funo do PVFS2, fazer o compartilhamento e sincronizao de diretrios e arquivos no cluster. Grosso modo podemos dizer que um sistema de arquivos desse tipo permite que instalemos somente no servidor os programas que queremos executar no cluster, cabendo ao sistema de arquivos fazer o compartilhamento e o sincronismo.

Prefira o sistema de arquivos NFS, pois tem melhor desempenho em clusters caseiros com baixo volume de dados e no habilite os dois sistemas de arquivos (PVFS2 e NFS) ao mesmo tempo no cluster, seno dar problemas.E lembre-se, se voc instalar o PVFS2 com o NFS e for usar o NFS, comente a linha/etc/init.d/pvfs2-serverno arquivo/etc/rc.localno servidor e nos ns.Iniciando a instalao do NFS:# cd /home/klusterNo servidor:# apt-get install portmap# apt-get install nfs-common# apt-get install nfs-kernel-server# apt-get install nfs-user-server

Entre no arquivo:

# vim /etc/exports

Coloque o contedo no final:

/home/kluster 192.168.1.0/24(rw,all_squash,subtree_check,anonuid=150,anongid=100)/opt 192.168.1.0/24(rw,all_squash,subtree_check)/usr/local 192.168.1.0/24(rw,all_squash,subtree_check)

Deve ir o endereo da rede.Salve e saia.

Veja bem, as pastas colocadas ali sero as pastas a serem compartilhadas pelo servidor com as outras mquinas do cluster. Ento, todo e qualquer arquivo que dever ser utilizado pelo cluster durante a execuo de um programa deve ser colocado nesta mesma pasta.

Atualizando o kernel com as mudanas no arquivo/etc/exports:

# exportfs -a

Reinicie o servio:

# /etc/init.d/nfs-kernel-server restart

Nos ns:

Entre no arquivo/etc/fstab:

# vim /etc/fstab

Adicione no final:

192.168.1.6:/home/kluster/home/klusternfsdefaults00192.168.1.6:/opt/optnfsdefaults00192.168.1.6:/usr/local/usr/localnfsdefaults00

CLUSTER 5

11. MPICH

MPI(Message Passing Interface), em uma traduo livre, Interface de Passagem de Mensagens. uma biblioteca com funes para troca de mensagens que faz a comunicao e a sincronizao de processos em um Cluster paralelo.

Essa a biblioteca que far todo o trabalho de processamento no Cluster. Essa a biblioteca que transforma um conjunto de mquinas em um Cluster.

Os objetivos do MPICH fornecer uma implementao MPI que suporte eficientemente, diferentes plataformas de computao e comunicao, incluindo grupos de commodities (sistemas de Desktop, sistemas de memria compartilhada e arquiteturas multicore), redes de alta velocidade e sistemas de computao High-end de propriedade (Blue Gene, Cray); e permitir a pesquisa de ponta em MPI atravs de uma estrutura modular fcil de estender para outras implementaes derivadas.

Servidor e ns:

# cd /usr/src# wgethttp://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4.tar.gz# tar -xzvf mpich-3.0.4.tar.gz# ls# cd mpich-3.0.4#./configure --help | less

# ./configure --prefix=/opt/mpich --enable-shared --enable-f95 --enable-threads=runtime --enable-romio --enable-nemesis-shm-collectives --enable-debuginfo CC=gcc CXX=g++ FC=gfortran F77=gfortran --with-pvfs2=/opt/pvfs2 --with-file-system="pvfs2+nfs" --with-thread-package=posix --with-device=ch3:nemesis --with-java=/etc/java-7-openjdk# Somente se for trabalhar com Java

Se no tiver erros, terminar com:Configuration completed

# make

Omakedever terminar com a frase abaixo sem nenhuma mensagem de erro antes dela:make[1]: Saindo do diretrio '/usr/src/mpich-3.0.4'

# make install

Omake install, idem aomake, no dever apresentar erros.

Configurando as variveis:

# vim ~/.bashrc

PATH=/opt/mpich/bin:$PATHexport PATH

E acrescentar, tambm, o caminho na varivelLD_LIBRARY_PATH:

/opt/mpich/lib

O arquivobashrcacima com as variveis, o mesmo para o servidor e os ns.

Reinicie:

# shutdown -r now

Vendo as informaes:

# mpiexec -info

Vamos testar nossa instalao, compilando e executando:

# cd /usr/src/mpich-3.0.4/examples# ls# mpicc -o cpi cpi.c# Esse arquivo deve ser compilado em todas as mquinas; acesse uma por uma ou utilize o seguinte comando:

# mpicc -o -hostfile /opt/hostfile /usr/src/mpich-3.0.4/examples/cpi.c cpi

O arquivocpi.crealiza clculo do PI.

Testando:

# mpirun -hostfile /opt/hostfile -n 7 /usr/src/mpich-3.0.4/examples/cpi

Para ver o manual, execute:

# man mpiccOu:# man mpi_BarrierOu:# man mpiexec

Para remover, em caso de erros e comear de novo:

# cd /usr/src/mpich-3.0.4# make uninstall# make distclean# cd /usr/src/pvfs-2.8.2# make distclean

E remova os seguintes arquivos comrm -rf: /usr/src/mpich-3.0.4 /usr/src/pvfs-2.8.2 /opt/mpich /opt/pvfs2 /usr/local/sbin/pvfs2-server

Reinicie a mquina e recomece do princpio, as duas instalaes criando novamente os diretrios/opt/mpiche/opt/pvfs2.

12. Ganglia

O Ganglia um sistema de monitoramento distribudo escalvel para sistemas de computao de alto desempenho, como Clusters e grids. Ele baseado em um projeto hierrquico dirigido a Clusters. Ele aproveita as tecnologias amplamente utilizadas, tais como XML para representao de dados, XDR para compacto, transporte de dados porttil e RRDtool para o armazenamento e visualizao de dados.

Ele usa as estruturas de dados e algoritmos projetados cuidadosamente para alcanar baixos custos gerais por ns e alta concorrncia. A implementao robusta e foi portada para um amplo conjunto de sistemas operacionais e arquiteturas de processadores, e est atualmente em uso em milhares de grupos em todo o mundo.

Ele tem sido usado para ligar os Clusters atravs de campi universitrios e em todo o mundo, e pode ser escalado para lidar com grupos com 2000 ns.

Nos ns:# apt-get update# apt-get install ganglia-monitor

No servidor:

# apt-get update# apt-get install apache2

Testando oApache: abra o navegador e digite:localhost, dever aparecer:It works.

# apt-get install php5 libapache2-mod-php5

Crie o arquivo:

# vim /var/www/info.php

Coloque dentro dele:

Salve e saia. Reinicie o Apache:

# /etc/init.d/apache2 restart

Abra o navegador e digitelocalhost/info.php, dever aparecer a pgina de informaes do PHP.

Instalando oGanglia:

# apt-get install ganglia-webfrontend ganglia-monitor

Ir pedir duas vezes para reiniciar o Apache 2, faa.

Vamos copiar o arquivo necessrio:

# cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf

Alterar o arquivo/etc/ganglia/gmod.confno servidor e copiar para os ns. extremamente necessrio, tendo em vista que a conexo remota fica muito lenta, devido ao IP 239.2.11.71.

A parte que nos interessa alterar, est na imagem acima. Comente as linhas onde tem o IP 239.2.11.71, ou similar, e configure o host com o IP do servidor.

Altere o arquivo/etc/ganglia/gmetad.confno servidor, deixando como na imagem acima, no sendo necessrio copiar para os ns.

Para reiniciar o servio nos ns:

# service ganglia-monitor restart

Reiniciar o Apache e o Ganglia no servidor:

# /etc/init.d/apache2 restart# service gmetad restart

A partir da s digitar no navegador localhost/ganglia.

CLUSTER 613. BLAS

BLAS(Basic Linear Algebra) - lgebra Linear Bsica. uma biblioteca e um conjunto de sub-rotinas de baixo nvel do kernel, que executam operaes de lgebra linear comuns, tais como cpia, dimensionamento do vetor, produtos, combinaes lineares e multiplicao de matrizes.

No servidor e ns:

# cd /opt# wgethttp://netlib.org/blas/blas.tgz# tar -xzf blas.tgz# cd BLAS

Entre no arquivo:

# vim make.inc

E altere/acrescente os seguintes parmetros:

FORTRAN= /opt/mpich/bin/mpif90OPTS = -O3DRVOPTS= $(OPTS)NOOPT=LOADER = /opt/mpich/bin/mpif90LOADOPTS =

Salvar e sair.

# make# Essa compilao rpida# ls

E verifique se foi criado o arquivoblas_LINUX.a, esse o arquivo a ser utilizado. Vamos criar uma pasta chamada BLAS em/otp/mpich/libe copiar o arquivo para ela:

# cd /opt/mpich/lib# mkdir BLAS# cd BLAS# cp -r /opt/BLAS/blas_LINUX.a .# O ponto separado ao final indica que o arquivo ser copiado para o local no qual estamos

# ls

E verifique se o arquivo foi copiado.

Em caso de erro na compilao do BLAS, executemake cleane refaa o procedimento. Ou apague a pasta, descompacte-a de novo e refaa do zero.

14. LAPACK

uma biblioteca em Fortran 77 para lgebra linear, constituda de rotinas para resoluo de sistemas de equaes lineares, problemas de mnimos quadrados, de autovalores e autovetores.

Volte ao diretrio/opte vamos instalar a biblioteca LAPACK. No servidor e ns:

# cd /opt# wgethttp://netlib.org/lapack/lapack.tgz# tar -xzf lapack.tgz# ls

Dever ter sido criada a pasta descompactadalapack-3.4.2.

# cd lapack-3.4.2

Vamos copiar e editar o arquivo necessrio:

# cp make.inc.example make.inc

Entre no arquivo:

# vim make.inc

E altere/acrescente os seguintes parmetros:

FORTRAN= /opt/mpich/bin/mpif90OPTS = -O2DRVOPTS= $(OPTS)NOOPT= -O0LOADER = /opt/mpich/bin/mpif90...TIMER= EXT_ETIME...BLASLIB= /opt/mpich/lib/BLAS/blas_LINUX.a

Salve e saia do arquivo.

# make# Essa compilao ir demorar um pouco# ls

Dever ter criado arquivoliblapack.a. Para apagar, em caso de erro na compilao, apague a pasta, descompacte-a de novo e refaa do zero.

15. BLACS

O projetoBLACS(Basic Linear Algebra Communication Subprograms), tem o propsito de criar uma interface de passagem de mensagens orientada lgebra linear, que pode ser implementada eficientemente e uniformemente atravs de uma ampla gama de plataformas de memria distribuda.

No servidor e ns. Volte ao diretrio/opt:

# cd /opt# wgethttp://www.netlib.org/blacs/mpiblacs.tgz# wgethttp://www.netlib.org/blacs/mpiblacs-patch03.tgz# tar -xzf mpiblacs.tgz# tar -xzf mpiblacs-patch03.tgz# Ao descompactar o pacth ser copiado automaticamente para a pasta BLACS# cd BLACS# cp BMAKES/Bmake.MPI-LINUX ./Bmake.inc# ls

Entre no arquivo criado:

# vim Bmake.inc

E altere/acrescente os seguintes parmetros:

BTOPdir = /opt/BLACSMPIdir = /opt/mpich...SYSINC =...INTFACE = -DAdd_...TRANSCOMM = -DUseMpich...F77= /opt/mpich/bin/mpif90...CC = /opt/mpich/bin/mpiccCCFLAGS= -O3

Salve e saia do arquivo.

# make mpi# No ir demorar

16. ScaLAPACK

uma biblioteca de rotinas de alto desempenho, para lgebra linear baseada no LAPACK e utilizada em computadores com arquitetura MIMD de memria distribuda por passagem de mensagens e estaes de trabalho, que suportam as APIs MPI e/ou PVM.

No servidor e nos ns. Volte ao diretrio/opt.

# wgethttp://www.netlib.org/scalapack/scalapack.tgz# tar -xzf scalapack.tgz# cd scalapack-2.0.2# ls# cp SLmake.inc.example SLmake.inc

Entre no arquivo:

# vim SLmake.inc

E altere/acrescente os seguintes parmetros:

home= /opt/scalapack-2.0.2CDEFS = -DAdd_ -DNO_IEEE $(USEMPI)...FC= /opt/mpich/bin/mpif90CC= /opt/mpich/bin/mpicc...BLASLIB = /opt/mpich/lib/BLAS/blas_LINUX.aLAPACKLIB = /opt/lapack-3.4.2/liblapack.aBLACSLIB= /opt/BLACS/LIB/blacsF77init_MPI-LINUX-0.aLIBS= $(LAPACKLIB) $(BLASLIB) $(BLACSLIB)

Salve e saia do arquivo.

# make# Ir demorar um pouco

Ser criado arquivolibscalapack.a.

# ls

Para apagar, faa:

# make clean# rm libscalapack.a

Ou, remova a pastascalapack-2.0.2, descompacte-a e refaa do zero.

17. HPL

OHPL um pacote de software que resolve um sistema aritmtico (aleatrio) de densidade linear de preciso dupla (64 bits) em computadores de memria distribuda. uma implementao livremente disponvel do projetoHigh Performance Computing Benchmark Linpack.

No servidor e ns. Volte ao diretrio/opt.

# wgethttp://www.netlib.org/benchmark/hpl/hpl-2.1.tar.gz# tar -vzxf hpl-2.1.tar.gz# mv hpl-2.1 hpl# cd hpl

Copiando o arquivo de configurao. Dependendo da sua arquitetura, voc copiar/alterar o arquivoMake.Linux_PII_CBLASouMake.Linux_PII_FBLAS.

Nessa configurao aqui apresentada, foi utilizado o arquivoMake.Linux_PII_FBLAS, pois o arquivoMake.Linux_PII_CBLASapresentou problemas.

# cp /opt/hpl/setup/Make.Linux_PII_FBLAS Make.Linux_PII

Entre no arquivo:

# vim Make.Linux_PII

E altere/acrescente os seguintes parmetros:

ARCH = Linux_PII...TOPdir = /opt/hpl...MPdir= /opt/mpich...#LAdir = $(HOME)/netlib/ARCHIVES/Linux_PIILAinc=LAlib= /opt/mpich/lib/BLAS/blas_LINUX.a...HPL_OPTS = -DHPL_COPY_L -DHPL_DETAILED_TIMING...CC = /opt/mpich/bin/mpiccCCNOOPT= $(HPL_DEFS)CCFLAGS= $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops -W -Wall...LINKER = /opt/mpich/bin/mpif90

Salve e saia do arquivo.

Compilando:

# make arch=Linux_PII

Testando:

# cd /opt/hpl/bin/Linux_PII# mpirun -np 7 -hostfile /opt/hostfile ./xhpl

Veja imagem com a sada do comando acima nas concluses, ao final do artigo.

18. SIESTA

OSIESTA(Spanish Initiative for Electronic Simulations with Thousands of Atoms), um mtodo, uma implementao de programa de computador para realizar clculos eficientes de estrutura eletrnicaab initioe simulaes de dinmica molecular de molculas e slidos.

A eficincia do SIESTA deriva do uso de conjuntos de bases estritamente localizadas e da aplicao de algoritmos de escalonamento linear, que podem ser aplicados a sistemas adequados.

Uma caracterstica muito importante do cdigo, que sua preciso e seu custo podem ser sintonizados em uma ampla gama, a partir de clculos rpidos preliminares para simulaes de alta preciso combinando a qualidade de outras abordagens, como plane-wave e mtodos de eltrons.

O SIESTA possui as bibliotecas BLAS e LAPACK nativamente, porm, vamos utilizar as bibliotecas que instalamos anteriormente.

Como o SIESTA um programa que utilizar o MPI, podemos instal-lo somente no servidor, mas, para isso, devemos ter o NFS ou o PVFS2 bem configurados, pois sero eles que compartilharo os arquivos utilizados na execuo.

Pode-se no utilizar NFS e nem PVFS2, mas, para tanto, deve-se instalar o SIESTA (ou qualquer outro programa a ser utilizado) no servidor e nos ns.

Volte ao diretrio/opt.

# wgethttp://departments.icmab.es/leem/siesta/CodeAccess/Code/siesta-3.2-pl3.tgz# tar -xzf siesta-3.2-pl3.tgz# cd siesta-3.2-pl3/Obj# sh ../Src/obj_setup.sh

# ../Src/configure --enable-mpi --enable-debug --enable-fast --with-blas=/opt/mpich/lib/BLAS/blas_LINUX.a --with-lapack=/opt/lapack-3.4.2/liblapack.a --with-blacs="/opt/BLACS/LIB/blacsF77init_MPI-LINUX-0.a /opt/BLACS/LIB/blacsCinit_MPI-LINUX-0.a /opt/BLACS/LIB/blacs_MPI-LINUX-0.a" --with-scalapack=/opt/scalapack-2.0.2/libscalapack.a

Configurando o arquivoarch.make:

# vim arch.make

FPP_OUTPUT=FC=/opt/mpich/bin/mpif90# Editar essa linha deixando-a assimRANLIB=ranlib

# make

Ser criado, entre outros, o arquivo executvelsiesta. Vamos copi-lo para o diretrio/optpara facilitar a execuo:

# cp siesta /opt/siesta

Agora, para chamar o SIESTA (estando na mesma pasta onde est o arquivo.fdfe o.psf), basta digitar:

# /opt/siesta < arquivo.fdf | tee arquivo.out

Para executar no cluster:

# mpirun -hostfile /opt/hostfile -n 7 /opt/siesta < /home/kluster/arquivo.fdf | tee arquivo.out

CONCLUSOTalvez, tenha faltado alguma coisa no artigo, porm, a pretenso no foi fazer uma Dissertao de Mestrado ou uma Tese de Doutorado sobre o tema (existe algumas sobre Cluster), onde o contedo perde-se em teorias e explicaes demasiadas.

Poderia ter instalado, tambm (talvez faa futuramente), a biblioteca ATLAS que uma biblioteca de lgebra linear que trabalha com BLAS, porm, um pouco mais otimizada.

O Cluster aqui montado bastante bsico, e requer que seja otimizado com o seu uso ao passar do tempo atravs de testes. O cluster tambm poderia ser feito diskless, ou seja, com HD somente no servidor.

O Cluster aqui apresentado com estas configuraes, tem acesso Internet em todas as mquinas. Como ele, no ser acessado externamente, no foi necessrio instalar e configurar um servidor Firewall. Caso seja feito um Cluster para acesso externo, recomenda-se um bom servidor Firewall configurado, para maior proteo e segurana.

Toda a instalao e configurao do Cluster pode ser automatizada, criando-se scripts para tanto.

TESTE COM HPLO HPL bastante utilizado para testes de desempenho em Cluster de alta performance. No link abaixo, podemos ver o Top 500 de supercomputadores: Home TOP500 Supercomputer SitesO teste realizado para este artigo foi bastante simples, como podemos ver na figura abaixo. Durante a execuo da vida de um Cluster, imperioso manter-se constantes testes e otimizaes das configuraes. Para tanto, deve-se estudar as configuraes do programa de benchmark utilizado.

# cd /opt/hpl/bin/Linux_PII# mpirun -np 7 -hostfile /opt/hostfile ./xhpl

Gigaflops(Floating-Point Operations Per Second), ou seja, operaes de ponto flutuante por segundo. Os FLOPS so uma unidade de medida para mensurar a capacidade de processamento de um computador, no caso, a quantidade de operaes de ponto flutuante.

No vou analisar aqui os resultados dos testes com o HPL, somente postei a imagem acima para comprovar a instalao e funcionamento do mesmo.

O Cluster est em fase de testes e o escopo principal deste trabalho foi a montagem do mesmo. O prximo passo, estudar a fundo as configuraes do HPL para prover melhores resultados.Segue abaixo, uma imagem do Cluster. As mquinas esto de costas para facilitar o manuseio. O servidor no aparece na imagem.

REFERNCIAS Construindo supercomputadores com Linux / Marcos Pitanga - 3 edio - Rio de Janeiro; Brasport, 2008. MPICH High-Performance Portable MPI Parallel Virtual File System, Version 2 netlib.org BLAS netlib.org BLACS LAPACKLinear Algebra PACKage ScaLAPACKScalable Linear Algebra PACKage SIESTA web page Gromacs.org http://www.netlib.org/benchmark/hpl/ Ganglia Monitoring System