Faculdade de Tecnologia de Guaratinguetá. doze, março de 2009. Cluster HPC – High Performance Computing. Diogo Salles, Thiago Pirro, Camilo Bernardes, Paulo Roberto, Ricardo Godoi, Douglas, Fauzer. Sistemas Distribuídos – Luiz Eduardo Guarino Resumo A utilização de supercomputadores necessita investimento de alto custo, o que para muitos é um grande problema, porém este artigo irá tratar de Clusters HPC, uma solução alternativa que para muitas universidades e empresas vem atendendo a necessidade de alta performance de processamento de forma muito mais viável, além disso apresenta os seus principais conceitos. Palavras-chave: Cluster HPC, Custo, Alta Performance. Introdução Em busca de um poder de processamento semelhante ao dos supercomputadores a um custo imensamente inferior, surgiram estações de trabalho com múltiplos elementos de processamento, agrupados por barramentos de comunicação de altíssima velocidade, capazes de distribuir toda a carga gerada pelas aplicações entre os elementos de processamento, garantindo assim um tempo consideravelmente reduzido na resolução das aplicações, e melhorando significativamente o desempenho. É construído muitas vezes a partir de computadores convencionais, sendo que estes vários computadores são ligados em rede e comunicam-se através do sistema de forma que trabalham como se fosse uma única máquina de grande porte. A idéia inicial que conduz ao cluster foi desenvolvida na década de 1960 pela IBM como uma forma de interligar grandes mainframes, visando obter uma solução comercialmente viável de paralelismo. Na prática o Cluster HPC é utilizado em diversas aplicações onde haja a necessidade de alto desempenho de processamento como: pesquisas climáticas, sequenciamento genético, estudos geofísicos, simulação de explosões nucleares, servidores web, aplicações financeiras, mecanismos de busca, etc. 1 Cluster Para PITANGA (2003), um cluster é um sistema que compreende dois ou mais computadores, ligados em rede, na qual trabalham em conjunto para executar aplicações ou realizar outras tarefas, de tal forma para que os usuários que os utilizam tenham a impressão que somente um único sistema responde para eles, criando assim uma ilusão de um recurso. Este conceito é denominado transparência do sistema. Utiliza-se de um tipo especial de sistema operacional classificado como sistema distribuído. Como características fundamentais para a construção destas plataformas incluem-se elevação da confiança, distribuição de carga e desempenho. 2 2 Aplicações para Clusters Os clusters podem ser usados para uma infinidade de aplicações. Basicamente, para qualquer uma que exija processamento pesado. Como exemplos de aplicações, temos previsão meteorológica (previsão do tempo e condições climáticas), simulações geotérmicas (ou seja, simulação de eventos no solo), renderização de efeitos especiais (muito usado em filmes), simulações financeiras, distribuição de carga, etc. 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 os sistemas de bancos, por exemplo), podem utilizar as tecnologias de cluster, desde que devidamente configurados para não serem sujeitas 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, além de meios de manutenção e detecção de falhas eficientes. 3 Cluster de Alto desempenho – HPC (High performance computing). A computação de alto desempenho é uma necessidade em certos ramos da pesquisa científica e do desenvolvimento de software. Nas últimas décadas muita pesquisa tem sido feita e muitos computadores de alto desempenho têm sido montados. Normalmente são equipamentos caros. Na última década, entretanto, tem se consolidado uma nova tendência, que são os clusters de alto desempenho. Estes consistem em criação de computadores paralelos a partir de computadores comuns encontrados no mercado, atingindo o alto desempenho em computação com um custo baixo. Também conhecido como cluster de alta performance ele funciona permitindo que ocorra uma grande carga de processamento com um volume alto de gigaflops em computadores comuns e utilizando sistema operacional gratuito o que diminui seu custo. Este modelo de cluster aumenta a disponibilidade e performance para as aplicações, particularmente as grandes tarefas computacionais. Uma grande tarefa computacional pode ser dividida em pequenas tarefas que são distribuídas ao redor das estações (nodos), como se fosse um supercomputador massivamente paralelo. É comum associar este tipo de cluster ao projeto Beowulf da NASA. Estes clusters são usados para computação cientifica ou análises financeiras, tarefas típicas para exigência de alto poder de processamento. Medidas de Desempenho de Computadores (operações de ponto flutuante por segundo) : megaflop 106 gigaflop 109 Teraflop 1012 petaflop 1015 Exaflop 1018 zettaflop 1021 yottaflop 1024 3 4 Cluster Beowulf Recebeu esse nome, pois se assimila muito com o lendário herói inglês, pois enfrenta um poderoso adversário, o alto processamento. A versão literária enfrenta batalhas contra monstros e dragões, enquanto a real se encontra como uma alternativa eficiente e de baixo custo à computação que demanda um grande poder de processamento, que até então era dominada pelo monopólio dos grandes fornecedores. O sistema é dividido em um nodo controlador denominado front-end (particularmente denomino de nó mestre), cuja função é controlar o cluster, monitorando e distribuindo as tarefas. Os demais nós são conhecidos como clientes ou backends (bem eu denomino nós escravos), e são exclusivamente dedicados para processamento das tarefas enviadas pelo nó controlador, e não existe a necessidade de teclados e monitores, e eventualmente até sem a utilização de discos rígidos (diskless), e podem ser acessadas via login remoto (telnet ou ssh). Os nós principais (front-end) desempenham duas funções importantes: funcionam como servidores de arquivos e como gateways para o ambiente externo ao cluster. Como servidor de arquivo, os nós principais oferecem mecanismos para armazenar arquivos de usuários e arquivos dos demais clusters. No papel de gateway, eles permitem que os demais nós do Cluster, se necessário, possam acessar qualquer computador, justificando, assim, o porquê de os nós principais possuírem duas interfaces de rede. Os demais nós do Cluster (backends), executam os processos paralelamente, sendo esta a sua única função. Como as tarefas são executadas de maneira paralela, as aplicações devem ser escritas atentando-se para esta condição, a fim de se explorar ao máximo esta arquitetura. Figura 1. Cluster Beowulf Típico. O que distingue o Cluster Beowulf dos outros tipos são as seguintes características: - A conexão dos nós pode ser feita por redes do tipo Ethernet; - Existe um servidor responsável por controlar todo o cluster, principalmente quanto a distribuição de tarefas e processamento. Este servidor é chamado de Front-end; - O sistema operacional é baseado Linux, sendo necessário que ele contenha todos os programas para cluster; 4 - Podem-se usar computadores comuns, inclusive modelos considerados obsoletos; - Não é necessário usar equipamentos próprios para clusters. Basta equipamentos comuns às redes e os tradicionais PCs. De maneira generalizada, o Cluster Beowulf permite a construção de sistemas de processamento que podem alcançar altos valores de gigaflops. Isso tudo com o uso de computadores comuns e de um sistema operacional com código-fonte livre, ou seja, além de gratuito, pode ser melhorado para a sua finalidade. Entre os requisitos para o sistema operacional de um Cluster Beowulf, estão a necessidade de se ter as bibliotecas para Parallel Virtual Machine (PVM) ou para Message Passing Interface (MPI). Ambos os tipos são usados para a troca de mensagens entre os nós do cluster. O MPI é mais avançado que o PVM, pois pode trabalhar com mensagens para todos os computadores ou para apenas um determinado grupo (por exemplo, quando somente este grupo vai realizar determinada tarefa). Os clusters não servem para processar dados em tempo real, mas apenas para processar grandes quantidades de dados, que podem ser quebrados em pequenas partes e divididos entre os vários computadores. Uma área onde são populares é na aplicação de efeitos especiais e renderização de imagens para filmes de cinema. Há inclusive casos de filmes como o Shrek e o Final Fantasy, que foram renderizados inteiramente utilizando clusters Beowulf. 5 Cluster Mosix Mosix é a sigla para Multicomputer Operating System for UNIX. Trata-se de um projeto que teve inicio nos anos 80 em Jerusalem é um conjunto de ferramentas de cluster para Linux, tem como característica principal, fazer com que o cluster se comporte como um grande e único supercomputador lançando mão da migração preemptiva de processos e balanceamento dinâmico de carga. A implementação da Migração Preemptiva faz com que um processo em um nó com poucos recursos seja transportado para outro nó que tenha maior disponibilidade, melhorando, assim, o desempenho do sistema. Diferente do Beowulf no Mosix não existe um nó mestre que controle os outros nós do cluster utiliza algoritmos descentralizados a grande vantagem nesse tipo de cluster é a possibilidade de incluir ou remover um computador do cluster sem que o desempenho seja afetado, nenhum distúrbio seja notado. O Mosix possui também algoritmos que monitoram e identificam qual a velocidade dos nós, a memória livre disponível, a carga da CPU, a comunicação interprocessos (IPC) e a velocidade de acesso de cada processo. Outra vantagem do Mosix e ser transparente para o usuário. Assim que é iniciado um aplicativo o Mosix envia os processos ao melhor computador no momento na rede e monitora sua execução. Tudo isso sem que o usuário perceba ou seja de forma transparente. O sistema Mosix é utilizado em diversas aplicações dentre elas Processos CPU-bound: processos com longos tempos de execução e baixo volume de comunicação entre processos, ex: aplicações científicas, engenharia e outras aplicações que demandam alta performance de computação, Grandes compilações, Banco de dados que não usem memória compartilhada. O MOSIX é eficiente na tarefa de distribuição dinâmica de processamento entre os computadores do cluster. Esse tipo, assim como o Beowulf, é muito utilizado por universidades em pesquisas e projetos. Por ser baseada em Linux, sua implementação é transparente, além de ser relativamente fácil de instalar. 5 Considerações Finais Quando a necessidades de alto desempenho e de alta disponibilidade em um projeto que ainda possui limitações em orçamentos, procuram-se alternativas que possam suprir todas essas necessidades. Assim sendo, forma-se um contexto favorável para a utilização do Cluster, que possui baixo custo de implantação, se comparado a outras soluções proprietárias, como por exemplo, os supercomputadores, e pode ser desenvolvido sobre uma plataforma aberta, tirando todas as vantagens do desenvolvimento dinâmico do software livre. Referências Bibliográficas PINTO, Hudson J. L., SILVA, Michel P. e SILVEIRA, Gabriel D. Ambientes de Alto Desempenho utilizando Cluster de Computadores: Universidade de Formiga, Departamento de Ciência da Computação, Instituto de Ciências Sociais Aplicadas e Exatas. Formiga, MG, Brasil. PITANGA, Marcos. Computação em cluster: o estado da arte da computação. Rio de Janeiro: Brasport Livros e Multimídia Ltda, 2003. SOUZA, Marcelo S. Análise do Servidor Web Apache em Clusters OpenMosix com Memória Compartilhada Distribuída: CEBACAD, Centro Baiano de Computação de Alto Desempenho, Universidade Católica do Salvador (UCSal), Salvador, Bahia – Brasil.