Você está na página 1de 25

UNIVERSIDADE ESTADUAL DE MONTES CLAROS UNIMONTES CENTRO DE CINCIAS EXATAS E TECNOLGICAS CCET DEPARTAMENTO DE CINCIAS DA COMPUTAO DCC CURSO

RSO DE SISTEMAS DE INFORMAO DISCIPLINA: SISTEMAS DISTRIBUDOS I PROFESSOR: RENATO DOURADO MAIA

SEMINRIO DE SISTEMAS DISTRIBUDOS: CLUSTER GRID


Alexandre Felix Evangelista Amanda Ramos de Souza Hrcules Batista de Oliveira Rafael Antnio Gonalves de Lima

Montes Claros Junho de 2008

SUMRIO
1 INTRODUO .................................................................................................................................. 3 2 ARQUITETURAS DISTRIBUDAS ................................................................................................ 3 2.1 SISD Single Instruction Stream / Single Data Stream ................................................ 4 2.2 SIMD Single Instruction Stream / Multiple Data Stream............................................. 4 2.3 MISD Multiple Instruction Stream / Single Data Stream............................................. 5 2.4 MIMD Multiple Instruction Stream / Multiple Data Stream......................................... 6 3 CLUSTERS........................................................................................................................................ 7 4 COMPUTAO EM GRID .............................................................................................................. 7 5 BIBLIOTECAS DE COMUNICAO............................................................................................ 8 5.1 PVM ............................................................................................................................................. 8 5.2 MPI ............................................................................................................................................... 8 6 TIPOS DE CLUSTER....................................................................................................................... 9 6.1 Cluster de Alta Disponibilidade (High-Availability - HA) ............................................. 10 6.2 Cluster de Balanceamento de Carga................................................................................ 11 6.3 Cluster Combinado Alta Disponibilidade e Balanceamento de Carga.................... 12 7 APLICAES ......................................................................................Erro! Indicador no definido. 8 EXEMPLOS ..................................................................................................................................... 15 8.1 Petrobrs ................................................................................................................................. 15 8.2 Google Cluster ....................................................................................................................... 15 8.2.1 Processamento de uma consulta............................................................................... 15 8.2.2 Arquitetura de Cluster Google.................................................................................... 17 Beowulf ......................................................................................................................................... 20 OpenMosix .................................................................................................................................... 21 Microsoft Cluster Server................................................................................................................ 23

1 INTRODUO
Embora o poder de processamento dos computadores tenha crescido de forma espantosa nos ltimos anos, a complexidade dos problemas submetidos aos mesmos faz com que tais avanos paream insuficientes. Aplicaes que faam simulaes de fenmenos naturais, previso do tempo ou simulaes de teste de armas nucleares, por exemplo, exigem uma estrutura computacional que se no for bem planejada, torna a utilizao de tais aplicaes inviveis. Muitos esforos tm sido empregados para se obter o desempenho necessrio para a execuo de aplicaes to exigentes. Uma das opes que os projetistas de computadores tm para se aumentar o desempenho dos computadores fazer com que os mesmos trabalhem mais, aumentando a freqncia (clock) de trabalho dos mesmos. Isto eficaz at certo ponto, pois h barreiras fsicas para este aumento de freqncia, como a resistncia presente em compostos eletrnicos e o calor gerado por este fenmeno. Diante deste cenrio, uma alternativa que tem se mostrado vivel para a soluo de problemas complexos a diviso do mesmo em partes menores, que so alocadas a diferentes processadores trabalhando em paralelo. Uma das abordagens na construo de mquinas paralelas o uso de supercomputadores que possuem dezenas, centenas ou at milhares de processadores independentes trabalhando em conjunto, compartilhando uma mesma memria fsica. Supercomputadores multiprocessados so mquinas extremamente poderosas, porm caras. Assim, juntamente com o aumento da velocidade e confiabilidade das redes locais, a computao distribuda tem emergido como uma alternativa de excelente custo-benefcio em relao aos supercomputadores, e que pode oferecer um poder de processamento to bom quanto ou superior aos supercomputadores multiprocessados, quando projetados de forma eficiente. Em computao distribuda temos vrios computadores, cada um com sua prpria memria fsica e prprio processador, trabalhando em paralelo para a soluo de uma mesma tarefa ou dividindo tarefas diferentes entre os mesmos. A comunicao entre os elementos processadores neste modelo se d normalmente por meio de redes de computadores de alta velocidade.

2 ARQUITETURAS DISTRIBUDAS
Vrias formas de se classificar os computadores digitais tm sido propostas ao longo dos anos. Uma das mais utilizadas a proposta por Michal J. Flynn em 1966, que criou uma taxonomia de classificao em quatro grupos, de acordo com a seqncia de instrues e a seqencia de dados. O seguinte quadro, retirado do livro Organizao Estruturada de Computadores (TANENBAUM, 2001), resume os quatro grupos propostos por Flynn:

Seqncia de Instrues 1 1 Vrias Vrias

Sequncia de Dados 1 Vrias 1 Vrias

Nome SISD SIMD MISD MIMD

Exemplos Mquina clssica de Von Neumann Supercomputador vetorial, processador matricial Nenhum exemplo Multiprocessador, multicomputador

2.1 SISD Single Instruction Stream / Single Data Stream


Este tipo de mquina prope uma execuo tipicamente seqencial, sem nenhuma forma de paralelismo. o modelo clssico proposto por Von Neumann. Mquinas pessoais com processadores de um nico ncleo se enquadram nesta categoria.

2.2 SIMD Single Instruction Stream / Multiple Data Stream


