Vous êtes sur la page 1sur 59

FUNDAO EURPIDES SOARES DA ROCHA

CENTRO UNIVERSITRIO EURPIDES DE MARLIA UNIVEM


BACHARELADO EM CINCIA DA COMPUTAO

RAFAEL BENITO

ANLISE DE DESEMPENHO E IMPLEMENTAO DE UM SISTEMA


CLUSTER BASEADO EM UMA REDE AD HOC

MARLIA
2011

FUNDAO EURPIDES SOARES DA ROCHA


CENTRO UNIVERSITRIO EURPIDES DE MARLIA UNIVEM
BACHARELADO EM CINCIA DA COMPUTAO

RAFAEL BENITO

ANLISE DE DESEMPENHO E IMPLEMENTAO DE UM SISTEMA


CLUSTER BASEADO EM UMA REDE AD HOC

Trabalho de curso apresentado ao curso de


Bacharelado em Cincia da Computao da
Fundao de Ensino Eurpides Soares da
Rocha, mantenedora do Centro Universitrio
Eurpides de Marlia UNIVEM, como
requisito parcial para obteno do grau de
Bacharel em Cincia da Computao.

Orientador: Prof. Ms. MAURCIO DUARTE

MARLIA
2011

Benito, Rafael.
Anlise de desempenho e implementao de um sistema cluster baseado em uma rede
Ad hoc. / Rafael Benito; Orientador: Dr. Maurcio Duarte. Marlia, SP: 2011
51 f .

Trabalho de Curso (Graduao em Bacharelado em Cincia da Computao) - Curso


de Cincia da Computao, Fundao de Ensino Eurpides Soares da Rocha, mantenedora
do Centro Universitrio Eurpides de Marlia - UNIVEM, Marlia, 2009.
1. Sistemas Distribudos. 2. Cluster. 3. Rede Wireless. 4. Ad Hoc. 5. MPI.
CDD

AGRADECIMENTOS

Agradeo primeiramente minha famlia pelo apoio e por serem exemplo de honestidade,
respeito, educao e integridade, que foram determinantes para o meu crescimento e futuro.
Me, obrigado por ser um exemplo de vida e determinao. Lara, obrigado por estar sempre
do meu lado, me ajudando e me dando conselhos e Ju, voc um exemplo de profissional e
grande modelo pra mim, obrigado.
Ao meu orientador Prof. Ms. Maurcio Duarte, pela competncia, sabedoria e excelncia na
orientao deste trabalho.
Aos amigos da faculdade, principalmente aos amigos de pelada, Z, Honda, Mrcio e Jafa,
pelo companheirismo, apoio e amizade.
Maria Rita Capobianco, que foi imprescindvel para o desenvolvimento deste trabalho e
esteve sempre ao meu lado quando precisei, muitssimo obrigado.
E no menos importante, gostaria de agradecer a todos os amigos que me acompanharam
durante toda a faculdade: Gustavo Mantovani, Guilherme Mantovani, Filipe Garcia Lopes,
Rafael Ferrari, Bruno Conti, Rafael Oliveira, Enio, Andr Rubira, Gustavo Caliman, Kahue e
Vinicius.

Epgrafe

To Infinity And Beyond.


Buzz Lightyear

RESUMO
cada vez mais frequentes pesquisas e estudos que buscam esclarecer como redes wireless
podem se tornar mais viveis e eficientes. Com a expanso do paralelismo e da computao
distribuda tornou-se mais comum a utilizao de arquiteturas distribudas. Este projeto tem
como objetivo a criao e anlise de um sistema Cluster, baseado em uma rede wireless ad
hoc, utilizando sistema operacional Windows 7 e ambiente de passagem de mensagem MPI
(Message Passing Interface). Trata-se de uma pesquisa exploratria e prtica, com reviso
bibliogrfica e a construo de uma arquitetura distribuda de alto desempenho. Um
Algoritmo paralelo foi desenvolvido para validar o projeto. Os resultados demonstram que o
sistema cluster implementado, embora funcional, no apresentou dados que indicassem
viabilidade para se obter elevado desempenho devido s taxas de transmisso de redes
wireless. Dessa forma, julga-se interessante que mais estudos sejam feitos nesta rea uma vez
que essas tecnologias so cada vez mais utilizadas e imprescindveis no mundo da tecnologia
de informao.

Palavras-chave: Sistemas Distribudos; Cluster; Rede Wireless; Ad Hoc; MPI.

ABSTRACT

Nowadays, there has been an increase number of research and studies that aim to elucidate
how wireless network may become more practicable and efficient. With the expansion of
parallelism and distributed computing it has been taken for granted the use of distributed
architecture. This work has its aim on the establishment and analysis of a cluster on ad hoc
wireless network using Windows 7 as operational system and MPI (message passing
interface). This research covers fact-finding data and praxis including bibliographic revision
and the assembly of a high performance distributed architecture. A parallel algorithm was
developed to validate this work. The outcomes reveal that the cluster system implemented,
although functional, have not demonstrated data that suggest feasibility to obtain high
performance due to wireless network transmission rates. Therefore, it is indeed thought to
have more studies developed in this area once these technologies are more and more used and
are essential in the world of information technology.
Key-words: Distributed Systems; Cluster; Wireless network; Ad Hoc; MPI.

LISTA DE ILUSTRAES
FIGURA 1. Arquitetura de Von-Neumann...............................................................................13
FIGURA 2. Exemplo de Arquitetura SISD - Von Neumann....................................................14
FIGURA 3. Exemplo de Arquitetura SIMD.............................................................................14
FIGURA 4. Exemplo Arquitetura MISD..................................................................................15
FIGURA 5. Exemplo de Arquitetura MIMD............................................................................15
FIGURA 6. Cluster Columbia da Nasa.....................................................................................18
FIGURA 7. Exemplo de um Sistema Cluster...........................................................................19
FIGURA 8. Cluster de Alta Disponibilidade............................................................................22
FIGURA 9. Exemplo cluster Beowulf......................................................................................23
FIGURA 10. Diagrama de um Cluster Balanceador de Carga.................................................25
FIGURA 11. Classificao de processadores interconectados por escala................................29
FIGURA 12. WMPIRegister.exe..............................................................................................38
FIGURA 13. Interface do executvel wmpiconfig.exe.............................................................39
FIGURA 14. Diagrama do Algoritmo Distribudo proposto....................................................41
FIGURA 15. Interface wmpiexec.exe...................................................................................43

LISTA DE TABELAS E GRFICOS

TABELA 1 Situao 1...........................................................................................................45


GRFICO 1 Situao 1.........................................................................................................45
TABELA 2 Situao 2...........................................................................................................46
GRFICO 2 Situao 2.........................................................................................................46
TABELA 3 Situao 3...........................................................................................................46
GRFICO 3 Situao 3.........................................................................................................47
TABELA 4 Situao 4...........................................................................................................47
GRFICO 4 Situao 4.........................................................................................................48
GRFICO 5 Situao Geral..................................................................................................48

SUMRIO

INTRODUO. .......................................................................................................................... 10

CAPTULO 1 ARQUITETURAS DE ALTO DESEMPENHO........................................... 12


1.1

Histrico ............................................................................................................................ 12

1.2

Modelos de Arquiteturas de Computador Paralelismo .................................................. 13

1.3

Sistemas Distribudos. ....................................................................................................... 15

1.4

Supercomputadores ........................................................................................................... 16

1.5

Consideraes Finais ......................................................................................................... 17

CAPTULO 2 SISTEMAS CLUSTER ................................................................................... 18


2.1 Funcionamento ..................................................................................................................... 19
2.1.2 Caractersticas de um Cluster ............................................................................................ 19
2.1.3 Aplicaes ......................................................................................................................... 20
2.2

Tipos de Cluster ................................................................................................................ 21

2.2.1 Alta Disponibilidade (High Availability).......................................................................... 22


2.2.2 Alto Desempenho de Computao (High Performance Computing) ............................... 23
2.2.3 Balanceamento de Carga (Loading Balancing) ................................................................. 24
2.4 Por que cluster? .................................................................................................................... 27

CAPTULO 3 REDE WIRELESS .......................................................................................... 28


3.1

Redes Ad Hoc. .................................................................................................................. 30

3.1.1 Caractersticas das Redes Ad Hoc..................................................................................... 30


3.1.2 Aplicaes ......................................................................................................................... 32
3.2

Consideraes Finais ......................................................................................................... 34

CAPTULO 4 METODOLOGIA E IMPLEMENTAO .................................................. 35


4.1 Tecnologias utilizadas .......................................................................................................... 36
4.1 Configurao do sistema cluster baseado em rede Ad Hoc.................................................. 36
4.1.1 MPICH2............................................................................................................................. 36
4.1.2 Algoritmo Distribudo ....................................................................................................... 40
4.1.3 Execuo da Aplicao Paralela Usando MPICH2 ........................................................... 42

CAPTULO 5 RESULTADOS ................................................................................................ 44

CAPTULO 6 - CONCLUSO .................................................................................................. 49

REFERNCIAS BIBLIOGRFICAS ...................................................................................... 50

10

