computação de alto desempenho - cluster e grade

10
Computação de Alto Desempenho: Cluster e Grade Cristiano C. A. Vieira Universidade Federal de Mato Grosso do Sul (UFMS) Campo Grande MS Brasil [email protected] Resumo. Nas duas últimas décadas houve um crescimento bastante expressivo na busca e utilização da computação de alto desempenho. Este momento, não por acaso, coincidiu com o fortalecimento de microprocessadores de alta performance, redes de alta velocidade, e ferramentas padronizadas para computação distribuída de alto desempenho que subsidiaram a computação de problemas relativos à meteorologia, simulação sísmica, seqüenciamento de DNA, e vários outros. Este trabalho, apresenta algumas características da computação em cluster e computação em grade e uma breve comparação entre eles. 1. Introdução A necessidade de manipular uma quantidade grande de dados unida à necessidade de aumentar o desempenho na resolução de problemas complexos, proporcionou, nas duas últimas décadas, um crescimento expressivo na busca de arquiteturas paralelas que combinam esforços de vários computadores. Neste sentido, surgiram arquiteturas de processamento de alto desempenho (PAD), tais como, Clusters[7] e Computação em Grade[1, 8, 9] como soluções alternativas e de baixo custo em relação aos supercomputadores. A utilização de uma arquitetura PAD objetiva a divisão de um problema em várias tarefas menores cujas partes podem ser resolvidas somando os esforços de vários computadores concorrentemente. Algumas áreas de conhecimento (por exemplo, astronomia, meteorologia e genética) requerem, para os problemas estudados, muitos recursos computacionais com alto desempenho para suprir cálculos complexos e repetitivos. Computação em grade pode ser definida como uma infra-estrutura de software capaz de interligar e gerenciar diversos recursos computacionais (capacidade de processamento, dispositivos de armazenamento, instrumentos científicos, etc.), possivelmente distribuídos por uma grande área geográfica, de maneira a oferecer ao usuário acesso transparente a tais recursos, independente da localização dos mesmos [10]. Apesar de permitir a inclusão de supercomputadores, esse paradigma se baseia no uso de estações de trabalho comuns, possivelmente de arquiteturas heterogêneas. Os recursos são conectados através de tecnologias de rede e oferecidos ao usuário de forma transparente. O nome Grade é uma analogia às malhas de interligação do sistema de energia elétrica (Power Grids) e se refere à vontade de tornar o uso dos recursos computacionais tão transparente e acessível quanto o uso da eletricidade.

Upload: raphael-lugon-campo-dallorto

Post on 16-Aug-2015

260 views

Category:

Documents


3 download

DESCRIPTION

Computação de Alto Desempenho - Cluster e Grade

TRANSCRIPT

Page 1: Computação de Alto Desempenho - Cluster e Grade

Computação de Alto Desempenho: Cluster e Grade

Cristiano C. A. Vieira

Universidade Federal de Mato Grosso do Sul (UFMS)

Campo Grande – MS – Brasil

[email protected]

Resumo. Nas duas últimas décadas houve um crescimento bastante expressivo

na busca e utilização da computação de alto desempenho. Este momento, não

por acaso, coincidiu com o fortalecimento de microprocessadores de alta

performance, redes de alta velocidade, e ferramentas padronizadas para

computação distribuída de alto desempenho que subsidiaram a computação

de problemas relativos à meteorologia, simulação sísmica, seqüenciamento de

DNA, e vários outros. Este trabalho, apresenta algumas características da

computação em cluster e computação em grade e uma breve comparação

entre eles.

1. Introdução

A necessidade de manipular uma quantidade grande de dados unida à necessidade de

aumentar o desempenho na resolução de problemas complexos, proporcionou, nas duas

últimas décadas, um crescimento expressivo na busca de arquiteturas paralelas que

combinam esforços de vários computadores. Neste sentido, surgiram arquiteturas de

processamento de alto desempenho (PAD), tais como, Clusters[7] e Computação em

Grade[1, 8, 9] como soluções alternativas e de baixo custo em relação aos

supercomputadores. A utilização de uma arquitetura PAD objetiva a divisão de um

problema em várias tarefas menores cujas partes podem ser resolvidas somando os

esforços de vários computadores concorrentemente. Algumas áreas de conhecimento (por

exemplo, astronomia, meteorologia e genética) requerem, para os problemas estudados,

muitos recursos computacionais com alto desempenho para suprir cálculos complexos e

repetitivos.

Computação em grade pode ser definida como uma infra-estrutura de software