Segundo Tanenbaum (2001), so mquinas que possuem uma nica unidade de controle de fluxo de instruo, mas possuem vrias UAL (Unidade Aritmtica-Lgica) executando uma mesma instruo sobre diferentes conjuntos de dados simultaneamente. Mquinas deste tipo so utilizadas principalmente em problemas das reas cientficas e de engenharia, em problemas que utilizem estruturas de dados regulares, como vetores e matrizes, sendo por conseguinte, os computadores vetoriais e matriciais os principais representantes desta classe. Como exemplo de processadores matriciais, podemos citar o ILLIAC IV, o CM-2 e MP-2. No caso de processadores vetoriais, um dos mais conhecidos o Cray-1, que foi sucedido pelo C90 e T90. O Cray-1 foi utilizado por vrios anos na soluo de problemas cientficos.

2.3 MISD Multiple Instruction Stream / Single Data Stream


Nesta arquitetura vrias instrues estariam acessando o mesmo conjunto de dados. No h consenso entre os autores se alguma mquina prtica poderia ser enquadrada neste grupo, embora, de acordo com Tanenbaum (2001), alguns autores considerem as mquinas pipeline pertencentes a esta categoria.

2.4 MIMD Multiple Instruction Stream / Multiple Data Stream


Nesta categoria se encontram a maioria dos sistemas multicomputadores e

multiprocessadores. A diferena bsica destas duas arquiteturas diz respeito forma com que os dados so compartilhados. Em sistemas multiprocessadores, um nico espao de endereamento est disponvel para todas as unidades processadoras. Chamamos esta configurao de fortemente acoplada. Como a memria compartilhada, a velocidade de comunicao entre os diferentes processadores quase que limitada unicamente pela largura de banda da memria principal, o que implica em baixa deteriorizao do desempenho apesar das vrias interaes entre os processadores. Porm, devemos esclarecer que a competio por recursos nesta arquitetura pode influir em queda no desempenho global do sistema. J em arquiteturas multicomputadores, cada computador possui seu prprio espao de memria. So os sistemas fracamente acoplados. A comunicao entre os elementos processadores nesta arquitetura se d basicamente pela troca de mensagens em uma rede comunicao de dados.

Esta larga faixa de tipos de computadores MIMD fez com que Johnson, em 1988, propusesse uma subdiviso dos mesmos de acordo com a estrutura de memria e com o mecanismo de comunicao entre os nodos processadores. Esta classificao listada abaixo: GMSV: Memria global / Variveis compartilhadas; GMMP: Memria global / Troca de mensagens; DMSV: Memria distribuda / Variveis compartilhadas; DMMP: Memria distribuda / Troca de mensagens.

3 CLUSTERS
Um cluster um sistema distribudo onde dois ou mais computadores, interligados por uma rede de comunicao de dados, trabalham juntos para a resoluo de tarefas complexas, de forma que tal distribuio de atividades, em um cenrio ideal, ocorra de maneira transparente para o usurio. Um cluster normalmente se encontra sob o domnio de uma nica organizao e so gerenciados por um elemento centralizado, responsvel por coordenar e distribuir as tarefas entre os demais nodos processadores. Como vantagens da utilizao de clusters em relao aos sistemas que utilizam supercomputadores multiprocessados de memria compartilhada, podemos citar: Maior escalabilidade; Melhor relao custo/benefcio; Alta disponibilidade atravs da replicao de componentes chaves entre vrios computadores Alta confiabilidade, uma vez que a falha de um nodo processador no bloqueia todo o sistema; Melhor modelagem de aplicaes que so inerentemente distribudas; No entanto, algumas desvantagens desta abordagem devem ser pesadas quando da escolha de uma determinada arquitetura para soluo de problemas complexos, como por exemplo: Disponibilidade de software ainda limitada; O desenvolvimento de programas mais complexo; A falta da confiabilidade de algumas redes pode ser um problema; O compartilhamento de dados pode ser uma falha de segurana.

4 COMPUTAO EM GRID
Computao em grid uma arquitetura de sistemas distribudos fracamente acoplada, utilizada principalmente por aplicaes cientficas e acadmicas que envolvam problemas complexos ou grandes massas de dados. Este tipo de sistema paralelo permite o compartilhamento, seleo e agregao de computadores autnomos, geograficamente distribudos, dinamicamente atravs de mltiplos domnios administrativos, baseados em suas disponibilidades, capacidade, performance, custo e requisitos de qualidade de servio dos usurios. Esta coleo de computadores normalmente usa protocolos padres para comunicao e muitas vezes aparecem como uma nica mquina. Uma distino deve ser feita em relao s arquiteturas de clusters, uma vez que os dois termos so freqentemente confundidos. Os computadores que compe os grids muitas vezes se

encontram em locais geograficamente dispersos, e em muitos casos, esto conectados por redes de baixa velocidade, como a Internet. Esta disperso geogrfica, onde no h uma organizao possuidora de todos os elementos de um grid, carrega consigo uma maior heterogeneidade entre os componentes desta arquitetura. Portanto, cada computador participante do grid tem autonomia prpria, o que traz facilidades, como a possibilidade da computao voluntria, e alguns problemas, como a presena de elementos mal-intencionados realizando trabalho coletivo.

5 BIBLIOTECAS DE COMUNICAO