INTRODUO.
Com a crescente substituio de redes cabeadas por redes wireless, tem-se tornado
cada vez mais freqente pesquisas e estudos que procuram elucidar como redes wireless
podem se tornar mais viveis e eficientes, tanto para a tecnologia da informao quanto para
usurios comuns.
Com os avanos tecnolgicos, sistemas sequenciais foram se tornando obsoletos, e os
conceitos de paralelismo e computao distribuda cada vez mais utilizados. Segundo
Stallings (2003), uma das reas mais novas e promissoras de projeto de sistemas de
computao a de Cluster. A organizao de cluster constitui uma alternativa para os
multiprocessadores simtricos como abordagem para prover alto desempenho e alta
disponibilidade.
Tendo em vista os benefcios de redes wireless e sistemas distribudos cluster, de se
pensar que a unio destas ferramentas resulte em algo relevante para a rea de tecnologia da
informao.
Esta pesquisa teve como objetivo montar um sistema distribudo cluster baseado em
uma rede wireless ad hoc. Para tanto construiu-se uma aplicao distribuda, um algoritmo de
ordenao shellsort, para ser executada em tal rede.
Com a finalidade de observar se este sistema vivel bem como o desempenho
apresentado por ele utilizado a linguagem de programao C e ambiente de passagem de
mensagem MPI (Message Passing Interface), realizou-se um estudo de caso.
Alm disso, para melhor entendimento da pesquisa, procurou-se situar o leitor em
relao a historicidade de sistemas computacionais atravs de uma pesquisa bibliogrfica
sobre o tema, para, posteriormente, analisar e discutir os dados obtidos.

Organizao da Monografia
Captulo 1 Arquiteturas de Alto Nvel: Apresenta um pequeno histrico sobre o surgimento
do conceito de paralelismo e uma breve introduo sobre arquiteturas de alto desempenho.
Captulo 2 Sistemas Cluster: aborda definies, caractersticas, aplicaes e tipos de cluster.
Captulo 3 Rede Wireless: apresenta caractersticas, aplicaes e definies de rede wireless
dando nfase em redes ad hoc, rede utilizada no projeto.

11

Captulo 4 Metodologia e Projeto: apresenta o mtodo utilizado para a pesquisa e um passo


a passo de configurao do sistema cluster.
Captulo 5 Resultados: analisa e discorre sobre os resultados obtidos na pesquisa.
Captulo 6 Concluso: aponta as concluses feitas a partir da anlise dos resultados e dos
estudos.

12

CAPTULO 1 ARQUITETURAS DE ALTO DESEMPENHO.

Segundo Omoto (2009), desde o aparecimento dos primeiros computadores, quando


estes pertenciam somente a grandes empresas, buscou-se sempre a reduo de custos e a
melhora do desempenho computacional, dessa maneira, com o crescente avano tecnolgico,
diversos paradigmas importantes surgiram como grande soluo para resolver este desafio.
Este captulo tem como objetivo situar o leitor quanto a historicidade de sistemas
computacionais at o surgimento do paralelismo e da computao distribuda.

1.1 Histrico
Em 1946 surgiu o primeiro computador, famoso ENIAC1, fabricado nos EUA com a
finalidade de realizar clculos sobre armas de fogo. Era composto por 18 mil vlvulas e
pesava 30 toneladas, ficando em funcionamento at 1952, quando ento se tornou obsoleto e
foi desativado.
O ENIAC no tinha a capacidade de modificar ou carregar programas, j que no
havia um lugar especfico destinado ao armazenamento dos mesmos. Seria ideal um lugar
(diga-se memria) para que essas instrues fossem armazenadas.
Na dcada de 40, John von Neumann e alguns colegas comearam o projeto de um
novo computador, mais conhecido como IAS2. Junto com o IAS, surgiu um novo modelo
computacional chamado de modelo de Von-Neumann, esse novo modelo tornou-se a base
para desenvolvimentos computacionais posteriores. O modelo constitudo por uma memria
principal, uma unidade lgica aritmtica, uma unidade de controle e dispositivos de entrada e
sada como mostrado na figura 1. (Pitanga, 2008)

1
2

Electronic Numerical Integrator and Computer (ENIAC).


Institute for Advanced Study (IAS).

13

Figura 1. Arquitetura de Von-Neumann (Fonte Prpria).

Para atender s necessidades da poca, este modelo era ideal, porm, conforme foram
surgindo necessidades maiores, foi-se modernizando e criando-se novas tecnologias. Por
exemplo, dispositivos de entrada e sada eram lentos e tarefas no eram executadas
paralelamente, dessa forma, foram surgindo avanos tecnolgicos, at ser criado um novo
conceito chamado de paralelismo.
Pode-se dizer que paralelismo significa agrupar vrios dispositivos a fim de somar
suas foras de processamento, suprindo assim, as necessidades que no vinham a ser
resolvidas at ento, fato esse que foi essencial para o desenvolvimento de computadores.

1.2

Modelos de Arquiteturas de Computador Paralelismo

Segundo Pitanga (2008), pode-se definir o paralelismo como uma tcnica utilizada em
grandes e complexas tarefas para obter resultados na forma mais rpida possvel,
dividindo-se ento em tarefas pequenas que sero distribudas em vrios processadores
para serem executadas simultaneamente.
Pode-se ento concluir que o paralelismo significa fazer com que uma tarefa seja
divida em vrias outras tarefas menores e processadas em outros processadores
simultaneamente.
Arquiteturas, ou modelos de arquiteturas de computador so definidos pelos dados que
apresentam e pelos fluxos de instrues, sendo que desta maneira que se d a diviso das
tarefas. Essas definies foram feitas por Michael Flynn em 1972 (PITANGA, 2008). Elas
so divididas em quatro categorias:

14

SISD -Single Instruction Single Data.


nica instruo, nico fluxo de dados. Esse modelo de arquitetura o mesmo descrito

anteriormente como Modelo de Von Neumann. o tipo de arquitetura mais simples pois
funciona com apenas um dado por instruo. Um exemplo mostrado na Figura 2.

Figura 2. Exemplo de Arquitetura SISD - Von Neumann. (PITANGA, 2008).

SIMD -Single Instruction Stream Multiple Data Stream.


nica instruo, mltiplos fluxo de dados. Funciona quando aplicada uma nica

instruo a um conjunto de dados de um vetor ou matriz. Pode ser chamada tambm de


arquiteturas vetoriais.
As primeiras mquinas com esse modelo de arquitetura foram tambm os primeiros
supercomputadores. Mais detalhes na figura 3.

Figura 3. Exemplo de Arquitetura SIMD. (PITANGA, 2008).

MISD - Multiple Instruction Stream Single Data Stream.


Mltiplas instrues, nico fluxo de dados.Vrias unidades de processamento

executam diferentes operaes sobre os mesmos dados. Um exemplo desse modelo


mostrado na figura 4.

15

Figura 4. Exemplo Arquitetura MISD. (PITANGA, 2008).

MIMD - Multiple Instruction Stream Multiple Data Stream.


Mltiplas

instrues,

mltiplos

conjunto

de

dados.Todas

as

unidades

de

processamento tm uma unidade de controle prpria, assim permite-se que vrias instrues
sejam executadas em paralelo pelas unidades de processamento. Mais detalhes na figura 5.

Figura 5. Exemplo de Arquitetura MIMD. (PITANGA, 2008).

1.3

Sistemas Distribudos.

Um sistema distribudo um conjunto de computadores independentes que se


apresenta a seus usurios como um sistema nico e coerente (TANENBAUM, 2007).
Assim, pode-se afirmar que um sistema distribudo nada mais que vrios dispositivos
que se comunicam por algum tipo de rede, e que, na verdade, o usurio ver isso como apenas

16

um computador, para o usurio, a quantidade de processadores e memrias do sistema


transparente.
O prprio objetivo do sistema distribudo criar essa iluso de que h apenas um
computador trabalhando, mas na verdade o que est ocorrendo uma troca de mensagens e
compartilhamento de memria.
Pode-se apontar como vantagens do sistema distribudo: maior poder computacional;
separao fsica; menor atraso no acesso, entre outras.
A separao fsica impede que um computador j saiba do estado geral do sistema
uma vez que a mensagem transmitida pode se perder devido a atrasos que ocorram ou em
decorrncia de alguma outra falha qualquer.
Pode-se afirmar ainda que sistemas com computao distribuda so uma alternativa
de baixo custo em relao a supercomputadores,onde os sistemas so centralizados.
Segundo Omoto (2009), existem diversas vantagens e desvantagens de se utilizar
sistemas distribudos ao invs de centralizados. Entre as vantagens pode-se citar: Economia
aproveitamento de dispositivos ociosos, que interligados entre si mais econmico que
apenas um supercomputador-, Potncia de processamento entre um sistema distribudo
pode ser maior do que em apenas um supercomputador -, Confiabilidade mesmo que um
equipamento apresente falhas ou problemas, possvel que o sistema continue executando
uma aplicao-, Crescimento incremental as incluses de novas mquinas aumentam o
poder computacional.
J entre as desvantagens, pode-se citar: Escassez de software Sistemas distribudos
necessitam de software prprio para rodar -, Segurana Se houver muitos usurios pode
haver problema quanto ao acesso do sistema-, Rede de intercomunicao possvel que
haja muitos usurios e ocorra problema de gargalo e saturao na rede.

