MINISTÉRIO DA DEFESA EXÉRCITO BRASILEIRO DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA INSTITUTO MILITAR DE ENGENHARIA CURSO DE MESTRADO EM SISTEMAS E COMPUTAÇÃO THAIS CABRAL DE MELLO AMBIENTE PARA CRIAÇÃO DE CLUSTERS VIRTUAIS EM GRIDS COMPUTACIONAIS Rio de Janeiro 2010
INSTITUTO MILITAR DE ENGENHARIA THAIS CABRAL DE MELLO AMBIENTE PARA CRIAÇÃO DE CLUSTERS VIRTUAIS EM GRIDS COMPUTACIONAIS Dissertação de Mestrado apresentada ao Curso de Mestrado em Sistemas e Computação do Instituto Militar de Engenharia, como requisito parcial para obtenção do título de Mestre em Sistemas e Computação. Orientadores: Prof. Bruno Richard Schulze - D.Sc. Prof a Raquel Coelho Gomes Pinto - D.Sc. Rio de Janeiro 2010
c2010 INSTITUTO MILITAR DE ENGENHARIA Praça General Tibúrcio, 80-Praia Vermelha Rio de Janeiro-RJ CEP 22290-270 Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderá incluílo em base de dados, armazenar em computador, microfilmar ou adotar qualquer forma de arquivamento. É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecas deste trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venha a ser fixado, para pesquisa acadêmica, comentários e citações, desde que sem finalidade comercial e que seja feita a referência bibliográfica completa. Os conceitos expressos neste trabalho são de responsabilidade do autor e do orientador. M527 Mello, Thais Cabral Ambiente para Criação de Clusters Virtuais em Grids Computacionais/ Thais Cabral de Mello. Rio de Janeiro: Instituto Militar de Engenharia, 2010. 97 p.: il., tab. Dissertação (mestrado) Instituto Militar de Engenharia Rio de Janeiro, 2010. 1. Transmissão da Informação - Tecnologias. 2. Sistemas de Computação. 3. Tratamento da Informação I. Título. II. Instituto Militar de Engenharia. CDD 005 2
INSTITUTO MILITAR DE ENGENHARIA THAIS CABRAL DE MELLO AMBIENTE PARA CRIAÇÃO DE CLUSTERS VIRTUAIS EM GRIDS COMPUTACIONAIS Dissertação de Mestrado apresentada ao Curso de Mestrado em Sistemas e Computação do Instituto Militar de Engenharia, como requisito parcial para obtenção do título de Mestre em Sistemas e Computação. Orientadores: Prof. Bruno Richard Schulze - D.Sc. Prof a Raquel Coelho Gomes Pinto - D.Sc. Aprovada em 05 de agosto de 2010 pela seguinte Banca Examinadora: Prof a Raquel Coelho Gomes Pinto - D.Sc. do IME - Presidente Prof. Bruno Richard Schulze - D.Sc. do LNCC Cap. Anderson Fernandes Pereira dos Santos - D.Sc. do IME Prof. Antonio Roberto Mury - D.Sc. do LNCC Prof. Fábio André Machado Porto - D.Sc. do LNCC Rio de Janeiro 2010 3
Dedico essa dissertação ao meu marido por todo o seu amor, apoio e paciência. 4
AGRADECIMENTOS Primeiramente agradeço a Deus pela minha vida e por guiar todos os passos da minha caminhada. A minha família, em especial ao meu marido, por todo o seu amor, compreensão, apoio e constante incentivo. Agradeço aos Srs. professores do Instituto Militar de Engenharia pelos ensinamentos a mim passados, em especial a professora Raquel Coelho que, juntamente com o professor Bruno R. Schulze, orientaram-me para que este projeto pudesse ser realizado e concluído. Ao Professor Ronaldo Salles também sou imensamente grata, não somente pelos ensinamentos, mas também pelos incentivos recebidos ao longo do curso. Gostaria de agradecer a todos os envolvidos no laboratório de Computação Científica Distribuída - ComCiDis - LNCC, especialmente aos amigos Fabio Licht, Matheus Bandini e Victor Oliveira. Gostaria de reforçar a importância que os amigos Douglas Ericson e Henrique Kloh tiveram nesta caminhada. Agradeço em especial ao professor Antonio R. Mury por sua amizade, seus conselhos, seus ensinamentos e por sua dedicação na elaboração deste trabalho. Aos amigos Laion, Felipe e Guilherme agradeço o empenho e trabalho fundamentais para a realização desta dissertação. Thais Cabral de Mello 5
SUMÁRIO LISTA DE ILUSTRAÇÕES................................................ 8 LISTA DE ABREVIATURAS.............................................. 10 1 INTRODUÇÃO.................................................. 14 1.1 Objetivos.......................................................... 16 1.2 Organização da Dissertação........................................... 17 2 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDA................ 18 2.1 Características de Sistemas de Computação Distribuída.................. 18 2.2 Clusters Computacionais............................................. 19 2.3 Grades Computacionais.............................................. 20 2.4 Cloud Computing................................................... 22 3 VIRTUALIZAÇÃO.............................................. 25 3.1 Técnicas de Virtualização............................................ 29 3.2 Softwares de Virtualização............................................ 31 3.2.1 VMware........................................................... 32 3.2.1.1Xen............................................................... 32 3.2.1.2KVM............................................................. 32 3.2.1.3OpenVZ........................................................... 32 3.2.1.4Microsoft Hyper-V.................................................. 33 3.2.1.5VirtualBox......................................................... 33 3.3 Virtualização dos Sistemas Distribuídos................................ 35 4 REVISÃO DA LITERATURA................................... 38 4.1 A contribuição da Virtualização para Grades e Clouds................... 38 4.2 O Uso de Recursos Virtualizados em Apoio a Computação de Alto Desempenho 40 4.3 Possibilidade e Uso de Clusters Virtualizados........................... 41 5 DESCRIÇÃO DA SOLUÇÃO PROPOSTA....................... 50 5.1 Ferramentas Utilizadas............................................... 50 5.1.1 PelicanHPC........................................................ 50 6
5.1.2 Grails............................................................. 51 5.1.2.1MySQL............................................................ 52 5.1.3 VirtualBox......................................................... 52 5.2 Criação do Cluster Virtual........................................... 53 5.3 Interface Web....................................................... 56 6 RESULTADOS OBTIDOS....................................... 60 6.1 Objetivos.......................................................... 60 6.2 Descrição dos Experimentos.......................................... 61 6.3 Experimentos Realizados............................................. 61 6.4 Análise dos Resultados............................................... 63 7 CONSIDERAÇÕES FINAIS..................................... 74 7.1 Contribuições....................................................... 77 7.2 Trabalhos Futuros................................................... 77 8 APÊNDICE A................................................... 79 8.1 Requisitos do Sistema................................................ 79 8.2 Interface Web....................................................... 80 9 REFERÊNCIAS BIBLIOGRÁFICAS........................... 93 7
LISTA DE ILUSTRAÇÕES FIG.2.1 Hierarquia de um cluster......................................... 20 FIG.3.1 Exemplo de Virtualização de Plataformas.......................... 26 FIG.3.2 Exemplo de Para-Virtualização................................... 30 FIG.3.3 Exemplo de Virtualização Total................................... 31 FIG.3.4 Quadro Comparativo dos Softwares de Virtualização................. 34 FIG.4.1 Comparação dos Trabalhos....................................... 48 FIG.5.1 Camadas do Ambiente de Cluster Virtual.......................... 57 FIG.6.1 Desempenho da capacidade de processamento entre o cluster real e o cluster virtual................................................ 63 FIG.6.2 Desempenho carga de comunicação do cluster real com o cluster virtual........................................................ 64 FIG.6.3 Desempenho de distribuições Linux - capacidade de processamento..... 65 FIG.6.4 Desempenho de diferentes distribuições Linux - processamento........ 66 FIG.6.5 Desempenho de diferentes distribuições Linux - carga de comunicação....................................................... 66 FIG.6.6 Desempenho com concorrência de clusters.......................... 67 FIG.6.7 Desempenho entre 1MV com 4 núcleos e 4MV com 1 núcleo cada...... 68 FIG.6.8 Desempenho entre 4MV na mesma servidora e 4MV em servidoras diferentes..................................................... 69 FIG.6.9 Gerência da VMM.............................................. 70 FIG.6.10 Gerência da VMM.............................................. 70 FIG.6.11 Gerência da VMM.............................................. 71 FIG.8.1 Tela de Login - Registro.......................................... 80 FIG.8.2 Formulário de Cadastro.......................................... 80 FIG.8.3 Opções de Menu................................................ 81 FIG.8.4 Menu Configurações de Clusters - modelos de clusters................ 82 FIG.8.5 Menu Configurações de Clusters - clusters.......................... 82 FIG.8.6 Novo Template de Cluster........................................ 83 FIG.8.7 Criação do Template de Cluster................................... 84 8
FIG.8.8 Menu Gerador de Cluster........................................ 84 FIG.8.9 Lista de Clusters do Usuário...................................... 85 FIG.8.10 Geração do Cluster.............................................. 85 FIG.8.11 Cluster sendo Gerado............................................ 86 FIG.8.12 Usuário inicializando o Cluster.................................... 86 FIG.8.13 Opções de Controle do Cluster - watch, pause e desligar.............. 87 FIG.8.14 Visualização das Máquinas Virtuais Criadas........................ 87 FIG.8.15 Informações de IP e Porta........................................ 88 FIG.8.16 Usuário Acessando Via RDesktop o Nó Mestre...................... 89 FIG.8.17 Listando os Nós do Cluster....................................... 90 FIG.8.18 Comando Ping.................................................. 91 FIG.8.19 Usuário Desligando o Cluster..................................... 91 FIG.8.20 Cluster com Diferentes Quantidades de Nós......................... 92 9
LISTA DE ABREVIATURAS ABREVIATURAS CPU - Central Processing Unit DHCP - Dynamic Host Configuration Protocol DMA - Direct memory access EC2 - Amazon Elastic Compute Cloud GPL - General Public License GRAM - Globus Resource Allocation Manager GT - Globus Toolkit HPC - High Performance Computing HTC - High Troughtput Computing HW - Hardware IP - Internet Protocol JVM - Java Virtual Machine MPI - Message Passing Interface MAC - Media Access Control MH - Máquina Hospedeira MV - Máquina Virtual NAT - Network Address Translation NFS - Network File System OGSA - Open Grid Services Architecture OV - Organização Virtual OVF - Open Virtualization Format PAD - Processamento de Alto Desempenho PUEL - Personal Use and Evoluation License PXE - Preboot Execution Environment QOS - Quality of Service RDP - Remote Desktop Protocol SLA - Service Level Agreement SO - Sistema Operacional SW - Software 10
USB - Universal Serial Bus VCG - Virtual Community Grid VDI - Virtual Disk Image VLAN - Virtual Local Area Network VMM - Virtual Machine Monitor VW - Virtual Workspace VO - Virtual Organization XML - Extensible Markup Language 11
RESUMO O desenvolvimento científico e tecnológico observa uma crescente necessidade e dependência de recursos computacionais de alto desempenho e capacidade de armazenamento. Buscando suprir essa demanda, surgiram novas tecnologias tanto em termos de capacidade de processamento, quanto em capacidade de redes de comunicação, o que possibilitou um avanço no uso mais efetivo e compartilhado dos recursos computacionais, principalmente pelo desenvolvimento de processadores dedicados à virtualização. Por conseguinte, esse avanço da tecnologia de virtualização possibilitou que seus usuários criassem ambientes personalizados, beneficiando, sobremaneira, os usuários da computação de alto desempenho ao permitir a criação de clusters compostos por máquinas virtuais configuradas para atender suas necessidade específicas de software e de hardware. Com base nesse conceito, a presente dissertação disponibiliza uma infra-estrutura que facilita a criação de ambientes de cluster virtual, permitindo, assim, que seus usuários sejam capazes de criar e utilizar um ambiente personalizado, recuperável, escalável e de fácil uso e configuração, seja para fins educativos, de treinamento, seja para testes ou desenvolvimento. Além disso, é realizada uma avaliação de desempenho de clusters virtuais criados através desta infraestrutura com o objetivo de avaliar a viabilidade de seu uso por aplicações HPC (High Performance Computing), ressaltando-se os fatores considerados determinantes para adoção desse tipo de solução. 12
ABSTRACT The scientific and technological development sees a growing need and dependence on high-performance computing resources and storage capacity. Seeking to meet this demand, new technologies both in terms of processing capacity and the capacity of communication networks appeared and enabled a breakthrough in more effective use and sharing of computational resources, especially the development of dedicated processors for virtualization. Consequently, this advancement of virtualization technology has enabled its users to create custom environments, benefiting greatly users of high performance computing by enabling the creation of clusters consisting of virtual machines configured to meet their specific needs in terms of software and hardware. Based on this concept, this paper provides an infrastructure that facilitates the creation of virtual cluster environments, thus allowing the users to be able to create and use an environment which is personalized, recoverable, scalable and easy use and configure, whether it is directed to education, training, testing or development. Furthermore, a performance assessment of virtual clusters created through this infrastructure is made in order to assess the feasibility of its use by HPC (High Performance Computing) applications, emphasizing the factors which are considered crucial to adoption of this kind of solution. 13
1 INTRODUÇÃO O desenvolvimento tecnológico das últimas décadas desencadeou um aumento considerável na capacidade dos computadores. Esse processo permitiu aos desenvolvedores e pesquisadores criarem novas formas de explorar ao máximo toda a capacidade computacional disponível (BANDINI, 2009). Entretanto, torna-se um grande desafio prover um ambiente de hardware e software que ofereça a seus usuários uma abstração sobre os recursos computacionais necessários para execução de simulações. Da mesma forma, prover uma infraestrutura de gerência dos elementos computacionais utilizados e produzidos durante essas simulações também se mostra um processo complexo. Além disso, o avanço científico exige um investimento crescente em equipamentos e infraestrutura para estar em sintonia com as necessidades computacionais. Uma alternativa tecnológica adotada pelos centros de e-science foi o uso de Computação em Grade, que permite a utilização de diversos recursos computacionais heterogêneos e dispersos por várias instituições. Essa característica possibilita que seus usuários compartilhem recursos de forma confiável, consistente e transparente. Contudo, a experiência obtida em diversos projetos concebidos a partir da infraestrutura de Grade mostrou alguns problemas, tais como instalação, configuração e usabilidade complexas, além da necessidade de controles administrativos intensivos, o que dificultou sobremaneira o aumento dessa infraestrutura em termos de uso e espaço. Outra questão desafiadora que as comunidades de Grade enfrentam é o fato de que enquanto uma Grade pode fornecer acesso a vários recursos heterogêneos, os recursos aos quais o acesso é provido muitas vezes não correspondem às necessidades de uma aplicação específica ou serviço, o que pode levar tanto à subutilização dos recursos quanto a frustração dos usuários. Esses problemas podem ser superados ao permitir que usuários de Grade possam criar clusters compostos por máquinas virtuais configuradas para atender as suas necessidades específicas de software e de hardware (FOSTER et al., 2006). A possibilidade da virtualização de plataformas em sistemas distribuídos apresenta-se como um recurso útil, sobretudo por permitir o encapsulamento tanto do sistema operacional (SO), quanto dos middlewares e serviços. Propicia, ainda, o aproveitamento 14
da capacidade de processamento atualmente ociosa em diversos equipamentos, inclusive naqueles que normalmente não poderiam vir a ser utilizados em função de incompatibilidade do sistema operacional da máquina hospedeira. A virtualização abre também a possibilidade do seu uso para treinamento, tanto de administradores, quanto de usuários de Grade. Isso se concretiza pela facilidade de instalação que se obtém, permitindo que o treinamento possa ser realizado através da simulação de um ambiente distribuído mesmo antes deste ser realmente implementado. A tecnologia de virtualização propiciou o aparecimento do conceito de Virtual Workspace, que tem como uma de suas principais características a possibilidade de oferecer ao usuário um ambiente personalizado que atenda às suas necessidades específicas. O Virtual Workspace, então, pode ser compreendido como um ambiente de execução configurável e gerenciável de forma a atender aos requisitos dos clientes, definindo os requisitos de hardware, configuração de software e isolamento de propriedades, dentre outras características (KEAHEY et al., 2005b). Além do conceito de Virtual Workspace, a evolução da tecnologia de virtualização também propiciou o surgimento de um novo paradigma da computação, chamado de Cloud Computing. Tal tecnologia se propõe a ser um sistema de computação distribuída em larga escala, oferecendo um conjunto de recursos virtualizados, dinamicamente escaláveis, gerenciáveis em termos de capacidade de processamento, armazenamento, número de plataformas e serviços (FOSTER et al., 2008). Tem como princípio a oferta de serviços adequados às necessidades do usuário, de maneira a reforçar o conceito de elasticidade sob o ponto de vista da demanda de recursos, cuja alocação e desalocação ocorre em função da necessidade, tornando desnecessária a imobilização de um grande capital para sua aquisição. Utilizando esses dois conceitos, a presente proposta visa desenvolver uma infra-estrutura que facilite a criação de ambientes de cluster virtual. Pretende-se, assim, possibilitar que os usuários sejam capazes de criar e utilizar um ambiente personalizado, recuperável, escalável e de fácil uso e configuração, seja para fins educativos, de treinamento, seja para teste ou desenvolvimento. Para tanto, o usuário apenas precisará configurar as características de máquina, como número de nós, quantidade de memória física, quantidade de núcleo e espaço em disco. Além disso, é realizada uma avaliação de desempenho de clusters virtuais criados através desta infraestrutura com o objetivo de avaliar a viabilidade do seu uso por aplicações HPC (High Performance Computing). 15
1.1 OBJETIVOS O objetivo deste trabalho é criar a infra-estrutura necessária para a implementação de um novo tipo de serviço voltado para área de desenvolvimento e pesquisa, possibilitando, assim, que o usuário crie um ambiente de cluster virtual, seja para fins de treinamento, ensino ou simulação, de forma que ele possa configurar o tipo de plataforma, as características de hardware da máquina e o grupo de clusters virtualizados. Para tanto, propõe-se a criação de uma infra-estrutura em que o usuário seja capaz de criar e configurar de forma simples e eficiente seu ambiente de desenvolvimento, sem que haja a necessidade de interferência por parte do administrador dos recursos disponibilizados para o serviço ou de conhecimentos específicos por parte de quem os utiliza. Abordando-se o conceito de Virtual Workspace, procura-se ampliar a capacidade de uma Grade computacional elevando-se a disponibilidade de seus recursos ao nível de plataforma, ampliando assim a possibilidade de uso por parte de seus usuários. No aspecto do desenvolvimento, pretende-se atender às necessidades específicas de cada usuário, disponibilizando um ambiente customizado no qual ele poderá desenvolver suas aplicações e testar sua viabilidade, analisando e corrigindo possíveis problemas. Além disso, o usuário poderá testar sua aplicação em diversos ambientes sem a preocupação de instalação e configuração de hardware e software, reduzindo, sobremaneira, o tempo gasto nos referidos procedimentos de instalação e configuração (setting up). Em um ambiente de teste, a ferramenta poderá ser aplicada sem a necessidade de se ter equipamentos dedicados ao processamento de alto desempenho e sem a necessidade da aquisição de novos equipamentos para tal finalidade, otimizando a utilização de recursos e reduzindo o custo da aquisição de hardware e software. Além de contribuir para as áreas acima citadas, esse ambiente apresenta também características como: a flexibilidade, ao possibilitar que o usuário configure e seja capaz de utilizar várias estruturas de clusters em um mesmo conjunto de recursos homogêneos ou não; a escalabilidade, na medida em que é possível aumentar ou reduzir o número de nós em função de suas necessidades ou restrições do ambiente; e a portabilidade, ao permitir que o ambiente criado seja armazenado tanto para uso futuro quanto para ser utilizado em outra estrutura disponível, dissociado do espaço físico em que se encontra. Paralelamente, esse trabalho também procurou avaliar o efeito do uso de recursos virtualizados para a criação de clusters, ou seja, qual o impacto do uso da virtualização em 16
um ambiente de computação de alto desempenho - HPC. Com isso, foi realizada ao longo do desenvolvimento deste trabalho uma série de experimentos a fim de determinar quais fatores podem contribuir tanto positivamente como negativamente para o desempenho de um cluster virtual. 1.2 ORGANIZAÇÃO DA DISSERTAÇÃO A organização do presente trabalho encontra-se da seguinte forma: o capítulo 2 apresenta as principais características dos Sistemas Distribuídos, bem como os paradigmas baseados em arquiteturas distribuídas; o capítulo 3 apresenta os conceitos da Máquinas Virtuais, além de citar os principais tipos de tecnologia de virtualização existentes e as características dos diversos softwares de virtualização; o capítulo 4 apresenta trabalhos encontrados na literatura que propõem métodos e arquiteturas para criação de Cluster Virtual; o capítulo 5 descreve a implementação do sistema proposto; o capítulo 6 apresenta, ainda, os experimentos realizados e os resultados obtidos, bem como os comentários sobre os mesmos; por fim, o capítulo 7 apresenta as considerações finais acerca deste trabalho. 17
2 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDA A partir da metade da década de 1980, com o desenvolvimento do microcomputador, essa nova tecnologia passou a ser uma ferramenta com poder de processamento cada vez maior. Ainda nessa mesma década, tivemos um outro avanço da tecnologia - a popularização das redes - que culminaria no surgimento da Internet. Do resultado da união desses dois avanços surgiram os sistemas distribuídos. 2.1 CARACTERÍSTICAS DE SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDA Um sistema distribuído, segundo a definição de George Coulouris (COULOURIS et al., 2007), é uma: Coleção de computadores autônomos interligados através de uma rede de computadores e equipados com software que permita o compartilhamento dos recursos do sistema: hardware, software e dados Assim, a união desses computadores através da rede permite que o poder de processamento seja combinado de forma a colaborar com a execução de uma aplicação. Essa é sub-dividida e processada em diversos núcleos de processamento em diferentes localidades. Porém, apesar de a aplicação ser processada em diferentes plataformas e SO, todo o processamento ocorre de forma transparente para o usuário, que tem a impressão de que um único sistema gerencia toda a aplicação, ou seja, tem-se a ilusão de que a aplicação está sendo executada em uma única máquina. A capacidade de interconectar processadores permite que um sistema distribuído tenha um melhor desempenho e um crescimento incremental, bastando, para isso, incluir novos equipamentos na rede. Com isso, tem-se um aumento no poder computacional, na otimização e na economia de recursos, visto que é menos custosa a utilização de vários processadores interligados do que a aquisição de um supercomputador. Outra vantagem dos sistemas distribuídos é a tolerância a falhas, já que um problema em um computador não interfere no processamento da aplicação, embora haja uma diminuição no desempenho. Com a evolução da arquitetura de sistemas distribuídos e o aumento significativo da capacidade de rede surgiram os conceitos de Cluster Computacional e Grade Computa- 18
cional e, recentemente, Cloud Computing. 2.2 CLUSTERS COMPUTACIONAIS Ao longo dos últimos anos temos presenciado que as comunidades científicas e acadêmicas, bem como as empresas de tecnologia, vêm desenvolvendo aplicações cada vez mais complexas e que exigem maior poder computacional. Devido à complexidade dessas aplicações e a necessidade de precisão e rapidez dos resultados, torna-se inviável o seu processamento em um único computador. Como saída, é possível o processamento dessas aplicações usando supercomputadores dedicados. Porém, nem sempre as instituições são capazes de adquiri-los devido ao seu alto custo, e com isso, o acesso aos supercomputadores fica limitado a um pequeno grupo que tenha poder aquisitivo suficiente. A alternativa encontrada pela comunidade foi a união de um conjunto de computadores comerciais ligados a uma rede de alta velocidade, no qual a sua ação conjunta permite o aumento no desempenho das aplicações. Já que essas são divididas em partes e executadas de forma distribuída/paralela entre os computadores, atinge-se, desta forma, um desempenho equivalente ao de um supercomputador. Surgiu, assim, o conceito de Cluster, que pode ser descrito da seguinte maneira: Um cluster, ou aglomerado, é uma coleção de computadores que trabalham juntos para criar um sistema mais poderoso, ou um conjunto de máquinas independentes, que cooperam umas com as outras para atingir um determinado objetivo comum. (FILHO, 2004) De um forma mais ampla, um cluster é formado por computadores que são interconectados através da rede para que possam, então, processar eficientemente um grande número de aplicações de uma maneira distribuída. A união dessas características torna o cluster o mais adequado para processamento de aplicações paralelas e de alto desempenho, uma vez que o paralelismo é considerado a melhor forma de se superar o problema relacionado à velocidade de processamento (ZEM e BRITO, 2006), aumentando assim, o desempenho das aplicações. Em relação à estrutura do cluster, ela consiste basicamente em um computador - chamado de nó mestre, - e de vários outros computadores - chamados de nós escravos. O nó mestre é responsável por controlar e distribuir o processamento da aplicação entre os 19
nós escravos, além de reunir e disponibilizar os resultados. Além disso, os nós possuem o mesmo sistema operacional, facilitando a troca de mensagens. Devido a esta característica, os cluster são considerados sistemas homogêneos. Ainda em relação à estrutura do cluster, durante o seu processo de construção, faz-se necessário o uso de ferramentas que automatizem sua instalação, configuração e monitoramento das aplicações, pois tal processo, se feito de forma manual, torna o trabalho um pouco mais árduo. Entretanto, atualmente é possível conseguir boas ferramentas que facilitam o trabalho do administrador, como, por exemplo, a ferramenta para instalação como Kickstart (O KANE, 2000) e o OSCAR (OSCAR), ferramentas de monitoramento como Ganglia (MASSIE et al., 2004), ferramenta de escalonamento como Maui e ainda ferramentas que incluem essas diversas funcionalidades em um único componente como é o caso do ROCKS (ROCKS) e PelicanHPC (CREEL, 2010) A utilização dos clusters permite que alguns objetivos sejam alcançados, tais como (BECHER, 2007): alto desempenho, escalabilidade, tolerância a falhas, baixo custo e independência de fornecedor. Dessa forma, o custo de montagem do ambiente torna-se baixo, pois é usado hardware comum, que pode ser de qualquer fabricante e, utilizando software livre, não existe a necessidade de pagamento de licença de uso de aplicativo. A figura 2.1 representa o modelo hierárquico mestre-escravo para a execução e coordenação do processamento. FIG. 2.1: Hierarquia de um cluster. 2.3 GRADES COMPUTACIONAIS Buscando alcançar um nível maior de conhecimento, surgiu a idéia de interconectar supercomputadores geograficamente dispersos, localizados em diferentes instituições, usando a tecnologia de comunicação com alta largura de banda. Estes sistemas de computação 20
de alto desempenho, distribuídos em redes de escala mundial, tornaram-se uma maneira inovadora de compartilhar recursos computacionais entre várias instituições de forma a maximizar o uso dos recursos e permitir a construção de uma coleção de máquinas ainda mais poderosa. Assim, a comunidade científica de Computação de Alto Desempenho uniu esforços com a comunidade de Sistemas Distribuídos, criando uma linha de pesquisa que passou a ser chamada de Computação em Grade (Grid Computing) (GOLDMAN e KON, 2008). As grades computacionais podem ser definidas, de uma forma mais detalhada, como sendo: um conjunto de hardware e de software que possibilita a integração de recursos disponíveis nos ambientes de diferentes instituições de forma dinâmica. Essa integração pode ser utilizada para prover o compartilhamento de ciclos de processadores, memória RAM, espaço em disco, acesso a banco de dados, softwares, além de garantir a segurança e a qualidade do serviço oferecido, tudo de forma transparente ao usuário. Os sistemas de Grade possuem algumas características que os diferenciam de outras tecnologias de processamento distribuído, no qual podemos destacar (DASILVA, 2004): Heterogeneidade: uma grade deve ser capaz de congregar equipamentos diferentes entre si, de forma a fazê-los trabalhar em conjunto na execução de uma aplicação; Alta Dispersão Geográfica: esta característica se refere ao potencial de utilizar equipamentos que não estão fisicamente próximos. Com isso, uma grade pode ser composta por equipamentos de várias partes do mundo, aumentando a colaboração entre as instituições e a distribuição global dos dados; Compartilhamento: uma Grade deve ser capaz de compartilhar recursos e dados; Múltiplos domínios administrativos: podem ser compostas por equipamentos de várias instituições, com administração totalmente independente; Controle Distribuído: não existe uma entidade única que tenha o controle sobre toda a Grade; Disponibilização de serviços não triviais: As Grades devem ser capazes de coordenar a utilização de recursos de forma estruturada, para assim, atender às necessidades de execução das aplicações; 21