5.1 PVM
PVM a abreviao de Parallel Virtual Machine. Este um pacote de software que permite que uma rede heterognea de computadores de todos os tipos seja programada como se fosse apenas uma nica "Mquina Paralela Virtual". A programao baseada no paradigma de troca de mensagens. O desenvolvimento do PVM comeou no ano de 1989 no Oak Ridge National Laboratory (ORNL), atualmente, o projeto envolve equipes de vrias instituies. O PVM composto, basicamente, de trs partes: uma biblioteca de funes (em C e em FORTRAN77) que implementam para o usurio as diretivas de programao da Mquina Virtual (MV); um processo daemon que rodar em cada host participante da MV e um console de onde podem ser executadas algumas funes bsicas de controle (configurao da MV, gerenciamento de tarefas, etc...). A implementao do PVM baseada em processos do Unix, na verdade cada tarefa, ou seja, cada unidade bsica de execuo do PVM um processo Unix. Isto explica parcialmente a alta portabilidade do sistema para computadores de arquiteturas to diferentes. verdade que, em algumas implementaes, as tarefas podem no ser processos, nestes casos, caber ao implementador garantir a compatibilidade (tais excees so mais comuns em sistemas de natureza mais complexa como computadores paralelos). Os programas em PVM podem rodar espalhados por uma rede de natureza heterognea. Mais particularmente, possvel disparar tarefas em computadores em qualquer parte da Internet desde que o usurio tenha acesso a esta mquina. O pacote PVM relativamente pequeno (cerca de 4.5 MB de cdigo fonte em C), e necessita ser instalado apenas uma vez em cada mquina para ser acessvel todos os usurios. Alm disso, a instalao no requer privilgios especiais e pode ser efetuada por qualquer usurio.

5.2 MPI
8

Message Passing Interface (MPI) um padro para comunicao de dados desenvolvido para ambientes de memria distribuda, mquinas paralelas massivas, NOWs (network of workstations) e redes heterogneas. Existem vrias modalidades de computao paralela, e dependendo do problema que se est tentando resolver, pode ser necessrio passar informaes entre os vrios processadores ou nodos de um cluster, e o MPI oferece uma infra-estrutura para essa tarefa. uma biblioteca de rotina que fornece funcionalidade bsica para que os processos se comuniquem. No padro MPI, uma aplicao constituda por um ou mais processos que se comunicam, acionando-se funes para o envio e recebimento de mensagens entre os processos. Inicialmente, na maioria das implementaes, um conjunto fixo de processos criado. Porm, esses processos podem executar diferentes programas. Por isso, o padro MPI algumas vezes referido como MPMD (multiple program multiple data), onde o paralelismo explicito, ou seja, o programador responsvel pela distribuio. O MPI funciona da seguinte maneira: Problemas so divididos em pequenas partes e essas partes so distribudas para que outras mquinas do cluster faam o clculo em cimas dessas partes, ento os resultados obtidos das outras mquinas so enviadas a uma receptora que coleta os resultados, agrupa e d o resultado esperado. Alguns conceitos importantes de MPI: Processo: Cada parte do programa quebrado chamado de processo. Os processos podem ser executados em uma nica mquina ou em vrias. Rank: Todo o processo tem uma identificao nica atribuda pelo sistema quando o processo inicializado. Essa identificao contnua representada por um nmero inteiro, comeando de zero at N-1, onde N o nmero de processos. Cada processo tem um rank, ele utilizado para enviar e receber mensagens. Grupos: Grupo um conjunto ordenado de N processos. Todo e qualquer grupo associado a um comunicador muitas vezes j predefinido como "MPI_COMM_WORLD". Comunicador: O comunicador um objeto local que representa o domnio (contexto) de uma comunicao (conjunto de processos que podem ser contactados). O MPI_COMM_WORLD o comunicador predefinido que inclui todos os processos definidos pelo usurio numa aplicao MPI. Application Buffer: o endereo de memria, gerenciado pela aplicao, que armazena um dado que o processo necessita enviar ou receber. System Buffer: um endereo de memria reservado pelo sistema para armazenar mensagens.

6 TIPOS DE CLUSTER

De acordo com KORG (www.supercomputer.com.br), existem vrios tipos de cluster, no entanto h alguns que so mais conhecidos, os quais so descritos a seguir:

6.1 Cluster de Alta Disponibilidade (High-Availability - HA)


Os computadores possuem uma forte tendncia a parar quando menos voc espera principalmente num momento em que voc mais necessita dele. raro no encontrar um administrador que nunca recebeu um telefonema no meio da madrugada com a triste notcia que o sistema de misso crtica ficou fora do ar, ou seja, no tem jeito voc tem que ir e resolver o problema. A Alta Disponibilidade est ligada diretamente a nossa crescente dependncia aos computadores, pois agora eles possuem um papel crtico principalmente em empresas cuja maior funcionalidade exatamente a oferta de algum servio computacional, como e-business, notcias, sites web, banco de dados, dentre outros. Um cluster de Alta Disponibilidade visa manter a disponibilidade dos servios prestados por um sistema computacional replicando servios e servidores, atravs da redundncia de hardware e reconfigurao de software. Vrios computadores juntos agindo como um s, cada um monitorando os outros e assumindo seus servios caso algum deles venham a falhar. A complexidade do sistema deve estar no software que deve se preocupar em monitorar outras mquinas de uma rede, saber que servios esto sendo executados, quem os est executando, e como proceder em caso de uma falha. Perdas na performance ou na capacidade de processamento so normalmente aceitveis; o objetivo principal no parar. Existem algumas excees, como sistemas de tempo real e de misso crtica. A tolerncia falhas conseguida atravs de hardware, como sistemas raid, fontes e placas redundantes, sistemas rede totalmente ligados para prover caminhos alternativos na quebra de um link.

10

Cluster de alta disponibilidade

6.2 Cluster de Balanceamento de Carga