1.4

Supercomputadores

Supercomputadores

so

computadores

de

altssimo

poder/velocidade

de

processamento e grande capacidade e velocidade de acesso s memrias. Foram criados em


1960 por SeymorCray. (PITANGA, 2008). Eles contm uma velocidade de processamento
gigantesca, um enorme tamanho que requer refrigerao adequada , e h uma grande
dificuldade de uso uma vez que esses no se tratam de um desktop domstico. Esses

17

supercomputadores so usados para clculos complexos e seus maiores usurios so grandes


centros de pesquisas.
H vrios tipos de supercomputadores, tais como o PVP (Processadores Vetoriais
Paralelos), SMP (Symetric Multiprocessors ou Multiprocessadores simtricos), DSM
(Distributed Shared Memory ou Memria Compartilhada Distribudas) e o MPP (Massively
Parallel Processors ou Processadores Massivamente Paralelos). (PITANGA, 2008)
Existem alguns problemas ao se utilizar um supercomputador. Este de alto custo, os
softwares so caros e proprietrios, h dificuldade de atualizao, altos custo de manuteno e
a dependncia em relao aos fornecedores. Em decorrncia desses fatores que existe uma
forte pesquisa sobre computao distribuda e cluster de computadores.
Acredita-se, de acordo com Pitanga (2008), que sistemas distribudos, clusters, grids,
entre outros tendem a aparecer mais nesse milnio.

1.5

Consideraes Finais

Arquiteturas de alto nvel podem ser definidas como aquelas em que ocorre multiprocessamento, podendo ser feito de maneira distribuda ou centralizada. Esta caracterstica
extremamente til quando se pretende solucionar problemas de processamento, uma vez que
possvel agrupar o poder deste somando a fora de vrios dispositivos.
Dentre as arquiteturas de alto nvel, so as dos supercomputadores que podem
representar a melhor opo em situaes que demandam alta velocidade e grande poder de
processamento, uma vez que estas duas caractersticas esto presentes neste tipo de
arquitetura. No entanto, sistemas distribudos tm despertado interesse e estudos devido
praticidade e ao custo operacional que apresentam, uma vez que possvel criar ou, no
mnimo, aproximar a velocidade de processamento s dos supercomputadores.
Neste projeto foi adotada a arquitetura computacional MIMD em multicomputadores.

18

CAPTULO 2 SISTEMAS CLUSTER

Os Clusters de Computadores so mquinas construdas com utilizao de dois ou


mais microcomputadores comuns interligados por uma rede de interconexo, que trabalham
juntos para resolver um problema. (RODRIGUES; GOUVA; PEREIRA, s.d).
Pode-se ento dizer que um sistema cluster so vrios dispositivos que, conectados por
uma rede, agem em conjunto para atingir um objetivo em comum.
Uma das caractersticas sobre sistemas distribudos passar uma imagem transparente
para o usurio, como se houvesse apenas um dispositivo trabalhando e no vrios, como
tambm foi ressaltado por Jnior e Freitas, (2005): O conceito de imagem nica dita que um
sistema paralelo ou distribudo, independente de ser composto por vrios processadores ou
recursos geograficamente distribudos, deve comportar-se com um sistema centralizado do
ponto de vista do usurio..
Conclui-se ento que Cluster so vrios computadores ou dispositivos autnomos que
operam em conjunto, interconectados por uma rede, para que o mesmo objetivo seja
alcanado, porm passando uma imagem para o usurio de que apenas um computador esteja
trabalhando.
A figura 6 mostra o Cluster da NASA, Columbia(2004).

Figura 6. Cluster Columbia da Nasa (Fonte: NASA).

19

2.1 Funcionamento

Um cluster consiste na coleo de ns computacionais que so controlados e


acessados por um n denominado N Mestre (TANENBAUM, 2006).
A figura 7 mostra um exemplo de um sistema cluster.

Figura 7. Exemplo de um Sistema Cluster (Fonte: Tanenbaum, 2006)

A Figura 7 mostra um exemplo de funcionamento de um Cluster, onde o n mestre


quem gerencia e distribui a carga entre os ns de computao atravs de uma Rede. A figura 7
mostra tambm que o N mestre quem contm a aplicao de gerncia das bibliotecas
paralelas e nos ns escravos contm apenas os componentes da aplicao paralela.
Toda a troca de informaes entre o n mestre e os outros ns do sistema feita
atravs da interconexo de rede, e uma rede separada feita para conectar o usurio ao
sistema cluster. Pode-se usar a mesma rede para fazer a conexo, porm, se houver muito
trfego pode ocorrer perda de desempenho.

2.1.2 Caractersticas de um Cluster

Um sistema cluster possui vrias caractersticas, porm a mais importante, como dito
anteriormente a transparncia, ou seja, o sistema deve parecer centralizado em apenas um
dispositivo para o usurio.

20

Outras caractersticas, no menos importantes como a transparncia so apontadas por


(Omoto,2009):

A configurao dos ns, onde os dispositivos podem ser multiprocessados ou


uniprocessados.

Quanto escalabilidade do sistema ela pode ser:

a) Absoluta: possibilidade de construo de um sistema onde a capacidade de


processamento supera a de dispositivos individuais.
b) Incremental: um sistema cluster pode ser formatado para ser expandido, ou seja,
incrementar a quantidade de ns no sistema.

A disponibilidade, caso ocorra algum tipo de erro em um n, os outros ns continuam


trabalhando para manter o sistema disponvel.

O custo/beneficio, dado a facilidade da construo de um sistema cluster, seja feito


com dispositivos antigos ou novos, possvel a construo de sistemas com alto poder
computacional e com custo menor se comparados a supercomputadores ou quaisquer
outros computadores de grande porte.

E a utilizao de hardware aberto, softwares livres e sem a necessidade de licenas de


uso torna o sistema independente de fornecedores.

2.1.3 Aplicaes

Pode-se concluir que clusters so bem aplicados diante de situaes que exigem alto
poder computacional, assim em qualquer local onde tivermos um grande problema
computacional em que o processamento paralelo seja considerado uma vantagem, pode ser
indicado utilizao em um cluster. (PITANGA, 2008).
Pitanga(2008) tambm cita exemplos de aplicaes onde esses sistemas podem ser
utilizados.So eles:

21

Servidores da Internet: clusters podem dividir a carga de trabalho para otimizar os


resultados quanto a resposta do servidor.
Segurana: por oferecer grande poder de processamento, o cluster pode ser aplicado para
identificar se houve quebra na segurana e apontar possveis solues para o ocorrido.
Banco de Dados: querrys que demorariam a retornar algum resultado de um banco de
dados muito grande, retornam de forma mais rpida se usado sistema cluster para busca.
Computao Grfica: tempo de processamento normalmente uma limitao para
qualidade de processos na computao grfica, a utilizao de cluster pode, por exemplo,
aperfeioar o tempo de renderizao de imagem.
Anlise de Elementos Finitos: clculo de barragem, navios, veculos espaciais, edifcios
entre outros que necessitam de grandes clculos que podem levar muito tempo.
Engenharia gentica: projeto Genoma.
Inteligncia artificial e automao: reconhecimento de voz, processamento de imagens,
reconhecimento de padres.
Previso do tempo: em computadores seqenciais esse processo pode ser lento e ter
pouca preciso.
Pesquisa militares: projeto de armas nucleares e simulaes de efeitos das armas,
gerao automtica de mapas, acompanhamento de submarinos submersos.

2.2

Tipos de Cluster

Clusters normalmente so classificados quanto a sua aplicao final. Existem vrios


tipos de cluster, porm, pode-se mostrar as classificaes mais conhecidas em trs categorias

22

bsicas: Alta Disponibilidade (HA - High Availability), Alta Desempenho de Computao


(High Performance Computing) e Balanceamento de Carga (LoadBalancing).

2.2.1 Alta Disponibilidade (High Availability)

Cluster de alta disponibilidade tem o objetivo principal de manter um sistema


disponvel o tempo todo sem falhas de indisponibilidade, assim a alta disponibilidade tem
como funo essencial deixar um sistema no ar vinte e quatro horas por dia, sete dias por
semana, ou que no suportem paradas de meia hora ou alguns minutos. (PITANGA, 2003).
Pode-se concluir ento que, nos clusters de alta disponibilidade, os ns operam em
conjunto para que o servio esteja sempre ativo, caracterizando assim uma alta
disponibilidade.
A figura 8 mostra um exemplo de um Cluster de Alta Disponibilidade

Figura 8. Cluster de Alta Disponibilidade.