capaz de interligar e gerenciar diversos recursos computacionais (capacidade de

processamento, dispositivos de armazenamento, instrumentos científicos, etc.),

possivelmente distribuídos por uma grande área geográfica, de maneira a oferecer ao

usuário acesso transparente a tais recursos, independente da localização dos mesmos

[10]. Apesar de permitir a inclusão de supercomputadores, esse paradigma se baseia no

uso de estações de trabalho comuns, possivelmente de arquiteturas heterogêneas. Os

recursos são conectados através de tecnologias de rede e oferecidos ao usuário de forma

transparente. O nome Grade é uma analogia às malhas de interligação do sistema de

energia elétrica (Power Grids) e se refere à vontade de tornar o uso dos recursos

computacionais tão transparente e acessível quanto o uso da eletricidade.

Page 2: Computação de Alto Desempenho - Cluster e Grade

A grande vantagem da tecnologia de computação em grade está na possibilidade

de se beneficiar de recursos pré-existentes, como laboratórios de computação em

instituições de ensino nos quais as máquinas passam a maior parte do tempo ociosas.

Essa quantidade considerável de recursos não-dedicados que geralmente não é utilizada

constitui o principal estímulo para o desenvolvimento desse tipo de ambiente [13]. Tal

ociosidade pode ser compensada com a execução de aplicações através de Grades

Oportunistas (Scavenging Grids ou Volunteer Grids) [5, 11, 18].

Grades Oportunistas, como InteGrade [11], Condor [14, 15] e OurGrid [5],

geralmente trabalham com base no melhor-esforço, onde é dada a mesma prioridade a

todos os usuários e não há garantias sobre os serviços oferecidos. Isso se deve, em parte,

ao fato de que esses ambientes procuram preservar a qualidade de serviço para o

detentor do recurso a todo custo, executando as tarefas da grade somente quando o

recurso está ocioso. Desta forma, na presença de aplicações locais algum tratamento

deve ser adotado visando a que as aplicações da grade não atrapalhem ou coloquem

empecilhos ao funcionamento daquelas. Contudo, os tratamentos geralmente realizados

se resumem a uma abordagem simplória na qual algumas oportunidades não são

aproveitadas, fazendo com que o esforço desempenhado não constitua um verdadeiro

melhor esforço.

Existem sistemas que se baseiam em perfis de uso dos recursos para auxiliar no

escalonamento, de forma que as aplicações da grade sejam escalonadas para estações de

trabalho com probabilidade maior de ociosidade [2, 6]. Mas mesmo essa melhoria não

constitui um tratamento ideal uma vez que as funções usadas para inferir o perfil de uso

são geralmente baseadas em funções matemáticas, como a média aritmética, que

escondem detalhes como rajadas de utilização dos recursos.

Neste trabalho, apresentamos uma comparação entre computação em grade e

computação em cluster e suas principais características.

Na segunda seção, apresentamos as principais características do processamento

de alto desempenho. Na terceira seção, apresentamos as principais características da

computação em clusters. Na quarta seção, apresentamos as principais características da

computação em grade. Na quinta seção, apresentamos uma breve comparação entre as

duas computações, e na sexta seção, uma breve conclusão sobre este trabalho.

2.Ambiente de Alto Desempenho

Até meados desta década, a existência de computação paralela era percebida apenas por

pessoas que precisavam de alto desempenho para resolver determinados problemas.

Hoje, é bastante comum que pessoas adquiriram computadores multiprocessados como

computadores pessoais. Isso deve-se ao fato de surgir uma demanda por processamento

também nos computadores pessoais para manipulação de vídeos, jogos, e programas de

editoração e imagens entre outros.

Em uma computação seqüencial, um determinado problema é dividido em várias

partes menores e cada uma desta parte é executada consecutivamente por meio de um

pipeline em um único computador contendo uma única unidade central de

processamento. A Figura 1-a apresenta a computação seqüencial.

Page 3: Computação de Alto Desempenho - Cluster e Grade

Sob uma perspectiva simples, uma computação paralela, é a utilização de várias

computações seqüenciais simultâneas. Um problema é dividido em várias partes. Cada

parte é quebrada em uma série de instruções. As instruções são executadas por vários

processadores simultaneamente. A Figura 1-b apresenta a divisão e execução de um

problema utilizando a computação paralela.

a) Computação seqüencial b) Computação paralela

Figura 1. Comparativo de computação seqüencial e paralela

Considerando o nível de paralelismo, podemos agrupar os computadores da