O balanceamento de carga entre servidores faz parte de uma soluo abrangente em uma explosiva e crescente utilizao da rede e da Internet. Provendo um aumento na capacidade da rede, melhorando a performance. Um consistente balanceamento de carga mostra-se hoje, como parte integrante de todo o projeto de Web Hosting e comrcio eletrnico. Mas no se pode ficar com as idias presas de que isso s para provedores, devemos aproveitar as suas caractersticas e trazermos para dentro das empresas esse modo de usar a tecnologia para atendermos os clientes internos das empresas. Os sistemas de cluster baseado em balanceamento de carga integram seus nodos para que todas as requisies provenientes dos clientes sejam distribudas de maneira equilibrada entre os nodos. Os sistemas no trabalham junto em um nico processo, mas redirecionando as requisies de forma independente assim que chegam baseados em um escalonador e um algoritmo prprio. Este tipo de cluster especialmente utilizado em servios de comrcio eletrnico e provedores de internet que necessitam de resolver diferenas de carga provenientes de mltiplas requisies de entrada em tempo real. Adicionalmente, para que um cluster seja escalvel, tem que assegurar que cada servidor seja utilizado completamente. Quando no fazemos o balanceamento de carga entre servidores que possuem a mesma capacidade de resposta a um cliente, comeamos a ter problemas, pois um ou mais servidores podem responder a requisio feita e a comunicao fica prejudicada. Por isso devemos colocar o elemento que far o balanceamento entre os servidores e os usurios e configur-lo para isso, entretanto podemos colocar mltiplos servidores de um lado que, para os clientes, eles parecero ser somente um endereo. Um exemplo clssico seria o Linux Virtual Server, ou simplesmente preparar um load balancer de DNS. O elemento de balanceamento ter um endereo, por onde os clientes tentaro fazer contato, chamado de Virtual Server (VS), que redirecionar o trfego para um servidor do pool de servidores. Esse elemento dever ser um software dedicado a fazer todo esse gerenciamento, ou poder ser um equipamento de rede que combine performance do hardware e software para fazer a passagem dos pacotes e o balanceamento de carga em um s equipamento. Devemos salientar alguns pontos principais para que uma implementao em um ambiente de sucesso com balanceamento de carga nos servidores: O algoritmo usado para o balanceamento de carga, levando-se em considerao como feito o balanceamento entre os servidores e quando um cliente fizer uma requisio para o endereo virtual (VS), todo o processo de escolha do servidor e resposta do servidor deve ocorrer de modo transparente e imperceptvel para o usurio como se no existisse o balanceamento.

11

Criar um mtodo usado para checar se os servidores esto vivos e funcionando, vital para que a comunicao no seja redirecionada para um servidor que acabou de ter uma falha (keepalive).

Um mtodo usado para se ter certeza que um cliente acessar o mesmo servidor quando quiser. Balanceamento de carga mais que um simples redirecionamento do trfego dos

clientes para outros servidores. Para implementao correta, o equipamento que far o balanceamento precisa ter caractersticas como verificao permanente da comunicao, checagem dos servidores e redundncia. Todos esses itens so necessrios para que suporte a escalabilidade do volume de trfego das redes sem vir a se tornar um gargalo ou um ponto nico de falha. Os algoritmos para balanceamento so um dos fatores de maior importncia neste contexto, vamos ento explanar trs mtodos bsicos: Least Connections: esta tcnica redireciona as requisies para o servidor baseado no menor nmero de requisies/conexes. Por exemplo, se o servidor 1 est controlando atualmente 50 requisies/conexes, e o servidor 2 controla 25 requisies/conexes, a prxima requisio/conexo ser automaticamente direcionado para o servidor 2, desde que atualmente o servidor tenha um nmero menor de requisies/conexes ativas. Round Robin: este mtodo usa a tcnica de sempre direcionar as requisies para o prximo servidor disponvel de uma forma circular. Por exemplo, as conexes de entrada so dirigidas para o servidor 1, depois servidor 2 e finalmente servidor 3 e depois retorna ao servidor 1. Weighted Fair: esta tcnica dirige os pedidos para os servidores baseados na carga de requisies de cada um e na capacidade de resposta dos mesmos (performance) Por exemplo, se o servidor 1 quatro vezes mais rpido no atendimento aos pedidos do que o servidor 2, o administrador coloca um peso maior de trabalho para o servidor 1 do que o servidor 2.

6.3 Cluster Combinado Alta Disponibilidade e Balanceamento de Carga


Esta soluo combinada visa prover uma soluo de alta performance aliada a possibilidade da no existncia de paradas crticas. Este cluster combinado uma soluo perfeita para ISP e aplicaes de rede nas quais a continuidade de suas operaes muito crtica. As principais caractersticas desta plataforma so: Redirecionamento dos pedidos aos ns falhos para os ns reservas; Melhoria na qualidade dos nveis de servio para as aplicaes tpicas de rede;

12

Transparente integrao para as aplicaes stand-alone e no-cluster juntos em uma nica rede virtual;

Disponibilizar uma arquitetura de framework altamente escalvel.

Cluster combinado

7 APLICAES
As reas de aplicao dos clusters so bastante diversificadas. Marcos Pitanga, em seu livro Construindo supercomputadores com Linux, enumerou algumas, a saber: Servidores de Internet: o grande crescimento de utilizao de Internet revelou fragilidade nos sites muito visitados. Um cluster pode distribuir a carga e aumentar a capacidade de resposta. Segurana: a grande capacidade que o processamento paralelo oferece beneficiar qualquer processo para identificao, quebra na segurana (criptografia) e verificao de possveis solues.

13

Base de Dados: pesquisas intensivas (cujo tempo de resposta seja pequeno) em banco de dados podem demorar muito tempo em um sistema comum. A utilizao de um cluster pode reduzir esse tempo significativamente.

Aerodinmica: produes de novas capacidades tecnolgicas e econmicas na presso enfrentada em aeronaves, lanamento de naves espaciais e nos estudos de turbulncia.

Anlise de elementos finitos: clculos de barragens, pontes, navios, avies, grandes edifcios, veculos espaciais.

Aplicaes em sensoriamento remoto: anlise de imagens de satlite para obteno de informaes sobre a agricultura, florestas, geologia, fontes hbridas.

Inteligncia artificial e automao: processamento de imagens, reconhecimento de padres, viso por computador, reconhecimento de voz, mquinas de inferncia.

Engenharia Gentica: projeto Genoma. Engenharia ssmica: empregado especialmente pelas companhias petrolferas para determinao de local de poos de petrleo.

Oceanografia e astrofsica: explorao de recursos dos oceanos, estudo da formao da terra, dinmica das galxias.