(Fonte: http://www.clubedohardware.com.br/artigos/153).

A Grande justificativa de utilizar cluster de alta disponibilidade surgiu de empresas


que necessitavam que seu servio e/ou aplicao tivessem disponibilidade total. Se esta no
ocorresse, por exemplo, em uma loja virtual, clientes dessa empresa provavelmente teriam a
impresso de m qualidade de servio.

23

Para Pitanga (2003), de maneira geral, um servidor de boa qualidade apresenta uma
disponibilidade de 99,5%, e solues em cluster apresentam disponibilidade de 99,99%.
Conclui-se ento que servios que utilizam cluster para alta disponibilidade tm mais chances
de atingir o objetivo de prover servios sem interrupes.

2.2.2 Alto Desempenho de Computao (High Performance Computing)

Esta categoria tem como foco, o desenvolvimento de solues cujo objetivo principal
o ganho de desempenho atravs do agrupamento de sistemas de processamento, auxiliado
por algoritmos de processamento paralelo. (OMOTO, 2009).
Sendo assim, pode-se concluir que cluster de alto desempenho tem como objetivo a
soma de poder processamento para resolues de problemas cuja carga a ser processada
elevada.
HPC funciona paralelizando a aplicao a ser processada, ou seja, dividindo a
aplicao em tarefas menores e a distribuindo entre os ns do sistema, cada n processa sua
parte e devolve o resultado. Dessa maneira, tarefas muito grandes so processadas mais
rapidamente e sem custo excessivo se comparados a supercomputadores.
Um exemplo de cluster voltado para o desempenho o cluster beowulf, como
mostrado na figura 9:

Figura 9. Exemplo cluster Beowulf (Fonte Prpria).

Um cluster beowulf baseado em uma infraestrutura de hardware comum, sendo


assim, qualquer tipo de computador pode preencher o sistema, mesmo que tal computador no

24

tenha um processamento elevado, j que o poder de processamento ser somado. Baseia-se


tambm em uma rede privada e softwares livres.

2.2.3 Balanceamento de Carga (Loading Balancing)

Nessa abordagem de cluster, baseado em balanceamento de carga, o sistema tem a


funo de distribuir o trafego entre as mquinas do sistema.
O cluster de Balanceamento de Carga tem como propsito a distribuio igualitria de
processos ao longo dos ns do agrupamento de computadores. Evidentemente algoritmos de
escalonamento de processos se fazem necessrios (PITANGA, 2002 apud OMOTO, 2009).
Cada n do sistema interligado e cada solicitao requerida a ele distribuda de
forma equilibrada entre os ns, assim toda a carga balanceada entre o sistema. Vale ressaltar
que esse tipo de cluster utiliza um algoritmo de escalonamento para que o sistema balanceie a
carga corretamente.
Sistemas cluster de balanceamento de carga so muito utilizados em situaes onde h
problema de inmeras solicitaes em tempo real, solucionando assim, cargas excessivas que
poderiam prejudicar o sistema.
Algoritmos de escalonamento para esse tipo de sistemas so definidos segundo (BUYYA,
1999 apud OMOTO, 2009):

Least Connection
Nesse algoritmo de balanceamento, a preferncia de destino da carga para ns onde
o nmero de solicitaes menor.

Round Robin
Encaminha as cargas de forma sequencial, ou seja, encaminhando a carga para o
primeiro n na sequncia que esteja disponvel.

Weighted Fair
A carga encaminhada preferencialmente para ns de maior poder computacional, ou
que tem maior capacidade de carga.

25

Um exemplo de sistema cluster de balanceamento de carga mostrado na figura 10.

Figura 10. Diagrama de um Cluster Balanceador de Carga. (Fonte:Prpria)

2.3 Breve Introduo Ambientes de Programao Paralela.

Para a implementao de um programa paralelo em um sistema distribudo


necessrio que um ambiente de troca de mensagem seja definido e configurado, isso se d
pela necessidade de troca de informaes entre ns do sistema. So esses ambientes os
responsveis pelo gerenciamento e da computao paralela, tais como a comunicao,
sincronizao e criao de processos.
Os ambientes de passagem de mensagens so ambientes de programao paralela para
memria distribuda porttil, pois permitem o transporte de programas paralelos entre
diferentes arquiteturas e sistemas distribudos de maneira transparente (SANTANA, 1997
apud OMOTO, 2009).
As mais conhecidas e utilizadas bibliotecas de passagem de mensagem so o MPI
(MessagePassing Interface) e o PVM (Parallel virtual Machine) assim como mostra Santana,
(1997) apud Omoto (2009): Os ambientes MPI e PVM obtiveram uma grande aceitao por
proporcionar o desenvolvimento de aplicaes paralelas a um custo relativamente baixo em
relao arquiteturas paralelas..

26

interessante citar tambm que aps 1997 Java RMI (Remote Method Invocation)
obteve bastante destaque.3
Para o desenvolvimento deste projeto ser dada nfase para o MPI, o qual foi utilizado
para a implementao do mesmo.

2.3.1 Breve introduo MPI

A sigla MPI quer dizer MessagePassing Interface ou em portugus: Interface de


Passagem de Mensagem, uma biblioteca desenvolvida para ser padro em memria
distribuda, em passagem de mensagem e em computao paralela. Passagem de mensagem
portvel para toda e qualquer arquitetura, oferece aproximadamente 125 funes para
programao e algumas ferramentas para analisar o desempenho. Pode ser utilizada nas
linguagens C e FORTRAN. Vale tambm ressaltar que a plataforma alvo para o MPI so os
ambientes de memria distribuda, mquinas paralelas e sistemas cluster.

2.3.2 Caractersticas do MPI

Algumas caractersticas do MPI podem ser apontadas (OMOTO, 2009):

Eficincia: O MPI foi projetado para executar com eficincia e em diferentes


arquiteturas, especificando somente o funcionamento lgico e deixando a
implementao aberta, sendo assim, desenvolvedores podem aperfeioar o cdigo de
acordo com a sua necessidade.

Facilidade: Interface com facilidade de uso.

Portabilidade: compatvel com sistemas de memria distribuda ou compartilhada


ou at mesmo uma rede de servidores.

Informao Oral obtida em novembro de 2011 pelo Prof. Ms. Mauricio Duarte.

27

Transparncia: O programa pode ser executado em arquiteturas heterogneas sem


mudanas significativas nos resultados.

Segurana: Prov uma comunicao confivel.

Escalabilidade: Permite o crescimento em escala.

2.4 Por que cluster?

Como descrito anteriormente, cluster so sistemas que podem ser construdos


utilizando mquinas no to poderosas como supercomputadores, mas que em conjunto,
possam processar cargas excessivas que seriam impossveis de processar em mquinas de
arquitetura centralizadas.
Assim conclui-se que esses sistemas so altamente viveis, uma vez que o paralelismo
vem crescendo, a implementao no complexa e seu custo no excessivo.

28

CAPTULO 3 REDE WIRELESS

O mundo sem fio tem sido significantemente desenvolvido com produtos de redes de
Rdio Freqncia (RF). O objetivo desses produtos simplificar e transformar o modo de
comunicao e conduo de nossas vidas.(MOHAMMAD, 2003 apud CORRA et al. (s.d)).
Essas redes buscam primeiramente, num mbito mais abrangente, ocupar a lacuna
que impossibilitava a implementao de redes cabeadas por questes de patrimnio pblico
tombado, bem como pelo auto custo de se estabelecer uma rede fixa temporria.(CORRA
et al. s.d)
Nos ltimos cinco anos (2002) o mundo tem se tornado mais mvel. Como resultado,
tradicionais meios de rede vem provando serem inadequados para enfrentar os desafios
colocados pelo novo estilo de vida coletivo.4 (GAST, 2002).
A rede sem fio est presente no cotidiano atravs de celulares, comunicao TVSatlite, rdio amadores, entre outros, porm o seu uso mais aparente feito em rede de
computadores.
Redes e dispositivos sem fio esto cada vez mais populares uma vez que o acesso
informao e comunicao pode ser feito a qualquer hora e lugar.(MOHAPRATA,
KRISHNAMURTHY, 2004).
De acordo com Mohaprata e Krishnamurthy (2004),o uso de redes e dispositivos sem
fio vem ficando popular uma vez que o uso das redes wireless so mais prticas e no
necessitam de infraestrutura complexa como a de uma rede cabeada. Dessa forma se torna
possvel o acesso informao e comunicao instantnea.
Segundo Tanenbaum (2003), pode-se utilizar o critrio de escala para classificar uma
rede, como mostrado na figura 11.

Traduo prpria

29

Figura 11. Classificao de processadores interconectados por escala. (Fonte: TANENBAUM, 2003).

Para as redes sem fio, Tanenbaum (2003), faz uma diviso em trs categorias
Interconexo de Sistemas, LANs sem Fio, WANs sem Fio.

Interconexo de Sistemas ou WPAN Wireless Personal Area Network, utilizada


normalmente na interao de dispositivos simples, e de curto alcance, tal como
controle de carro ou bluetooth. (COSTA, [s.d.]).

LANs sem Fio ou WLAN Wireless Local Area Network, rede local sem fio. Uma
rede local sem fio pode ser considerada uma extenso de uma rede local cabeada, que
converte os pacotes de dados em ondas de rdio e os envia para um ponto de acesso
que serve como uma conexo para uma rede local.(CORRA et al. s.d.).A
Figura12mostra um exemplo de uma WLAN.

WANs Sem Fio Wireless Wide Area Network, a abrangncia desse tipo a de maior
alcance, normalmente utilizada por operadoras de celular. CDMA5 e GSM6 so
exemplos desse tipo de rede sem fio.

Dentro da Rede Wireless existem duas principais topologias, ou seja, dois principais
modos de se montar essa rede. So elas:

5
6

CDMA - CodeDivisionMultiple Access, ou Acesso Mltiplo por Diviso de Cdigo.


GSM - Global System for Mobile Communications, ou Sistema Global para Comunicaes Mveis.

30

a) Infraestruturadas, as redes com infraestrutura so aquelas em que o n mvel est em