seguinte maneira:

a) Um único computador com um único processador;

Esse tipo de processador foi bastante comercializado até meados desta

década. São exemplos de computador uniprocessado: Pentiun I, PentiunII,

AMD K6 entre outros.

b) Um único computador com vários processadores;

Os limites tecnológicos para aumentar o desempenho em um único

processador levaram ao surgimento de computadores multiprocessados. Isto

é, um único computador com vários processadores. São exemplos de

computador multiprocessado: Core 2 Duo, Quad core, six core e outros.

c) Vários computadores conectados por uma rede de interconexão;

Este tipo de arquitetura é bastante importante na resolução de problemas

computacionalmente grandes como formações galáticas, movimento

planetário, informações sobre tráfego de automóveis,

d) Uma combinação dos três anteriores.

Um ambiente com processamento de alto-desempenho (PAD) é caracterizado,

principalmente, pela execução de tarefas paralelas complexas e milhares de aplicações

ao mesmo instante. Até pouco tempo, este ambiente era formado por computadores

paralelos específicos (por exemplo, MPP e SMP). Atualmente, podemos encontrar uma

estrutura desta categoria construída com componentes encontrados em lojas

especializadas de informática (conhecido como Components Off The Shelf - COTS) e

podem ser classificados como clusters e grades computacionais.

Page 4: Computação de Alto Desempenho - Cluster e Grade

Os fatores que tangem ao desempenho dos clusters e grids são as políticas

adotadas em relação aos recursos compartilhados, geralmente divididas em: política de

transferência, política de seleção, política de localização e política de informação.

a) Política de transferência: A política de transferência define quais elementos de

processamento estão aptos a receber e transmitir tarefas. Nesta etapa são definidos como

receptores os elementos ociosos ou com poucas cargas de trabalho e transmissores os

elementos sobrecarregados [17].

b) Política de seleção: Dependendo do caso, uma troca de tarefas pode ser feita,

o que denota a segunda política: escolher, dentre tantas, a tarefa mais adequada a ser

enviada a um determinado recurso. A esta função é dado o nome de política de seleção.

Esta política define se o escalonamento será preemptivo ou não-preemptivo, ou seja,

tarefas que já iniciaram sua execução ou tarefas que ainda não foram executadas [4].

c) Política de localização: A política de localização define, dentre todos os

recursos disponíveis, qual o mais adequado a receber a carga. A escolha do elemento

pode ser aleatória ou através de investigação para saber qual o mais adequado no

momento.

d) Política de informação: Esta política define os locais onde as informações

sobre o estado dos recursos são armazenadas e com que freqüência são atualizadas. As

informações podem ser armazenadas em um local específico ou em todos os recursos de

duas formas: Cada recurso possui informações sobre todos os outros, através de envio

por broadcast ou; cada recurso tem apenas seu próprio estado.

A Figura 2 apresenta a distribuição dos 500 maiores computadores da atualidade com

relação à sua arquitetura [19].

Figura 2. Distribuição dos 500 maiores computadores - Arquitetura

É possível observar que a arquitetura baseada em clusters é predominante desde

o início desta década.

Tabela 1. Quantidade de computadores com relação à arquitetura

Arquitetura Quantidade de computadores (%) – TOP 500

Cluster 417 (83.40 %)

Page 5: Computação de Alto Desempenho - Cluster e Grade

MPP 81 (16.20 %)

Outros 2 (0,4%)

Os três maiores supercomputadores do mundo, atualmente (em

Novembro/2009), são: Jaguar - Cray XT5-HE Opteron Six Core 2.6 GHz Cray Inc.

(224.162 cores); Roadrunner - BladeCenter QS22/LS21 Cluster, PowerXCell 8i 3.2

Ghz / Opteron DC 1.8 GHz, Voltaire Infiniband IBM (122.400 cores) e Kraken XT5 -

Cray XT5-HE Opteron Six Core 2.6 GHz Cray Inc.( 98.928 cores) [19].

3.Computação em Clusters

Em um ambiente cluster a alocação de recursos é efetuada por domínio administrativo

centralizado, sendo desnecessária a segurança do processo e do recurso, caso a rede de

interconexão (intracluster) seja desacoplada da rede de acesso externo.Além disso, este

tipo de ambiente pode se beneficiar de protocolos de comunicação mais eficientes entre

suas unidades de processamento, pois como a rede de interconexão pertence ao mesmo

domínio administrativo, o recurso é controlado [3,16].