Previso do tempo: um processo demorado e com pouca preciso quando gerado atravs de computadores seqenciais.

Pesquisas militares: projeto de armas nucleares, simulao dos efeitos das armas em especial as radioativas, processamento de sinais de radares para o comando de msseis antibalsticos, gerao automtica de mapas, acompanhamento de submarinos.

Problemas de pesquisa bsica: em qumica, fsica, engenharia, tais como mecnica quntica, mecnica, estatstica, qumica de polmeros, crescimento de cristais, anlise de trajetrias de partculas, dinmica de fluidos, teoria do campo quntico, dinmica molecular, equaes de circuitos de alta escala, distribuio de conexes em circuitos VLSI.

Segurana de reatores nucleares: anlise das condies do reator, controle automtico, treinamento atravs de simulao de operaes, atuao rpida em caso de acidente. Clusters ou combinaes de clusters so usados quando os contedos so crticos ou

quando os servios tm que estar disponveis e/ou processados o quanto mais rpido possvel. Internet Service Providers (provedores de Internet) ou sites de comrcio eletrnico freqentemente requerem alta disponibilidade e balanceamento de carga de forma escalvel. Os clusters paralelos tm uma importante participao na indstria cinematogrfica para renderizao de grficos de altssima qualidade e animaes, relembrando que o Titanic foi renderizado dentro desta plataforma nos laboratrios da Digital Domain. Os clusters Beowulf so usados na cincia, engenharia e finanas para atuarem em projetos de desdobramento de protenas, dinmica de fludos, redes neurais, analise gentica, estatstica, economia, astrofsica dentre outras. Pesquisadores, organizaes e

14

empresas esto utilizando os clusters porque necessitam de incrementar sua escalabilidade, gerenciamento de recursos, disponibilidade ou processamento a nvel supercomputacional a um preo disponvel.

8 EXEMPLOS

8.1 Petrobrs
A Petrobrs adotou o primeiro supercomputador Beowulf h quase dez anos. Na ocasio, a mquina tinha dez processadores, que simulavam o comportamento de reservatrios de petrleo, em parceria com universidades de So Carlos e de Campinas (ambas no interior de So Paulo). Em 1999, montou o primeiro cluster para processamento ssmico. Este com 72 CPUs. Hoje, a companhia petrolfera conta com o BWR2, que possui 1,67 mil CPUs, com capacidade de processamento de at 7 teraflops por segundo, memria RAM de 3,3 terabytes e 100 terabytes de rea em disco.

8.2 Google Cluster


Esse resumo apresenta alguns pontos publicamente conhecidos da arquitetura de cluster do Google. Para entender os principais benefcios trazidos por essa arquitetura, ser explicada a aplicao mais importante que ela atende, a mquina de buscas do Google. Um dos detalhes mais interessantes da arquitetura proposta que ela se baseia em PCs comuns, ao invs de utilizar servidores de ponta. A primeira gerao do Google Cluster tinha cerca de 15 mil computadores. Estima-se hoje que o Google Cluster teria, no mundo todo, entre 50 e 70 mil computadores.

8.2.1 Processamento de uma consulta


Os passos bsicos da requisio de uma busca so os seguintes: Primeiramente o usurio entra no site do Google atravs de sua URL, o que

faz com que o navegador acesse um servidor de DNS para procurar um endereo IP correspondente. o H vrios clusters do Google preparados para atender essas requisies, distribudos em diversas partes do mundo. Um sistema de

balanceamento de carga baseado em DNS seleciona o cluster de forma a minimizar o tempo de resposta de acordo com a posio geogrfica do usurio e a capacidade disponvel dos brios clusters.

15

Ento o navegador envia a requisio contendo os termos da busca para o

cluster selecionado, que ir process-la localmente, sempre utilizando balanceamento de carga entre seus diversos servidores. usurio. o A execuo da requisio de busca inicia-se com uma consulta dos termos em arquivos invertidos, que mapeiam cada termo a uma lista de documentos nos quais ele ocorre, e ento feita uma interseco dessas listas e o resultado ordenado por relevncia de acordo com o algoritmo do PageRank, entre outras mtricas. Apesar do ndice completo conter terabytes de dados, a consulta feita paralelamente em diversas parties menores do ndice, chamadas index shards, cada uma contendo apenas um subconjunto de documentos. Cada um dos index shards est replicado em vrias mquinas, de forma a garantir a confiabilidade e desempenho. Aps obter os identificadores dos documentos e orden-los por relevncia, os A mquina que recebe a requisio (chamada de GWS Google Web

Server) coordena sua execuo e formata o resultado na pgina que ser retornada ao

servidores de documento so utilizados para obter as demais informaes que sero includas no resultado, tais como ttulo, URL e trecho do documento onde aparecem os termos. o As mesmas estratgias dos servidores de ndice so utilizadas aqui: distribuio aleatria dos documentos em parties menores, replicao de cada uma dessas parties em diversos servidores e balanceamento de carga para rotear as requisies. Outros processamentos que acontecem antes de retornar os resultados para o usurio incluem verificao ortogrfica e gerao de anncios relevantes.

16

8.2.2 Arquitetura de Cluster Google


Fatores Alguns fatores orientam as decises tomadas para a construo da arquitetura de cluster do Google. Os principais so eficincia de energia e razo preo/performance. O consumo de energia tem se tornado um gargalo nas operaes do Google, como veremos adiante, at mesmo devido a limites fsicos dos data centers. E a razo preo/performance um fatos cuja utilizao vivel para as aplicaes do Google pois a performance mxima de cada processador algo menos importante, devido a facilidade de paralelismo das aplicaes. A capacidade de paralelizao decorrente tanto do fato de requisies diferentes podem rodar em processadores diferentes como tambm uma nica requisio pode rodar em mltiplos processadores, devido ao particionamento dos ndices, servidores de documento, etc. Soluo Os dados a seguir foram obtidos de um artigo publicado em 2003 por Luiz Andr Barroso chamado: Web Search for A Planet: The Architeture of The Google Cluster servindo para ilustrar as decises de arquitetura tomadas pelo Google, mas no refletindo com exatido atual de seus clusters. A infra-estrutura de computao dos clusters do Google criada a partir de mais de 15 mil PCs comuns, de baixa confiabilidade, porm utilizando software para controle de tolerncia a falhas, que ficam responsveis por replicar os servios em vrias mquinas e detectar e tratar as falhas automaticamente, economizando dessa forma dinheiro.

