WSPE: Um Ambiente de Programação Peer-to-Peer para A Computação em Grade
WSPE: Um Ambiente de Programação Peer-to-Peer para A Computação em Grade
WSPE: Um Ambiente de Programação Peer-to-Peer para A Computação em Grade
INSTITUTO DE INFORMÁTICA
PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO
Grade
89 f.: il.
• Ao meu irmão Rodrigo, à minha cunhada Sole, à minha irmã Poliana e ao meu
cunhado André, pelas sobrinhas e, também, pelos almoços, cafés, conversas e
ajudas diversas. Um agradecimento especial à Sole, por partilhar simultanea-
mente as angústias de escrever uma dissertação de mestrado em menos tempo
do que o recomendável;
• Aos meus pais, Dr. Rui e Dra. Gleide, pelos exemplos de vida, pelo apoio afe-
tivo, por compartilharem suas experiências acadêmicas e, é claro, pelo suporte
nanceiro;
LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
RESUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Contexto de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Principais Contribuições . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Organização do Texto . . . . . . . . . . . . . . . . . . . . . . . . . . 16
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
LISTA DE ABREVIATURAS E SIGLAS
IP Internet Protocol
ABSTRACT
1 INTRODUÇÃO
1.1 Tema
1.2 Motivação
1.3 Objetivos
Classes de aplicações;
Modelos de programação;
Ambientes de programação.
A intenção com este trabalho é agregar soluções para a plataforma ISAM, espe-
cicamente em aspectos relacionados à Computação em Grade. Através da análise
dos trabalhos realizados pelo grupo de pesquisa nessa área (REAL et al., 2003; YA-
MIN et al., 2003; SCHAEFFER FILHO et al., 2005), é facilmente identicável a
aptidão do ambiente de execução do ISAM para suportar aplicações que requerem
alto desempenho. No entanto, também é possível perceber a relativa complexidade
de programação e de execução dessas aplicações, aliada a um suporte restrito a
apenas um modelo de programação e a uma dependência parcialmente estática em
relação aos recursos disponíveis. Este trabalho busca encontrar soluções para es-
sas questões, aproveitando, na medida do possível, os resultados e as experiências
obtidas pelo grupo com trabalhos anteriores.
16
Além deste capítulo introdutório, o texto está organizado em outros quatro capí-
tulos, conforme descrito a seguir:
• Por m, no último capítulo são feitas considerações nais e apontadas su-
gestões para a continuação do trabalho.
17
2.1 Introdução
O texto deste capítulo está organizado em seis seções. Inicialmente, uma de-
nição de Computação em Grade é apresentada, bem como características de arqui-
tetura e conceitos relevantes para o restante do texto. A seção seguinte dene o
que é um ambiente de programação, e apresenta um conjunto mínimo de requisitos
necessários para a construção de um ambiente de programação para a Computação
em Grade. Em seguida, é feito um resumo sobre o modelo peer-to-peer e apresentada
uma discussão a respeito da relação entre o modelo peer-to-peer e a Computação
em Grade, apresentando um contraste entre os dois modelos. A próxima seção do
capítulo lista trabalhos relacionados, fazendo relatos curtos sobre as características
e sobre as questões de pesquisa de cada um deles. Na última seção, o projeto ISAM
é apresentado, juntamente com uma análise sobre onde este trabalho se encaixa no
projeto.
computadores e redes de comunicação cada vez mais poderosos, aliada a uma re-
dução no custo nesses componentes, fez com que o tamanho e a complexidade de
sistemas dentro dessa área atingissem patamares praticamente inimagináveis até
então.
Seguindo essa evolução, a metade da década de 1990 viu o surgimento da deni-
ção de um novo campo. A criação do termo Grid Computing a partir das experiências
com o projeto I-WAY (DEFANTI et al., 1996), do desenvolvimento do projeto Glo-
bus (FOSTER; KESSELMAN, 1997) e da publicação do livro The Grid: Blueprint
for a New Computing Infrastructure (FOSTER; KESSELMAN, 1999a), ajudou a de-
nir uma série de requisitos e de propriedades que esse novo campo deveria atender,
para cumprir o seu objetivo.
Apesar de diversas iniciativas similares em computação distribuída já existirem
na época, utilizando diferentes nomes como metacomputing, scalable computing, glo-
bal computing ou Internet computing, o grupo de autores responsável pela criação
do termo Computação em Grade obteve sucesso na sua disseminação e aceitação.
Entre diversos motivos, o fato da denição do termo ser abrangente o suciente
para englobar todas as outras denições de computação distribuída em larga escala,
desempenhou um papel fundamental.
Nos anos que se seguiram, tanto sucesso acabou gerando uma certa confusão em
relação à verdadeira denição de Computação em Grade, envolvendo tanto a comu-
nidade acadêmica quanto a comunidade comercial. Os principais autores da área
publicaram diversas denições para tentar resolver a situação e chegar a um, tanto
quanto complexo, consenso. Por exemplo, Foster e outros apresentaram denições
para Computação em Grade em várias publicações (FOSTER; KESSELMAN, 1999a;
FOSTER; KESSELMAN; TUECKE, 2001; FOSTER, 2002; FOSTER; TUECKE,
2005) com a intenção de obter uma que fosse, simultaneamente, abrangente e precisa.
A denição mais atual pode ser interpretada como uma forma concisa e exível
dos três pontos apresentados em (FOSTER, 2002) e diz o seguinte: um sistema
que utiliza protocolos abertos e genéricos para utilizar recursos distribuídos de ma-
neira federativa e proporcionar qualidade de serviço acima do melhor esforço (FOS-
TER; TUECKE, 2005) (tradução do autor). Uma pesquisa recente, realizada com
membros da comunidade acadêmica e coordenada por Stockinger (2006), aponta a
existência, até certo ponto, de um consenso em torno dessa denição.
2.2.1 Arquitetura
A arquitetura proposta por Foster, Kesselman e Tuecke (2001) identica classes
de componentes fundamentais de uma grade, especica o propósito e a função desses
componentes e indica como eles interagem entre si. O objetivo é denir uma estru-
tura aberta e extensível, permitindo que diferentes congurações sejam montadas
para satisfazer os requisitos e atender as necessidades de um organização virtual.
Essa arquitetura é baseada nos princípios do modelo ampulheta, conforme ilus-
trado na Figura 2.1. O modelo ampulheta estabelece que a parte central de uma
arquitetura contemple um conjunto pequeno de abstrações e protocolos, sobre o qual
muitas funções de alto nível podem ser mapeadas (parte superior da ampulheta),
e sob o qual diferentes tecnologias podem ser usadas para implementar os protoco-
los (parte inferior da ampulheta). No caso da arquitetura de uma grade, na parte
central estão as camadas de recursos e de conectividade, que contêm um número re-
lativamente pequeno de protocolos e de interfaces de programação, correspondendo
19
Brokering de diretório,
Serviços coletivos
diagnóstico e monitoração
Aplicação grid-unaware
Aplicação grid-aware
Troca de Mensagens
trações de alto nível de outros modelos, tornando a sua utilização mais desaadora e
mais complexa na maioria dos casos. Por outro lado, esse modelo apresenta diversas
vantagens: (a) oferece grande exibilidade; (b) tem sido extremamente bem sucedido
em diversas aplicações; (c) está disponível em muitas implementações e variações; e
(d) permite, pelo menos em algumas situações, controle preciso de questões críticas
de desempenho.
O principal representante desse modelo é a especicação MPI e suas implemen-
tações. A utilização de MPI em ambientes de grade apresenta uma série de desaos,
especialmente relacionados a questões como tolerância a falhas e dinamismo. Di-
versos projetos estão em andamento com o objetivo de tratar essas questões, seja
através de modicações na especicação MPI ou através de implementações tole-
rantes a falhas, como por exemplo MPICH-G2 (KARONIS; TOONEN; FOSTER,
2003) e MPICH-V2 (CAPPELLO et al., 2005).
Tarefas Paralelas
Por outro lado, requisitos não-funcionais são identicados por aspectos que ex-
ploram os benefícios que uma grade traz e, também, que tratam os problemas que a
utilização dela implica. Esses requisitos servem para avaliar com que grau um am-
biente de programação atinge os seus objetivos. Segundo diversos autores (BAKER;
BUYYA; LAFORENZA, 2002; LEE; TALIA, 2003; ROURE et al., 2003; PARA-
SHAR; BROWNE, 2005; KIELMANN, 2006), um ambiente de programação para
Computação em Grade deve atender aos seguintes requisitos não-funcionais:
• Desempenho;
• Tolerância a falhas;
• Segurança e conança;
• Portabilidade;
• Heterogeneidade;
• Escalabilidade;
• Adaptabilidade ou Dinamismo.
• Deve ser genérica. Classes amplas de aplicações devem ser suportadas por
uma mesma ferramenta, de modo a reduzir o esforço de aprendizado para a
utilização de diferentes abordagens especícas.
• Deve ser fácil de usar. Idealmente, um usuário deve preocupar-se apenas com
a implementação da aplicação restrita ao modelo de programação, deixando
aspectos próprios do ambiente a cargo da ferramenta.
C P P
C P P
C P
P
S S P P
C
C P P
P P P
C P
Por outro lado, o modelo levanta uma série de tópicos que precisam ser ata-
cados para comprovar os benefícios que ele, potencialmente, agrega (MILOJICIC
et al., 2002; ANDROUTSELLIS-THEOTOKIS; SPINELLIS, 2004; STEINMETZ;
WEHRLE, 2005). Entre os principais, escalabilidade é um problema crucial, pois
uma funcionalidade qualquer que comprometa esse aspecto causará um efeito em
cascata, afetando o sistema como um todo. Outro tópico importante se refere à
auto-organização, já que a natureza dinâmica do sistema torna pouco provável que
uma mesma organização seja mantida durante todo o funcionamento do sistema.
Em decorrência desses pontos, a complexidade existente em projetar e implantar
um sistema totalmente distribuído, seguindo o modelo peer-to-peer, é maior do que
no caso do modelo cliente-servidor. Apesar disso, os sistemas peer-to-peer têm ex-
pandido a sua área de aplicação para outros domínios, além da tradicional troca de
arquivos. De acordo com (ANDROUTSELLIS-THEOTOKIS; SPINELLIS, 2004),
aplicações que seguem o modelo peer-to-peer em algum grau podem ser agrupadas
em cinco grandes classes: (a) comunicação e colaboração; (b) processamento distri-
buído; (c) serviços de suporte na Internet; (d) armazenamento; e (e) distribuição de
conteúdo.
Rede Camada de
comunicação em rede
• Estruturadas : as conexões entre os nós são feitas seguindo uma série de regras
com o objetivo de formar uma estrutura que permita a localização eciente
de ítens de dados. Os principais protocolos são baseados na noção de uma
tabela de indexação distribuída (abreviada DHT, em inglês, distributed hash
table ) onde uma função mapeia a chave de procura para um nó na rede. Esses
protocolos são conhecidos também como protocolos de conteúdo endereçável
(em inglês, content-addressable protocols ). A principal vantagem dessa abor-
dagem é a localização eciente e escalável dos ítens de dados, embora ao custo
de uma maior sobrecarga no sistema e diculdade em suportar populações de
nós muito dinâmicas. Exemplos incluem Chord (STOICA et al., 2001), CAN
(RATNASAMY et al., 2001), Pastry (ROWSTRON; DRUSCHEL, 2001) e
Tapestry (ZHAO; KUBIATOWICZ; JOSEPH, 2001).
• Não-Estruturadas : as regras usadas para formação de uma rede desse tipo são
menos rígidas e resultam em uma topologia aleatória, na maioria das vezes
sem uma estrutura denida. Os mecanismos de pesquisa por conteúdo nessas
redes incluem inundação (em inglês, ooding ), random walks e outros méto-
dos por força bruta. Essas redes suportam bem populações muito voláteis e
são simples de serem construídas e mantidas, mas são inecientes para loca-
lização de ítens de dados quando o tamanho da rede cresce muito. O prin-
cipal exemplo é a rede utilizada pelo sistema Gnutella (GNUTELLA, 2007),
mas outras propostas existem que procuram tornar esse tipo de rede mais e-
ciente (GANESH; KERMARREC; MASSOULIE, 2003; MASSOULIE; KER-
MARREC; GANESH, 2003; PANDURANGAN; RAGHAVAN; UPFAL, 2003;
CECCANTI; JESI, 2005; JELASITY; BABAOGLU, 2005).
2.5.1 Satin
O Satin (NIEUWPOORT et al., 2005) é um ambiente de programação para Com-
putação em Grade inspirado no ambiente Cilk (BLUMOFE et al., 1995) e tem como
objetivo principal ser portável e eciente, características consideradas indispensáveis
em um cenário onde a disponibilidade dos recursos varia muito. Ele possibilita a
construção de aplicações do tipo divisão-e-conquista (TOSCANI; VELOSO, 2005)
em Java e é voltado para a execução em arquiteturas computacionais formadas por
clusters localizados distantes geogracamente. O Satin combina a portabilidade de
Java com a comunicação eciente do Ibis (NIEUWPOORT et al., 2002), tendo como
objetivo um ambiente de programação mais simples e fácil de usar.
A arquitetura de software do Satin, apresentada na Figura 2.5, apresenta no nível
mais alto o sistema de execução do Satin, logo abaixo a interface de portabilidade
Ibis, que, por sua vez, utiliza diferentes tecnologias que porventura estejam disponí-
veis em níveis mais baixos. O sistema de execução ca responsável pela gerência
da execução e pelo escalonamento da aplicação. O Ibis é encarregado de oferecer
serviços de infra-estrutura utilizados pelo Satin, como comunicação, monitoração e
gerenciamento de recursos. Para tanto, o Ibis utiliza a tecnologia mais eciente,
29
Aplicação
Satin
Ibis
Camada de portabilidade Ibis
2.5.2 ATLAS
O ATLAS (BALDESCHWIELER; BLUMOFE; BREWER, 1996) foi proposto
na mesma época do surgimento da Computação em Grade, e pode ser classicado
como uma arquitetura para computação global (em inglês, global computing ). O
objetivo do ATLAS é explorar os recursos em rede no mundo todo como um com-
putador gigante. Assim como o Satin, ele é fortemente inspirado no Cilk, diferindo
basicamente na linguagem de programação (Java), no ambiente alvo de execução
(redes de computadores em escala global) e em algumas modicações sugeridas para
adaptar o Cilk para a linguagem e o ambiente de execução escolhidos.
30
Manager
Manager Manager
2.5.3 JICOS
O JICOS (CAPPELLO; COAKLEY, 2005), uma evolução do Javelin (NEARY;
CAPPELLO, 2002) e do CX (CAPPELLO; MOURLOUKOS, 2001), é um sistema
31
Task server
Host Host
Service
Provider
Client
sentados mostram que esse algoritmo apresenta melhor tolerância a falhas, associado
a um speedup próximo do ideal com até 256 processadores.
2.5.4 P3
O P3 (SHUDO; TANAKA; SEKIGUCHI, 2005) é um ambiente de programação
para computação distribuída em larga escala. Ele permite a transferência de recursos
entre participantes do sistema, como em uma aplicação peer-to-peer tradicional de
troca de arquivos, porém, no caso do P3, a moeda de troca são ciclos de processador.
O objetivo principal do sistema é facilitar a utilização de bibliotecas peer-to-peer
e, com isso, suportar o desenvolvimento de aplicações paralelas para execução em
ambientes de larga escala.
A arquitetura do P3, apresentada na Figura 2.8, prevê a presença de uma ca-
mada de software que fornece serviços típicos do modelo peer-to-peer. No caso, essa
camada de software é implementada usando a tecnologia JXTA (GONG, 2001), um
conjunto de protocolos e de abstrações peer-to-peer disponíveis publicamente. Em
cima dessa camada, o P3 é organizado em três componentes principais: (a) um
subsistema de gerenciamento de tarefas; (b) um monitor de tarefas; e (c) duas in-
terfaces e bibliotecas de programação. O sistema identica dois papéis que podem
ser desempenhados pelos nós participantes: host e controller. Um controller tem a
responsabilidade de possibilitar ao usuário disparar uma aplicação e acompanhar a
sua execução através de uma interface gráca. Os hosts são encarregados de exe-
cutar a aplicação, implementando as funções necessárias para tanto com apoio dos
serviços da camada peer-to-peer.
2.5.5 Zorilla
O Zorilla (DROST; NIEUWPOORT; BAL, 2006) contém todas as funcionali-
dades necessárias para a execução de aplicações em uma grade de maneira total-
mente distribuída. Ele foi projetado como um protótipo, com o objetivo de permitir
a investigação sobre a possibilidade de um novo tipo de aplicações para Computa-
ção em Grade chamada peer-to-peer supercomputing, onde tarefas de uma aplicação
se comunicam intensamente e não existe nenhum componente central no ambiente
computacional. Drost e outros argumentam que um ambiente como esse seria uma
boa alternativa para ambientes de Computação em Grade mais tradicionais por dois
motivos: (a) apresentam propriedades inerentes de escalabilidade e tolerância a fal-
has; e (b) são mais simples de implantar e manter. O Zorilla não determina um
modelo de programação ou uma classe de aplicações para o qual ele é voltado, pelo
contrário, arma que é possível executar qualquer aplicação.
A arquitetura do Zorilla é composta pelo sistema de execução e uma interface
de abstração de rede, tendo na base diversas tecnologias de comunicação e uma
máquina virtual Java, conforme ilustra a Figura 2.9. O sistema de execução é
responsável por gerenciar as tarefas e implementar o algoritmo de escalonamento,
enquanto a interface de abstração de rede tem como objetivo permitir de forma
transparente a comunicação entre os nós participantes do sistema. O Zorilla segue
elmente o princípio peer-to-peer sobre a igualdade entre os pares, sendo que todos
desempenham o mesmo papel dentro do sistema. Em relação à organização dos nós,
uma rede de sobreposição é construída objetivando reetir proximidade, em termos
de latência de comunicação, entre os nós.
Broadcast
TCP Bamboo
UDP
2.5.6 XtremWeb
O projeto XtremWeb (CAPPELLO et al., 2005) tem como objetivo central in-
vestigar como um sistema distribuído de larga escala pode ser transformado em
um computador paralelo tradicional. Uma das diretrizes do projeto é averiguar a
possibilidade de utilizar mecanismos totalmente descentralizados para implementar
algumas das funcionalidades do sistema. O projeto dene como questões de pesquisa
prioritárias a volatilidade dos nós (entrada e saída de nós do sistema), segurança e
tolerância a falhas.
Aplicações
(serviços, binários ou Java)
Ambiente
(API + sistema de execução)
Tolerância à falhas
(serviço + sistema de execução)
Cluster
estável
Serviços básicos
(serviço + sistema de execução)
Comunicação
Cluster
volátil
Implantação
2.5.7 OurGrid
O OurGrid (CIRNE et al., 2006) é um ambiente de Computação em Grade
aberto direcionado para cooperação entre laboratórios de pesquisa de pequeno e
médio porte através do compartilhamento de recursos computacionais ociosos. Ele
tem como motivação preencher o espaço entre computação voluntária (em inglês,
volunteer computing ) e Computação em Grade, combinando soluções das duas linhas
para simplicar o acesso compartilhado a uma quantidade grande de recursos. Cirne
e outros (2006) acreditam que o OurGrid deve atender aos seguintes requisitos para
ser bem sucedido: desempenho, no sentido de justicar a utilização de recursos de
outros laboratórios; simples de implantar, manter e utilizar; escalável; e seguro. O
OurGrid é baseado em uma rede peer-to-peer, onde cada laboratório de pesquisa é
um nó participante do sistema, como indica a Figura 2.11.
A arquitetura apresentada pelo OurGrid é praticamente auto-contida, no sentido
que pode ser utilizado sem dependência de componentes externos. No entanto, no
caso de clusters e da disponibilidade de um gerenciador de recursos, este poderá
ser utilizado para a execução da aplicação. São identicadas três entidades que fa-
zem parte da arquitetura: o serviço OurGrid; o mediador MyGrid; e o serviço de
segurança SWAN. O serviço OurGrid, responsável pelo mecanismo de compartilha-
mento e contabilização de recursos, é acessível para os usuários através do mediador
MyGrid, que se encarrega de escalonar a aplicação.
Atualmente, o OurGrid suporta aplicações paralelas do tipo bag-of-tasks, carac-
terizadas por tarefas independentes que não se comunicam entre si. As tarefas são
formadas por subtarefas executadas seqüencialmente: uma tarefa inicial, uma tarefa
grade e uma tarefa nal. Essas subtarefas são comandos externos chamados pelo
OurGrid, podendo ser implementados usando diferentes tecnologias. As tarefas in-
icial e nal são executadas na máquina do próprio usuário que está submetendo a
aplicação, e têm como objetivos, respectivamente, preparar os arquivos de entrada e
36
Swan
MyGrid
OurGrid
peer
OurGrid
MyGrid peer
OurGrid MyGrid
peer
Swan
Swan
Aplicação Pervasiva S
U
ISAMadapt (Holoparadigma) P
Consciência
Acesso Pervasivo
Ambiente de
Reconhecimento do I
E
Execução da
a código e dados
Linguagem
de Contexto Contexto N X
T
E E
R
Segu- Comu- Migra- Persis- Escalo-
Desc.
Recur-
Monito- M H
rança nicação ção tência namento ramento
sos D
A
Máquina Virtual Java
• Escalonador TIPS (REAL, 2004; REAL et al., 2003) : apresenta uma proposta
de um escalonador de objetos para um cenário computacional onde há grande
variabilidade na disponibilidade dos recursos. O escalonador utiliza um modelo
baseado em redes bayesianas para classicar os recursos a partir de diferentes
39
3.1 Introdução
fe1
fe2 fe5
fe3 fe4
i5 i6 i8 i9
dagens:
1. Modicar a linguagem;
Para modelar a primitiva sync, nenhuma anotação foi denida. Acredita-se que
seja possível, através de uma análise sintática do código da aplicação, identicar onde
existe a necessidade de pontos de sincronização. Dessa forma, o programador não
precisa se preocupar em incluir, explicitamente no código da aplicação, a primitiva
sync.
• Para cada método com a anotação Spawnable, deve ser criada um desvio
para fazer com que a chamada do método passe pelo sistema de execução;
• Para cada ponto de sincronização identicado, deve ser inserida uma chamada
ao método de sincronização do sistema de execução.
3.4.1 Denições
Sob uma perspectiva onde centenas ou milhares de nós fazem parte do sistema
de execução, e estão conectados por uma rede onde a latência de comunicação é
relativamente alta, a escolha aleatória de um nó vítima se mostra ineciente. O
principal motivo para essa observação é a latência de comunicação. Um nó pode
car ocioso por muito tempo esperando por uma resposta do nó vítima e, assim,
desperdiçando muitos ciclos de processamento. Esse problema tende a se tornar
mais grave à medida que o número de nós aumenta, uma vez que, com um número
maior de nós, a carga média do sistema é reduzida. Nesse cenário, a probabilidade de
uma tentativa de roubo resultar em um transferência de uxo de execução diminui,
exigindo um número maior de tentativas para que um nó consiga obter trabalho.
50
algoritmo original, por sua vez, demoraria o mesmo tempo apenas quando esse nó
fosse selecionado na primeira vez. No entanto, a probabilidade do nó ocupado ser
selecionado na primeira vez depende do tamanho da visão do nó. No restante das
possibilidades, o tempo gasto para que o nó buscando trabalho comece a processar
o uxo de execução seria a soma de cada consulta até que o nó ocupado fosse
selecionado.
A rede de sobreposição (em inglês, overlay network ), formada pelos nós partici-
pantes de um sistema distribuído, tem importância fundamental para o seu funcio-
namento, especialmente quando o sistema pode conter um número elevado de nós.
53
A partir das observações feitas resumidas na Tabela 3.2, não se é possível chegar
a uma conclusão sobre qual mecanismo seria o melhor para o sistema de execução.
No entanto, é possível apontar os mecanismos QuickPeer e T-Man como os mais
indicados por atenderem todas as propriedades necessárias. Entre os dois, o T-Man
apresenta a vantagem de ser mais genérico e extensível, permitindo que se obtenham
resultados para avaliação a partir de diferentes funções de classicação.
nó. Embora essas situações também sejam abordadas pelo mecanismo de constru-
ção da rede de sobreposição, o objetivo no contexto de paralelismo adaptativo é
outro. Enquanto o objetivo com a construção da rede de sobreposição é preservar as
propriedades necessárias da rede, o objetivo com paralelismo adaptativo é garantir
que o sistema de execução aproveite o acréscimo resultante da conexão de um nó, e
que suporte a desconexão de um nó sem a necessidade de repetir o processamento
realizado por esse nó.
3.8.1 Arquitetura
Com a intenção de seguir os padrões da Computação em Grade, descritos na
Subseção 2.2.1, a arquitetura do sistema de execução segue uma abordagem em
camadas. A camada superior corresponde ao sistema de execução WSPE, tendo a
responsabilidade restrita apenas ao gerenciamento da execução de aplicações. As
camadas inferiores fornecem serviços indispensáveis, que podem ser implementados
através da utilização de componentes genéricos sem comprometer o funcionamento
do sistema de execução.
A arquitetura de software do WSPE é formada por instâncias do sistema de
execução em número equivalente ao de nós conectados. Em cada uma dessas instân-
cias existe uma pilha de camadas de software conforme ilustrado pela Figura 3.10.
Iniciando pela camada mais alta, o controlador de nó implementa todas as tare-
fas necessárias para o funcionamento do sistema de execução em um nó. A seguir,
encontra-se o middleware de grade, responsável por fornecer de maneira transpa-
rente serviços genéricos à camada logo acima. Essas duas camadas serão descritas
com maior profundidade nas subseções a seguir.
Controlador de Nó WSPE
Middleware de Grade
Sistema Operacional
Rede
Camada de Execução
Camada de Gerenciamento
oferecido. No entanto, devido ao contexto local de pesquisa onde este trabalho está
inserido, o middleware escolhido como base para a concepção do sistema de execu-
ção WSPE é o EXEHDA (SILVA, 2003; YAMIN, 2004; SCHAEFFER FILHO, 2005;
MORAES, 2005). Entre os serviços disponibilizados pelo EXEHDA, são utilizados
o serviço de descoberta de recursos, o serviço de execução distribuída e o serviço de
monitoração.
4.1 Introdução
• Knary(k, n, r) : gera uma árvore com grau k e altura n, onde os r primeiros nós
de cada nível são executados seqüencialmente e os restantes em paralelo. Em
cada nó da árvore é executado um laço vazio com um valor xo de iterações.
Essa aplicação é um benchmark sintético baseada no código disponibilizado
junto com a distribuição Cilk 5.4.3 (CILK, 2007). A aplicação Knary é útil,
pois permite emular a estrutura de outras aplicações apenas ajustando os
parâmetros k, n e r.
64
org.isam.exehda.tools.wspe.runtime
NodeController
-instance: NodeController
+getInstance(): NodeController
+start(): void
+stop(): void
org.isam.exehda.tools.wspe.runtime.execution
org.isam.exehda.tools.wspe.runtime.management
ViewManager WorkUnitRemoteBroker
-instance: ViewManager +restore(wu: WorkUnit): void
+getInstance(): ViewManager +steal(): WorkUnit
+findNeighbor(id: int): Node
+getNeighbors(): Node[]
+start(): void SchedulingAlgorithm
+stop(): void ~restore(wu: WorkUnit): void
~steal(): WorkUnit
OverlayNetworkAlgorithm
#neighbors: Node[] RandomStealing RoundStealing
~findNeighbor(id: int): Node
~getNeighbors(): Node[]
~start(): void NodeRemoteProxy
~stop(): void ~restore(wu: WorkUnit): void
~startNodeController(): void
~steal(): WorkUnit
FullyConnected ~stopNodeController(): void
org.isam.exehda.tools.wspe.runtime.local
NodeDiscoverer RemoteObjectProxy
+discoverNodes(query: Map): Node[] +getRemoteObject(n: Node, c: Class, i: Class): Object
4.3.1 Sobrecarga
Este experimento tem a nalidade de quanticar a sobrecarga ocasionada pelo
WSPE na execução de uma aplicação. Para tanto, são feitas medições do tempo
de execução de uma aplicação com e sem o ambiente de programação. Essas me-
dições permitem analisar o impacto causado pelo processamento de uma instrução
de criação ou de sincronização de uxo de execução. Conforme será apresentado a
seguir, os valores obtidos para a sobrecarga de uma execução variam de acordo com
67
cada aplicação, sendo inuenciados pela quantidade e pela duração dos uxos de
execução.
As medições deste experimento foram realizadas com a utilização de versões
diferentes das mesmas aplicações. A única diferença entre as versões consiste na
existência ou não de chamadas para o sistema de execução WSPE. Assim, a versão
sem chamadas para o WSPE resulta em uma aplicação com processamento total-
mente seqüencial. As medições com essa versão foram feitas com o disparo de cada
aplicação diretamente a partir de um interpretador Java. Por outro lado, o proce-
dimento para realizar as medições com o WSPE incluiu inicialmente os disparos do
middleware EXEHDA e do sistema de execução WSPE para, por m, ser feita a
submissão da aplicação. Nesse último caso, as medições são feitas apenas a partir
do momento da submissão da aplicação, ou seja, excluindo o tempo necessário para
a inicialização do EXEHDA e do WSPE.
Os resultados apresentados na Tabela 4.1 apresentam as médias obtidas a partir
de 40 medições em cada uma das situações propostas. A sobrecarga (S) é calculada
a partir da razão entre a medição com o WSPE (TW ) e a medição sem o WSPE (TS ).
As medições foram realizadas em um computador com processador AMD Athlon XP
2400+ com 512 MB de memória RAM. O interpretador Java utilizado para todas
as execuções foi a versão 1.5.0_11 do interpretador disponibilizado pela Sun. O
sistema operacional utilizado foi a distribuição Rocks Clusters 3.3.0 do Linux.
4.3.2 Eciência
Este experimento objetiva medir a eciência atingida pelo protótipo implemen-
tado do ambiente de programação WSPE na utilização dos recursos disponíveis para
a execução de uma aplicação. Para obter os valores de eciência, são feitas medi-
ções do tempo de execução de uma aplicação com a utilização de apenas um nó e
do tempo de execução com um número n de nós. Este experimento permite avaliar
68
Ferramenta Observações
GangSim (DUMITRESCU; FOS- grade, foco em políticas de escalonamento
TER, 2005)
GridSim (BUYYA; MURSHED, grade, foco em escalonamento
2002)
OptorSim (BELL et al., 2003) grade, foco em replicação de dados
P2PSim (P2P SIMULATOR, 2006) peer-to-peer, foco apenas em redes estruturadas
PeerSim (PEERSIM SIMULATOR, peer-to-peer, foco em redes estruturadas e não-
2006) estruturadas
SimGrid (LEGRAND; MARCHAL; grade, foco em escalonamento
CASANOVA, 2003)
que reduz a capacidade dos nós em 5 instruções multiplicado pelo valor denido
para esse fator. Por exemplo, um fator de heterogeneidade 2 resulta em nós com
capacidade de processamento variando uniformemente entre 90, 95 ou 100 instruções
por ciclo.
Fibonacci(33)
1
0.8
Eficiência
0.6
0.4
0.2 0.1 ms
0.5 ms − 10 ms
0.5 ms − 100 ms
0
1 2 4 8 16 32 64 128 256 512 1024
Número do nós
N−Queens(13)
1
0.8
Eficiência
0.6
0.4
0.2 0,1 ms
0,5 ms − 10 ms
0,5 ms − 100 ms
0
1 2 4 8 16 32 64 128 256 512 1024
Número de nós
Knary(10, 6, 2)
1
0.8
Eficiência
0.6
0.4
0.2 0,1 ms
0,5 ms − 10 ms
0,5 ms − 100 ms
0
1 2 4 8 16 32 64 128 256 512 1024
Número de nós
Fibonacci(33)
1
0.8
Eficiência
0.6
0.4
N−Queens(13)
1
0.8
Eficiência
0.6
0.4
Knary(10, 6, 2)
1
0.8
Eficiência
0.6
0.4
Fibonacci(33)
1
0.8
Eficiência
0.6
0.4
N−Queens(13)
1
0.8
Eficiência
0.6
0.4
Knary(10, 6, 2)
1
0.8
Eficiência
0.6
0.4
possível perceber que, a partir das medições realizadas com 64 nós, a distância entre
os valores de eciência começa a aumentar, sempre com vantagem para a topologia
conectada por proximidade.
Fibonacci(33)
1
0.8
Eficiência
0.6
0.4
0.2
0,5 ms − 10 ms, Roubo Aleatório, conectada por proximidade
0,5 ms − 10 ms, Roubo em Rodadas, conectada por proximidade
0
1 2 4 8 16 32 64 128 256 512 1024
Número de nós
NQueens(13)
1
0.8
Eficiência
0.6
0.4
0.2
0,5 ms − 10 ms, Roubo Aleatório, conectada por proximidade
0,5 ms − 10 ms, Roubo em Rodadas, conectada por proximidade
0
1 2 4 8 16 32 64 128 256 512 1024
Número de nós
Knary(10, 6, 2)
1
0.8
Eficiência
0.6
0.4
0.2
0,5 ms − 10 ms, Roubo Aleatório, conectada por proximidade
0,5 ms − 10 ms, Roubo em Rodadas, conectada por proximidade
0
1 2 4 8 16 32 64 128 256 512 1024
Número de nós
da aplicação Fibonacci (35% contra 25%). Mesmo com apenas 16 nós no sistema,
a eciência do algoritmo Roubo em Rodadas já é superior em todas as aplicações.
Esses valores comprovam a argumentação apresentada na Subseção 3.5.2 para justi-
car a concepção do algoritmo Roubo em Rodadas, resultando em uma alternativa
viável para o escalonamento de aplicações em uma infra-estrutura computacional de
grade.
5 CONSIDERAÇÕES FINAIS
5.1 Introdução
Este capítulo faz uma série de considerações nais sobre o problema tratado
nesta dissertação, as soluções propostas para o problema e os resultados obtidos para
comprovação da viabilidade das soluções. São apresentadas também as conclusões e
contribuições alcançadas a partir da realização da pesquisa e algumas sugestões de
pesquisa futura decorrentes deste trabalho.
5.2 Conclusões
REFERÊNCIAS
ALLEN, G.; GOODALE, T.; RUSSELL, M.; SEIDEL, E.; SHALF, J. Classifying
and Enabling Grid Applications. In: BERMAN, F.; FOX, G.; HEY, T. (Ed.). Grid
Computing: making the global infrastructure a reality. West Sussex: John Wiley
& Sons, 2003. p.601614.
BAKER, M.; BUYYA, R.; LAFORENZA, D. Grids and Grid technologies for wide-
area distributed computing. Software: Practice and Experience, [S.l.], v.32,
n.15, p.14371466, 2002.
BERMAN, F.; CASANOVA, H.; CHIEN, A.; COOPER, K.; DAIL, H.; DAS-
GUPTA, A.; DENG, W.; DONGARRA, J.; JOHNSSON, L.; KENNEDY, K.;
KOELBEL, C.; LIU, B.; LIU, X.; MANDAL, A.; MARIN, G.; MAZINA, M.;
82
BUYYA, R.; MURSHED, M. GridSim: a toolkit for the modeling and simulation of
distributed resource management and scheduling for grid computing. Concurrency
and Computation: Practice and Experience, [S.l.], v.14, n.13-15, p.11751220,
2002.
CAPPELLO, F.; DJILALI, S.; FEDAK, G.; HERAULT, T.; MAGNIETTE, F.;
NERI, V.; LODYGENSKY, O. Computing on large-scale distributed systems:
XtremWeb architecture, programming models, security, tests and convergence with
grid. Future Generation Computer Systems, Netherlands, v.21, n.3, p.417437,
2005.
CIRNE, W.; BRASILEIRO, F. V.; ANDRADE, N.; COSTA, L.; ANDRADE, A.;
NOVAES, R.; MOWBRAY, M. Labs of the World, Unite!!! Journal of Grid
Computing, [S.l.], v.4, n.3, p.225246, 2006.
CROWCROFT, J.; MORETON, T.; PRATT, I.; TWIGG, A. Peer-to-peer techno-
logies. In: FOSTER, I.; KESSELMAN, C. (Ed.). The Grid 2: blueprint for a new
computing infrastructure. San Francisco: Morgan Kaufmann, 2004. p.593622.
DOBBER, M.; KOOLE, G.; MEI, R. van der. Dynamic load balancing experiments
in a grid. In: IEEE INTERNATIONAL SYMPOSIUM ON CLUSTER COMPU-
TING AND THE GRID, CCGRID, 5., 2005, Cardi, UK. Proceedings. . . [S.l.]:
IEEE Computer Society, 2005. v.2, p.10631070.
FOSTER, I. What is the Grid? A Three Point Checklist. Grid Today, [S.l.], v.1,
n.6, p.22, 2002.
FOSTER, I.; KESSELMAN, C. Computational grids. In: The Grid: blueprint for
a new computing infrastructure. San Francisco: Morgan Kaufmann, 1999. p.1551.
FOSTER, I.; KESSELMAN, C.; NICK, J. M.; TUECKE, S. The Physiology of the
Grid. In: BERMAN, F.; FOX, G.; HEY, T. (Ed.). Grid Computing: making the
global infrastructure a reality. West Sussex: John Wiley & Sons, 2003. p.217249.
FOSTER, I.; KESSELMAN, C.; TUECKE, S. The Anatomy of the Grid: enabling
scalable virtual organizations. International Journal of High Performance
Computing Applications, [S.l.], v.15, n.3, p.200222, 2001.
FOSTER, I.; KESSELMAN, C.; TUECKE, S. The Open Grid Services Architec-
ture. In: FOSTER, I.; KESSELMAN, C. (Ed.). The Grid 2: blueprint for a new
computing infrastructure. San Francisco: Morgan Kaufmann, 2004. p.215258.
FOSTER, I.; KISHIMOTO, H.; SAVVA, A.; BERRY, D.; GRIMSHAW, A.; HORN,
B.; MACIEL, F.; SIEBENLIST, F.; SUBRAMANIAM, R.; TREADWELL, J.;
REICH, J. V. The Open Grid Services Architecture, Version 1.5. Disponível
em: <http://www.ggf.org/documents/GFD.80.pdf>. Acesso em: julho 2006.
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design patterns: ele-
ments of reusable object-oriented software. Boston: Addison-Wesley Long-
man, 1995.
LEE, C.; TALIA, D. Grid Programming Models: current tools, issues and directions.
In: BERMAN, F.; FOX, G.; HEY, T. (Ed.). Grid Computing: making the global
infrastructure a reality. West Sussex: John Wiley & Sons, 2003. p.555578.
LUA, E. K.; CROWCROFT, J.; PIAS, M.; SHARMA, R.; LIM, S. A survey
and comparison of peer-to-peer overlay network schemes. IEEE Communications
Surveys & Tutorials, [S.l.], v.7, n.2, p.7293, 2005.
MASSOULIE, L.; KERMARREC, A.-M.; GANESH, A. Network awareness and
failure resilience in self-organizing overlay networks. In: INTERNATIONAL SYM-
POSIUM ON RELIABLE DISTRIBUTED SYSTEMS, 22., 2003, Florence. Pro-
ceedings. . . [S.l.]: IEEE Computer Society, 2003. p.4755.
NAKADA, H.; MATSUOKA, S.; SEYMOUR, K.; DONGARRA, J.; LEE, C.; CA-
SANOVA, H. A GridRPC Model and API for End-User Applications. Dis-
ponível em: <http://www.ggf.org/documents/GFD.52.pdf>. Acesso em: novem-
bro 2006.
SCHAEFFER FILHO, A. E.; MORAIS, L. L.; REAL, R. A.; SILVA, L. C. da; YA-
MIN, A. C.; AUGUSTIN, I.; GEYER, C. F. R. Applying the ISAM Architecture for
Genetic Alignment in a Grid Environment. In: WORKSHOP ON COMPUTATIO-
NAL GRIDS AND APPLICATIONS, WCGA, 4., 2005, Curitiba. Proceedings. . .
[S.l.]: Sociedade Brasileira de Computação, 2005.
TALIA, D.; TRUNFIO, P. Toward a synergy between P2P and grids. IEEE Inter-
net Computing, Los Alamitos, v.7, n.4, p.96, 9495, 2003.
TANAKA, Y.; NAKADA, H.; SEKIGUCHI, S.; SUZUMURA, T.; MATSUOKA, S.
Ninf-G: a reference implementation of rpc-based programming middleware for grid
computing. Journal of Grid Computing, [S.l.], v.1, n.1, p.4151, 2003.
TOSCANI, L. V.; VELOSO, P. A. S. Complexidade de Algoritmos: análise,
projeto e métodos. 2.ed. Porto Alegre: Sagra-Luzzatto, 2005.
YAMIN, A. C.; BARBOSA, J. L. V.; AUGUSTIN, I.; SILVA, L. C. da; REAL, R. A.;
GEYER, C. F. R.; CAVALHEIRO, G. Towards Merging Context-Aware, Mobile and
Grid Computing. International Journal of High Performance Computing
Applications, [S.l.], v.17, n.2, p.191203, 2003.
ZHAO, B. Y.; KUBIATOWICZ, J. D.; JOSEPH, A. D. Tapestry: an infrastructure
for fault-tolerant wide-area location and routing. Berkeley: University of California,
2001.