contato direto com uma Estao de Suporte Mobilidade (ESM), tambm conhecida
como ponto de acesso (AP). .(CORRA et al. s.d).
A aplicabilidade dessa topologia de rede pode ser empregada em locais onde j existe
uma rede local, mas haja a necessidade de oferecer flexibilidade e mobilidade para
algumas estaes. (CORRA et al. s.d).
b) Ad-Hoc, onde no existe a presena de nenhum dispositivo concentrador, os prprios
dispositivos transmitem entre si.Elas so construdas dinamicamente, como resultado
da deteco mtua de dois ou mais equipamentos mveis com interfaces sem fio na
mesma vizinhana. (COULOURIS; DOLLIMORE; KINDBERG, 2007).

Neste projeto a importncia maior est sobre essa topologia Ad Hoc.

3.1 Redes Ad Hoc.

As redes mveis ad hoc so a fronteiras finais em uma comunicao sem fio, e o fator
chave na evoluo desse paradigma (SANTINI, 2005). Essa abordagem de comunicao
permite que os nodos se comuniquem diretamente entre si ou atravs de mltiplos saltos
dentro da rede usando receptores e transmissores sem fio, sem a necessidade de uma
infraestrutura fixa (CAMPBELL, 2003 apud CORRA et al. s.d).
Como afirmado por Corra et al. (s.d.), toda a transmisso entre os dispositivos feita
sem nenhuma infraestrutura, e isso faz com que os prprios dispositivos ajam como
concentradores.

3.1.1 Caractersticas das Redes Ad Hoc

Mohaprata e Krishnamurthy (2004), descrevem como caractersticas de redes Ad Hoc:

31

Mobilidade:
Configura-se como uma das principais caractersticas das redes ad hoc, uma vez que
possibilita de maneira prtica e rpida o reposicionamento e mobilidade dos ns. Em
reas com pouca infraestrutura, cujo objetivo obter determinado resultado com um
rpido desempenho, necessrio criar times teams/swarms que coordenem entre si
para executar uma fora tarefa ou misso. O modelo de mobilidade escolhida ir
influenciar de forma crucial a deciso quanto ao esquema de roteamento que,
consequentemente ir determinar o desempenho da tarefa a ser feita. Pode-se, assim,
escolher entre mobilidades individuais aleatrias, mobilidades em grupo, movimento
atravs de rotas pr-planejadas e outras.

Multi-hopping:
Dizer que uma rede possui caractersticas mltiplo saltos significa afirmar que os
trajetos percorridos desde a origem at o destino final atravessam diversos ns. As
redes ad hoc geralmente utilizam o recurso dos mltiplos saltos para solucionar
obstculos, conservar energia e reutilizar frequncia (spectrum reuse). As operaes
secretas em campos de batalha, visando evitar e/ou dificultar que inimigos descubram
seus contedos, tambm utilizam uma sequncia de saltos.

Auto-organizao:
A rede ad hoc deve determinar automaticamente seus parmetros de funcionamento,
incluindo: endereamento, roteamento, agrupamento, identificao de posicionamento,
controle de potncia, entre outras. Em alguns casos, ns especiais podem se coordenar
e distribuir em determinada rea geogrfica para que haja cobertura de territrios
desconectados.

Escalabilidade:
Em alguns casos a rede ad hoc pode expandir em centenas de milhares de ns em
pouco tempo dependendo das aplicaes a que so submetidas. A escalabilidade de
rede sem fio infraestruturada manipulada por construo hierrquica ou pode
tambm ser manipulada utilizando um ip-mvel ou tcnicas de handoff. Porm, como
as redes Ad Hoc possuem muita mobilidade, se esta for pura, no ir tolerar ser
manipulada por um ip-mvel ou qualquer hierarquia fixa. Levando estes fatores em

32

considerao, pode-se concluir que problemtico e trabalhoso utilizar mobilidade em


alta escala de redes ad hoc.

Segurana
Os desafios de segurana nas redes sem fio j so bem conhecidos, e, como j se sabe,
estas redes podem ser vistas e/ou ouvidas por intrusos. Dessa forma, muitos trabalhos
relacionados segurana esto sendo desenvolvidos para ambientes em rede sem fio
infraestruturada e, por consequncia, se estendendo para as redes ad hoc, uma vez que
estas so mais vulnerveis do que aquelas. Porm, uma das dificuldades encontradas
nas redes ad hoc em relao aos protocolos, muito mais difcil de detectar do que nas
redes infraestruturadas. Alm disso, ataques passivos s redes ad hoc podem ser mais
maliciosos/perigosos do que os ativos.

Restries de Energia
A maioria dos ns ad hoc, tais como laptops e PDAs7, possuem autonomia limitada e
incapacidade de gerar sua prpria energia. Dessa forma, imprescindvel que haja um
eficiente sistema de fornecimento ou gerao de energia para o sucesso e durao da
misso.

3.1.2 Aplicaes

Uma vez que essas redes no requerem de infraestrutura, as aplicaes destas se do


atravs de situaes onde se necessita de uma rede rpida de montar e/ou no h outra
maneira de se t-la sem infraestrutura, ou at mesmo se houver uma rede infraestruturada que
no possa ser utilizada por algum motivo em especifico como, por exemplo, a segurana.
Algumas dessas aplicaes sero descritas a seguir. (CORRA, et al. s.d).

Campo de Batalha em Operaes Militares


As redes ad-hoc tiveram origem dentro do campo de batalha, a comunicao entre
soldados feita atravs desse tipo de rede. Alm da comunicao entre soldados,

PDA - Personal digital assistants, assistente pessoal digital ou palmtop.

33

pode-se haver a comunicao entre os soldados e avies no tripulados (UAVs) que os


ajudam quanto a localizaes, terreno e entre outras informaes.

Veculos no tripulados
Alguns dos aplicativos populares das redes ad hoc exigem componentes robticos no
tripulados. Todos os ns de uma rede genrica so, obviamente, capazes de criar redes
autonomamente. Quando se adiciona tambm uma mobilidade autnoma, surgem
interessantes oportunidades de se associar networking com deslocamento. Um
exemplo so os chamados UAVs Unmanned Airborne Vehicles, que so capazes de
manter uma rede ad hoc de grande terreno interconectada apesar dos muitos
obstculos fsicos, das irregularidades do canal de propagao e enemyjamming. Alm
disso, as UAVs conseguem conciliar uma performance relativamente restrita atravs
de um posicionamento e beaming de antena adequados.

Sensores
O uso de sensores em determinado ambiente tem se mostrado popular a medida que
permite coletar processos, operar de forma automtica alm de transmitir informaes
sem o suporte de uma infra-estrutura.

Conexo Internet
H algumas vantagens em expandir a rede infrestruturada com apndices de ad hoc.
Por exemplo, o alcance de uma LAN sem fio domstica pode ser aumentada, se
preciso para a garagem, casa de um vizinho e outras com roteadores portteis.
Estas extenses tm se tornado extremamente importantes e so significativas na
medida em que surgem aplicaes comerciais das mesmas. A integrao de um
protocolo ad hoc com padres infra estruturados est, portanto, se tornando uma
questo de grande relevncia atualmente.

Assistncia a Desastre
Redes ad-hoc se moldam muito bem nesse tipo de caso, uma vez que sua aplicao
no necessita de infraestrutura elas podem ser altamente flexveis para a troca de
informaes com sobreviventes ou at mesmo com o prprio grupo de resgate.

34

3.2

Consideraes Finais

Aps a anlise das caractersticas e aplicabilidades tanto das redes infraestruturadas


quanto das ad hoc pode-se pontuar vantagens e desvantagens de cada. Nas redes
infraestruturadas a segurana e o alcance so fatores positivos embora seja necessrio o uso
de concentradores. J nas redes ad hoc, embora a segurana seja prejudicada, existe a
vantagem de no precisar de nenhum concentrador, j que os prprios dispositivos iro agir
como concentradores.
Dessa forma pode-se afirmar que redes ad hoc so muito bem utilizadas onde a
aplicao de redes infraestruturadas no podem ser feitas.
Algumas das caractersticas apontadas como vantagens da implantao das redes ad
hoc podem se tornar desvantagens, dependendo do contexto de utilizao das mesmas. Por
exemplo, a caracterstica de multi-hopping pode apresentar um peso no salto, o que no seria
uma situao desejvel ou ideal em determinadas ocasies.

35

CAPTULO 4 METODOLOGIA E IMPLEMENTAO