17

Alm disso, o design feito de forma a maximizar throughput ao invs de tempo de resposta de servidor, j que o tempo de resposta total gerenciado atravs da paralelizao das requisies. De forma geral, os acessos ao ndice e outras estruturas de dados so realizados de forma read-only, o que permite eliminar vrios dos problemas que geram overhead para garantir consistncia que surgem. Tambm explorado agressivamente o paralelismo da aplicao, particionando tudo que possvel e depois realizando merge, que no to caro. No caso de servidores de ndice, por exemplo, adicionar novas mquinas em um pool responsvel por algum index shard aumenta a capacidade, enquanto novos shards acomodam o crescimento do ndice. Como no necessrio comunicao entre os diversos index shards, o aumento de performance ao adicionar novas mquinas quase linear. interessante notar que, ao mesmo tempo que a adio de novas mquinas que replicam os servios importante para obter capacidade suficiente, isso tambm serve para aumentar a tolerncia a falhas. As mquinas Em 2003, os racks do Google eram compostos por 40 a 80 servidores que variavam entre Celerons de um processador de 533 Mhz at Pentiums III dual de 1.4 Ghz, cada um contendo um ou mais drivers IDE com capacidade de 80 GB. As mquinas de cada lado do rack se conectam atravs de um switch Ethernet de 100-Mbps que tem um ou dois gigabit uplinks para um gigabit switch central que conecta todos os racks. De forma geral os servidores de ndices tm menos espao em disco, pois tm uma carga mais voltada a processamento, enquanto os servidores de documento possuem mais capacidade de armazenamento. Os servidores do Google em geral so trocados a cada dois ou trs anos, devido a disparidades de performance que causam dificuldades com o balanceamento de carga. No Google, o critrio mais importante de seleo de hardware o custo por query, expresso como a soma do custo de capital (com depreciao) e custos de operao (hospedagem, administrao de sistema e reparos) dividido pela performance. Por uma cotao de 2002, um rack com 88 dual-CPU 2Ghz Intel Xeon com 2Gbs de RAM e 80 Gbs de disco, totalizando 176 2Ghz Xeon CPUs, 176 Gbs de RAM e 7 Tbytes de espao de disco, estava sendo oferecido a US$278.000. Ao mesmo tempo, um servidor baseado em x86 tpico contm oito 2Ghz Xeon CPUs, 64 Gbs de RAM e 8 Tbytes de espao de disco, custando US$758.000, ou seja, o servidor custa aproximadamente trs vezes o valor da soluo com computadores mais simples, e tem 22 vezes menos CPU, um tero da RAM e pouca diferena de espao em disco. A diferena de custo costuma ser justificada pela maior banda de interconexo e confiabilidade do servidor, porm a arquitetura de alta redundncia do Google torna isso desnecessrio.

18

Tendncias A capacidade instalada de energia nos data centers, seu custo associado e problemas de resfriamento tm sido assuntos recorrentes em artigos sobre a arquitetura do Google, o que demonstra grande preocupao da empresa nesse aspecto. O TCO (Total Cost of Ownership) de um cluster de grande escala possui quatro componentes principais: TCO(Cluster) = preo do hardware + energia+ operao + software O Google possui um perfil de TCO diferente da maioria das empresas, pois seu custo de software reduzido devido ao fato dele produzir internamente tudo o que utiliza, alavancando o que est disponvel pela comunidade open-source. Dessa forma, o foco torna-se o hardware e os custos relacionados a energia.

CMP A soluo para computao eficiente. A utilizao de chip multiprocessing uma das solues adotadas para reduzir o consumo de energia. CMPs so eficientes em termos de energia devido ao progresso tecnolgico alcanado nos ltimos anos. Por exemplo, recentemente Intel e AMD introduziram projetos CMP com um package que aproximadamente o mesmo usado nos single-cores. Por exemplo, o Opteron dualcore possui performance 1.8 vezes melhor do que a verso single-core, com um consumo de energia apenas 7% pior. De fato, esta a primeira vez na histria em que h um investimento massivo para aumento da eficincia dos processadores em termos de energia. Infelizmente, a venda de CMPs ainda apresenta alguns empecilhos, tais como: Marketing: Megahertz (MHz) uma unidade de medida mais fcil de entender e de comunicar (e portanto, mais fcil de vender).

19

Threads no esto em todo lugar: ainda existem muitas aplicaes que precisam ser migradas para ambientes de processamento paralelo. Alm disso, existe um certo receio por aplicaes paralelas, dado que elas so muito mais complexas de serem construdas e mantidas.

Entretanto, conforme afirmado por Barroso, existem diversos avanos na rea de compiladores e bibliotecas para facilitar a vida dos desenvolvedores.

9. Implementaes 9.1 Beowulf


