Definição
História
Entretanto o cluster ganhou força até que três tendências convergiram nos
anos 1980: microprocessadores de alta performance, redes de alta
velocidade, e ferramentas padronizadas para computação distribuída de
alto desempenho. Uma quarta tendência possível é a crescente necessidade
de poder de processamento para aplicações científicas e comerciais unida
ao alto custo e a baixa acessibilidade dos tradicionais supercomputadores.
1
O protótipo inicial era um cluster de 16 processadores DX4 ligados por dois
canais Ethernet acoplados (Ethernet bonding). A máquina foi um sucesso
instantâneo e esta idéia rapidamente se espalhou pelos meios acadêmicos,
pela NASA e por outras comunidades de pesquisa.
Master
Athlon XP 2800 +, 1024 MB de RAM, HD 40 GB, PCI LAN Realtek pci 10/100
Slave1
Pentium II 350 Mhz, 192 MB de RAM, HD 6,2 GB, PCI LAN Realtek pci 10/100
Slave2
Pentium D 4 3,06 Ghz, 1024 MB de RAM, HD 80 GB, PCI LAN Realtek pci
10/100
Slave3
Athlon XP 1100+, 1024 MB de RAM, HD 80 GB, PCI LAN Realtek pci 10/100
Master
IP: 99.99.99.40/255.255.255.0
Slave1
IP: 99.99.99.41/255.255.255.0
Slave2
IP: 99.99.99.42/255.255.255.0
Slave3
2
IP: 99.99.99.43/255.255.255.0
Além de arquivos do tipo hosts que funcionam como servidor de DNS para
comunicação entre as máquinas.
/etc/hosts
Master master.linusbera
Slave1 slave1.linusbera
Slave2 slave2.linusbera
Slave3 slave3.linusbera
Master
Slave
Slave1
Slave2
Slave3
/home/.rhosts
.rhosts
Master
Slave1
Slave2
Slave3
/root/.rhosts
.rhosts
Master
Slave1
Slave2
Slave3
rsh
ssh
rlogin
3
sincronismo maior que vinte minutos, fazendo assim a configuração de um
servidor de tempo vital para o funcionamento do cluster, segue abaixo as
configurações utilizadas:
Master:
/etc/ntp.conf
Slaves:
/etc/ntp.conf
server 99.99.99.40
driftfile /etc/ntp/drift
authenticate no
Servidor de NFS
Este serviço serve para fazer o espelhamento das pastas definidas entre as
máquina do cluster, fazendo um sincronismo entre as pastas afim de que
todas contenham os mesmo arquivos.
Master:
/etc/exports
/usr/local *(rw,no_root_squash)
Slaves:
Protocolos de comunicação
4
mensagens com sintaxe definida, mas preservando características
exclusivas de cada arquitetura, inclusive para arquiteturas de memória
compartilhada.
Funcionamento do MPICH
O MPI funciona da seguinte forma: cada máquina (node) recebe uma copia
do código fonte e um nome. Cada node começa a executar o programa a
partir da primeira linha de comando utilizando as seguintes diretrizes:
"Se eu sou o nodo tal, faço isso... Se não faço aquilo...". (FONTE: Pitanga,
2004)
Instalando o MPI/MPICH
5
# cd /usr/local/examples
Código em C:
O código fonte utilizado em nossa aplicação foi o cpi.c, que calcula o valor
aproximado de Pi. O mesmo é incluso no pacote mpich.tar.gz, localizado em
#usr/local/mpich-1.2.7/examples/basic.
#include "mpi.h"
#include <stdio.h>
#include <math.h>
double f( double );
double f( double a )
{
return (4.0 / (1.0 + a*a));
}
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stderr,"Process %d on %s\n",
myid, processor_name);
n = 0;
while (!done)
{
if (myid == 0)
{
/*
printf("Enter the number of intervals: (0 quits) ");
scanf("%d",&n);
*/
if (n==0) n=100; else n=0;
startwtime = MPI_Wtime();
6
}
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if (n == 0)
done = 1;
else
{
h = 1.0 / (double) n;
sum = 0.0;
for (i = myid + 1; i <= n; i += numprocs)
{
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
if (myid == 0)
{
printf("pi is approximately %.16f, Error is %.16f\n",
pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n",
endwtime-startwtime);
}
}
}
MPI_Finalize();
return 0;
}
Monitoramento cluster
Para monitorar o cluster foi utilizado uma ferramenta chamada bWatch, para
instalar esta ferramenta faça:
7
Copie o arquivo bWatch.tar.gz para a pasta /usr/local. Execute os comandos:
Resultados e conclusões
Problemas encontrados
Considerações finais
Com este projeto concluímos que ainda a utilização dos clusters tem apenas
fins educacionais e/ou de pesquisas, como grandes cálculos,
comercialmente ainda o cluster não tem grande utilização nem oferece
grandes vantagens, mas com o crescimento das informações logo serão
necessários clusters em qualquer lugar.