Toda pesquisa caracteriza-se por ser um procedimento racional cujo principal objetivo
encontrar respostas aos problemas que so propostos, alm de confirmar ou refutar as
hipteses levantadas. (GIL, 2008).
Dessa forma, procurando observar de que maneira ocorre a implementao de um
sistema cluster baseado em uma rede ad hoc e se este vivel quando comparado com um
sistema centralizado, realizou-se uma pesquisa exploratria e prtica.
A pesquisa exploratria tem como objetivo explorar um assunto ainda pouco
conhecido, pouco estudado. Caracteriza-se por ser a primeira, ou uma das primeiras
aproximaes de um determinado tema e, por ser um tipo de pesquisa muito especfica, quase
sempre assume a forma de um estudo de caso.
Foram utilizados, portanto, dois procedimentos metodolgicos para conduzir esta
pesquisa: o levantamento bibliogrfico e o estudo de caso. Estes, assim como qualquer outro
procedimento metodolgico, so utilizados a fim de juntar informaes teis para construir
raciocnios e concluses a respeito de um fenmeno.
O levantamento bibliogrfico um procedimento bsico e obrigatrio em qualquer
pesquisa. Consiste na leitura e anlise de livros, artigos, revistas, teses, entre outros e
pretende-se, atravs deste, obter informaes amplas e profundas a respeito de determinado
assunto. imprescindvel para familiarizar o pesquisador em relao ao assunto escolhido e
fundamentar seus estudos.
J o estudo de caso consiste no estudo profundo e exaustivo de um caso em particular
e permite conhecer o objeto de uma forma ampla e detalhada. Tem como finalidade explorar
situaes da vida real que no apresentam com clareza algum aspecto, descrever situaes da
realidade, explicar fenmenos especficos em situaes tambm especficas que no poderiam
ser obtidos de outra forma, dentre outros. necessrio ressaltar que os resultados no podem
ser generalizados, uma vez que foram obtidos e observados em uma amostra no significativa.
De acordo com Yin (2001), o estudo de caso compreende trs etapas: 1) a escolha do
referencial terico que se pretende utilizar etapa esta que foi feita e explicada anteriormente

36

neste trabalho ; 2) a seleo do(s) caso(s) e forma de coleta de dados; 3) anlise dos dados e
interpretao dos resultados.

4.1 Tecnologias utilizadas

Para a resoluo do tema proposto, foram utilizados trs computadores de arquitetura


heterognea, porm, sem muito desnvel tecnolgico.
Todos os computadores instalados o sistema operacional Windows 7 e todos os
softwares necessrios para a resoluo de testes. Segue abaixo toda a configurao de
hardware dos ns:
O primeiro n do projeto composto por um processador AMD Turion 64 X2 - 1.80
GHz com 2.00 GB de memria ram e placa de rede wireless Atheros AR5007EG, o segundo
n composto por um processador AMD Athlon 64 X2 Dual Core - 2.11 GHz com 2.00 GB de
memria ram e um adaptador wireless BUFFALO WLI-UC-G30xN, e o terceiro e ultimo n
do projeto era composto por um processador Intel Core 2 Duo 1.73 GHz com 2 GB de
memria ram e placa de rede wireless Atheros AR5007EG.
Para a anlise desenvolvida neste projeto, foi utilizado uma implementao do padro
MPI chamada MPICH2.

4.1 Configurao do sistema cluster baseado em rede Ad Hoc

Para a configurao do cluster em uma rede Ad Hoc foram necessrias duas


configuraes bsicas, uma referente rede Ad Hoc e outra referente ao ambiente de
passagem de informao o MPICH2. Ambas as configuraes so descritas a seguir:

4.1.1 MPICH2

37

MPICH2 uma implementao de alta performance e amplamente porttil do padro


MPI.
Pode-se concluir ento que o MPICH uma ferramenta de implementao do MPI. A
ferramenta free, porttil e est disponvel para a maioria de sistemas UNIX e tambm para
sistemas Windows.
Para o desenvolvimento do projeto, necessria a configurao da ferramenta em
questo. Toda a configurao descrita a seguir:

Configurao do MPICH2

Para o desenvolvimento desse projeto foi utilizado a ferramenta MPICH2 na verso


1.4.1 para Windows 32 bits. A mesma verso deve ser instalada em todos os ns que sero
utilizados no sistema cluster.
Antes de comear a instalao deve ser criada uma conta de usurio do windows com
mesmo login e senha em todos os ns. Por exemplo, Computador Mestre (Login: Rafael ,
Senha: 123mudar), Computador1 (Login: Rafael , Senha: 123mudar) ... Computador N
(Login: Rafael , Senha: 123 mudar). muito importante que a conta de usurio criada seja um
administrador ou pode surgir erros de credenciais. Aps essa configurao pode-se ento
prosseguir ao passo de instalao.
A instalao deve ocorrer na conta de usurio criada, ou se estiver ocorrendo em outra
conta, deve-se habilitar a opo de instalar o MPICH para todos os usurios do computador.
Depois de concluda a instalao, o executvel wmpiregister.exe deve ser aberto.
Ele est localizado na pasta de instalao do MPICH. So exibidos dois campos a serem
preenchidos e quatro botes logo abaixo, como mostra a figura 13.

38

Figura 12. WMPIRegister.exe [Fonte: Prpria]

No primeiro campo Account deve ser preenchido o nome de usurio do computador


e no campo abaixo password deve ser preenchida a respectiva senha do nome de usurio
informado. Vale ressaltar que esse nome e usurio devem ser iguais em todos os ns e todos
eles devem ter uma conta de usurio no Windows com esses dados exatamente. Preenchido os
campos, deve ento apertar o boto Register e logo em seguida no boto OK. Feito isso
todos os ns do sistema estaro com as credenciais necessrias para que ocorram conexes
entre eles.
Aps a criao das credenciais deve-se ento montar a configurao entre os ns do
sistema, elas podem ser feitas em outro executvel, tambm localizado na pasta de instalao
do MPICH, com o nome de wmpiconfig.exe. A figura 13 mostra a interface desse
executvel:

39

Figura 13. Interface do executvel wmpiconfig.exe. [Fonte: Prpria]

Primeiramente deve-se mudar o domnio para o grupo de trabalho onde esto


localizados os ns. Para isso basta mudar o campo Domain para o grupo desejado, no
exemplo da figura acima o campo est como WorkGroup. Feito isso, deve-se ento clicar
no boto Get Hosts e ento em Scan Hosts, isso necessrio para verificar a
disponibilidade dos hosts. Aps clicar em Scan Hosts deve-se verificar a cor em que os ns
aparecem no sistema, como padro da ferramenta eles aparecem tarjados de verde se esto
disponveis ou de cinza se indisponveis. No meio da interface encontram-se algumas
configuraes que podem ser feitas, para esse projeto todas as configuraes foram as padres
do MPICH, ou seja, no foi alterado nada da configurao original que o MPICH
disponibiliza.
Aps a etapa de configurao estar pronta, cria-se uma pasta compartilhada no
Windows onde toda a aplicao paralela que foi desenvolvida deve estar.

40

Configurao Rede Ad Hoc

A criao/configurao de uma rede Ad Hoc relativamente simples se for feita pelo


Windows 7. Deve-se acessar a Centro de Redes e Compartilhamento, em seguida clicar em
Configurar uma conexo ou Rede. Posteriormente deve-se clicar em Configurar uma rede
ad hoc sem fio e em seguida seguir os passos e preencher os campos necessrios.
Quando pronto, a conexo ficar disponvel para outros dispositivos que esto no raio
de alcance dessa rede. Aps a criao, a rede fica em um estado de aguardo, esperando que
outro dispositivo se conecte ela, quando isto ocorrer a rede estar pronta para o uso.
Feito todos os passos descritos anteriormente, a aplicao paralela estar pronta para
ser executada.

4.1.2 Algoritmo Distribudo

Antes de efetuar a execuo do algoritmo distribudo na ferramenta MPICH preciso


explicar a funcionalidade deste.
O algoritmo pode ser encontrado no anexo A. Trata-se de um shellsort distribudo e
toda a sua implementao foi feita na linguagem de programao C.
Vale ressaltar tambm que para esse projeto foi escolhido o algoritmo shellsort pois
este no o melhor, nem o pior mtodo de ordenao existente.
Na figura 15 pode-se observar como o algoritmo distribudo funciona.

41

Figura 14. Diagrama do Algoritmo Distribudo Proposto (Fonte: Prpria)

O algoritmo proposto funciona da seguinte maneira: Inicializa-se o programa, em


seguida este inicializa o MPI com informaes referentes ao n que se encontra o algoritmo
distribudo, aps a inicializao do MPI pode-se percorrer entre dois caminhos dependendo de
qual seja o n.
Caminho 1 (o algoritmo est no n mestre): Se o algoritmo estiver no n mestre
ento h ainda outra comparao, se ir haver a paralelizao do algoritmo ou se este ser
executado de forma centralizada.
Caminho 1.1 (algoritmo ser executado de forma centralizada): Se o algoritmo for
executado de forma centralizada, se inicializa o vetor, h a ordenao do vetor e chega-se ao
fim do algortimo. Caso contrario segue-se o Caminho 1.2.
Caminho 1.2 (o algoritmo ser executado de forma paralela): Se o algoritmo for
executado de forma paralela ento inicializa-se o vetor, divide-se a carga que ser enviada aos
outros ns e envia os pedaos para estes. O envio feito de forma bloqueante, ou seja, o
processo s desbloqueado quando o n receptor receber de fato a sua parte do vetor. Aps
enviar todas as partes aos seus respectivos destinos, ordenada a parte restante do vetor,