Um dos mais notveis avanos tecnolgicos dos dias atuais, tem sido o crescimento da performance computacional dos PCs (Computadores Pessoais). A verdade que o mercado de PCs maior que o mercado de workstations, permitindo que o preo de um PC decresa, enquanto sua performance aumenta substancialmente, sobrepondo, em muitos casos, a performance de estaes de trabalho dedicadas. O cluster Beowulf foi idealizado pelos seus desenvolvedores com o objetivo de suprir a crescente e elevada capacidade de processamento em diversas reas cientificas com o objetivo de construrem sistemas computacionais poderosos e economicamente viveis. Claro que a evoluo constante do desempenho dos processadores tem colaborado e muito na aproximao entre PCs e Workstations, a diminuio do custos das tecnologias de rede e dos prprios processadores e o sistema operacional aberto e gratuito, como o GNU/Linux em muito influenciam as pesquisas para melhoria desta nova filosofia de processamento de alto desempenho em clusters. O Beowulf foi fundamentado em 1994 pela NASA, com a finalidade de processar as informaes espaciais que a entidade recolhia. O que o distingue dos outros tipos so as seguintes caractersticas (que so aplicadas de acordo com a finalidade do cluster): A conexo dos ns pode ser feita por redes do tipo Ethernet (mais comum); Existe um servidor responsvel por controlar todo o cluster, principalmente

quanto distribuio de tarefas e processamento (pode haver mais de um servidor, dedicado a tarefas especficas, como monitorao de falhas). Este servidor chamado de Front-end; obsoletos; No necessrio usar equipamentos prprios para clusters. Basta equipamentos comuns a redes e os tradicionais PCs; isso faz com que seu custo seja baixo. Uma caracterstica chave de um cluster Beowulf, o software utilizado, que de elevado desempenho e gratuito na maioria de suas ferramentas. Podemos citar os sistemas operacionais GNU/Linux e FreeBSD sobre os quais esto instaladas as diversas ferramentas que viabilizam o processamento paralelo, como o caso das APIs MPI e PVM. Isto permitiu fazer alteraes no Podem-se usar computadores comuns, inclusive modelos considerados

20

sistema operacional Linux para dot-lo de novas caractersticas que facilitaram a implementao para aplicaes paralelas. O sistema dividido em um nodo controlador denominado front-end (particularmente denomino de n mestre), cuja funo controlar o cluster, monitorando e distribuindo as tarefas, atua como servidor de arquivos e executa o elo entre os usurios e o cluster. Grandes sistemas em cluster podem distribuir diversos servidores de arquivos, n de gerencia pela rede para no sobrecarregar o sistema. Os demais ns so conhecidos como clientes ou backends (bem eu denomino ns escravos), e so exclusivamente dedicados para processamento das tarefas enviadas pelo n controlador, e no existe a necessidade de teclados e monitores, e eventualmente at sem a utilizao de discos rgidos (boot remoto), e podem ser acessadas via login remoto (telnet ou ssh).

Cluster Bewoulf

9.2 OpenMosix
O projeto Mosix - Multicomputer Operating System unIX - um sistema operacional distribudo, desenvolvido originalmente pelos estudantes do professor Amnom Barak, na Universidade Hebrew em Jerusalm, Israel. Foi utilizado nos anos 80 pela fora rea americana para a construo de um cluster de computadores PDP11/45. O projeto foi desenvolvido sete fases, para diferentes verses de UNIX e arquiteturas de computadores. A primeira verso para PC foi desenvolvida para o BSD/OS. A ltima verso foi para o sistema operacional Linux em plataforma Intel. O OpenMosix uma extenso do projeto Mosix, baseado no GPLv2, iniciado em 10 de fevereiro de 2002, coordenado pelo Ph.D Moshe Bar, para manter os privilgios desta soluo Linux para cluster disponvel com software de cdigo aberto.

21

Este agrupamento de mquinas Linux o que poderamos classificar de verdadeiro sistema de imagem simples (SSI - Single System Image), pois j clara que a idia de que no se tm um cluster verdadeiro enquanto no existir um SSI. Podemos ter como referencia os primeiros clusters SSI como o IBM SysPlex e o cluster DEC. Em um cluster DEC voc d um telnet para um endereo no cluster e essa chamada ser atendida por qualquer n do cluster, e o usurio no precisa se preocupar com qual n que ir atender esta chamada, e qualquer programa iniciado pelo usurio ser executado no n que possuir maior disponibilidade de recursos para atender ao programa. O OpenMosix uma extenso do ncleo do sistema operacional Linux, que faz com que um cluster de computadores se comporte como um grande e nico supercomputador atravs da utilizao de migrao preemptiva de processos e balanceamento dinmico de carga. A implementao da Migrao Preemptiva de processos capaz de migrar qualquer processo do usurio, em qualquer instante e para qualquer n disponvel de maneira transparente. Para atingir um melhor desempenho este controlado por Algoritmos de Balanceamento Dinmico de Carga e de preveno contra falta de memria. Estes algoritmos so projetados para responder dinamicamente as variaes da utilizao dos recursos nos diversos ns. Isto garante que o cluster se comporte muito bem, seja numa configurao com poucas ou com muitas mquinas, propiciando uma maior escalabilidade. Ou seja, se o programa que estamos rodando em uma mquina consumir muitos recursos dela, o sistema varre toda e rede e procura uma mquina mais "disponvel no momento" em termos de memria e CPU, e desloca seu "programa" ou parte dele para ser executado remotamente. Com isso, o sistema ganha desempenho. Estes algoritmos so descentralizados, ou seja, no existe a existe a configurao de Controlador Mestre e ns escravos como ocorre no Cluster Beowulf para computao paralela. Cada n um mestre para os processos que so criados localmente, e um servidor para processos remotos, migrados de outros ns do cluster. Isto significa que podemos acrescentar ou remover as mquinas do cluster em qualquer momento, com um mnimo de distrbio no sistema. Este cluster possui tambm algoritmos de monitoramento que identificam a velocidade de cada n, a carga da CPU e a memria livre disponvel, como tambm como est a comunicao interprocessos IPC e a velocidade de acesso de cada processo. Como o OpenMosix opera de forma silenciosa e as operaes so transparentes para as aplicaes, ou seja, pode-se executar aplicaes seqenciais e paralelas como se fosse um nico computador SMP (Symmetric Multi-Processor - Multiprocessamento simtrico). Voc no precisa conhecer onde seus processos esto sendo executados, nem se preocupar com que os outros usurios esto fazendo na rede por isso ele usa o acrnimo "fork and forget". O que ele faz , pouco tempo depois de iniciar os processos, o OpenMosix envia-os para um melhor computador da rede, o OpenMosix continua a monitorar os novos processos e os demais, e poder moviment-los pelos computadores com pouca carga de trabalho maximizando o trabalho e melhorando a performance.