A abordagem cluster possui alta escalabilidade, pois tarefas de inclusão ou

exclusão de nós escravos não exigem que sejam feitas modificações no ambiente, sendo

realizadas de forma isolada, partindo do nó mestre, por meio da execução de algum

comando específico do software escolhido. No entanto, um fator limitante é o número

de nós, na ordem de dezenas de recursos. A figura 1 ilustra, resumidamente, este

ambiente.

Figura 3 – Exemplo de uma arquitetura cluster

O cluster ganhou força até que três tendências convergiram no final da década

de 80: microprocessadores de alto desempenho, redes de alta velocidade, e ferramentas

padronizadas para computação distribuída de alto desempenho. Uma quarta tendência

possível é a crescente necessidade de poder de processamento para aplicações científicas

e comerciais unida ao alto custo e a baixa acessibilidade dos tradicionais

supercomputadores.

Page 6: Computação de Alto Desempenho - Cluster e Grade

3.1 Tipos de Clusters

Existem vários tipos de cluster, no entanto há alguns que são mais conhecidos, os quais

são descritos a seguir:

a) Cluster de Alto Desempenho: Também conhecido como cluster de alta

performance ele funciona permitindo que ocorra uma grande carga de

processamento com um volume alto de giga flops em computadores

comuns e utilizando sistema operacional gratuito o que diminui seu

custo.

b) Cluster de Alta Disponibilidade: São implementados principalmente

com o propósito de melhorar a disponibilidade de serviços. Operam com

redundância para disponibilizar os serviços mesmo que alguns nós do

cluster falhe. Além disso, conseguem detectar erros se protegendo de

possíveis falhas.

c) Cluster para Balanceamento de Carga: Esse tipo de cluster tem como

função controlar a distribuição equilibrada do processamento. Requer um

monitoramento constante na sua comunicação e em seus mecanismos de

redundância, pois se ocorrer alguma falha haverá uma interrupção no seu

funcionamento.

3.2 Cluster Beowulf

O cluster Beowulf [9] é um cluster baseado em computadores de baixo custo e

utiliza uma rede de interconexão dedicada com softwares livres. O projeto pode

melhorar proporcionalmente o desempenho com a adição de novas máquinas ao cluster.

Este tipo de cluster surgiu para promover o desempenho na resolução de vários

problemas na NASA.

4. Computação em Grade

As Grades Computacionais [8,9] surgiram como uma alternativa para a execução de

aplicações com necessidade de grande poder computacional, através da integração de

recursos possivelmente heterogêneos e geograficamente dispersos.

O gerenciamento dos recursos que compõe a grade é feito por um gerenciador

global que, além de gerenciar os recursos, trata problemas comuns em ambientes de

computação distribuída como: extensibilidade, adaptabilidade, autonomia, qualidade de

serviço, além de outros problemas que são mais comuns em ambientes de grade como:

escalabilidade, tolerância a falhas, instabilidade dos recursos e privilégios de utilização.

Krauter et al [4] definiram uma taxonomia para classificar os sistemas de grade

conforme a atividade principal à qual se destinam:

Page 7: Computação de Alto Desempenho - Cluster e Grade

a) Grade Computacional (Computing Grid): Sistemas de alto poder computacional que

provêem serviços de processamento combinando o poder de cada máquina que

compõe a grade.

b) Grade de Dados (Data Grid): Sistemas que provêem uma infra-estrutura de

armazenamento, gerenciamento e acesso a dados. Os dados são distribuídos por

vários repositórios que compõem a grade, os quais são conectados por uma rede.

c) Grade de Serviços (Service Grid): Sistemas que têm como foco prover uma

infraestrutura que viabilize serviços sob demanda, permitindo uma maior

colaboração entre várias instituições através do compartilhamento dos seus serviços

e recursos e utilizando mecanismos que viabilizem a interoperabilidade.

O desempenho oferecido às aplicações que fazem uso desta categoria de grades

computacionais está sujeito a diversos desafios. Em um primeiro nível estão o

problemas relacionados à dispersão de recursos, tais como: sua localização e a forma

como são acessados, a concorrência nos acessos a recursos compartilhados, a

transparência de comunicação, falhas de aplicação ou de recursos e a forma como o

sistema se recupera destas, além de problemas de escalabilidade, entre outros. De modo

geral, grades são mais distribuídas, diversas e complexas que outras plataformas de

sistemas distribuídos. Os aspectos que mais fortemente evidenciam esta distribuição,