42

exemplo, se h 3 ns no sistema, contando com o n mestre, e nove posies de vetor, envia


trs posies para o n 1, trs para o n 2, e trs ficam para o n mestre ordenar. Depois de
feito a ordenao do pedao de vetor restante, o n mestre fica esperando a carga ordenada de
todos os outros ns, a recepo tambm bloqueante, o processo fica bloqueado at que toda
a carga de todos os ns seja recebida, assim, quando retornadas, o n mestre intercala os
pedaos que foram recebidos e assim chegando ao fim do algorimo.
Caminho 2 (o algoritmo est no n escravo): o n escravo ir agir recebendo de
forma bloqueante a sua parte do vetor, ir orden-la a e em seguida enviar de forma
bloqueante e com toda a carga ordenada para o n mestre.

4.1.3 Execuo da Aplicao Paralela Usando MPICH2

Para execuo do algoritmo no basta somente executar o programa que foi gerado.
Depois de compilado o programa deve-se colocar o arquivo executvel dentro de uma pasta
compartilhada que foi criada durante o processo de configurao do MPICH2, feito isso abra
ento o executvel wmpiexec.exe que est localizado na pasta de instalao do MPICH2. A
figura 16 mostra a interface deste.

43

Figura 15. Interface wmpiexec.exe

No campo Aplication deve-se colocar o caminho de onde se encontra a aplicao


distribuda. Logo abaixo deste campo h a opo de aumentar ou diminuir a quantidade de
processes, este nmero deve ser igual a quantidade de ns que o sistema cluster possuir. Para
a execuo centralizada, basta deixar o campo Number of Processes atribudo com o valor
1. Aps definido o numero de ns e o caminho para a aplicao paralela deve-se definir quem
sero os ns do sistema.
No campo hosts onde o nome ou ip do n deve ser escrito, por exemplo, RafaelPC User-PC 192.168.0.1, dessa maneira, sem virgula. Feito isso basta clicar em Execute e a
aplicao distribuda ir ser executada.

44

CAPTULO 5 RESULTADOS

Os resultados foram obtidos atravs de uma mtrica de medida simples, com a


seguinte frmula:
(

)(

()

()

A hora do sistema foi capturada utilizando a funo clock() encontrado na biblioteca


time.h da linguagem de programao C.
O clock() inicial capturado no n mestre antes de ocorrer a inicializao do vetor, e o
clock() final aps a intercalao dos pedaos de vetores recebidos.
O atributo Clocks_Per_Second um retorno de quantos pulsos de clock o processador
tem em um segundo, esse atributo encontrado na biblioteca nativa da linguagem de
programao C.
O tempo foi determinado de maneira aproximado, isso se d por que a funo clock(),
se utilizada no Windows, retorna um nmero inteiro da quantidade de pulsos de clock que o
processador fez desde a inicializao da aplicao, dessa maneira o tempo no pode ser
considerado exato, pois se o programa distribudo for bloqueado pelo sistema operacional por
outro que tenha, por exemplo, maior prioridade do uso do processador, o clock() final ter
contado tambm os pulsos que o processador deu durante o tempo que a aplicao distribuda
ficou bloqueada. Alm disso, a fim de obter uma mtrica mais apurada realizou-se trs
execues, e do tempo dado por elas fez-se uma mdia, tal como a frmula8:

Foram feitos quatro testes com quantidade de posies de vetores determinadas


intencionalmente para verificao do funcionamento em relao ao tempo, escolhendo-se
assim posies com intervalos significativos entre si (9.000; 150.000; 900.000 e 9.000.000).
Situao 1 9.000 posies no vetor
8

Onde n igual ao nmero de execues.

45

Quando executado com 9.000 posies no vetor, houve melhor desempenho (Tempo x
Quantidade de Ns) quando realizado com apenas um n (0,002s), enquanto em dois ns o
tempo foi de 0,011s e com trs ns 0,028s. Isto pode ser observado na tabela 1 e grfico 1.

Quantidade de Ns Tempo
1 N

0,002s

2 Ns

0,011s

3 Ns

0,028s

Tabela 1 Situao 1.

Grfico 1 Situao 1

Situao 2 150.000 posies no vetor

Com 150.000 posies no vetor, ainda possvel verificar um melhor desempenho


(Tempo x Quantidade de Ns) quando executado com apenas um n (0,118s). Executando
com dois ns temos o tempo de 0,25s e com trs ns o tempo de 0,58s. A tabela 2 e grfico
2 demonstram essas informaes.

46

Quantidade de Ns Tempo
1 N

0,118s

2 Ns

0,25s

3 Ns

0,58s

Tabela 2 Situao 2

Grfico 2 Situao 2

Situao 3 900.000 Posies no vetor

Com 900.000 posies o desempenho (Tempo x Quantidade de Ns), quando


executado em apenas um n (0,908s), ainda superior se comparado com dois ns (4,69s) e
trs ns (3,53). Nota-se que o desempenho em trs ns foi superior que em dois ns, pode-se
supor que isto ocorreu devido ao fato que com uma carga muito grande, no compensaria
dividir apenas para um segundo n, e sim para mais deles. A tabela 3 e grfico 3 mostram os
detalhes.
Quantidade de Ns Tempo
1 N

0,908s

2 Ns

4,69s

3 Ns

3,53s

Tabela 3 Situao 3

47

Grfico 3 Situao 3

Situao 4 9.000.000

Nessa situao, ocorreu um resultado semelhante a situao 3. Quando executado em


apenas um n (13,59s) o desempenho (Tempo x Quantidade de Ns) foi maior que se
comparado com dois ns (48,19s) e com trs ns (35,976). Ainda assim, quando executado
com 3 ns o desempenho foi superior se comparado a dois ns.

Quantidade de Ns Tempo
1 N
2 Ns
3 Ns

13,59s
48,19s
35,976s

Tabela 4 Situao 4

48

Grfico 4 Situao 4

Situao Geral
50
48
46
44
42
40
38
36
34
32
30
28
26
Tempo(s) 24
22
20
18
16
14
12
10
8
6
4
2
0

48,19

35,976

1
2
13,59

0,011
0,002 0,028

0,25
0,118 0,58

4,69
3,53
0,908

9.000

150.000

900.000

9.000.000

Quantidade de Posies no Vetor


Grfico 5 Situao Geral

Pode-se observar que quando a aplicao distribuda executada apenas no n


centralizado o desempenho foi superior que se executado de forma distribuda.

49

CAPTULO 6 - CONCLUSO

O trabalho teve como objetivo a anlise e implementao de um sistema distribudo


cluster baseado em uma rede wireless ad hoc. Os sistemas distribudos vm despertando cada
vez mais interesse em pesquisas devido boa relao de custo x benefcio que apresentam.
Por sua vez as redes wireless despertam interesse devido a sua praticidade de uso, e em
especial, as ad hoc pela no necessidade de infraestrutura.
Dessa forma, foram feitas anlises de desempenho com o objetivo de unir esses dois
conceitos e verificar como eles funcionam em conjunto.
Aps a anlise de resultados, pode-se concluir que neste caso, onde se utilizou um
padro 802.11g, no vivel a implementao de um sistema distribudo com base em redes
wireless. Isso se da devido s taxas de transmisso que as redes wireless implementadas nesse
padro apresentam.
Alm disso, importante ressaltar que so necessrias mais pesquisas nessa rea a fim
de constatar ou estudar mais detalhadamente como sistemas distribudos baseados em rede
wireless podem se tornar mais viveis e eficientes, uma vez que essas tecnologias so cada
vez mais utilizadas e imprescindveis no mundo da tecnologia de informao.

50

REFERNCIAS BIBLIOGRFICAS

ALECRIM, Emerson. Cluster: Principais Conceitos. 2004. Disponvel


http://www.infowester.com/cluster.php. Acesso em: 26 de Agosto de 2011.

em:

BARROS, Andersown Becher Paes. Computao em Cluster. Instituto Cuiabano de


Educao Faculdades (ICE), Cuiab, (s.d.).
CORRA, Underlia; PINTO, A.R.; CODAS, Andres; FERREIRA, D.J.; MONTEZ, Carlos.
Redes Locais Sem Fio: Conceitos e Aplicaes. Departamento de Automao e Sistemas
Programa de Ps-Graduao em Engenharia Eltrica Universidade Federal de Santa Catarina
(UFSC), (s.d.).
COSTA,
Jefferson.
Wireless:
Redes
Sem
Fio.
Disponvel
http://www.jeffersoncosta.com.br/wireless.pdf. Acesso em: 13 de Julho de 2011.

em:

COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim.Sistemas Distribudos:


Conceitos e Projeto.4.ed. Bookman, s.l., 2007.
FARIAS, Paulo Csar Bento. Redes Wireless Parte I. 2005. Disponvel em:
http://www.juliobattisti.com.br/tutoriais/paulocfarias/redeswireless001.asp. Acesso em: 12 de
Julho de 2011.
GAST, Matthew, S. 8002.11 Wireless Network: The Definitive Guide.1.ed. OReilly Media,
2002.
GIL, Antonio Carlos. Como elaborar projetos de pesquisa. 5. ed. Atlas: So Paulo, 2008.
JNIOR, Faustino Pereira Esli; FREITAS, Reinaldo Borges. Construindo
Supercomputadores com Linux: Cluster Beowulf. Monografia (Centro Federal de Educao
Tecnolgica de Gois). Goinia, 2005.
JOHANSSON, Tomas; MOTYKOV-CARR, Lenka.On Clustering in Ad Hoc
Network.Division of Computer Science and NetworkingLuleUniversityofTechnology,
Agosto, 2003.

MOHAPATRA, Prasant; KRISHNAMURTHY Srikanth.Ad Hoc Networks: Technologies


and Protocols. UniversityofCalifornia, Riverside, 2005.
MORIMOTO, Carlos E. Servidores em Cluster e Balanceamento de Carga. 2007.
Disponvel em: http://www.hardware.com.br/artigos/cluster-carga/. Acesso em: 27 de
Setembro de 2011.
OMOTO, Marcelo Augusto. Configurao de um cluster para o algoritmo shellsort
distribudo. Monografia (Centro Eurpides de Marilia UNIVEM) Marlia, SP, 2009.
PEREIRA, Ivana Carial de Miranda; PEDROSA, Aloyso de Castro P. Aplicaes Militares
Empregando Redes Mveis Ad Hoc. Universidade Federal do Rio de Janeiro. (s.d.).

51

PITANGA,
Marcos.
Computao
em
Cluster.
2003.
Disponvel
http://www.clubedohardware.com.br/artigos/153. Acesso em: 10 de Setembro de 2011.

em:

PITANGA, Marcos. Construindo Supercomputadores com Linux.3.ed. Brassport: Rio de


Janeiro, 2008.
PONTE, Thiago Costa. Algoritmos para clusterizao distribuda em redes mveis ad
hoc. PUC-Rio, 2006.
RODRIGUES, Andr Soares; GOUVA, Thiago Maia; PEREIRA, Francislane. Cluster e
Grid Computing. IV SEAC Semana de Atividades Cientficas. Resende, RJ, (s.d.).

SANTINI, Paolo.The Tolpology Control in Wireless Ad Hoc and Sensor Network,


Instituto de Informatica e Telemtica del CNR, Italy, John Wiley & Sons Ltd, 2005.
STALLINGS, William. Arquitetura e Organizao de Computadores.5.ed. Prentice Hall:
So Paulo, 2003.
TANENBAUM, Andrew S.; VAN STEEN, Maarten. Distributed Systems: Principles and
Paradigms.2.ed. Vrije Universiteit. Amsterdam, Holanda, 2007.
TANENBAUM, Andrew S. Rede de Computadores. Pearson: 2003.
UNIVERSIDADE DE CAMPINAS. Sistemas Distribudos. Campinas. Disponvel em
:http://www.ic.unicamp.br/~ranido/mc704/intro.pdf. Acesso em: 30 de Maro de 2011.
________. MPICH2. Disponvel em: http://www.mcs.anl.gov/research/projects/mpich2/.
Acesso em: 30 de outubro de 2011.
YIN, Robert K. Estudo de caso: planejamento e mtodos. Bookman: Porto Alegre, 2001.

52

ANEXO A Aplicao Distribuda Shellsort.


#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <time.h>
#include "mpi.h"
// Tamanho dos vetores
#define TAM 9000000
/**************************************************************************/
/* Functions 'n Procedures
*/
/**************************************************************************/
int *initVector(int vSize) {
int i, *V;
if ( vSize <= 0 )
return NULL;
V = (int *)malloc(vSize * sizeof(int));
for ( i = 0; i < vSize; i++ )
V[i] = rand() % vSize;
return V;
}
void showVector(int *V, int vSize) {
int i;
fprintf(stdout, "V = \n");
for ( i = 0; i < vSize; i++ )
{
fprintf(stdout, "%05d ", V[i]);
if ( (i+1) % 10 == 0 )
fprintf(stdout, "\n");
}
fprintf(stdout, "\n");
}
// ShellSort
void shellSort(int *vetor, int tamanho) {
int i, j, valor;
int gap = 1;
do {

53

gap = 3 * gap + 1;
} while (gap < tamanho);
do {
gap /= 3;
for (i = gap; i < tamanho; i++) {
valor = vetor[i];
j = i - gap;
while (j >= 0 && valor < vetor[j]) {
vetor [j + gap] = vetor[j];
j -= gap;
}
vetor [j + gap] = valor;
}
} while (gap > 1);
}
int *merge(int **vec, int N, int *vSize) {
int i, j, k, fSize;
int *fVector;
int *vecPointer;
// Calculando tamanho final do vetor
for ( i = 0, fSize = 0; i < N; i++ )
fSize += vSize[i];
// Vetor final
fVector = (int *)malloc(fSize * sizeof(int));
// Posio atual dos vetores
vecPointer = (int *)malloc(N * sizeof(int));
for ( i = 0; i < N; i++ )
vecPointer[i] = 0;
// Merge
for ( i = 0; i < fSize; i++ )
{
// Escolha o menor elemento dentre os vetores
k = -1;
for ( j = 0; j < N; j++ )
{
if ( (vecPointer[j] < vSize[j]) && (k == -1) )
k = j;
else
if ( vecPointer[j] < vSize[j] )
if ( vec[k][vecPointer[k]] > vec[j][vecPointer[j]] )
k = j;
}

54

// Copiando o menor valor e avancando o apontador de onde


// o elemento foi copiado
fVector[i] = vec[k][vecPointer[k]++];
}
// Liberando memoria
free(vecPointer);
// Retornando o vetor
return fVector;
}
/**************************************************************************/
/* MAIN
*/
/**************************************************************************/
int main(int argc, char **argv) {
// int i, envia, recebe, procs, meurank, aux;
int tag = 10;
// int vetor[TAM];
// int vetor2[TAM], vetor3[TAM];
clock_t start, finish;
float duracao;
/**************************************/
int i, tSize;
int myRank, nProc;
int *vector, *vSize, *fVector;
int **vecPointers;
// Inicializando gerador de numeros pseudo-aleatorios
srand(time(NULL));
// Inicializacao MPI
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &nProc);
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);

