Computação em Grade - Uma Visão Introdutória
Por Marcos Pitanga em 30 de março de 2004
Introdução
Os altos custos que envolvem a aquisição de supercomputadores dedicados e a constante melhoria nos projetos de computadores pessoais e na estrutura das redes locais levou a idéia de se utilizar computadores pessoais independentes interconectados em rede como plataforma para executar aplicações paralelas e distribuídas. Todo o dia uma grande quantidade de usuários estão insaciáveis por utilizar uma rede mundial de computadores, constituída por diversos dispositivos heterogêneos tanto ao nível de arquitetura quanto ao nível de sistemas, de maneira a utilizar e compartilhar esses recursos computacionais de uma forma transparente e eficiente.
Governos, empresas e organizações de pesquisa estão trabalhando em associação para criar redes de supercomputação, e que disponibilizarão estes recursos computacionais agregados de um grupo para qualquer computador conectado. As empresas e universidades que investiram nos últimos anos em clusters de alta performance de computação, estão dando o próximo passo para a futura computação em grades computacionais (grid computing), e os pesquisadores estão trabalhando para criar uma interface padronizada de Web para que diversas pessoas em várias áreas distintas possam utilizar a supercomputação em grade como um serviço público tradicional, semelhantes aos sistemas elétricos e/ou água/esgoto, sem se preocupar em como os recursos estarão disponibilizados para o mesmo.
John MacCarty do MIT em 1961 já previa o que hoje temos como grid. “Se os computadores do tipo que eu imagino, se tornarem os computadores do futuro, então a computação poderá algum dia ser organizada como um serviço público, assim como a telefonia o é... Esse serviço poderá se tornar a base da nova e importante indústria”
Figura 1: A evolução da computação de alto desempenho.A Internet é formada por sistemas totalmente heterogêneos, fracamente acoplados e geograficamente distribuído. Pense na quantidade de máquinas que estão ociosas nesse momento. Os sistemas em cluster são caracterizados em uma interligação física localizada, construídos para resolver os problemas de uma forma mais rápida possível por meio de aplicações paralelas e distribuídas. E isso já foram explicados em artigos posteriores.
Já começam a ser consideradas que algumas aplicações já não podem ser mais resolvidas dentro de um ambiente de cluster e podem necessitar o uso de recursos em localidades remotas. O uso dos ciclos fracamente acoplado de computadores dispersos em uma Wan pode representar um ambiente muito interessante para processamento de alto desempenho. Com isso um usuário acessaria via estação de trabalho uma aplicação dentre um conjunto de aplicações disponíveis e submeter suas tarefas para serem executados nesse ambiente. Seria de responsabilidade do próprio sistema cuidar de questões como sincronização de tarefas, disponibilidade de recursos (processadores, armazenamento, compartilhamento de dados), transferências de informações, protocolos de comunicação, troca de mensagens e segurança, fossem resolvidos de forma transparente ao usuário. O sistema seria visto pelo usuário como um supercomputador virtual, capaz de executar inclusive tarefas concorrentemente. Esses recursos poderiam ser utilizados para prover muito mais do que simples serviços de comunicação, e-mail eletrônico ou transferência de arquivos; eles teriam o potencial de fornecer um ambiente computacional simples no qual ciclos de processamento, comunicação e até mesmos dados seriam compartilhados através de estações de trabalhos espalhados em prédios, estados e até mesmo entre continentes.
Uma experiência de integração de processamento distribuído é o projeto SETI@home (http://setiathome.ssl.berkeley.edu/), uma continuação do projeto da NASA de busca de inteligência extraterrestre. Usando um software que pode ser baixado pela Internet, um microcomputador pode analisar sinais do rádio telescópio de Arecibo. Atualmente, existem 4 milhões de assinantes em 224 países, criando um computador virtual com uma performance de 20 Tflops.
Um outro exemplo são as famosas redes peer-to-peer, como Emule (Edonkey), Kazaa, Gnutella, em que se compartilham arquivos por exemplo, mas sem nenhum controle de acesso e não interoperam entre si. Com a evolução dessas aplicações elas acabaram por inter-operar e haverá uma convergência de interesses entre computação ponto a ponto, Internet e computação em Grade.
A Computação em Grade é próxima geração da Internet – são protocolos adicionais construídos sobre a tecnologia da Internet. Qualquer recurso que esteja na Grade, também está na Rede.
Grid Computing
O Grid Computing é um novo conceito que explora as potencialidades das redes de computadores, com o objetivo específico de disponibilizar camadas virtuais que permitem a um usuário ter acesso a aplicações altamente exigentes, bem como aderir a comunidades virtuais de grande escala, com uma grande diversidade de recursos de computação e de repositórios de informações.
A diferença existente entre a computação distribuída e computação em grade de dá pelo fato de que a computação distribuída é um conceito que vem dos anos 80 e 90, e consiste na possibilidade de resolver um determinado problema computacional através da utilização de diferentes recursos distribuídos geograficamente. A computação distribuída passa a ser uma “Computação em Grade” no momento em que existe uma infra-estrutura física e uma infra-estrutura lógica (software) que permita coordenar os trabalhos que vão ser processados e garantir a sua qualidade de serviço.
O Grid é um caso particular da computação distribuída, uma vez que os Grids são orientados essencialmente para aplicações que precisam de uma grande capacidade de cálculos, ou enormes quantidades de dados transmitidos de um lado para o outro, ou as duas.
O nome Grid foi idealizado baseado nas malhas de interligação dos sistemas de energia elétrica (power-grids), em que um usuário utiliza a eletricidade sem ao menos saber em que local ele foi gerada, sendo totalmente transparente aos seus usuários.
Figura 2: Visão de um Grid Computacional TeraGrid.O surgimento das Grids Computacionais nasceu da comunidade de Processamento de Alto Desempenho (PAD). O conceito foi apresentado pelos pesquisadores Ian Foster e Carl Kesselman, sendo composto por uma infra-estrutura de hardware e software que permite-nos acesso a grandes capacidades computacionais geograficamente distribuídas, de forma confiável, consistente, econômica e persistente. Na verdade o conceito é antigo, mas com uma nova dinâmica, em que se pode utilizar a capacidade de computação (ex. Storage/CPU) sem ter que se preocupar de onde vem, como é mantida, fazendo uma metáfora às redes elétricas.
Chamamos de Organização Virtual (VO) quando temos participantes que desejam compartilhar recursos para poder concluir uma tarefa. Além disso, o compartilhamento esta além de apenas troca de documentos, isto pode envolver acesso direto a software remoto, computadores, dados, sensores e outros recursos.
Ian Forster traduz os conceitos de Grid de duas formas clássicas: “Compartilhamento de recursos coordenados e resolução de problemas em organizações virtuais multi-institucionais dinâmicas” e “Grids Computing são sistemas de suporte à execução de aplicações paralelas que acoplam recursos heterogêneos distribuídos, oferecendo acesso consistente e barato aos recursos, independente de sua posição física. A tecnologia de Grids Computing possibilita agregar recursos computacionais variados e dispersos em um único ´supercomputador virtual´, acelerando a execução de várias aplicações paralelas. Grids se tornaram possíveis nos últimos anos, devido a grande melhoria em desempenho e redução de custo, tanto de redes de computadores quanto de microprocessadores”.
A computação em grade está gerando especulações não somente na área científica, mas também na empresarial (IBM, HP/Compaq, Oracle, Sun e Fujitsu), pois irá permitir a redução de custos e tempo, aumento de produtividade, compartilhamento de recursos e informações, dentre outras possibilidades. Com sua expansão, pode-se chegar, no final, em algo como a formação de um Grid Global, uma rede distribuída global de colaborações entre seus participantes, capaz de prover recursos talvez inatingíveis por um cluster isolado. E isto já está sendo feito em diversos países do mundo, inclusive no Brasil.
Grids são construídos como um grupamento de serviços básicos independentes. Um aspecto essencial dos serviços de Grid é que esses estão disponíveis uniformemente através dos ambientes distribuídos na Grid. Os serviços são agrupados em um sistema integrado, também chamado de middleware. Exemplos de ferramentas atuais de Grid incluem Globus, Legion, OpenGrid, AppLeS.
Figura 3: Diversos Centros de Supercomputação interligados, formando um cluster de clusters (Projeto TeraGrid).O Grid permite também o uso de técnicas de programação paralela por passagem de mensagens. O ambiente MPI (“Message Passing Interface”) está disponível no Grid através da versão MPICH-G2 (versão portátil do MPI para o Globus). O padrão MPI define uma biblioteca de rotinas que implementam uma comunicação ponto a ponto, em que a operação “send” é usada para iniciar uma transferência de dados entre dois programas concorrentes e a operação “receive” é usada para obter dados do sistema no espaço de memória da aplicação; existem ainda operações coletivas envolvendo múltiplos processos. Mas que devido a alta latência provocada na comunicação entre processos, as aplicações devem ser construídas com uma granularidade bem projetada de tal forma que se comuniquem o mínimo possível. Então, as aplicações mais adequadas ao Grid são as que possuem tarefas independentes (bag of tasks), pois as tarefas não dependem da execução de outras e podem ser executadas em qualquer ordem.
O Grid Computing é um desafio bem maior do que formas mais simples de computação paralela e distribuída. Hoje, a maioria dos projetos de Grid permanecem localizados nos centros de supercomputação e laboratórios universitários. Os centros de pesquisa são ligados a conexões em rede cerca de 20 vezes mais rápidas do que as conexões de banda largas normais, são equipadas com sistemas de armazenamento capazes de lidar com vastos arquivos de dados e com computadores de alta performance. O Grid Computing é um conceito sobre o qual existe ainda uma grande expectativa e que poderá evoluir em diferentes direções, mas que é já hoje entendido como a próxima geração da Web para a comunidade científica.
Internet x Grid x Cluster
A internet nasceu no início da década de 70, e somente a partir de 1995, com o aparecimento dos serviços www, foi que se tornou tão popular, saindo dos meios militares e acadêmicos. Seu objetivo era a interligação de diferentes ambientes computacionais e geograficamente dispersos. Os web sites desenvolvidos pela indústria sempre foram interoperáveis em relação usuário-site, por meio de aplicações criadas neste contexto, em que o usuário dispõe de um menu de serviços fechados. O que ocorre em um ambiente de Grid é o inverso, onde o usuário tem de submeter suas aplicações para serem resolvidas dentro do ambiente por ele montado.
Um ambiente de cluster constitui em um sistema formado por hardware e software conectados em um local apenas, servindo a usuários que estão trabalho somente em um projeto, usado exclusivamente para resolver os problemas computacionais de uma determinada organização. Por outro lado, um Grid presta serviços de uma forma geograficamente distribuída. Em um cluster, os recursos são gerenciados por uma entidade central, e os computadores agem como se fosse um único dispositivo. Nas configurações em Grid, cada “organização virtual” faz o gerenciamento de seus recursos não tendo a visão de uma imagem única do sistema. Ou seja, o usuário tem consciência dos diversos serviços disponíveis e que deverá requisitá-los para sua utilização. Portanto, os Grids são mais heterogêneos, complexos e distribuídos.
Para o Grid Computing, as aplicações leves são as ideais pois estas requisitam relativamente menos das redes. Mesmo tendo máquinas com uma alta conexão, estas redes com baixo fluxo de dados constitui uma espécie de gargalo ao requisito fundamental para aplicações pesadas. A multiplicidade das velocidades das diversas redes implica em alguns pontos de gargalo, e que compromete a performance do nosso supercomputador virtual.
Para sacramentarmos Grid x Cluster, utilizaremos a referência do Prof Buyya. “Se acontece o compartilhamento de recursos gerenciado por um único sistema global sincronizado e centralizado, então é um cluster. Em um cluster, todos os nós trabalham cooperativamente em um objetivo comum e o objetivo é a alocação de recursos executada por um gerente centralizado e global. Em Grid, cada nó, possuí seu próprio gerente recursos e política de alocação".
Benefícios de um Grid1. Organizações podem agregar recursos - a computação em Grid permite que as organizações possam agregar recursos com toda a infraestrutura dos ITs, não importando localização global. Isso elimina situações onde um site esteja sendo executado com sua capacidade máxima, enquanto outros tenham ciclos disponíveis.
2. Poderosa plataforma de suporte a Organizações Virtuais - organizações podem melhorar dramaticamente sua qualidade e velocidade de produtos e serviços disponibilizados, enquanto os custos de IT são reduzidos por habilitar a colaboração transparente dos recursos compartilhados
3. Acesso distribuído a diversos tipos de recursos - permite que empresas acessem e compartilhem bases de dados de forma remota. Isto é essencialmente benéfico para as ciências da saúde ou comunidades de pesquisa, onde volumes grandiosos de dados são gerados e analisados durante todo dia.
4. Colaboração entre centro de pesquisas - possibilita a larga dispersão das organizações para que facilmente possam colaborar em projetos pela criação da habilidade do compartilhamento de tudo, desde aplicações a dados, até projetos de engenharia, etc.
5. Melhor utilização de largura de banda - pode-se criar a mais robusta e resistente infraestrutura de informações.
6. Aproveitamento de recursos ociosos – pode-se aproveitar os ciclos de processamento idle disponíveis dos PCs desktops que se encontram em várias localidades pelo planeta. Por exemplo, os computadores que se encontram tipicamente ociosos durante a noite de uma empresa em Tókio pode ser utilizado durante o dia para operações na América do Sul.
Desafios operacionais e de pesquisa a serem vencidos
- Localização dos recursos;
- Reserva de recursos;
- Capacidade para adaptar- se a mudanças no ambiente;
- Criação e escalonamento das tarefas;
- Autonomia de cada grupo participante para definir suas próprias políticas de segurança;
- Recursos requisitados podem estar em diferentes localidades;
- Qualidade de serviço exigida por cada aplicação.
Para se utilizar um sistema em Grid são necessários diversos protocolos, padrões e ferramentas de software. Para desenvolver padrões comuns de processamento a Universidade do Sul da Califórnia, o Laboratório Nacional de Argonne e a Universidade de Chicago através do Projeto Globus (http://www.globus.org/) estão desenvolvendo um conjunto de especificações técnicas e ferramentas de software para Grid Computing, comandados pelo pesquisador Ian Forster.
A padronização da tecnologia de Grid já vem ocorrendo a bastante tempo, sendo que, devido ao uso de diversas empresas, os esforços passaram a ter uma prioridade muito maior nesses últimos três anos.
Principais Projetos de Grid
Globus
O projeto Globus foi iniciado em 1997, e é considerado o padrão de facto para a computação em Grid. Seus objetivos de baseiam no desenvolvimento e promoção de protocolos padrões para permitir interoperabilidade entre infraestruturas. Obteve uma grande atenção por parte da mídia, inclusive atraindo a atenção de empresas (exemplo: IBM).
O Globus Toolkit é um conjunto de ferramentas de código aberto baseados por bibliotecas escritas em C e que atualmente só rodam sobre plataforma Unix, desenvolvidos por Ian Forster, cientista sênior do Laboratório Nacional Argonne, Carl Kesselman, diretor do Centro para Tecnologias de Grade do Instituto de Ciências da Informação, da Universidade do Sul da Califórnia e Steve Tuecke da U. of Chicago, financiados principalmente pelo governo americano, com subvenção do Departamento de Energia, da Fundação Nacional de Ciência, da Nasa e da Agência de Projetos de Pesquisa Avançada da Defesa, e tem como objetivo facilitar a computação em grade por meio de APIs e SDKs. Atualmente na versão 3.x, o que aproximadamente representa a terceira geração do sistema e incluem serviços e bibliotecas para monitoração, descobrimento e gerenciamento de recursos, tais como segurança e gerenciamento de arquivos. Tendo sido a solução de maior impacto na comunidade da computação de alto desempenho. O Globus e os protocolos definidos em sua arquitetura tornaram-se um padrão de facto como infra-estrutura para computação em grid. Os ramos de pesquisa atuais são: Gerenciamento de Recursos, Gerenciamento e Acesso a Dados, Ambientes de Desenvolvimento de Aplicações, Serviços de Informação e Segurança.
Inicialmente, pode-se usar Globus apenas para agendar a execução em múltiplas máquinas. – Posteriormente, pode- se adicionar uma biblioteca para detecção e correção de falhas e finalmente, pode-se utilizar os serviços Globus de distribuição de arquivos.
LegionLegion é um sistema de grade computacional que foi desenvolvido pela Universidade de Virginia. Um dos pioneiros em computação em grade, o desenvolvimento do Legion começou em 1993. Em 2001, seus idealizadores fundaram a Avaki, uma empresa que atualmente desenvolve e comercializa sistemas que utilizam a tecnologia do Legion.
O Legion foi desenvolvido utilizando-se o paradigma de orientação a objetos. Em Legion, todos os elementos da Grade são representados por objetos, sejam eles dados ou objetos reais, tais como microscópios, telescópios e outros equipamentos. Objetos comunicam-se por chamadas de métodos assíncronas, e as interfaces são definidas por um tipo de IDL. As classes possuem responsabilidades de sistema como: criação de objetos, ativação/desativação e agendamento da execução.
Legion se destaca pela sua preocupação com o suporte à aplicações paralelas. O Legion possui uma implementação das bibliotecas MPI (Message Passing Interface) e PVM (Parallel Virtual Machine). Para utilizar um programa escrito em MPI ou PVM no Legion basta recompilá-lo utilizando as bibliotecas fornecidas pelo Legion. Isso permite que a migração da infra-estrutura antiga para a infra-estrutura do Legion seja praticamente instantânea.
Além das bibliotecas, Legion fornece suporte nativo a algumas linguagens de programação paralela. É possível utilizar as linguagens MPL (Mentat Programming Language, uma extensão de C++ para programação paralela), BFS (Basic Fortran Support) e Java.
Por fim, aplicações legadas que não utilizem nenhuma das bibliotecas ou linguagens acima podem ser encapsuladas dentro de objetos Legion. Basta o usuário registrar o programa legado com o comando legion_register_program e o sistema constrói um objeto Legion que encapsula o programa legado e, automaticamente, ele se torna elegível para ser executado pelo sistema. Isso garante que qualquer programa possa ser executado no ambiente do Legion. Se o programa realizar algum tipo de comunicação, basta que o programador escreva um adaptador para o programa legado que converta as chamadas a biblioteca de comunicação à chamadas a métodos de comunicação do Legion.
ConclusãoPodemos traduzir então que, um Grid Computacional resume-se em:
- Computadores em diferentes localidades;
- Rede de grande área;
- Apropriados para computação intensiva, alto-desempenho;
- Ambiente colaborativo;
- Grande quantidade de dados;
- Diferentes organizações;
- Permitem compartilhar, agregar e escolher recursos computacionais dos mais variados tipos:
supercomputadores dispositivos especiais - telescópios, radares, etc sistemas de armazenamento bancos de dados computadores comunsAs dificuldades encontradas são muitas, e os estudos são incessantes nessas áreas, destacando-se:
- Localização dos recursos;
- Reserva de recursos;
- Capacidade para adaptar-se a mudanças no ambiente;
- Criação e escalonamento das tarefas;
- Autonomia de cada grupo participante para definir suas próprias políticas de segurança;
- Recursos requisitados podem estar em diferentes localidades;
- Qualidade de serviço exigida por cada aplicação.
No futuro bem próximo as aplicações baseadas na web vão usufruir os benefícios das grades computacionais, teremos então uma evolução natural dos sistemas localizados sendo acessíveis mundialmente e o aluguel de recursos computacionais ociosos, principalmente aqueles relacionados a processamento massivo.
Originalmente em http://www.clubedohardware.com.br/artigos/Computacao-em-Grade-Uma-Visao-Introdutoria/124
© 1996-2012, Clube do Hardware. Todos os direitos reservados.
É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998.
Não nos responsabilizamos por danos materiais e/ou morais de qualquer espécie promovidos pelo uso das informações contidas no Clube do Hardware.