diversidade e complexidade são [5,12]: heterogeneidade, alta dispersão geográfica,

compartilhamento, múltiplos domínios administrativos e controle distribuído.

Somado-se a esses problemas, estão aqueles típicos do uso de um ambiente de grade,

que não ocorreriam (ou pelo menos teriam uma probabilidade muito menor de ocorrer)

se fosse utilizado um único recurso[12]. Dentre estes, podem ser citados [8]:

a) Variação na disponibilidade de recursos: Essa variação pode ocorrer devido à

concorrência no uso do recurso, à variação dinâmica da topologia do ambiente bem

como a falhas de hardware ou software, dentre outros fatores.

b) Ambiente não-controlado: Diferente de um ambiente tradicional, em um ambiente de

grade não é possível ter controle sobre os recursos gerenciados. Isto é especialmente

verdade em grades oportunistas, onde o dono do recurso é quem estabelece quando e

como este é compartilhado. Escalonadores locais no nível do Sistema Operacional

(SO) gerenciam quando as aplicações locais devem executar e o escalonador da

grade não tem qualquer controle sobre este processo.

c) Processamento paralelo: Uma aplicação na grade é particionada em um conjunto de

peças menores, chamadas tarefas. Essas tarefas são então alocadas a recursos e

processadas concorrentemente, o que acrescenta custos como comunicação e

transferência de dados. O desafio aumenta com a possibilidade dos recursos serem

heterogêneos e possuírem padrões de disponibilidade individuais.

d) Alocação de Recursos: Apesar de ser uma operação trivial em muitos casos, a

alocação de recursos pode constituir um problema, uma vez que pode envolver a

transferência de grandes quantidades de dados (binário da aplicação e arquivos de

entrada para as diversas máquinas que executarão as tarefas). Outro complicador é o

Page 8: Computação de Alto Desempenho - Cluster e Grade

fato da construção de uma estratégia de escalonamento ser um problema bem

conhecido como NP-Completo [13].

e) Segurança: A possibilidade de computadores geograficamente dispersos,

pertencentes a instituições e domínios administrativos diferentes, interagirem traz

novos problemas de segurança e aumenta a complexidade de soluções eficientes

para compartilhamento de recursos em grades computacionais.

Parte destes desafios dizem respeito a operações de gerenciamento da grade, em

especial o escalonamento das aplicações que dela fazem uso. Contudo, devido à

dinamicidade dos sistemas de grade, providências tomadas durante a execução das

aplicações podem influenciar significativamente seu desempenho. Um exemplo típico é

o uso de uma política de alocação de recursos que evita a preempção de aplicações da

grade e prioriza recursos que têm possibilidade de atender melhor os requisitos destas,

na migração de tarefas[12].

É necessário encontrar um balanço em que as necessidades de ambos, tanto o

dono do recurso quanto o usuário da grade, sejam atendidas. Isto é alcançado mediante o

tratamento da competitividade entre as aplicações locais e as aplicações da grade. São

exemplos de middlewares para computação em grade: Condor, OurGrid, BOINC e

InteGrade.

5. Uma Breve Comparação Entre Cluster e Grade

As principais características que distinguem cluster de grade são relacionadas ao

domínio, quantidade de nós, custo para implantação e manutenção, a granularidade dos

problemas tratados por cada um e ainda, o sistema operacional utilizado em cada

ambiente.

A Tabela 2 apresenta um resumo sobre as principais diferenças existentes entre

cluster e grade.

Tabela 2 - Diferenças entre as configurações cluster e grade

Característica Cluster Grade

Domínio Único Múltiplos

Nós Milhares Milhões

Segurança do Processamento e Recurso

Desnecessária Necessária

Custo Alto, pertencente a um

único domínio Alto, todavia dividido

entre domínios

Granularidade do problema Grande Muito grande

Sistema Operacional Homogêneo Heterogêneo

Em uma grade, é possível agregar computadores de vários domínios distribuídos

pelo mundo inteiro através da internet. Em um cluster, os computadores apenas de um

Page 9: Computação de Alto Desempenho - Cluster e Grade

domínio participam da computação. Ambas arquiteturas são bastante escaláveis.

Contudo, uma grade de computadores pode conter milhões de computadores. O limite

de computares é a quantidade de computadores disponível na internet.

Pelo fato dos computadores de um cluster estarem todos no mesmo domínio, os

procedimentos de segurança são mais simples. Como a quantidade de computadores de

uma grade é significativamente maior que a de um cluster, uma grade computacional

pode proporcionar um poder de processamento bem superior a do cluster.