if ( myRank == 0 )
{
if ( nProc == 1 )
{
start = clock();

55

// Sistema distribuido pra caralho


vector = initVector(TAM);
shellSort(vector, TAM);
finish = clock();
duracao = (float)(finish - start) / CLOCKS_PER_SEC;
printf("Duraao: %3.11f seconds\n", duracao);
//showVector(vector, TAM);
}
else
{
// Marcando tempo de inicio
start = clock();
printf("Start: %d\n",start);
// Inicializa vetores
vector = initVector(TAM);
// Inicializa tamanhos e apontadores
vSize = (int *)malloc(nProc * sizeof(int));
vecPointers = (int **)malloc(nProc * sizeof(int *));
for ( i = 0, tSize = 0; i < nProc - 1; i++ )
{
vSize[i] = TAM / nProc;
vecPointers[i] = &(vector[tSize]);
tSize += vSize[i];
}
// Ultimo vetor pode ter um tamanho diferente se o tamanho do vetor inicial
// nao for divisivel pelo numero de processos
vSize[i] = TAM - tSize;
vecPointers[i] = &(vector[tSize]);
for ( i = 0; i < nProc; i++ )
{
fprintf(stdout, "vSize[%d]=%d\n", i, vSize[i]);
}
// Enviando pedacos do vetor
printf("nPoc: %d \n", nProc);
for ( i = 0; i < nProc - 1; i++ ) {
MPI_Send(vecPointers[i], vSize[i], MPI_INT, i+1, tag, MPI_COMM_WORLD);

}
// Ordenando "meu" pedaco do vetor
shellSort(&(vector[tSize]), vSize[i]);

56

// Recebendo pedacos do vetor ordenados


for ( i = 0; i < nProc - 1; i++ )
MPI_Recv(vecPointers[i], vSize[i], MPI_INT, i+1, tag, MPI_COMM_WORLD,
&status);
// Merge
fVector = merge(vecPointers, nProc, vSize);
finish = clock();
printf("finish: %d\n", finish);
duracao = (float)(finish - start) / CLOCKS_PER_SEC;
printf("Duraao: %3.11f seconds\n", duracao);
//showVector(fVector, TAM);
}
}
else
{
// Calculando tamanho do vetor
vSize = (int *)malloc(1 * sizeof(int));
vSize[0] = TAM / nProc;
// Alocando espao para o vetor
vector = (int *)malloc(vSize[0] * sizeof(int));
// Recebe o vetor
MPI_Recv(vector, vSize[0], MPI_INT, 0, tag, MPI_COMM_WORLD, &status);
// Ordena o vetor
shellSort(vector, vSize[0]);
// Envia o vetor
MPI_Send(vector, vSize[0], MPI_INT, 0, tag, MPI_COMM_WORLD);
}
MPI_Finalize();
return 0;
}