computação de alto desempenho - cluster e grade
DESCRIPTION
Computação de Alto Desempenho - Cluster e GradeTRANSCRIPT
Computação de Alto Desempenho: Cluster e Grade
Cristiano C. A. Vieira
Universidade Federal de Mato Grosso do Sul (UFMS)
Campo Grande – MS – Brasil
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.
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.
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.
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 %)
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.
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:
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
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
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.
[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