22

Aplicaes que se beneficiam com o OpenMosix:

Processos CPU-bound: processos com longos tempos de

execuo e baixo volume de comunicao entre processos, ex: aplicaes cientficas, engenharia e outras aplicaes que demandam alta performance de computao.

Grandes compilaes. Processos I/O bound misturados com processos da CPU:

executados atravs do servidor de arquivos, usando o sistema de arquivos distribudos do OpenMosix, o MFS (Mosix File System) e o DFSA (Distributed File System Architeture).

9.3 Microsoft Cluster Server

Banco de dados que no usem memria compartilhada. Processos que podem ser migrados manualmente.

O Microsoft Cluster Server (MSCS) um software designado para possibilitar que servidores trabalhem juntos na forma de cluster, provendo tolerncia a falhas e a disponibilidade para as aplicaes, ou para o poder de processamento paralelo no caso de computao de alta performance, como num supercomputador. Surgiu com o Windows NT Server 4.0, Enterprise Edition, sendo constantemente atualizado, como nas verses do Windows 2000 Advanced Server, Windows 2000 Datacenter, Server, Windows Server 2003 Enterprise Edition. Podemos ainda destacar o recenter Windows Server 2008 que trs muitas funes novas para clusterizao. Apesar de todas essas verses, apenas o Windows Compute Cluster Server 2003 possui tecnologia para computao de alta performance. O Windows Compute Cluster Server 2003, foi lanado em junho de 2006 e oferece suporte a vrios cenrios diferentes de implantao com base nas diferentes configuraes do sistema que o administrador seleciona antes da implantao. A implantao simplificada pelo Compute Cluster Administrator, que fornece uma interface que orienta os administradores pelo processo aps a tomada das decises de implantao. designado para gerenciar a execuo de tarefas em um grande numero de computares unidos com velocidades aproximadas a de um supercomputador, sendo que possuiu um n controlador e vrios outros a este subordinados. Utiliza-se da biblioteca Microsoft Messagint Passing Interface v2 (MS-MPI) para comunicao entre os ns na rede. Possiblitando a comunicao inter-processos que podem estar espalhados entre os n processadores do cluster. As aplicaes devem ser programadas de acordo com uma interface definida, que possui cerca de 160 funes, que aps programadas sero executadas por um job launcher que gerencia a

23

execuo de tarefas no cluster. A biblioteca MS MPI foi construda de forma a ser compatvel com a MPI2 (open source), com algumas excees relativas a segurana.

10. Concluso
As tecnologias de Clustering possibilitam a soluo de diversos problemas que envolvem grande volume de processamento. As aplicaes que um cluster pode ter so diversas, indo desde a simples melhora no desempenho de um determinado sistema ou at o processamento de pesquisas cientficas complexas. Os clusters tm tido uma grande penetrao no mercado de alta performance de computao, na qual tradicionalmente dominado por 'grandes caixas de ferro' fabricados pela IBM, Sillicon Graphics, Cray entre outros. A expectativa que os clusters baseados em

microcomputadores tero rpido desenvolvimento para suprir as necessidades de um processamento mais sofisticado e que muitas novas aplicaes paralelas podero ser desenvolvidas, como aplicaes para reas financeiras e bancos de dados distribudos. Assim percebemos que os clusters possibilitam que institutos de pesquisa e Universidades desenvolvam e executem suas aplicaes paralelas a um custo substancialmente mais baixo que supercomputadores equivalentes. Este ambiente facilmente implementado em laboratrios j existente criando novas perspectivas para os alunos envolvidos em tecnologia explorarem uma rea em ascenso, e desenvolver todos os tpicos de tecnologias envolvidas na construo deste projeto. Um exemplo no Brasil, um cluster que foi desenvolvido em 2003 por um aluno da Universidade Estadual Paulista (Unesp), de So Paulo. Baseado no tipo Beowulf, este cluster ficou bastante conhecido, por ajudar na pesquisa de medicamentos para o tratamento da tuberculose. O valor gasto neste projeto foi 60 mil reais. Se tivesse sido utilizado um supercomputador de capacidade equivalente, os gastos seriam at 17 vezes maior. S por este exemplo, possvel ver os vrios benefcios do Clustering. Processamento eficiente, custo baixo, ampla gama de aplicaes.

11 REFERNCIAS BIBLIOGRFICAS
BARROSO, Luiz. DEAN, Jeffrey. Web Search for a Planet: The Google Cluster Architecture. Disponvel em: http://labs.google.com/papers/googlecluster.html Acessado em: 08/06/2008 Comunidade Fedora Brasil. Supercomputadores substituem http://www.fedora.org.br/article185.html, Acessado em: 08/06/2008 grid na Petrobrs.

Mammoth Corporation. http://www.supercomputer.com.br/, Acessado em: 08/06/2008 PITANGA, Marcos. Construindo supercomputadores com Linux. Brasport, 2004. TANENBAUM, A.S. Organizao Estruturada de Computadores - 5 edio, 2006, Ed. PrenticeHall; Top 500 Supercomputers list. Disponvel em: www.top500.org, Acessado em: 08/06/2008.

24

UNESP, Dirio Web. Aluno faz Unesp economizar US$ 1 millho. Disponvel http://www.biocristalografia.df.ibilce.unesp.br/press/diarioweb_06_01_03.php, Acessado 08/06/2008

em: em:

25