6. Conclusão

Nas duas últimas décadas houve um crescimento bastante expressivo na busca e

utilização da computação de alto desempenho. Este momento, não por acaso, coincidiu

com o fortalecimento de microprocessadores de alta performance, redes de alta

velocidade, e ferramentas padronizadas para computação distribuída de alto

desempenho que subsidiaram a computação de problemas relativos à meteorologia,

simulação sísmica, seqüenciamento de DNA, e vários outros. Este trabalho, apresenta

algumas características da computação em cluster e computação em grade e uma breve

comparação entre eles.

Referências

[1] ALVARENGA, A. e M DANTAS, A. R. “Um Ambiente para Processamento

Paralelo Oportunístico na Internet”, Dissertação de Mestrado, Ciência da

Computação, UNB, 2003.

[2] BEZERRA, G. C. Análise de Conglomerados Aplicada ao Reconhecimento de

Padrões de Uso de Recursos Computacionais. Master’s thesis, Department of

Computer Science - University of São Paulo, São Paulo, March 2006.

[3] BUYYA, R. “High Performance Cluster Computing: Architectures and Systems”,

USA: Prentice Hall, 1999.

[4] CASAVANT ,T. L. e KUHL, J. G. “A Taxonomy of Scheduling in General-Purpose

Distributed Computing Systems”, IEEE Transactions on Software Engineering, 1988.

[5] CIRNE, W; BRASILEIRO, F; ANDRADE, N; COSTA, L; ANDRADE, A;

NOVAES, R; MOWBRAY, M. Labs of the World, Unite!!! Journal of Grid

Computing, 4(3):225–246, 2006.

[6] CHOI, S. Group-based Adaptive Scheduling Mechanism in Desktop Grid.

PhDthesis, Department of Computer Science and Engineering Graduate School –

Korea University, June 2007.

[7] FOSTER, I. e KESSELMAN ,C. “Globus: A Metacomputing Infrastructure

Toolkit”, The International Journal of Supercomputer Applications and High

Performance Computing, 1996.

[8] FOSTER, I; KESSELMAN, C; NICK, J; TUECKE, S. The Physiology of the Grid.

An Open Grid Services Architecture for Distributed Systems Integration, 2002.

[9] FOSTER, I; KESSELMAN, C; TUECKE, S. The Anatomy of the Grid. International

Journal of Supercomputer Applications, 15(3):200–222, 2001.

Page 10: Computação de Alto Desempenho - Cluster e Grade

[10] GOLDCHLEGER, A. Integrade: Um sistema de middleware para computação em

grade oportunista. Master’s thesis, Department of Computer Science - University of

São Paulo, Dec 2004.

[11] GOLDCHLEGER, A; KON, F; GOLDMAN, A; FINGER, M; BEZERRA, G. C.

Integrade: Object-oriented grid middleware leveraging idle computing power of

desktop machines. Concurrency and Computation: Practice & Experience, 16:449–

459, 2004.

[12] GOMES, R. A. “Grades Computacionais Oportunistas: Alternativas para Melhorar

o Desempenho das Aplicações” – Dissertação de mestrado – Universidade Federal de

Goiás – Instituto de Informática - 2009

[13] KONDO, D; TAUFER, M; BROOKS, C; CASANOVA, H; CHIEN, A.

Characterizing and evaluating desktop grids: an empirical study. Parallel and

Distributed Processing Symposium, 2004. Proceedings. 18th International, 2004.

[14] LIANG, J; NAHRSTEDT, M. Supporting quality of service in a non-dedicated

opportunistic environment. Cluster Computing and the Grid, 2004. CCGrid 2004.

IEEE International Symposium on, p. 74–81, 2004.

[15] LITZKOW, M; LIVNY, M; MUTKA, M. Condor - A hunter of idle workstations.

Distributed Computing Systems, 1988., 8th International Conference on, p. 104–111,

1988.

[16] PITANGA, M. “Computação em Cluster”, 1ª ed., Rio de Janeiro: Brasport, 2004.

[17] Shivaratri, N. G.; Krueger, P.; e Singhal, M. “Load Distributing for Locally

Distributed Systems”, IEEE Computer Society Press, 1992.

[18] THAIN, D; TANNENBAUM, T; LIVNY, M. Condor and the Grid. Grid

Computing: Making The Global Infrastructure a Reality, John Wiley, p. 0–470, 2003.

[19] Top500 – http://www.top500.org/ - Acessado em 22 de Novembro de 2009