Escolar Documentos
Profissional Documentos
Cultura Documentos
RENÊ DETTENBORN
PALMAS
JUNHO 2008
Dados Internacionais de Catalogação na Publicação (CIP)
Biblioteca da Universidade Federal do Tocantins
Campus Universitário de Palmas
CDD 004
PALMAS
JUNHO 2008
TERMO DE APROVAÇÃO
RENÊ DETTENBORN
PROJETO DE GRADUAÇÃO
___________________________________________
George Lauro Ribeiro de Brito
Orientador
___________________________________________
Warley Gramacho da Silva
Convidado Interno
___________________________________________
Patrick Letouzé Moreira
Convidado Externo
Dedico, este trabalho
a Deus que sempre me iluminou,
a Minha Querida Esposa,
aos meus Pais e familiares
e também a aqueles que
contribuíram para a realização
V
AGRADECIMENTOS
Ao
Mestre George Brito
pela imensa atenção e dedicação ao nosso trabalho, e o
encorajamento nos momentos difíceis.
VI
“O futuro dependerá daquilo que fazemos no presente.”
Mahatma Gandhi
VII
SUMÁRIO
LISTA DE TABELAS...............................................................................................xii
RESUMO................................................................................................................xiii
ABSTRACT.............................................................................................................xiv
1 INTRODUÇÃO.......................................................................................................1
2 OBJETIVOS...........................................................................................................3
2.1. Objetivo Geral.........................................................................................3
2.2. Objetivo específico .................................................................................3
2.3. Organização do Trabalho.......................................................................3
3 O ESTADO DA ARTE EM SISTEMAS DISTRIBUIDOS.......................................4
3.1. Aspectos de Projetos em Sistemas Distribuídos....................................4
3.2. Sistemas Distribuídos.............................................................................7
3.3. Formas de Paralelismo...........................................................................9
3.4. Computação Distribuída.........................................................................9
3.5. Programação Distribuída........................................................................9
3.5.1 LAM/MPI...................................................................................10
3.6. CLUSTER.............................................................................................11
3.6.1 Desvantagens dos Clusters.....................................................14
3.6.2 Cluster Beowulf........................................................................14
3.6.3 Hardware do Cluster................................................................14
4 MATERIAIS E MÉTODOS...................................................................................16
4.1. MATLAB® ............................................................................................16
4.2. BCCD....................................................................................................17
4.2.1 Obter distribuição BCCD.........................................................18
5 DESENVOLVIMENTO DO TRABALHO..............................................................19
5.1. Distribuição GNU/Linux.........................................................................19
5.1.1 Servidor Principal.....................................................................20
5.1.2 Nós Secundários......................................................................21
5.2. MatlabMPI.............................................................................................21
5.3. Algoritmo para processamento paralelo...............................................22
5.4. Testes de Benchmark...........................................................................24
6 AMBIENTE PARA TESTES.................................................................................25
6.1. Ambiente de Processamento Distribuído.............................................25
6.2.Configuração do Cluster........................................................................26
7 RESULTADOS E DISCUSSOES......................................................................30
7.1.Resultados adquiridos...........................................................................30
8 CONCLUSÃO E TRABALHOS FUTUROS........................................................37
8.1. Conclusão.............................................................................................37
8.2. Trabalhos Futuros.................................................................................38
REFERÊNCIAS BIBLIOGRÁFICAS.......................................................................40
APÊNDICE A..........................................................................................................43
ANEXOS.................................................................................................................60
VIII
LISTA DE FIGURAS
IX
50
Figura 24: Inserção do IP desejado, valor padrão 192.168.1.1.................................50
Figura 25: Inserção da mascara com a qual se deseja trabalhar..............................51
Figura 26: Definição do Gateway................................................................................51
Figura 27: IP do servidor DNS....................................................................................51
Figura 28: Rota padrão definida.................................................................................52
Figura 29: O nome da maquina no domínio foi definido para host1, e o
arquivo /etc/host foi atualizado....................................................................................52
Figura 30: Responder Yes libera acesso via ssh neste host......................................52
Figura 31: Após tudo configurado corretamente, tem-se a seguinte tela de login.....53
Figura 32: Conteúdo do arquivo dhcpd.conf...............................................................54
Figura 33: Validar configurações................................................................................55
Figura 34: Resposta do comando ldconfig -v | less....................................................56
Figura 35: Inicialização nó secundário........................................................................57
Figura 36: O nó secundário agora faz parte do domínio, e seu nome foi definido para
host101........................................................................................................................57
Figura 37: Mensagem após executar o comando bccd-allowall.................................58
Figura 38: Resposta do comando recon -v ~/machines.............................................59
X
LISTA DE TABELAS
XI
RESUMO
XII
ABSTRACT
XIII
1 INTRODUÇÃO
XIV
funcionará apenas com algoritmos de processamento paralelo, na implementação
deste projeto encontram-se rotinas para verificação de algoritmos de processamento
distribuído, como a técnica PCAM, documentada por Ian Foster (FOSTER, 1995).
XV
2 OBJETIVOS
XVI
3 O ESTADO DA ARTE EM SISTEMAS DISTRIBUIDOS
17
● Transparência - trás uma idéia do poder ver o que acontece internamente,
mas em sistemas distribuídos este termo estabelece um paradoxo. Onde a
definição está implicada no significado de transparência, no qual faz com que
se possa ver o outro lado através de uma superfície rígida, sem realmente
visualize a parte interna.
18
● Flexibilidade – o termo esta acoplado com a preocupação de que idéias que
perdurarão podem na realidade estar com os dias contados.
19
processo que será executado no processador remoto.
20
mais que o dobro do preço que processadores padrão de mercado. O valor
de um processador que fosse desenvolvido para equivaler a milhares de
processadores de baixo custo, tem um custo inviável no que tange os valores
de um projeto de hardware de um processador.
21
memória por troca de mensagem. Cada processador tem a sua própria memória, ou
seja, para que um processador tenha acesso ao conteúdo da memória de outro
processador é preciso que: o processador A solicite via troca de mensagem o valor
de uma variável do processador B, e que este envie como resposta o valor.
22
3.5.1 LAM/MPI
A biblioteca LAM/MPI trata-se de uma implementação de alta qualidade da
padronização MPI3. MPI (Message Passing Interface) trata-se de uma padronização
para uma interface de troca de mensagem (MESSAGE PASSING INTERFACE
FORUM, 2007).
● Suporte a Threads
23
NFS5 do mesmo, e utilizar um canal seguro (SSH) para executar em todas unidades
de processamento pelo comando:
3.6. CLUSTER
57%
Industria
Acadêmico
Gov erno
Outros
Pesquisa
20%
17%
3% 2%
24
“Uma das maiores empresas do mundo, o Google tem um Cluster que não
para de crescer” (SLOAN, 2004).
250
200
150
100
50
Telecomm
WWW
Energia
Mídia
Farmácia
Pesquisa
Automotivo
Biologia
Construção
Defensa
Economia
Ambiente
Geofísica
Transporte
Pesquisa Tempo e Clima
Hardware
Serviço de Informação
Manufatura
Medicina
Software
Varejo
Não Especificado
Banco de Dados
Finanças
Serviços
Semicondutores
Jogos
CFD
Aerospacial
Mídia Digital
Benchmarking
25
● Os Cluster podem ser divididos em:
● Classificação de Cluster:
26
3.6.1 Desvantagens dos Clusters
Construir um Cluster com equipamentos antigos pode ser uma boa forma de
reaproveitar equipamentos, mas estes equipamentos antigos podem representar um
risco, pois além do consumo de energia elevado a capacidade de processamento de
dados pode ser muito baixa comparado com os novos processadores. Um
processador antigo AMD Athlon XP 3200+ pode consumir 40 Watts enquanto
processadores modernos como o AMD Athlon 64 3500+ consomem 3,2 Watts além
de processar muito mais dados (TOMSHARDWARE, 2008).
27
(vídeo) de dados (IBM Clusters Hardware, 2007).
9 Freqüência do processador.
10 Memória de acesso rápido do processador.
28
4 MATERIAIS E MÉTODOS
4.1. MATLAB®
29
4.2. BCCD
Nome Função
PVM 3.4.4 Cluster
X-PVM 1.2.5 Cluster
MPICH 1.2.5 Cluster
LAM-MPI 6.5.8 Cluster
C3-tools 3.1 Cluster
gcc Programação
g++g77 Programação
compilador GNU C Programação
C++ Programação
FORTRAN Programação
mpicc Programação
mpi77 Programação
mpiCC Programação
mpic++ Programação
hcc Programação
hcp Programação
hf77 Programação
ftp Auxiliar
ssh Auxiliar
rsync Auxiliar
gnupg Auxiliar
wget Auxiliar
tar Auxiliar
gpart Auxiliar
parted Auxiliar
hdparm Auxiliar
raidtools Auxiliar
30
com um grande leque de pacotes para programação paralela. Tem suporte para
vários modelos de interfaces de rede, e suporte para dispositivos de
16
armazenamento USB. Implementa segurança com utilização de ssh com chaves
criptografadas e compartilhamento de pastas.
31
5 DESENVOLVIMENTO DO TRABALHO
32
Knoppix Live CD, que tem suporte a vários pacotes para programação
distribuída como a biblioteca para programação distribuída LAM/MPI e o
software de computação distribuída PVM (Parallel Virtual Machine).
Apresenta uma interface amigável KDE19, inclui modulo para boot remoto, o
tamanho da distribuição é de 676MB (PARALLELKNOPPIX, 2007)
33
velocidade. Para a instância do sistema operacional em questão, verifique o
Apêndice A.
Este pacote precisa ser compartilhado para que entre todas as unidades de
processamento do Cluster. Também será necessário a definição das variáveis de
ambiente utilizadas pelo MATLAB®, pois a partir destas variáveis que pode-se
enxergar as dependências a serem sanadas para execução do binário gerado na
ferramenta MATLAB®.
5.2. MatlabMPI
20 Que funciona sozinho, dispositivo qualquer que não precisa de outros para funcionar
34
livre no sitio do projeto MatlabMPI (MATLABMPI, 2008).
● Licença do MATLAB®
Ian Foster sugere que sejam realizadas algumas fases para analise de um
algoritmo, a fim de expor oportunidades de paralelização. Esta metodologia é
conhecida como PCAM 21 (FOSTER, 1995).
35
● Aglomeração – a partir do particionamento e da comunicação obtem-se
conjuntos de procedimentos que podem ser aglomerados para formar blocos
sólidos de processamento.
36
No passo 1 da Figura 3 tem-se um problema hipotético para aplicação da
técnica de particionamento, esta técnica procura oportunidades de
paralelização.
37
6 AMBIENTE PARA TESTES
38
Figura 5: passos da implementação utilizando a Técnica Desenvolvimento e Análise
Estruturada - SADT.
A Figura 5 mostra os passos da implementação do Cluster utilizando a
Técnica Desenvolvimento e Análise Estruturada – SADT, neste diagrama tem-se os
processos principais que se comunicam fornecendo instruções e possíveis resultados.
6.2.Configuração do Cluster
39
Figura 6: Cluster pronto para testes no Labin 09 - UFT
O primeiro computador que carrega o sistema operacional BCCD precisa
inicializar o servidor DHCP, este tem acesso irrestrito aos outros computadores via
ssh, pois na inicialização as chaves de acesso remoto são compartilhadas com o
servidor DHCP.
Em seguida a partição NFS pode ser montada a partir dos nós BCCD. Duas
configurações para montar a partição remota NFS é utilizada no teste do
desempenho no Cluster.
40
Tabela 2: Hardware do Cluster
Memória
No Máquina (MB) Processador Placa Mãe Local Função IP
1 renedet-desktop 512 AMD AthlonXP 2600+ L7VTA (KT400) LABIN 9/UFT Ubuntu/NFS 192.168.1.2
2 host1 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD/DHCP 192.168.1.1
3 host93 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.93
4 host94 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.94
5 host95 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.95
6 host96 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.96
7 host97 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.97
8 host98 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.98
9 host99 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.99
10 host100 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.100
41
Figura 7: Terminal de linha de comando
42
7 RESULTADOS E DISCUSSOES
7.1.Resultados adquiridos
Para obter o tempo de acesso a partição remota NFS nos testes da Tabela
4, a montagem da partição remota NFS configurou-se para um valor menor de
tempo de acesso padrão.
Figura 8: Testes com script blurimage.m, tempo de acesso menor ao NFS, fonte Tabela 3
43
estabelecer um tempo de acesso muito baixo pode ocasionar os resultados como:
44
Figura 9: Testes com script blurimage.m, tempo de acesso padrão ao NFS, fonte Tabela 4
45
Figura 10: Ocorrência de estouro de memória por excessos de processos concorrentes,
referente ao teste 34 da Tabela 3
46
Tabela 4: Segundo teste com tempo de aceso padrão ao NFS
47
Tabela 5: Terceiro teste, poucos testes gerados pelo estouro de memória
50,000
45,000
40,000
35,000
30,000
25,000
20,000
15,000
10,000
5,000
0,000
M édia 1 M édia 2
Tempo de Execução(seg) GigaFlops(Calculado) No de Processos
Figura 11: Testes com script blurimage.m, execução local, fonte Tabela 5
48
A execução do Cluster com tempo de acesso alterado (Tabela 5) para o
servidor NFS garantiu um desempenho melhor na comparação com os valores do
Cluster com tempo de acesso padrão (Tabela 6).
49
8 CONCLUSÃO E TRABALHOS FUTUROS
8.1. Conclusão
Flexibilidade: A idéia original que implementa este trabalho esta aberta para
mudanças de hardware e software.
50
Escalabilidade: por questões de disponibilidade de computadores não foram
criados outros servidores NFS para auxiliar no incremento da escala do Cluster
implementado, mas de forma prática o incremento escalar foi possível com auxilio
de um HUB.
● Testar Cluster com um caso real para obter resultados mais práticos da
viabilidade do trabalho.
51
● Implementar melhorias para o código fonte da biblioteca de programação
distribuída MatlabMPI, pois muitas funções padrão MPI não foram
implementadas.
52
REFERÊNCIAS BIBLIOGRÁFICAS
BCCD. Bootable Cluster CD. Desenvolvido por Paul Gray e e Kristina Wanous da
Universidade de Northern Iowa. Disponível em:. <http://bccd.cs.uni.edu>. Acesso
em: 01 de Dezembro de 2007.
FOSTER, I. Designing and Building Parallel Programs: Concepts and Tools for
Parallel Programs. Número da edição. Local de Publicação: Addison-Wesley, 1995.
430 páginas.
53
GRAMACHO, Warley. Paralelização da Heurística de Otimização por Colônia de
Formigas em Ambiente de Programação por Troca de Mensagens. Trabalho de
Conclusão de Curso. Universidade Federal do Tocantins, 2006.
SLOAN, Joseph Donald. High Performance Linux Clusters with OSCAR, Rocks,
OpenMosix, and MPI. Número da edição. Local de Publicação: O'Reilly, 2004. 360
páginas.
STERLING, Tomas. Beowulf Cluster Computing with Linux. MIT Press, Outubro
2001. 496 páginas.
54
TANENBAUM, Andrew S. Distributed Operating Systems. Prentice Hall. 1995. 648
páginas.
55
APÊNDICE A
I - BCCD
PVM 3.4.4, X-PVM 1.2.5, MPICH 1.2.5, LAM-MPI 6.5.8, C3-tools 3.1
gcc, g++, g77, compilador GNU C, C++, FORTRAN, mpicc, mpi77, mpiCC,
mpic++, hcc, hcp, hf77
ftp, ssh, rsync, gnupg, wget, tar, gpart, parted, hdparm, raidtools, VNC client,
xterm
II - Adquirir BCCD
23 Núcleo de um sistema operacional, que tem capacidade de alocar recursos básicos de hardware.
24 Secury Shell, protocolo de comunicação que permite a o acesso e a execução de comandos
remotamente, em uma camada segura.
56
A aquisição do BCCD tem-se acesso pela internet a partir do seu repositório.
O BCCD já vem com servidor DHCP (180MB), e pelo site oficial do BCCD o seguinte
arquivo bccd-2.2.1c7.iso está disponível para download, este arquivo é uma
imagem de extensão iso25 que deve ser gravada em CD. (Index of /BCCD-Images,
2007)
57
executa diretamente a partir do CD ou na memória RAM do computador(adicionar
se for utilizado o comando runinram, ver referencias BCCD), não será necessário
que a máquina tenha disco rígido, isto significa uma economia no custo de
montagem de um Cluster. Para iniciar o BCCD através do CD é necessário
configurar a BIOS da placa mãe para que inicialize através do CD-ROM.
boot: 3 startdhcp
58
V - Definir Senha
Ao inicializar o servidor tem-se que colocar uma senha para o usuário padrão
bccd, esta senha terá que ter pelo menos 5 caracteres ou no máximo 8, conforme
Figura 15.
59
Figura 17: Aviso: é necessário que o computador tenha pelo menos uma interface de rede
60
Figura 19: Interface de rede
configurada corretamente
Na Figura 21, é necessário escolher a opção No, pois deste modo será
possível definir um IP estático para o nó principal.
61
Figura 22: Confirmar a configuração manual do IP
62
Figura 25: Inserção da mascara com a qual se
deseja trabalhar
63
Figura 28: Rota padrão definida
Figura 30: Responder Yes libera acesso via ssh neste host
Para fazer login no sistema utilize usuário igual a bccd e a senha que foi
definida. O acesso como super usuário é feito com usuário root e a senha letmein,
estes valores são padrões do BCCD.
64
Depois que o servidor DHCP for inicializado, para mudar o IP é necessário
autenticar-se como super usuário com o seguinte comando no console do BCCD: su
em seguida insira a senha letmein. E com o poder administrativo de super usuário
será possível alterar o arquivo dhcpd.conf de configuração do servidor DHCP que
está na pasta /etc, utilize o editor de texto pico, desta seguinte maneira:
pico /etc/dhcpd.conf
Figura 31: Após tudo configurado corretamente, tem-se a seguinte tela de login
65
deste intervalo.
export PATH=$PATH:/mpich/bin
66
Esta linha precisa ser mudada para:
export PATH=/lam-mpi/bin:$PATH
Para salvar com o editor pico, utiliza-se CTRL+o, e CTRL+x para sair.
/lam-mpi/lib:
67
A partir deste ponto a biblioteca LAM-MPI esta pronta para ser utilizada.
68
Figura 35: Inicialização nó secundário
69
Para que o nó principal possa visualizar o nó secundário, será preciso fazer o
login com usuário padrão bccd, e aceitar a opção Yes na tela (Figura 30) que será
apresentada. Também será necessário executar o comando bccd-allowall para
aceitar automaticamente todas as chaves ssh publicas, isto é importante para que
todos os nodos se comuniquem livremente com segurança ao utilizar o protocolo
ssh.
70
comunicação entre os nodos foi inicializada.
X - Referências BCCD
Parâmetros de inicialização
Primeiro parâmetro refere-se a resolução da tela:
2 para 640x480
3 para 800x600
4 para 1024x768
5 para 1280x1024
71
Segundo parâmetro referente as pré-configurações:
72
ANEXOS
#include <mpi.h>
#include <stdlib.h>
using namespace std;
main( int argc, char **argv){
int myrank;
int len;
MPI_Init(&argc, &argv);
MPI_Comm_rank( MPI_COMM_WORLD, &myrank);
MPI_Get_processor_name( name, &len );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This script implements a basic image convolution
% across multiple processors.
% To run, start Matlab and type:
%
% eval( MPI_Run('blurimage',2,{}) );
%
% Or, to run a different machine type:
%
% eval( MPI_Run('blurimage',2,{'machine1' 'machine2'}) );
%
% Output will be piped into to
%
% MatMPI/blurimage.0.out
% MatMPI/blurimage.1.out
% ...
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MatlabMPI
% Dr. Jeremy Kepner
% MIT Lincoln Laboratoy
% kepner@ll.mit.edu
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Initialize MPI.
73
MPI_Init;
% Create communicator.
comm = MPI_COMM_WORLD;
% Do a synchronized start.
starter_rank = 0;
delay = 30; % Seconds
synch_start(comm,starter_rank,delay);
if(rem(n_image_x,comm_size) ~= 0)
disp('ERROR: processors need to evenly divide image');
exit;
end
% Print rank.
disp(['my_rank: ',num2str(my_rank)]);
% Create a unique tag id for this message (very important in Matlab MPI!).
tag = 1;
74
% Create timing matrices.
start_time = zeros(n_trial);
end_time = start_time;
% Create kernel.
x_shape = sin(pi.*(0:(n_filter_x-1))./(n_filter_x-1)).^2;
y_shape = sin(pi.*(0:(n_filter_y-1))./(n_filter_y-1)).^2;
kernel = x_shape.' * y_shape;
lboxi = [1,n_filter_x/2,1,n_sub_image_y];
rboxi = [n_sub_image_x-n_filter_x/2+1,n_sub_image_x,1,n_sub_image_y];
if (comm_size > 1)
% Create message tag.
ltag = 2.*i_trial;
rtag = 2.*i_trial+1;
75
l_pad = MPI_Recv( left, rtag, comm );
work_image(lboxw(1):lboxw(2),lboxw(3):lboxw(4)) = l_pad;
end
% Compute convolution.
work_image = conv2(work_image,kernel,'same');
% Extract sub_image.
sub_image = work_image(cboxw(1):cboxw(2),cboxw(3):cboxw(4));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright 2002 Massachusetts Institute of Technology
%
% Permission is herby granted, without payment, to copy, modify, display
% and distribute this software and its documentation, if any, for any
% purpose, provided that the above copyright notices and the following
% three paragraphs appear in all copies of this software. Use of this
% software constitutes acceptance of these terms and conditions.
%
% IN NO EVENT SHALL MIT BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
% SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
% THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF MIT HAS BEEN ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%
% MIT SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING,
% BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
% FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
%
76
% THIS SOFTWARE IS PROVIDED "AS IS," MIT HAS NO OBLIGATION TO PROVIDE
% MAINTENANCE, SUPPORT, UPDATE, ENHANCEMENTS, OR MODIFICATIONS.
77