PONTÍFICIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Sistemas de Informação-Introdução a Computação GRIDS E CLUSTERS COMPUTACIONAIS Cristian Alberto dos Santos Davidson David da Silva José Roberto Ferreira Lucas Marçal Moreira Marcelo Gomes Silva Mary Ellen Dorneles Evangelista Belo Horizonte 2007 II SUMÁRIO 1. INTRODUÇÃO.....................................................................................................................3 2. CLUSTERS COMPUTACIONAIS.....................................................................................4 2.1 Ferramentas de instalação, configuração e manutenção.................................................5 2.2 Ferramentas de monitoração............................................................................................ 6 2.3 Ferramentas de escalonamento........................................................................................ 6 2.3.1 Métodos de escalonamento...............................................................................................7 2.4 Tipos de Clusters..................................................................................................................8 3. GRIDS COMPUTACIONAIS........................................................................................... 10 3.1 Características dos grids.................................................................................................. 10 3.1.1 Diferenças entre Clusters e Grids.................................................................................. 11 3.1.2 Diferenças entre Grid x Peer To Peer (P2P)................................................................. 11 3.1.3 Diferenças entre internet web e grid.............................................................................. 11 3.2 Benefícios dos Grids.........................................................................................................12 3.3 Ferramentas e padrões.................................................................................................... 13 3.4 Tipos de Grids.................................................................................................................. 13 3.5 Alcance dos grids..............................................................................................................14 3.6 Exemplos de Grids........................................................................................................... 14 4. CONSIDERAÇÕES FINAIS............................................................................................. 15 5. REFERÊNCIAS BIBLIOGRÁFICAS..............................................................................16 3 1. INTRODUÇÃO Devido à necessidade de se processar grandes quantidades de dados, como alternativa mais barata perante os supercomputadores, surgiu na década de 1960 uma forma de interligar vários computadores e compartilhar seus recursos visando obter uma solução comercialmente viável. Começaram então a serem criados estruturas de computação distribuídas, como por exemplo grids e clusters. O cluster é um sistema que compreende dois ou mais computadores ou sistemas trabalhando em conjunto para executar aplicações ou tarefas cujas máquinas não teriam capacidade para realizá-las individualmente. A idéia inicial sobre clusters foi desenvolvida pela IBM, nesta época o sistema HASP (Houston Automatic Spoling Priority) e seu sucessor, JES (Job Entry System) proviam uma maneira de distribuir tarefas nos mainframes interligados. Porém esta novidade (clusters) perdeu força na década de 80 com o surgimento de microcomputadores de alta performance, redes de alta velocidade e ferramentas padronizadas para computação distribuídas. Nos anos 90, uma nova arquitetura de computação distribuída foi proposta, vários modelos foram especificados, dentre eles a tecnologia em grade (grid computing), em comparação às redes elétricas. Foi apresentado ao usuário como um computador virtual, ocultando toda infra-estrutura distribuída, assim como a energia que chega na tomada elétrica. Seu objetivo era casar tecnologias heterogêneas, onde se pudesse compartilhar processamento, espaço de armazenamento, dados, aplicações, etc. A computação em grade vem ganhando destaque nos últimos anos, com empresas investindo nos grids para seus ambientes corporativos. A principal diferença entre um cluster e um grid é que um cluster possui um controlador central, um único ponto de onde é possível utilizar todo o poder de processamento do cluster. Os demais nós são apenas escravos que servem a este nó central. Os clusters são mais usados em atividades de pesquisa, resolvendo problemas complicados e na renderização de gráficos 3D. Os grids por sua vez são uma arquitetura mais "democrática" onde embora possa existir algum tipo de controle central, temos um ambiente fundamentalmente cooperativo, onde empresas, universidades ou mesmo grupos de usuários compartilham os ciclos ociosos de processamento em seus sistemas em troca de poder utilizar parte do tempo de processamento do grid. 4 2. CLUSTERS COMPUTACIONAIS Cluster é uma palavra da língua inglesa que significa: “número de coisas da mesma espécie, crescendo ou se aproximando a um grupo”, cluster computacional é compreendido como uma arquitetura redundante de equipamentos, que permite uma espécie de espelhamento de funções equivalentes e que são operadas simultaneamente para conterem os mesmos dados em replicação, de tal forma interligados, para que caso haja falha de parte ou de um dos equipamentos agrupados, o outro assume todos os serviços automaticamente, sem interrupção. Um cluster é um conjunto de computadores independentes conectados por rede que formam um sistema único através do uso de software. Em geral clusters são classificados segundo alguns critérios. Um cluster é dito homogêneo quanto todos os nós da máquina possuem a mesma configuração; caso contrário eles são conhecidos como heterogêneos. Já o número de processadores existentes por máquina permite a classificação entre mono (um processador) ou multiprocessados (vários processadores). Uma terceira classificação leva em conta o modo de configuração do cluster. Neste caso, um cluster pode ser formado através de um determinado número de computadores ou até de constelações (cluster de clusters). Para que exista, um cluster é preciso de pelo menos dois computadores. Evidentemente quanto mais computadores existir, maiores serão os custos de implementação e manutenção. Mas ainda assim, os custos costumam ser menores do que a aquisição/manutenção de computadores poderosos. Cada computador de cluster é denominado um nó ou nodo. Todos devem ser interconectados de maneira a formarem uma rede. Essa rede precisa ser criada de uma forma que permita o acréscimo e a retirada de um nó (em caso de danos, por exemplo), mas sem interromper o funcionamento do cluster. O sistema operacional usado nos computadores deve ser de um mesmo tipo. Isso porque existem particularidades em cada sistema operacional que poderiam impedir o funcionamento do cluster. Independente do sistema operacional usado, é preciso usar um software que permita a montagem do cluster em si. Esse software vai ser responsável, entre outras coisas, pela distribuição do processamento. Esse é um ponto crucial na montagem de cluster. É preciso que o software trabalhe de forma que erros e defeitos sejam detectados, oferecendo meios de providenciar reparos, mas sem interromper as atividades do cluster. Os clusters podem ser usados para uma infinidade de aplicações, basicamente para 5 qualquer uma que exija processamento pesado. Como exemplo de aplicações, temos previsão metereológica, simulações geotérmicas, renderização de efeitos especiais, simulações financeiras, distribuição de carga, biotecnologia, petroquímica, mineração de dados, processamento de imagens e servidores de música e jogos para a Internet. Basicamente, qualquer tipo de aplicação crítica, ou seja, aplicações que não podem parar de funcionar ou não podem perder dados (como sistemas de bancos, por exemplo), podem usar as tecnologias de cluster, desde que devidamente configurados para não serem sujeitos a falhas graves. Assim, o cluster deve contar com nobreaks ou geradores que garantam o funcionamento do sistema mesmo nos casos de queda de energia, alem de meios de manutenção e detecção de falhas. O uso de clusters tem sido uma das alternativas adotadas para o desenvolvimento de sistemas computacionais paralelos. No entanto, a configuração e manutenção deste tipo de arquitetura envolvem diversos fatores sendo simplificada pela existência de ferramentas específicas para cada problema, desde a instalação do sistema operacional, até a definição de ferramentas para a configuração, manutenção, monitoramento e escalonamento de tarefas. 2.1 Ferramentas de instalação, configuração e manutenção • Kickstart: é um sistema desenvolvido para RedHat Linux que permite colocar todas as seleções que o usuário faria na instalação manual, como seleção da linguagem, partições, pacotes a serem instalados, etc, em um arquivo de configuração. • FAI (Fully Automatic Installation): é um conjunto de scripts e arquivos de configuração para instalação automatizada de sistema Debian Linux . • Replicator: outro recurso desenvolvido exclusivamente para sistemas Debian Linux, funcionando como um duplicador de instalação. • ALICE: é um sistema para SuSE Linux que permite instalar e configurar várias máquinas automaticamente com o mínimo possível de interação humana. Baseado em interfaces como syslinuxrc, YaST e suseconfig, além de instalar os sistema operacional, ALICE também pode criar grupos e usuários, ativar serviços, etc. • OSCAR (Open Source Cluster Application Resources): É um ambiente para a instalação, configuração e gerenciamento de clusters. Apresenta de forma integrada os recursos mais utilizados em cluster, disponibilizando a configuração automática de componentes, bem como a instalação eficiente do ambiente básico como sistema operacional e ferramentas de administração e operação. 6 2.2 Ferramentas de monitoração A monitoração é um processo que consiste em apresentar a utilização dos recursos de um cluster através da análise de dados recolhidos continuamente do sistema. Desta forma é possível obter informações sobre a existência de máquinas ociosas ou com problemas, utilização da rede, capacidade de processamento do processador e quantidade de memória utilizada, permitindo assim a tomada de decisões. Atualmente existem diversas ferramentas que permitem verificar o estado de um ambiente de maneira simples e intuitiva: • Ganglia: é uma ferramenta de monitoração para clusters e grids desenvolvida de forma distribuída e escalável. Um módulo centralizador coleta e atualiza as informações, enquanto que cada nó mantém uma cópia do estado corrente do sistema. Os dados coletados podem ser visualizados graficamente através de uma interface Web. Com Ganglia é possível monitorar qualquer tipo de informação, uma vez que o usuário pode definir métricas específicas através de outra aplicação, além daquelas já coletadas pelo próprio sistema. • Parmon: é uma ferramenta comercial que possui uma arquitetura centralizada, sendo dividida em duas partes: servidor, responsável por monitorar o nó, e cliente, onde é feita a centralização de todos os dados monitorados e a visualização gráfica e on-line ou textual das informações. Parmon permite adquirir informações dos recursos do sistema de vários nós, acompanhar processos e logs do sistema, além de definir eventos de alerta (trigger) ao administrador do cluster. Também é possível monitorar CPU, memória, rede e disco e executar alguns comandos paralelos. • SCMS: tem como objetivo monitorar de forma simples, eficiente e robusta clusters de pequeno e médio porte através de uma arquitetura centralizada organizada num módulo de monitoração e num módulo de centralização, o qual armazena os dados monitorados e atende as requisições dos clientes. A ferramenta permite monitorar o uso de CPU, memória, rede e disco, além de fornecer informações úteis sobre a configuração dos nós do cluster. • RVision: foi desenvolvida com o objetivo de ser adaptável a diferentes clusters, tendo uma arquitetura aberta e configurável. Possui uma interface para a comunicação de clientes com o núcleo da ferramenta. A arquitetura é centralizada 2.3 Ferramentas de escalonamento A escalabilidade é um fator diferencial dos ambientes de cluster, pois a configuração 7 pode crescer à medida que mais recursos estiverem disponíveis. Com o escalonamento de recursos o processamento efetua-se de forma eficiente, minimizando o tempo de execução das tarefas e maximizando a utilização de recursos computacionais disponíveis. 2.3.1 Métodos de escalonamento − Local: refere-se ao problema de atribuição de fatias de tempo de um processador aos processos, é normalmente realizado pelo sistema operacional. − Global: define onde executar um processo, portanto mais aplicáveis aos sistemas distribuídos, divide se em: • Escalonamento estático: neste caso a atribuição de processos aos processadores é realizada antes do início da execução do programa. Desta forma é necessário que se tenha informações dos tempos de execução dos processos e dos elementos de processamento disponíveis em tempo de compilação. • Escalonamento dinâmico: é realizada a redistribuição de processos aos processadores durante a execução dos programas, segundo algum critério. Devido à dificuldade em se estimar o tempo de execução de um processo e a natureza dinâmica dos recursos computacionais, os métodos dinâmicos realizam a redistribuição de processos entre os elementos de processamento, tirando trabalho dos processadores que tenham ficado mais carregados e transferindo para aqueles processadores menos carregados. As ferramentas de escalonamento mais conhecidas são: • CCS (Computing Center Software): desenvolvido pelo Centro de Computação Paralela de Paderborn (Alemanha), o objetivo de CCS é gerenciar sistemas MPP (Computação Massivamente Paralela) e clusters num sistema de planejamento. • PBS (Portable Batch System): Desenvolvido inicialmente pela NASA e posteriormente apresentado em uma versão comercial, PBS apresenta suporte a tarefas tanto de um único sistema como de múltiplos sistemas. • Condor: é uma ferramenta que pode ser usada para gerenciar clusters e múltiplos clusters. As tarefas são armazenadas em uma lista de espera. Algumas das características de Condor são a submissão distribuída de tarefas, prioridades para usuários e tarefas, suporte a múltiplos modelos de tarefas, checkpointing e migração, suspensão de tarefa e posterior continuação, autenticação e autorização, entre outros. • Maui: é um escalonador de tarefas configurável e otimizado, capaz de suportar diferentes técnicas de escalonamento, prioridades dinâmicas, reserva de recursos e compartilhamento justo. Implementado em Java. • Crono: possui como objetivo principal o gerenciamento de clusters pequenos e 8 médios num sistema de planejamento, uma vez que a utilização do cluster ocorre por meio de de agendamentos. Ele foi desenvolvido pela PUC-RS, disponibilizando serviços necessários para compartilhar um cluster entre vários usuários. 2.4 Tipos de Clusters Cluster Beowulf - Foi fundamentado em 1994, pela NASA, com a finalidade de processar as informações espaciais que a entidade recolhia. Desde então, grandes empresas (como HP e IBM) e universidades (como a brasileira Unesp) vêm construindo clusters deste tipo e com cada vez mais nós. O que o distingue dos outros tipos são as seguintes características: − As conexões dos nós podem ser feitas por redes do tipo ethernet; − Existe um servidor responsável por controlar todo o cluster; − O sistema operacional é baseado no Linux; − Pode se usar computadores comuns, inclusive modelos considerados obsoletos. De maneira generalizada, o cluster Beowulf, permite a construção de sistemas de processamento que podem alcançar altos valores de gigaflops (um gigaflop equivale a um bilhão de instruções de ponto flutuante executada por segundo). Isso tudo com o uso de computadores comuns e um sistema operacional com código fonte livre. Cluster para alta disponibilidade: a alta disponibilidade refere-se a sistemas que praticamente não param de funcionar. Usados em aplicação de missão crítica, eles costumam ter meios eficientes de proteção e detecção de falhas. Cluster para balanceamento de carga: é muito usado na internet, em servidores de e-mail, comercio eletrônico e sistemas de lojas, neste tipo de cluster, é necessário que haja monitoração constante da comunicação e mecanismos de redundância. Caso contrario qualquer falha pode interromper seu funcionamento. Cluster combo: este tipo reúne características de balanceamento de carga e alta disponibilidade. Cluster MOSIX: Multicomputer Operating System for Unix, é um conjunto de ferramentas de clusters para Linux, voltado ao tipo balanceamento de carga. Uma de suas principais características é a não necessidade de aplicações de recursos de software voltados ao cluster, como acontece com o Beowulf. O MOSIX é eficiente na tarefa de distribuição dinâmica de processamento entre os computadores do cluster. 9 3. GRIDS COMPUTACIONAIS O Grid Computing teve origem no início da década de 90 para atender a uma demanda específica da área científica. Ian Foster, do Laboratório Nacional Argonne, apresentou a proposta de uma associação entre laboratórios mundiais com a finalidade de compartilhar parte de sua capacidade computacional ociosa e o conhecimento de seus pesquisadores por meio de uma rede de computadores permeável e interconectável entre si, independentes e amplamente dispersos como plataforma de execução de aplicações paralelas. A partir da instituição não governamental Globus.org, que estruturou o modelo de Grid Computing proposto por Foster, é que o conceito se tornou popular. Houve então a disseminação do conceito entre as instituições científicas, porém, com a evolução das pesquisas e tecnologias utilizadas pela indústria para computação distribuída, houve naturalmente uma convergência entre o mundo acadêmico e empresarial. Assim, a idéia é prover uma infra-estrutura que viabilize serviços sob demanda, permitindo uma maior colaboração entre varias instituições, através do compartilhamento de seus serviços e recursos, e utilizando mecanismos que facilitem a interoperabilidade. 3.1 Características dos grids • Recursos coordenados que não se sujeitam a um controle centralizado - sistemas em Grid podem englobar recursos entre os mais variados tipos, desde o desktop de um usuário até um supercomputador. Pode haver um controle local em uma empresa, mas não existe um controle central para todo o grid; • Utilizar padrões abertos, interfaces e protocolos de propósito geral - é essencial para que os sistemas em Grid possam realizar funções fundamentais como autenticação, autorização, descobrimento de recursos e acesso a eles, sem perder a capacidade de escalar e interagir com diferentes plataformas de hardware e software; • Prover o mínimo em qualidade de serviços (como segurança, tempo de resposta e disponibilidade); O Grid computacional para efeito didático pode ser compreendido em três categorias: A primeira é quando um número indeterminado de computadores é usado para processar uma única função (TASK). Uma segunda categoria de uso de Grid, é o processamento de uma TASK ou um conjunto de funções (tasks) que requerem um grande volume de processamento de instruções 10 ou de dados e informações em um universo finito de computadores. Essa segunda categoria tem como princípio o mesmo da anterior, pois processa uma task específica, porém em um universo de computadores confinados e que tenham permissão para aceso a um banco de dados específico. A terceira categoria, a mais aderente à engenharia de sistemas, é constituída por uma arquitetura de Grid em conformidade com as necessidades características de um sistema aplicativo qualquer. O exemplo mais contundente é o Grid utilizado para a pesquisa na internet provisionada pelo Google. 3.1.1. Diferenças entre Clusters e Grids • os clusters são fisicamente centralizados, isto é, os membros (nós) de um cluster encontram-se dispersos sobre uma mesma área física (um prédio, sala, datacenter, etc); • os recursos (poder de processamento, memória, etc) de um cluster são administrados pela organização responsável pelo cluster. Em um Grid, a administração deste recurso cabe a cada um dos responsáveis pelos nós do Grid; • os grids, devido a sua estrutura descentralizada, têm uma disposição de recursos computacionais muito mais heterogênea do que um cluster. Ou seja, a variação do poder de processamento, memória, disco, etc dos membros de um grid é muito maior do que aquela encontrada nos membros de um cluster; •os membros (nós) de um grid não precisam estar permanentemente inter-conectados. • clusters tendem a serem utilizados para solução de problemas lineares, ao passo que Grids devem ser utilizados para sistemas capazes de serem processados em paralelo; • é possível criar grids utilizando clusters como membros, entretanto o contrário não é possível. 3.1.2. Diferenças entre Grid x Peer To Peer (P2P) Tanto sistemas peer to peer quanto sistemas em Grid compartilham de um conjunto de problemas em comum, porém, peer to peer diz respeito à infra-estrutura e design de uma rede, à infra-estrutura de acesso, compartilhamento e busca de informações, ao passo que Grid diz respeito ao acesso e compartilhamento de recursos computacionais. 3.1.3. Diferenças entre internet web e grid A internet é um ambiente estabelecido a três décadas cuja função principal era a interconexão de ambientes computacionais distintos e geograficamente localizados. A internet começou a ser utilizada de forma intensa após o desenvolvimento da abordagem web, após o grande público descobrir a Internet através dos serviços web vinte anos atrás como o esforço da indústria da informática para o desenvolvimento de aplicações prontas sem o 11 questionamento de interoperabilidade no sentido do usuário-site. O grid surgiu a dez anos impulsionado por vários participantes do desenvolvimento da Internet, e a interoperabilidade de aplicações localizadas em sistemas de organizações virtuais distribuídas geograficamente. 3.2 Benefícios dos Grids • Explorar recursos subutilizados e recursos adicionais - recursos que podem ser utilizados: ciclos de CPU, espaço em disco, conexões de rede, equipamentos científicos; • Capacidade de processamento paralelo - uma aplicação escrita utilizando-se de algoritmos e técnicas de programação paralela pode ser dividida em partes menores e estes podem ser separados e processados independentemente. Cada uma destas partes de código podem ser executadas em uma máquina distinta no Grid, melhorando a performance; • Dispositivos e organizações virtuais - recursos e máquinas podem ser agrupados e trabalharem juntos formando o que pode ser chamado de uma Organização Virtual; • Confiabilidade - utilizando-se uma abordagem baseada em Grids, com máquinas espalhadas em diversos lugares diferentes, quando uma falha atinge uma parte do Grid as demais podem continuar sua operação normalmente; • 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; • 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; • 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; • 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; • Melhor utilização de largura de banda - pode criar a mais robusta e resistente infraestrutura de IT, com melhor capacidade de responder a desastres; 12 • Aproveitamento de recursos ociosos – pode aproveitar os ciclos de processamento idle disponíveis dos PCs de mesa que encontram-se em várias localizações em múltiplas faixas de tempo (time zones). Por exemplo, os computadores que se encontram tipicamente em idle durante a noite de uma empresa em Tókio podem ser utilizados durante o dia para operações na América do Sul. 3.3 Ferramentas e padrões A utilização de padrões é um requisito para os Grids. Os padrões estão sendo desenvolvidos pelo Global Grid Forum, uma entidade que possui centenas de membros, representando mais de 400 organizações e empresas em mais de 50 países: ● Open Grid Services Architecture (OGSA): define o que são os serviços e toda a estrutura que pode ser provida em um ambiente grid. ● Open Grid Services Infrastructure (OGSI): é a especificação concreta da infraestrutura da OGSA. Baseado nas tecnologias de Grids e Web Services, é o middleware para os chamados serviços do Grid, definindo como construir, gerenciar e expandir um serviço. ● Globus Toolkit: implementação das especificações OGSA/OGSI. Usando os Commodity Grid Toolkits é possível trabalhar em outras linguagens como Python, Perl, etc. ● IBM Grid Toolbox: versão comercial do Globus. C e Java ● Ourgrid: projeto desenvolvido pela Universidade Federal de Campina Grande. Java ● Ferramentas comerciais: Platform LSF, Avaki Grid Server, 3.4 Tipos de Grids Grids computacionais - Ciclos de processamento são os recursos compartilhados neste tipo. Existem três formas de explorar os recursos computacionais em um grid: • executar uma aplicação em qualquer máquina disponível do grid, independentemente de onde esteja localizada; • quebrar o aplicativo em partes menores para que estas possam ser executadas paralelamente através do grid; • executar uma tarefa que precisa rodar várias vezes em diferentes máquinas do grid. 13 Grids de dados - O espaço de armazenamento disponível em cada máquina é compartilhado pelo grid. Desta forma aumenta a capacidade de armazenamento como um todo, além de aumentar a performance, compartilhamento e confiabilidade dos dados. Utilizando todo o espaço como se fosse um sistema de arquivos só para todo o grid facilita a localização de determinado arquivo, sendo que este pode estar dividido em partes menores e espalhado pelas máquinas participantes. Sistemas de gerenciamento podem duplicar dados sensíveis em várias máquinas provendo uma redundância. Grids de rede - Este tipo de grid tem como principal funcionalidade prover serviços de comunicação tolerantes a falhas e com alta performance. Máquinas com conexões ociosas podem ser utilizadas para enviar porções de dados ou prover redundância nas transmissões. 3.5 Alcance dos grids Cluster Grid - Grid mais simples, utilizando o máximo dos recursos de um departamento e alocados por prioridades; Enterprise Grid - os recursos são partilhados na empresa ou Universidade, computação a pedido definida por regras e acesso a múltiplos grupos; Global Grid - os recursos são distribuídos pela Internet, e globalmente. 3.6 Exemplos de Grids ● ChinaGrid (interligação de universidades e governo); ● Molecular Modeling Laboratory – UNC (desenvolvimento de drogas); ● DEISA (interligação de laboratórios científicos); ● AccessGrid (video conferência e e-learning); ● TeraGrid (interligação de universidades); ● Seti@home: Search for Extra-Terrestrial Intelligence (Busca por Inteligência Extra-Terrestre); ● Climaprection.net: visa melhorar a previsão do clima à longo prazo; ● LHC@home: utilizado para melhorar o acelerador de partículas LHC (Large Hadron* Collider – Grande Colisor de Hadrons). Obs.: Hadron é uma partícula sub-atômica de grande força nuclear. ● Predictor@home: utilizado para prever a estrutura de uma proteína a partir de uma seqüência protéica. 14 4. CONSIDERAÇÕES FINAIS As tecnologias de Clustering possibilitam a solução de diversos problemas que envolvem grande volume de processamento. As aplicações que um cluster pode ter são diversas, indo desde a simples melhora no desempenho de um determinado sistema ou a hospedagem de um site, até o processo de pesquisas científicas complexas. Todo o processamento pode ser feito de maneira que pareça ser um único computador dotado de alta capacidade. Assim, é possível que determinadas aplicações sejam implementadas em cluster, mas sem interferir no funcionamento de outras aplicações que estejam relacionadas. A computação em Grid é uma área recente e extremamente dinâmica. Grande parte do interesse em Computação em Grid advém do potencial de atingir níveis de paralelismo inimagináveis em outras plataformas de execução de aplicações paralelas. Tais níveis de paralelismo podem se traduzir em tanto mais performance para aplicações existentes, quanto também a possibilidade de executar aplicações inteiramente novas, com gigantescos requisitos de computação e armazenamento. Mas, além de tão grande avanço técnico para a área de Processamento de Alto Desempenho (PAD), Computação em Grid é também muito interessante no que diz respeito à convergência entre tecnologias de PAD e computação empresarial. A Computação em Grid ainda está em sua infância, há diversas questões em aberto na área. É urgentemente necessário a criação de modelos de programação que melhor exponham a natureza do Grid ao programador, e em melhores formas de lidar com grandes massas de dados no Grid. Grids são mais complexos e dinâmicos que outras plataformas para execução de aplicações paralelas. Para garantir performance é necessário conceber abstrações úteis, que permitam o programador codificar estratégias de adaptação à complexidade do Grid. Finalizando, os benefícios dos clusters e grids vão além de uma simples plataforma para execução de aplicações locais ou em larga escala. A idéia é facilitar a colaboração de grupos de pesquisa distribuídos. 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 definir suas próprias seguranças; ● Recursos requisitados podem estar em diferentes localidades. 15 5. REFERÊNCIAS BIBLIOGRÁFICAS 1. ALECRIM, Emersom. Clusters: principais conceitos. Disponível em: <www. infowester. com>. Acesso em: 05 maio 2007. 2. CHEDE, Cezar Taurion. Grid computing : um novo paradigma computacional. Rio de Janeiro: Brasport, 2004 146p. ISBN 8574521930. Acesso em 05 maio 2007. 3. DANTAS, Mario. Computação distribuída de alto desempenho: redes clusters e grids computacionais. Rio de Janeiro: Axel Books do Brasil, 2005. 278 p. 4. DAVID, Mário. "grid”: Um novo paradigma de computação. Universidade AutónomaLisboa. Lisboa/Portugal. 2005. Acesso em 05 maio 2007. 5. GROPP, William. Beowulf cluster computing with linux. 2nd ed. Cambridge, MA: MIT Press, 2003 618p. ISBN 0262692929. 6. MCT apóia iniciativas de governo eletrônico, Computação Brasil, Sociedade Brasileira de Computação, home page: www.sbc.org.br. Acesso em 05 maio 2007. 7. MELLO, Rodrigo; SENGER, Luciano José; YANG, Laurence Tianruo. Performance evaluation of route: a load balancing algorithm for grid computing. Revista de Informática Teórica e Aplicada, Porto Alegre, v.13, n.1, p.87-108, jun. 2006. Acesso em 05 maio 2007. 8. M. Pasin and D. L. Kreutz. Arquitetura e administração de aglomerados. In Terceira Escola Regional de Alto Desempenho, Santa Maria, 2003. Sociedade Brasileira de Computação - UNISINOS / UFSM / UNILASSALE. 9. NEVES, Marcelo V. CHARÃO, Andrea S.. Laboratório de Sistemas de Computação Curso de Ciência da Computação, UFSM {veiga,andrea}@inf.ufsm.br (artigo). 10. SCHEPKE, Claudio, DIVERIO, Tiarajú A. Programa de Pós-Graduação em Computação Instituto de Informática, UFRGS {cschepke,diverio}@inf.ufrgs.br (artigo). 11. SCHEPKE, Claudio et al. Panorama de ferramentas para gerenciamento de clusters. Disponível em <www. googleacademico.com>. Acesso em 05 maio 2007.