Você está na página 1de 85

UNIVERSIDADE FEDERAL DO PAR CENTRO TECNOLGICO PROGRAMA DE PSGRADUAO EM ENGENHARIA ELTRICA

JOHNNY MARCUS GOMES ROCHA

CLUSTER BEOWULF: ASPECTOS DE PROJETO E IMPLEMENTAO

TM - ________/____

UFPA CT - PPGEE CAMPUS UNIVERSITRIO DO GUAM 66075-900 - BELM-PAR - BRASIL

UNIVERSIDADE FEDERAL DO PAR CENTRO TECNOLGICO PROGRAMA DE PS GRADUAO EM ENGENHARIA ELTRICA

CLUSTER BEOWULF: ASPECTOS DE PROJETO E IMPLEMENTAO

AUTOR: JOHNNY MARCUS GOMES ROCHA

DISSERTAO SUBMETIDA AVALIAO DA BANCA EXAMINADORA APROVADA PELO COLEGIADO DO PROGRAMA DE PS-GRADUAO EM ENGENHARIA ELTRICA DA UNIVERSIDADE FEDERAL DO PAR E JULGADA ADEQUADA PARA OBTENO DO GRAU DE MESTRE EM ENGENHARIA ELTRICA COM NFASE EM COMPUTAO APLICADA.

APROVADA EM ______/______/____. BANCA EXAMINADORA Prof .Dr Luiz Afonso Henderson Guedes de Oliveira ORIENTADOR

Prof . Dr. Carlos Renato Lisboa Francs CO-ORIENTADOR

Prof.Dr Joo Crisstomo Weyl Alburquerque Costa MEMBRO - UFPA

Prof. Dr. Walter Barra Jnior MEMBRO UFPA VISTO ___________________________________________ Prof.Dr Roberto Clio Limo de Oliveira Coordenador do PPGEE - UFPA
UFPA CT - PPGEE CAMPUS UNIVERSITRIO DO GUAM 66075-900 - BELM-PAR - BRASIL

UNIVERSIDADE FEDERAL DO PAR CENTRO TECNOLGICO PROGRAMA DE PS GRADUAO EM ENGENHARIA ELTRICA

JOHNNY MARCUS GOMES ROCHA

CLUSTER BEOWULF: ASPECTOS DE PROJETO E IMPLEMENTAO

DISSERTAO

SUBMETIDA

BANCA

EXAMINADORA DO PROGRAMA DE PS GRADUAO EM ENGENHARIA ELTRICA DA UFPA PARA A OBTENO DO GRAU DE MESTRE EM ENGENHARIA ELTRICA

UFPA CT - PPGEE CAMPUS UNIVERSITRIO DO GUAM 66075-900 - BELM-PAR - BRASIL

AGRADECIMENTOS

A Deus, pela vida. Aos meus pais pela forma que me educaram e me mostraram o quanto importante correr atrs dos meus objetivos com fidelidade, perseverana e integridade. A minhas irms: Jeanny e Marla Aos meus afilhados e sobrinhos: Carol, Lucas e Joo Vitor. A minha famlia, pelos excelentes momentos que passamos juntos. Aos meus primos, que sempre me apoiaram nas horas difceis. Aos meus amigos de todas as horas Andreya, Abelardo E Mario (que me deu a honra de ser seu compadre) devo a eles e suas famlias meus sinceros agradecimentos. A minha namorada Isabela, sempre. Aos meus colegas de turma que direta ou indiretamente me ajudaram e contriburam para a concluso deste trabalho. Agradeo as minhas me adotivas : Tia Ins e sua famlia que me acolheram como um filho e a tia Rosria que sempre me ajudou. Ao meu orientador, Luiz Affonso , pela pacincia e confiana depositada. Ao meu co-orientador Carlos Renato. Aos professores Carlos Lenidas, Carlos Tavares, Roberto Limo e Joo Crisstomo por terem contribudo para a minha formao. Agradeo a todos os amigos do Lacos: Alessandra, Mrcia, Leonardo, Eduardo, Ana Cludia, Reinaldoe Iomara. Agradeo a todos os professores do Lacos: Rosana, Nick, Barra, Limo e Tavares.

iv

RESUMO
Este trabalho aborda o problema de demanda computacional exigido para resoluo de grandes problemas, tanto na rea de engenharia como em outras reas das cincias. Uma das formas de solucionar esta carncia atravs de sistemas de computao paralelos que utilizam tcnicas de paralelismo de software (uso de bibliotecas de comunicao, como MPI e PVM) e de hardware (mquinas de arquitetura paralela SMP,NUMA e MIND). O enfoque deste trabalho sobre os principais conceitos envolvidos no projeto de sistemas de computao paralela, em especial a uma soluo de baixo custo desenvolvida em 1994 nos laboratrios da NASA, chamada Beowulf. Esse tipo de arquitetura utiliza PCs comuns e software livre conectados por uma rede simples para paralelizar programas, aumentando a eficincia e diminuindo o tempo de execuo. demonstrado um procedimento de projeto baseado neste tipo de arquitetura paralela, especificando-se os principais fatores que influenciam no seu

desenvolvimento, como : seleo do modelo de processador e seleo da tecnologia de rede a ser empregada. So descritas as principais vantagens e desvantagens e algumas ferramentas de softwares que podem ser utilizados nesse tipo de arquitetura. Para efeito de validao do procedimento foi projetado e implementado um cluster de oito mquinas.

CAPITULO 1 - INTRODUO

So cada vez mais freqentes as aplicaes que necessitam de enorme capacidade computacional, que no pode ser obtida em simples mquinas seqenciais com uma nica unidade de processamento central (CPU). Apesar de ainda ser possvel melhorar o

desempenho dos processadores, a atual evoluo acabar por se deparar com diversas restries como, por exemplo, a dimenso fsica dos componentes, a velocidade da luz, as leis da Termodinmica, e o custo, que poder se revelar excessivo com a aproximao desses limites. Por isso, a uma soluo alternativa econmica e tecnologicamente vivel consiste na interligao de mltiplos processadores de forma a permitir a execuo cooperativa de tarefas em paralelo com um objetivo comum. A origem da computao paralela como substituta do processamento seqencial pode ser definido por dois fatores: A computao paralela revelou-se uma alternativa vivel na resoluo do ponto de estrangulamento que constitui um nico processador num sistema; O custo de um sistema paralelo consideravelmente inferior ao de maciamente paralelo com desempenho similar, uma vez que o preo dos componentes so uma funo da sua capacidade. Porm, o emprego eficiente de computao paralela requer a adequao de dois aspectos fundamentais: infra-estrutura computacional e algoritmo paralelo. A infraestrutura diz respeito ao hardware paralelo, que so as unidades de processamento e o suporte de comunicao entre as unidades de processamento, que a infra-estrutura de software onde o algoritmo paralelo executado. O algoritmo paralelo advm da modelagem do problema e se caracteriza como sua soluo computacional, assim necessrio que se tenha em mente j na modelagem do problema a necessidade do paralelismo da soluo. H vrias solues possveis tanto em termos de infra-estrutura paralela de hardware e software quanto em termos da obteno do algoritmo paralelo, sendo que a escolha depender de vrios aspectos, que podem ser resumidos em complexidade da modelagem e relao custo-benefcio da infra-estrutura computacional.

1.1 - SUPERCOMPUTAO

Supercomputadores so definidos como os mais rpidos e poderosos computadores em termos de capacidade de processamento e dispositivos de E/S (Entrada/Sada). Supercomputao como um gnero especfico da informtica, surgiu no meio da dcada de 1970 quando um engenheiro chamado Seymour Cray uniu um grupo de chips de computador disponveis e os transformou em um computador comercial cujo desempenho nunca tinha sido visto antes [1]. Seymour Cray j utilizava o conceito de processamento vetorial [2]. Seu primeiro computador foi o CRAY-1, fabricado em 1976 e era capaz de atingir o pico de 133 Mflops1. Em 1985 lanou o CRAY-2, com o desempenho de 1,9 Gflops. Na poca este computador tinha a maior memria do mundo com 2 Gigabytes, quantidade at em ento absurda, mesmo para nossa realidade. Nos dias de hoje as principais mquinas que a empresa CRAY comercializa so o CRAY T-90 com 32 processadores vetoriais em paralelo e chega a 60 Gflops. Em seguida, est o CRAY T3E que oferece 2048 processadores, permitindo alcanar 2,5 Teraflops. Antes que Cray comeasse a construo de seus computadores, o projeto e fabricao de sistemas de computao de alto-desempenho eram normalmente feitos por grandes companhias como IBM, Control Data Corporation (CDC) e Univac para satisfazer s necessidades de clientes especiais como o governo dos EUA ou companhias de petrleo. Os computadores eram grandes e caros. Para funcionar, eles precisavam de sistemas especiais de energia e refrigerao, para impedir que aquecessem demais. A utilizao dessas mquinas estava limitada realmente a grandes aplicaes estritamente numricas, como anlise de dados de campo de petrleo, projeto de armas nucleares e quebra de cdigos secretos. Dos anos cinqenta at os anos setenta, do sculo XX, a metodologia e projeto de computadores mudou pouco. As grandes companhias daquele tempo, IBM, Control Data, Data General e Digital, tiveram vrios modelos que foram fabricados para nichos de mercado, como computao de negcio, computao cientfica e bancos de dados, mas os projetos delas eram normalmente semelhantes (para uma determinada linha de mquinas
1

Mflops Milhes operaes de ponto flutuante por segundo

em uma determinada companhia). Eles estavam interessados em vender nmeros grandes de mquinas ao mais baixo custo. Por exemplo, a Digital teve mais de vinte modelos diferentes de seu PDP-11, cada um basicamente igual a todos os outros, com diferenas pequenas em um modelo para satisfazer as necessidades das pessoas que usavam a mquina para equipamento de laboratrio, ou com caractersticas para quem usasse a mquina em uma empresa. No comeo da dcada de 1970, uma pequena companhia de semicondutores chamada Intel mudou a situao, desenvolvendo algo que eles chamaram de microprocessador. A Intel colocou todos os componentes de um computador (a Unidade Lgica - Aritmtica, o controlador de memria e o controlador de E/S) em um pacote minsculo, menor que o dimetro de uma moeda de dez centavos. At ento, todos os computadores eram muito grandes. Antes da inveno do microprocessador, os computadores eram projetados da base ao topo como conhecida a tcnica de fabricao por componentes discretos. Computadores modernos so compostos de colees chamadas circuitos integrados (CIs), que significa um grande nmero de funcionalidades empacotada em um nico chip. Tecnologia de componentes discretos exatamente o oposto. O microprocessador Intel 4004 teve aproximadamente 5,000 transistores que compuseram toda a estrutura de circuito eletrnico exigida para uma CPU (Unidade Central de Processamento), controlador de memria, e dispositivos de E/S. Um mainframe ou minicomputador teria a mesma funcionalidade bsica dispersa em trs equipamentos do tamanho de um refrigerador. Talvez o fato mais importante foi que com a velocidade do supercomputador, projetistas de circuito de computador poderiam simular computadores novos e mais rpidos, em tempo real [2]. Cray tinha estabelecido que havia um mercado para computadores ultra-rpidos que encontraram uma larga variedade de negcios e problemas de pesquisa. Companhias como a CDC, a IBM e uma gama de iniciantes quiseram ajudar a explorar a nova tendncia em simulao e visualizao. Nos anos 80, havia mais de vinte companhias que fizeram vrios tipos de mquinas tipo supercomputador, inclusive a Cray Research, IBM, Kendall Square Research, Dataflow, e outros. Para satisfazer s necessidades deste mercado, surgiram sistemas de apoio computao de alto-desempenho, como discos que poderiam armazenar

trilhes de bytes de dados e sistemas de rede de alta velocidade para assegurar que as mquinas poderiam ser providas com dados e assim mantidas ocupadas. Ao mesmo tempo, estavam sendo desenvolvidos microprocessadores novos e mais rpidos, que aumentaram o desempenho dos computadores pessoais. Conduzidos pela Intel, que desenvolveu o primeiro microprocessador no incio dos anos 70, novas geraes de microprocessadores estavam ganhando as caractersticas dos mainframes. Companhias de estao de trabalho, como Sun Microsystems, trouxeram para o mercado sistemas de armazenamento mais rpidos e tudo isto comeou a corroer a distino entre pequenos computadores e mainframes, e antes de 1995 todas as companhias que se lanaram na corrida para a construo de supercomputadores saram do negcio ou foram absorvidos por companhias maiores como a IBM e Sun Microsystems. Os supercomputadores so mquinas extremamente caras, mas que oferecem um grande desempenho. Essa caracterstica as torna inacessveis para empresas de mdio e pequeno porte, universidades e alguns centros de pesquisa, no s devido ao preo de aquisio do equipamento, mas tambm por causa dos custos de manuteno e licena de software para operar essas mquinas. Estas so algumas razes que os clusters de computadores tm se tornado a cada dia mais popular.

1.2 - O EFEITO DOWN-SIZE

A indstria de computadores ingressou nos anos 90 com estaes de trabalho mais rpidas que os mainframes da dcada anterior. Ao mesmo tempo, computadores pessoais ficaram mais poderosos. Os preos tambm caram, um computador pessoal passou a custar 10 vezes menos que uma estao de trabalho com mesma capacidade de computao. Porm, com o advento de computadores pessoais poderosos e estaes de trabalho que podem ter mltiplas CPUs, os supercomputadores se transformaram em computadores extremamente restritos que s esto disponveis a grupos com oramentos muito grandes. Ao longo dos anos 80, pesquisadores em vrias universidades tentaram desenvolver estaes de trabalho para diminuir a lacuna entre a necessidade de processamento e o custo. Os resultados foram obtidos na forma de sistemas operacionais inovadores como Spring, Chorus e Amoeba [2]. Estes sistemas trouxeram inovaes como o transporte de mensagens

e a repartio das tarefas, que conduziu diretamente ao desenvolvimento dos sistemas de processamento abordados neste trabalho. Dois aspectos impediram o seu avano: o licenciamento de software e o custo do hardware. A maioria destes sistemas foi feita baseada em verses comerciais do sistema Unix e o hardware era de estaes de trabalho de companhias como Sun Microsystems, Apollo e Digital que ainda eram extremamente caros quando comparados com os PCs comuns.

1.3 - PROJETO DO CLUSTER BEOWULF

No meio da dcada de 1990, o desempenho de computadores pessoais comeou a se equiparar com o desempenho de estaes de trabalho de alto-desempenho e o custo de equipamento de rede de computadores diminuiu. A disponibilidade de hardware e equipamentos de rede mais baratos encontrou um sistema operacional gratuito e open source, sob os termos de licena GNU Public License (GPL) [24] escrito por um estudante de faculdade de Helsinki, Finlndia, conhecido pelo nome de Linus Torvalds. O sistema operacional de Linus, chamado de Linux [24], era um clone do sistema operacional Unix desenvolvido pelos Laboratrios Bell da AT&T que d suporte no mundo inteiro a instalaes de computao de grande porte. Por causa da compatibilidade do Linux com o Unix, e do fato de que este pudesse ser executado tanto em hardware poderoso quanto em hardware de baixo custo, os cientistas encontraram uma maneira para satisfazer suas necessidades de poder de computao sem ter que comprar mquinas caras ou supercomputadores. Os clusters Beowulf resultaram de um projeto iniciado pela NASA no vero de 1994, no centro de pesquisas CESDIS, localizado no Goddard Space Flight Center, no mbito do projeto Earth and Space Sciences cujo objetivo primrio consistia em determinar a aplicabilidade de arquiteturas de processamento paralelo a problemas do domnio das cincias espaciais, especialmente para o tratamento de dados recolhidos por satlite, a preos acessveis. O primeiro destes clusters foi construdo por Thomas Sterling e Don Becker e consistia em 16 ns com processadores Intel 486 Dx4 a 100Mhz interligados por uma tecnologia de rede Ethernet a 10 Mbits do tipo channel bonded [37] com dois

barramentos. Desde ento diversas instituies tm construdo os seus prprios clusters Beowulf. Atualmente existem clusters deste tipo com mais de um milhar de ns. O sistema Beowulf [14], como foi chamado o cluster de Linux, se tornou uma ferramenta popular no mundo inteiro para cientistas que precisam de grande poder de computao para modelagens matemticas e outras aplicaes. O nome Beowulf no se trata de nenhum acrnimo com significado tcnico, apenas o nome de heri lendrio da literatura inglesa, que foi escolhido pelos criadores para batizar seu projeto. Beowulf uma arquitetura de computador que pode ser usada para computao paralela. um sistema que normalmente consiste em ns clientes (so computadores, porm no so equipados com monitor de vdeo, teclado e mouse, possuindo somente placa-me, microprocessador, memria, disco rgido e placa de rede) e um n servidor (tambm um computador, mas o mesmo funciona como a interface para o mundo exterior, por este motivo ele equipado com: monitor de vdeo, placa de vdeo, teclado e mouse), conectados por uma rede Ethernet ou algum outro tipo de rede local. O sistema construdo usando-se componentes de hardware largamente comercializados, placas de rede e concentradores (Hubs ou swicthes). No contm nenhum componente de hardware desenvolvido especialmente para um propsito especifico e trivialmente reproduzvel. Beowulf tambm usa software livre como o sistema operacional Linux e bibliotecas para comunicao em rede, como Parallel Virtual Machine (PVM) e Message Passing Interface (MPI). O n servidor controla o cluster inteiro e distribu os processos aos ns clientes. importante notar que mesmo utilizando-se de software disponvel livremente a arquitetura Beowulf to sofisticada, robusta e eficiente quanto qualquer outra comercial. Uma caracterstica chave do Beowulf o uso do sistema operacional Linux, assim como de bibliotecas para troca de mensagens (PVM e MPI) de livre distribuio. Isto permite fazer alteraes no Linux para dot-lo de novas caractersticas que facilitam a implementao de aplicaes paralelas. Beowulf no um pacote de software especial ou uma nova topologia de rede. Beowulf uma tecnologia de como agrupar computadores baseados em Linux para formar um supercomputador paralelo baseado em rede de computadores. Atualmente h muitos pacotes de software como: modificaes no ncleo do Kernel do Linux, bibliotecas de

comunicao e ferramentas de configurao que tornam a arquitetura Beowulf mais rpida, mais fcil de configurar e muito mais utilizvel.

1.3.1

- FINALIDADES DO PROJETO BEOWULF

Estaes de trabalho tpicas no dispunham de armazenamento suficiente para o volume de dados requerido, dependendo do uso de servidores de arquivos em rede. O resultado era um tempo de resposta elevado e uma sobrecarga de recursos compartilhados. O projeto Beowulf se props a resolver este problema. Embora j fosse corrente na poca o uso de estaes de trabalho em rede para processamento, formando o que se convencionou chamar de cluster of workstations (COW) ou network of workststions (NOW), o projeto Beowulf foi criado usando o paradigma mais recente de Pile-of-PCs (PoPC) - pilhas de PCs - enfatizando: uso de componentes disponveis no mercado; processadores dedicados, ao invs de usar tempo ocioso de estaes; uma rede de sistema privada (system area network -- SAN); nenhum componente feito sob encomenda, de modo a facilitar a replicao; E/S escalvel; uma base de software disponvel livremente e uso de ferramentas de computao distribuda, disponveis livremente com alteraes mnimas; Como vantagens desta filosofia de trabalho, os autores enumeram: Nenhum fornecedor possui os direitos sobre o produto. Sistemas podem ser construdos usando componentes de diversas origens, graas ao uso de interfaces padro, tais como IDE, PCI e SCSI. Pode-se tomar vantagem das rpidas evolues tecnolgicas, permitindo adquirir sistemas mais recentes, melhores, a menores preos, capazes de continuar rodando o mesmo software. Os primeiros sistemas construdos baseavam-se no processador 80486DX4-100 enquanto os mais recentes usam Pentium III/IV ou Athlon.

Os sistemas podem ser montados e modificados ao longo do tempo, de acordo com as necessidades e recursos (inclusive financeiros) do usurio, sem depender de configuraes disponveis de um vendedor. Em resumo, a vantagem do sistema Beowulf, est no fato de que sistemas diferentes

podem fazer parte do mesmo cluster, desde sistemas de alto desempenho at refugos como computadores Intel 486, de modo a acrescentar poder de computao barata a um cluster.

1.3.2

- APLICAES DE UM CLUSTER BEOWULF

O crescimento da informtica e da Internet tiveram um grande efeito no pblico. Computadores de alto-desempenho e sistemas como clusters de Linux podem ter o mesmo efeito, em particular nas pessoas que fazem ferramentas de informao e ambientes de simulao. A rea de aplicao dos clusters muito diversificada. So geralmente as aplicaes seqenciais muito grandes, que necessitam de enorme quantidade de memria e tempo de enorme de processamento. Tradicionalmente, o desenvolvimento de computadores tem sido motivado por simulaes numricas de sistemas complexos como analise meteorolgica, simulao de dispositivos mecnicos, circuitos eletrnicos, reaes qumicas,

sequenciamento de DNA e aplicaes que podem manipular grandes quantidades de dados para extrair alguma espcie de informao ou conhecimento (Data Mining). Com um cluster paralelo de Linux possvel construir um servidor de arquivos que mais rpido que a maioria dos servidores comerciais. Isso pode ser feito por causa dos sistemas mltiplos e conexes mltiplas de rede inerente nestes clusters, sendo til para aplicaes como sistemas de banco de dados, onde os principais gargalos de desempenho acontecem quando no podem ser movidos dados efetivamente do disco para memria, ou em aplicaes de web, onde a velocidade de transao crtica para o sucesso de uma aplicao. Algumas outras reas que podem se beneficiar desse modelo de sistema: Servidores Web de alto-desempenho um cluster pode balancear a carga e aumentar a capacidade de resposta, quando o sistema estiver sob intensa utilizao;

Base de Dados pesquisas intensivas em base de dados podem consumir um certo tempo em sistemas este comuns. tempo, A utilizao de de clusters pode reduzir

consideravelmente

alm

apresentarem

uma

arquitetura

completamente adequada s topologias de Sistemas de Bases de Dados Paralelos do tipo Shared-Nothing Aplicaes com inteligncia artificial e automao rea que utiliza algoritmos que ocupam os recursos do sistema de uma forma intensiva e exponencial em relao dimenso do problema como reconhecimento de padres, redes neurais e mquinas de inferncia; Engenharia Gentica atravs do sequenciamento de DNA; Computao Grfica Diminuir o tempo de renderizao de imagens; Analise de Elementos Finitos clculo de estruturas, navios, avies e veculos espaciais; Explorao Ssmica possibilidade de analisar grande conjunto dados gerados por levantamentos sismolgicos e mapeamento de satlite; Problemas de pesquisa bsica em qumica, fsica e engenharia, tais como mecnica quntica, estatstica, qumica de polmeros, crescimento de cristais, dinmica molecular, distribuies de conexes em circuitos VLSI entre outros; Pesquisas militares projetos de novas armas, simulao dos efeitos causados por novas armas, processamento de sinais de radares para comando de msseis antibalsticos e gerao automtica de mapas; Obviamente, foram apresentadas algumas aplicaes que podem ser feitas com clusters de Linux e como eles surgiram. Com todo o desenvolvimento na rea de informtica, ainda h muitas aplicaes que sero destinadas eventualmente para uso em clusters. Em 1974, ningum poderia predizer o efeito que Cray traria ao desenvolvimento nas reas de fsica, biologia, qumica, e microeletrnica. A disponibilidade de tais sistemas de alto-desempenho fora dos centros de dados tradicionais, onde normalmente so achados os supercomputadores, trar um efeito profundo nas reas tanto de pesquisa quanto empresarial nos prximos anos.

1.4 - DIVISO DO TRABALHO

O presente trabalho pretende constituir uma introduo aos sistemas de processamento paralelo designados Clusters Beowulf, cuja proliferao tem crescido ltimos anos. Estes clusters tm-se revelado cada vez mais uma alternativa economicamente vivel aos sistemas paralelos de elevado desempenho tradicionais O restante do trabalho est dividido da seguinte forma: No Captulo 2 so apresentados os conceitos fundamentais sobre processamento paralelo, arquitetura paralelas, bem como uma anlise genrica de clusters de forma a poder enquadrar os Clusters Beowulf. No Captulo 3 so analisados os conceitos dos Sistemas Beowulf, aspectos de hardware e tecnologias de rede disponveis. No Captulo 4 so feitas consideraes sobre os aspectos de software que podem ser utilizados para administrao e programao para cluster. No Capitulo 5 definido um padro para o projeto e implementao Clusters Beowulf, exemplificando com o cluster LANE02-AMAZNIA. Finalmente, no Captulo 6 so apresentadas concluses obtidas no trabalho e sugestes para trabalhos futuros.

10

CAPTULO 2 - CONCEITOS GERAIS PARA CLUSTER

Este captulo aborda alguns dos assuntos fundamentais envolvidos em computao paralela e conceitos genricos sobre clusters. Clusters so um grupo de computadores que funcionam interligados em rede de forma a executar problemas grandes quebrando-os em partes menores. H vrias estratgias diferentes que podem ser utilizadas para agrupar computadores. Tambm h vrios pacotes de software diferentes que podem ser usados para fazer este trabalho no Cluster. Mas inicialmente sero definidos os conceitos principais para o projeto destes sistemas.

2.1 CONCEITO SOBRE PARALELISMO Paralelismo uma tcnica usada em tarefas grandes e complexas para obter resultados mais rpidos, dividindo-as em tarefas menores que sero distribudas em vrios processadores para serem executadas simultaneamente [6]. Paralelismo opera em dois nveis: paralelismo de hardware e paralelismo de software. Os principais motivos para se usar paralelismo so: aumentar o desempenho (reduzindo o tempo) no processamento, resolver grandes desafios computacionais, fazer uso de um ambiente distribudo para resoluo de tarefas e obter ganhos de desempenho. Existem complexidades pertinentes ao prprio paralelismo. Os resultados

(desempenho) podem no corresponder ao esforo (programao) empregado. Depende do programador a responsabilidade pelo algoritmo paralelo (vlido para ferramentas no automticas). O paralelismo pode se classificado de trs maneiras: paralelismo de dados, paralelismo funcional e paralelismo de objeto. Alm de operar em dois nveis: paralelismo de software e paralelismo de hardware 2.1.1 - PARALELISMO DE HARDWARE Em termos de unidade de processamento, paralelismo de hardware trata de melhorar o desempenho dos sub-componentes da CPU (a memria cache, pipeline e unidades de execuo mltiplas), podendo acelerar seu cdigo de execuo. Outro aspecto de paralelismo de hardware envolve sistemas multi-processados (SMP) para que trabalhem em um problema computacional de uma forma paralela. Sistemas que tm unidades de execuo mltiplas (SMP) permitem CPU tentar processar mais de uma instruo de cada vez, porque parte do processo de executar instrues
10

mltiplas inclui manter rastro das instrues que esto sendo executadas. Se, por alguma razo, a execuo de uma instruo levaria a CPU a parar o que est fazendo e se ramifica para algum outro lugar no programa, bastante possvel que todas as outras instrues que esto sendo trabalhadas em outras partes da CPU sejam invalidadas e descartadas. Embora parea um desperdcio de trabalho, a maioria dos programas de computao so entidades muito lineares. Programas bem-escritos (cdigo bem-aperfeioado por um compilador de alta qualidade) tm seus cdigos executveis binrios organizados de forma que este gaste o menor tempo possvel com desvios. Isto permite CPU trabalhar mais eficazmente; pr-processando as instrues que poderiam no ser executadas. H duas caractersticas nas CPUs modernas que permitem que estas suportem execues mltiplas: o cache e Pipeline. O Cache uma rea de memria, onde so armazenadas pores grandes de programas em antecipao a sua eventual execuo pela CPU. A memria cache da ordem de os enquanto a mais rpida que a memria principal do sistema trabalha em ns, tirar instrues do cache e coloc-las no pipeline de instruo s ligeiramente mais lento que acessar dados que esto dentro dos prprios registros da CPU. O Pipeline uma rea pequena de memria dentro da CPU onde so armazenadas as prximas instrues que sero executadas. Pipeline de instruo ajuda a manter o trabalho fluindo pela CPU e, para um cdigo aperfeioado, manter a CPU ocupada contanto que o cdigo no tenha que saltar para executar algo que est armazenado fora do cache. Estes componentes permitem aumentos significativos no desempenho de CPU. Tambm requerem muita inteligncia por parte do compilador para organizar o cdigo executvel de tal modo que a CPU tenha uma boa chance de poder executar instrues mltiplas simultaneamente. No importante que se entenda toda a teoria por de trs do nvel de paralelismo da CPU, mas com a finalidade de construir e operar um Cluster deveria se entender que um cdigo aperfeioado, junto com uma CPU eficiente, pode melhorar muito a velocidade das aplicaes. Paralelismo no Nvel de Sistema

Este nvel de paralelismo o ponto crucial para a computao de cluster. o paralelismo de ns mltiplos que esto coordenados para trabalhar em um problema de forma paralela.

11

H outros sub-nveis de paralelismo que podem ser introduzidos neste nvel de paralelismo. Por exemplo, se cada n do cluster for um sistema de CPUs mltiplas, estar se introduzindo um grau fundamental no processo paralelo ao nvel de n. Tendo mais de uma interface de rede em cada desses ns, introduzem-se canais de comunicao que podem ser usados em paralelo com outros ns do cluster. Todas estas reas de paralelismo de hardware podem ser usadas com grande vantagem na soluo de problemas em um cluster.[4, 34] 2.1.2 - PARALELISMO DE SOFTWARE Paralelismo de software a habilidade de acelerar a execuo de um programa dividindo o mesmo em fragmentos mltiplos que podem ser executados simultaneamente. Antes de se executar um programa em um cluster paralelo, tem que assegurar que o problema que est se tentando resolver pode ser executado de forma paralela. Podem ser analisadas muitas classes de problemas para se obter o paralelismo inerente dentro deles. Alguns dos problemas mais tpicos incluem modelamento meteorolgico, gerao de imagens 3-D e vrios tipos de simulaes. Estes so os tipos de problema que contm sub-problemas dentro deles. Por exemplo, modelamento meteorolgico envolve resolver problemas relativos ao aquecimento e esfriamento da atmosfera, a absoro de luz solar por nuvens e cidades, como tambm o movimento de frentes de presso. Quase qualquer problema que for composto de sub-problemas menores que podem ser quantificados independentemente pode ser quebrado em problemas menores e executado de forma paralela. 2.1.3 - CONCEITOS SUBJACENTES AO PARALELISMO A seguir so apresentados alguns conceitos subjacentes ao paralelismo. a. Granulosidade Granulosidade uma quantidade de trabalho que pode ser determinada a uma parte do sistema e depois sincronizada e recombinada de forma a se obter os valores definitivos. Em um cluster de estaes de trabalho, uma aplicao de processamento de imagens, por exemplo, pode dividir o trabalho de renderizao entre as estaes de trabalho cada uma trabalhando em seu prprio pedao local e ento os pedaos so recombinados ao trmino do processo.Uma outra forma de se definir grnulos idade pela relao entre os esforos de processamento e comunicao entre unidades paralelas, resumindo uma medida usada para indicar a relao entre o tamanho de cada tarefa e o tamanho total do programa, ou seja, a
12

razo entre computao e comunicao[56]. Assim, quando um canal de comunicao tem velocidade muito maior ou compatvel com o de processamento das unidades, compensandose ter pequenas rotinas de processamento com alto grau de troca de informao entre eles. Este caso caracterizado como processamento de "gro fino", a desvantagem desta tcnica alto custo de sincronizao. No outro extremo, quando a velocidade do canal de comunicao bem mais lenta que a velocidade de processamento, deve-se ter baixo nvel de comunicao entre estas unidades quando comparados aos esforos de processamento. Neste caso, diz-se ter um processamento paralelo de "gro grosso", que caracterizado por maior custo no processamento, dificuldade de balanceamento de carga e menor custo de sincronizao. Supercomputadores multi-processados so mais adequados para processamento paralelo de gro-fino, enquanto cluster baseado em rede de computadores so mais adequados para processamento paralelo de gro-grosso ou gro-mdio[2,6]. b. Dependncias Dependncias so os pontos onde um pedao de cdigo depende dos resultados de alguma outra parte do mesmo cdigo. Dependncias tm duas formas: dependncias de dados e dependncias de controle. Dependncias de dados

Uma dependncia de dados existe quando alguma operao no pode proceder at que dados provenientes de outra operao estejam disponveis. Dependncias de Controle

Dependncias de Controle so at mesmo mais comuns que dependncias de dados. Estas dependncias existem quando uma linha de controle depende de outra para poder ser executada. 2.2.4 - TIPOS DE PARALELISMO a. Paralelismo de Dados - O sistema paralelo executa mesmas instrues sobre dados diferentes. aplicado, por exemplo, em programas que utilizam matrizes imensas e para clculos de elementos finitos.Como por exemplo: Resoluo de sistemas de equaes, multiplicao de matrizes e integrao numrica.

Figura 2.1 Paralelismo de dados.


13

b. Paralelismo Funcional - O sistema paralelo executa instrues diferentes que podem ou no operar sobre o mesmo conjunto de dados. aplicado em programas dinmicos e modulares onde cada tarefa ser um programa diferente.

Figura 2.2 Paralelismo Funcional c. Paralelismo de Objetos Este o modelo mais recente, que se utiliza o conceito de objetos distribudos por uma rede (como a Internet), capazes de serem acessados por mtodos (funes) em diferentes processadores para uma determinada

finalidade.Como por exemplo, a tecnologia baseada em CORBA (Common Object Resquest Broke) e EJB (Entreprise Java Beans).

Figura 2.3 Paralelismo de Objetos

2.1.5 - OBSTCULOS NO PARALELISMO

a. Sincronizao entre os processos As tarefas executadas em paralelo, num determinado instante, aguardam a finalizao mtua para coordenar os resultados ou trocar dados e reiniciar novas tarefas em paralelo. necessrio que haja a coordenao dos processos e da comunicao entre eles para evitar que a comunicao seja maior do que o processamento e que conseqentemente haja uma queda no desempenho dos processos em execuo.

14

b. Compiladores e ferramentas em amadurecimento Existem poucos compiladores e ferramentas prontas para paralelizao automtica que resolvam definitivamente o problema do paralelismo. Um exemplo nesta direo ForgeExplorer para linguagem Fortran. c. A converso de algoritmos seqenciais em paralelos H um considervel tempo gasto do programador em analisar o cdigo fonte para paralelizar e recodificar. Basicamente necessrio rever o programa seqencial, avaliar como ser particionado, quais os pontos de sincronizao, quais as parties que podero ser executadas em paralelo e qual a forma de comunicao que ser empregada entre as tarefas paralelas. d. Nem tudo paralelizvel necessrio que haja uma anlise do algoritmo a ser paralelizado para seja possvel a paralelizao nos dados ou nas funes do mesmo, levando sempre em considerao a quantidade de comunicao em relao ao processamento. e. Tempo de processamento No processamento paralelo, o tempo de CPU quase sempre aumenta, no entanto podese reduzir o tempo total de processamento. f. Perda de Portabilidade A programao paralela utiliza multi-processadores com arquiteturas de comunicao entre os processadores baseados em memria compartilhada (shared memory) e memria distribuda (distributed memory). Os programas adaptados arquitetura de comunicao entre os processadores baseado em memria compartilhada no podem ser executados em uma mquina com memria distribuda, pois no utilizam os mecanismos de troca de mensagens, impossibilitando assim a portabilidade. No caso inverso, memria distribuda para memria compartilhada, seria possvel a portabilidade; porm o mecanismo de troca de mensagem seria ignorado, pois todos os dados j poderiam ser acessados pelos processadores atravs da memria compartilhada, isto apenas traria um fluxo desnecessrio de comunicao. g. Depurao (Debug) Os processos so distribudos e executados em vrios processadores simultaneamente, entretanto no existe uma forma eficiente de acompanhar passo-a-passo a alterao das variveis durante a execuo do processamento das diversas tarefas paralelas.

15

Uma alternativa que est sendo empregada a utilizao de arquivos de rastro de execuo, chamados tracefiles, que contem um conjunto de dados gerados durante a execuo para que sejam posteriormente analisados pelo usurio aps a execuo do programa. Existem programas com interface grfica que permitem ao usurio acompanhar a evoluo do desempenho durante o processamento das tarefas, como exemplo o Xmpi para MPI LAM, Paragraph, Pablo, Paradyn, PE e VT [6].

2.1.6 - AMBIENTE DE PROGRAMAO PARALELA

Um ambiente de programao paralelo definido pelas seguintes caractersticas: vrios processadores interligados, plataforma para manipulao de processos paralelos, sistema operacional, linguagem de programao e modelos de Programao Paralela. Existem vrios tipos de ambientes de programao paralela, abaixo sero descritos os dois mais utilizados: Message Passing: o mtodo de comunicao baseada no envio e recebimento de mensagens atravs da rede seguindo as regras do protocolo de comunicao entre vrios processadores que possuam memria prpria. O programador responsvel pela sincronizao das tarefas. Exemplos: Bibliotecas de comunicao: PVM - Parallel Virtual Machine [27], MPI - Message Passing Interface [28] e MPL - Message Passing Library [38]. Data Parallel: a tcnica de paralelismo de dados, normalmente automtica ou semiautomtica, ou seja, o mtodo que se encarrega de efetuar toda a comunicao necessria entre os processos de forma que o programador no necessita entender os mtodos de comunicao. Exemplo: HPF - High Performance Fortran e Ferramentas Automticas (Computadores Paralelos): As Ferramentas Automticas visam auxiliar o programador, j que, muitas vezes difcil deduzir o algoritmo de um programa serial mesmo com anlise detalhada transformando os dados de forma autnoma. Porm as tcnicas utilizadas no se adequam a todos os tipos de programas. As ferramentas automticas no so a "soluo definitiva" para o processamento paralelo, pois podem no resolver problemas de dependncias, tendem a atuar sobre partes restritas do cdigo, so especficas e pouco padronizadas e, finalmente, no superam a atividade humana.

16

2.2 - ARQUITETURAS DE SISTEMAS DE ALTO DESEMPENHO A rea de processadores paralelos foi, por muitos anos, uma rea ativa de pesquisa. Houve vrias abordagens diferentes para criar computadores paralelos efetivos, e todos eles (inclusive Clusters tipo Beowulf) tiveram nveis diferentes de efetividade para diferentes tipos de problemas.Com o decorrer dos anos foram surgindo diversos sistemas computacionais de elevado desempenho (HPC High Performance Computing) baseados em diversas arquiteturas cujo mais comuns esto referidas a seguir. a) Symmetric Multiprocessor (SMP); b) Massively Parallel Processors (MPP) c) Non-Uniform Memory Access (NUMA); d) Mquinas SIMD e) Multiple Instruction Multiple Data (MIND) clusters e Sistemas Distribudos Alguns desses nomes representam os sistemas mais comuns de computao paralela. A seguir so apresentadas algumas definies destas mquinas [2]. a) Sistemas SMP Um dos tipos de Processamento Paralelo realizado atravs de SMP (Symmetric Multi-Processor). Neste conceito, um grupo de processadores trabalha conjuntamente, sendo possvel qualquer um deles executar uma parte do programa. Com efeito, apesar de poderem ser mltiplos processadores, no podem existir mltiplas memrias ou acesso privilegiado de um processador a uma memria em detrimento dos outros [7]. A arquitetura SMP, ilustrada na Figura 2.4, do tipo Shared-Everything, ou seja, todos os processadores partilham a memria, o barramento de comunicao e o sistema de input/output. Desta forma necessria apenas uma cpia do sistema operacional. O problema de acesso aos recursos partilhados limita o nmero de processadores. Este problema limita consideravelmente a escalabilidade destes sistemas. A comunicao entre processadores efetuada atravs da memria compartilhada. Para reduzir a quantidade de acesso memria estes sistemas utilizam memria cache de alta velocidade junto de cada processador, que armazena a informao da memria principal que foi acessada mais recentemente. Todos os pedidos de acesso memria passam pela memria cache e apenas se estendem memria principal quando ela no capaz de atender a requisio do processador. Este mecanismo reduz a comunicao no barramento e permite aumentar o nmero de processadores no sistema. Quanto maior a memria cache individual maior a probabilidade guarda a informao que o processador necessita, ou seja, maior a taxa de acerto (hit rate).
17

Processador

Processador

Processador

........

Barramento de Comunicao

I/O Memria Principal

DISCO

Figura 2.4: Diagrama simplificado de SMP. Os sistemas SMP so pouco escalonveis, pois dependem diretamente das caractersticas da placa. Se esta possui apenas 16 slots para CPUs este o nmero mximo de CPU que sistema poder ter. Hoje, todos os sistemas operacionais dedicados a servidores suportam SMP (Windows NT e Linux). A maioria dos sistemas SMP disponveis para PCs tem a capacidade para ter duas CPUs em um sistema, embora existam sistemas com at 64 CPUs. Para uso comercial, alguns fabricantes como Sun Microystem vendem sistemas SMP que podem ter dzias de processadores. b) MPP arquitetura MPP consiste usualmente num conjunto de algumas centenas de ns interligados atravs de uma tecnologia de rede de alta velocidade, ou seja, baixa latncia e elevada largura de banda. Cada n constitudo por: - Um ou vrios processadores; Uma unidade de memria principal; Eventualmente, unidades de armazenamento de dados.

Cada n executa uma cpia distinta do sistema operativo. Alguns dos ns podem encontrar-se ligados a dispositivos perifricos. Tipicamente existe apenas um n por processador arquitetura Shared-Nothing uma vez que no h memria nem dispositivos de armazenamento partilhados pelos ns. Trata-se de uma arquitetura semelhante aos clusters, mas que apresenta usualmente maior nmero de ns e latncia mais reduzida. Como exemplo deste tipo de arquitetura paralela podemos citar: Cray T3D e nCUBE

18

c) NUMA- Non-Uniform Memory Access Os sistemas NUMA(Non-Uniform Memory Access) so constantemente confundidos com clusters. Estes sistemas so descritos sobre o conceito de que todos os processadores tm acesso a toda a memria. Esse sistema tem trs variantes: UMA, NORMA e CC-NUMA.

UMA: Uniform Memory Access. Cada processador tem um acesso semelhante memria, sendo assim baseada no mesmo modelo que o SMP (com as diferenas inerentes ao Hardware);

NORMA (NO Remote Memory Access) Um processador no pode acessar memria dos outros processadores atravs de acessos aleatrios, tendo de se comunicar atravs de outros meios. Para todos os efeitos, utiliza um sistema de passagem de mensagens chamado Message Passing.

CC-NUMA (Cache-Coherent Nonuniform Memory Access) Os sistemas CCNUMA so multiprocessados e com uma arquitetura de acesso no uniforme memria. Tal como em SMP todos os processadores tm uma viso global da memria, no entanto, os tempos de acesso dependem da proximidade da memria que se acessa, ao contrrio dos sistemas de acesso uniforme memria.A figura 2.5 ilustra uma arquitetura CC-NUMA

Processador

Processador

CACHE

Unidade de Comunicao

Unidade de Comunicao

CACHE

Barramento de Comunicao

Barramento de Comunicao

Memria Principal

DISCO

DISCO

Memria Principal

Figura 2.5 Arquitetura CC-NUMA Simplificada.

19

d) Mquinas SIMD Mquinas SIMD so uma classe de mquinas que contm muitos processadores (normalmente centenas ou milhares) onde o mesmo programa, ou at a instruo, executado em cada um dos processadores. Cada processador recebe o mesmo fluxo de instrues que ser processado pela unidade que contenha o fluxo de dados correspondente. Mquinas SIMD normalmente requerem muita memria especializada e arquitetura de barramento interno bastante efetivo. e) Mquinas MIMD Clusters e Sistemas Distribudos Estas mquinas operam com fluxos de instruo mltiplos e fluxos de dados mltiplos. Em essncia, computadores paralelos deste tipo so mquinas individuais que por algum mecanismo, normalmente algum conjunto de bibliotecas de software, cooperam para resolver um problema de computacional. Os clusters, tambm usualmente designados Cluster of Workstation (COW) ou Network of Workstation (NOW), consistem basicamente num conjunto de Workstations ou Computadores Pessoais (PCs), interligados por uma tecnologia de rede. Trata-se, portanto de uma arquitetura MIMD. A arquitetura Beowulf includa neste tipo de sistemas paralelos. Sistemas distribudos so basicamente as redes convencionais de computadores independentes interligados por alguma tecnologia de rede, podendo ou no existir uma camada de software que tente tanto quanto possvel oferecer uma imagem unificada do sistema ao utilizador (Transparncia). So tipicamente sistemas de grande dimenso e heterogneos em termos de hardware e de software. Podem incluir qualquer dos sistemas paralelos referidos como seu subconjunto. Ao contrrio dos sistemas paralelos o principal objetivo no a rapidez de processamento, mas sim questes organizacionais e econmicas, acesso distribudo aos dados, confiabilidade e escalabilidade. Em geral os recursos destes sistemas no so exclusivamente dedicados ao processamento paralelo, mas a atividade de gesto de informao da organizao a que pertencem. A Tabela 2.1[2] resume alguns dos aspectos de cada arquitetura que no foram mencionados anteriormente. Quanto ao nmero de ns verificvel que o processamento distribudo aquele que caracterizado por uma maior concentrao de ns. tambm este tipo de arquitetura (distribuda) que suporta uma maior heterogeneidade de Hardware. A comunicao um fator fundamental na anlise de desempenho de cada um dos sistemas. Neste ponto, dependendo da tecnologia utilizada, obtm-se um desempenho diferente. Assim, enquanto que nos sistemas distribudos Internet revela-se uma forma lenta
20

de comunicao entre ns, nas arquiteturas SMP o barramento de memria tem (obviamente) melhor desempenho. Outros fatores analisados foram segurana entre ns - se existe necessidade de estabelecer formas seguras de comunicao para evitar a interceptao de contedos, transparncia do sistema ao programador (Imagem da mquina virtual) e Sistema Operacional que os caracteriza [2].

Tabela 2.1: Quadro-resumo dos diferentes tipos de processamento. Caractersticas Sistemas Distribudo Dezenas a Milhares Grande SMP/CC-NUMA Dezenas ou menos No existe Sempre em Imagem de Mquina Virtual Parcial ou No existente SMP, Parcial em CCNUMA Comunicao entre ns Segurana entre ns Sistema Operacional Internet (ou LAN) Necessria barramento da placa Fast Ethernet Barramento de Memria Dispensvel Parcial Parcial Clusters Dezenas A centenas Pouca a Grande MPP

Nmero de Ns Heterogeneidade Hardware

Dezenas a milhares

No existe

Desnecessria Eventualmente WinNT Unix

Diferentes

Linux

Proprietrio

2.3 - CLUSTERS ARQUITETURA GENRICA

Conforme descrito anteriormente, um cluster consiste de um conjunto de mquinas ns do sistema constitudo por processador, memria e eventual mente unidades de armazenamento de dados e perifricos, interligados de forma a executar tarefas de forma cooperativa. Genericamente, cada n pode ser uma mquina uniprocessada ou uma mquina SMP.No entanto, usualmente os no so PCs. A figura 2.4 representa o modelo de uma arquitetura de cluster.
21

Aplicaes Paralelas Aplicaes Seqncias Bibliotecas de passagem de mensangem

MIDDLEWARE - ( CORBA, NFS , BPROC )

Sistema Operacional

Sistema Operacional

Computador

Computador

Hardware

Hardware

Tecnologia de rede

Figura 2.4 Arquitetura de um cluster. A camada designada de middleware, situada entre o sistema operacional e as aplicaes, responsvel pela criao do conceito de transparncia do sistema, tambm chamada de Single System Image (SSI). O objetivo desta camada que perante os seus usurios o sistema parea nico, seja visto como um grande computador com capacidade equivalente a soma da capacidade de todos os computadores que o compe. Um exemplo de camada de middleware nos clusters Beowulf representado pelo NFS(Network File System) [26] que permite o compartilhamento de arquivos pela rede.O middleware fornece os seguintes servios: Ponto de acesso nico ao sistema Sistema de Arquivos nico: o usurio deve ver o sistema de arquivos das diversas mquinas como uma nica hierarquia sob o mesmo diretrio raiz Espao de memria nico: a camada de Middleware tanto quanto o possvel deve fornecer um servio de memria compartilhada distribuda de forma transparente para o usurio e aplicaes
22

Espao de Input/Output (I/O): qualquer n deve conseguir efetuar operaes I/O em dispositivos locai ou remotos utilizando um espao de endereos nicos. Espao de Processos nico: cada processo deve ter um identificador nico no cluster e deve poder criar e se comunicar com processos no prprio n ou em outros ns. Migrao de Processo: para equilibrar a carga dos ns deve ser possvel efetuar dinamicamente a migrao de processos entre diversos ns. A camada de middleware nos clusters Beowulf pode ser representa pelo NFS(Network

File System) [26] que permite o compartilhamento de arquivos pela rede Nem sempre possvel atender todos este requisitos ao se construir um cluster, mas alguns so obtidos atravs de implementaes de alguns sistemas como escalonadores de processos, sistema de arquivos distribudos, servios de autenticao de usurios e bibliotecas de passagem de mensagem. Estes servios sero descritos com mais detalhes no captulo 4.

2.2.1 - CLASSIFICAO DOS CLUSTERS

Os Clusters so usualmente classificados de acordo com um conjunto de caractersticas [57]: a) Aplicao: Clusters de Alto Desempenho (High Performance Cluster - HPC) - utilizados em clculo cientfico; Clusters de Alta Disponibilidade (High Availability HA) - utilizados em tarefas crticas; b) Utilizao dos ns: Clusters Dedicados - os recursos do cluster so utilizados exclusivamente para processamento paralelo; Clusters No Dedicados as mquinas que compe o cluster so estaes de trabalho que durante o perodo em que no esto sendo utilizadas emprestam processamento para o cluster da qual fazem parte; c) Hardware: Clusters de PCs (CoPCs) ou Pilha de PCs (PoPC) - os ns so PCs; Clusters de Workstations (COW) - os ns so Workstations; Clusters de SMPs (CLUMPs) - os ns so mquinas SMP;

d) Sistema Operacional:
23

Clusters Linux; Clusters Solaris; Clusters NT; Clusters AIX;

e) Configurao dos ns: Clusters Homogneos - todos os ns com a mesma arquitetura e sistema operacional; Clusters Heterogneos - ns possuem arquitetura e/ou sistema operacional diferente;

2.2.3 - CLUSTER DE ALTA DISPONIBILIDADE - HIGH AVAILABILITY H

Alta disponibilidade a cincia de criar redundncia em cada sistema ou subsistema de um servio que est sendo disponibilizado. A necessidade de manter em operao quase 100% do tempo alguns servios ou evitar que os mesmos sofram quedas de operao por excesso de requisies, so os principais objetivos dos Clusters de Alta Disponibilidade. Este tipo de cluster ainda possui duas sub-divises: os Clusters de Balanceamento de Carga e os Web Clusters. Existem diversa maneiras de se projetar HA Clusters, tudo isso ir depender dos servios que se desejar manter em operao (Servio de Pginas Web. Email, FTP, Banco de Dados). O importante durante o projeto definir onde se encontram possveis pontos de falha e partir da instituir as polticas de redundncia. Em geral, se mantm servidores interligados atravs de uma conexo privada para que possam trocar informaes entre si, sem depender da conexo externa, e caso alguns dos servios disponibilizados sofra uma sobrecarga ou sai de operao o servio de outra mquina assume. A Figura 2.5 demonstra o modelo de sistema de Alta Disponibilidade.

24

Rede Pblica 2

Rede Pblica 1

Conexo rede 2 Conexo rede 1 Conexo Privada Conexo rede 1

Data

Data

Figura 2.5 Modelo de sistema de Alta Disponibilidade.

Um tpico cenrio de HA Clusters existe duas ou mais mquinas cujos servios esto espelhados. Dois esquemas so tipicamente usados neste cenrio. No primeiro esquema uma mquina fica esperando at que por algum motivo a outra fique fora de operao. No segundo esquema ambas as mquinas ficam ativas, havendo uma distribuio da carga de operao do sistema, nesse caso em geral as duas mquinas uma rea de disco comum. Em algumas situaes, pode haver a combinao desses dois esquemas para se melhorar o grau de confiabilidade do sistema. Clusters HA so caracterizados como Clusters dedicados e heterogneos.

2.2.4 - CLUSTERS DE ALTO DESEMPENHO - HIGH PERFORMANCE CLUSTERS HPCS

Clusters so uma rea de computao que tm por objetivos a emulao de supercomputadores baseado em estaes de trabalho, PCs e mquinas SMPs. O objetivo dos HPCs diminuir o tempo de para resoluo de grandes problemas computacionais. Sistemas HPCs podem haver em Computao distribuda e Computao Paralela. Computao distribuda tem por objetivo compartilhar recursos de computadores de maneira a otimiz-los. Esse sistema funciona utilizando o conceito de SPMD Single Program Multiple Data, para cada computador que pertence ao projeto recebe um programa e
25

um conjunto de dados, e durante o perodo de ociosidade do computador o programa passa a ser executado, como se fosse uma proteo de tela. Um dos exemplos mais conhecidos deste sistema o Projeto SETI [30], que une voluntrios de todo mundo na busca de sinais de vida extraterrestre. Computao Paralela se refere submisso de processos para mais de um processador distribuindo assim o esforo computacional para resoluo de um problema. So um grupo de computadores que compartilham recursos e esto interligados atravs de uma rede de computadores, esses sistemas so chamados Clusters, com um objetivo comum, resolver um problema que exige uma grande quantidade de processamento. O sistema tem que parecer, perante aos seus usurios, como um grande computador, equivalente a soma de todos os recursos individuais de cada computador pertencente ao cluster. Um exemplo deste tipo de sistema so os Clusters Beowulf. Clusters Beowulf sero visto em maiores detalhes no prximo captulo.

26

CAPTULO 3 - CLUSTERS BEOWULF

Os clusters Beowulf surgem num contexto de necessidade crescente de elevada capacidade de processamento em diversas reas cientficas com o objetivo de constiturem sistemas computacionais poderosos e economicamente viveis. Para isto contriburam a evoluo do desempenho dos processadores, a aproximao entre PCs e Workstations, a diminuio do custo das tecnologias de rede e dos prprios processadores e o software gratuito e open source, como o Linux, por exemplo, ao abrigo da GNU Public License (GPL).

3.1. ARQUITETURA DE UM CLUSTER BEOWULF

Como qualquer cluster, o cluster Beowulf enquadra-se na classe de sistemas computacionais de elevado desempenho, HPC, de processamento paralelo. Como sub-tipo de cluster trata-se de uma pilha de PCs (PoPC), interligados por tecnologias de rede comuns. Portanto, trata-se de uma topologia Multiple Instruction Multiple Data (MIMD), do tipo multicomputador ou loosely coupled, baseada no kernel do Linux [24], qual intrnseca a comunicao atravs de mensagens (os mecanismos de memria compartilhada, se existentes, so suportados por servios de mensagens). A base fsica destes sistemas, o hardware, so componentes largamente comercializados (massificados). O software utilizado de gratuito como, por exemplo, os sistemas operacionais Linux e FreeBSD sobre os quais so instaladas ferramentas de processamento paralelo tambm gratuitas e amplamente utilizadas como o caso das bibliotecas de passagem de mensagem PVM e MPI. So sistemas dedicados ao processamento paralelo, com uma rede de comunicaes privativa, de uso exclusivo do cluster. Todas as mquinas que compem o sistema podem ter a mesma arquitetura e executarem o mesmo sistema operacional. O seu desempenho da maioria dos sistemas Beowulf da ordem do Gigaflops ou dezenas de Gigaflops e encontra-se em contnuo crescimento devido evoluo dos processadores e ao aparecimento de clusters cada vez maiores. O custo um fator essencial, sendo um dos objetivos desta arquitetura conseguir uma razo capacidade de processamento/preo superior a qualquer outro tipo de sistema de

25

processamento paralelo. Este se tornou o principal motivo na aceitao destes sistemas por parte do mercado. Inicialmente considerava-se at que para poder ser designado Beowulf o preo total do cluster no deveria ultrapassar os 50.000 dlares [37]. Com o aumento gradual da dimenso destes sistemas este limite deixou de fazer sentido. De acordo com a classificao apresentada no Captulo 2, os clusters Beowulf so: De elevado desempenho; Dedicados; Pilhas de PCs; Homogneos. A arquitetura fsica dos clusters Beowulf encontra-se esquematizada na Figura 3.1. Desta fazem parte os seguintes componentes: Servidor: n do sistema que controla o cluster efetua administrao e distribuio das tarefas, funciona como servidor de arquivos e efetua a interface com o exterior tanto ao nvel de interligao de redes como ao nvel de usurio. Portanto, responsvel pela segurana e pela imagem que o exterior tem do cluster. tambm designado front-end do sistema. Normalmente existe apenas um servidor por cluster, no entanto, alguns clusters de elevada dimenso tm mais de uma mquina que pode funcionar como servidor. O servidor tambm vulgarmente a nica mquina do cluster com perifricos que permitem a interface com o usurio; Clientes: o restante dos ns do sistema designados de clientes. So configurados e controlados pelo servidor. No podem ser acessados da rede externa ao cluster sem passar pelo Servidor. So usualmente mquinas sem teclados nem monitores e eventualmente at sem disco rgido acessadas por login remoto a partir do servidor, e que se encarregam do processamento de tarefas atribudas pelo servidor. Constituem a capacidade de processamento dos dados do cluster; Rede dedicada que interliga todos os ns do cluster usualmente utiliza uma tecnologia padro, como a Ethernet. Apesar de existirem diversos mdulos de software - como, por exemplo, alteraes especficas do kernel do Linux, bibliotecas de processamento paralelo e ferramentas de configurao - que tornam o cluster mais fcil de configurar e utilizar, possvel construir um sistema que se enquadra nesta designao apenas com uma distribuio do Linux sem

26

necessidade de software adicional. Por exemplo, dois computadores pessoais ligados em rede com compartilhamento de arquivos atravs de Servidor NFS (Network File System )[23]e possibilidade de executar remote shell (rsh)[23] podem ser considerados um cluster Beowulf muito simples.

Rede Interna Rede Externa N servidor (Controle e Administrao) Ns Ns Ns

Ns

Ns

Ns

Rack ou prateleira

Figura 3.1. - Arquitetura fsica de um cluster Beowulf Estes clusters apresentam algumas diferenas em relao aos tradicionais Clusters of Workstations (COWs): Utilizam tipicamente componentes massificados pelo mercado e de custo reduzido; Os ns so dedicados ao processamento paralelo; A rede de comunicaes privada e isolada do exterior; O software utilizado pretende criar a imagem de uma nica mquina virtual; A interface com o usurio ocorre apenas ao nvel do servidor. Devido a todos estes fatores, um cluster Beowulf assemelha-se mais que um COW a uma nica mquina virtual com capacidade de processamento paralelo. Estes clusters so ainda vulgarmente classificados de acordo com o hardware utilizado para diferentes objetivos de desempenho: Clusters Beowulf de Classe 1: integralmente constitudos por hardware de baixo custo (Sistemas On-board) [16] para aplicaes no to exigentes em termos de desempenho como os da classe 2; Clusters Beowulf de Classe 2: utilizam hardware mais especfico de forma a possibilitarem um alto grau de desempenho

27

O maior nmero de implementaes nesta rea foi at agora feito por universidades e outras instituies de investigao com grande capacidade de clculo. Entretanto comearam a aparecer empresas interessadas em comercializar este tipo de sistemas como, por exemplo, a COM2000 [49] e Aspen Systems inc.[50]. O cliente pode adquirir o cluster completamente configurado e pronto para explorao, necessitando apenas efetuar a sua manuteno ou ento adquirir os componentes separadamente e fica a seu cargo a montagem e instalao.

3.2. VANTAGENS E DESVANTAGENS DOS CLUSTERS BEOWULF

A utilizao de clusters Beowulf apresenta um conjunto de vantagens e desvantagens em relao s restantes arquiteturas de HPC. As vantagens foram j brevemente referidas no mbito das razes que motivaram o aparecimento dos clusters em geral (Captulo 1). A seguir enumeram-se as principais vantagens desta arquitetura e tambm algumas desvantagens. Quanto s vantagens de um cluster podemos citar: Estes sistemas so muito escalveis, pois possvel pr em rede (e coordenar) um grande nmero de ns. Assim, no existe um limite definido para o tamanho de um cluster. Os componentes utilizados so maciamente comercializados e que desta forma pode-se usufrui economias de escala. Substituir um n defeituoso to simples quanto mudar de PC. Assim, possvel ter uma gesto de falhas eficiente, baseada na fcil substituio de componentes. Existe uma independncia em relao ao fornecedor de hardware. Como o material que o constitui muito comum, se faltar uma pea pode-se encontr-la com facilidade. Existem tambm mais especialistas em PCs do que de hardware proprietrio. O software gratuito e inclui o cdigo fonte. Por essa razo mais flexvel permitindo alteraes tanto ao nvel do sistema operacional, como das aplicaes utilizadas. Disponibilizar o cdigo fonte torna o sistema mais robusto e de

28

confiana, pois significa que quem estiver interessado pode fazer debugging, detectar erros e gerar correes. Cada n do cluster pode ser um sistema completo, til para uma grande variedade de aplicaes. Assim, o risco de um projeto de cluster no resultar em nada sempre reduzido pelo fato de todo o hardware poder ser reutilizvel. Da mesma forma, toda a configurao pode ser utilizada (e testada) para outros fins. Contudo, tambm existem algumas desvantagens: Com algumas excees, o hardware de rede no foi criado para funcionar em Processamento Paralelo. Tipicamente tem uma grande latncia e largura de banda menor que sistemas SMP. Existe ainda pouco software que suporte e trate o cluster como um sistema nico. Por exemplo, o comando ps, do Sistema Operacional Linux s d informao sobre processos sendo executados em um nico n do cluster. necessrio ter experincia e conhecimento de administrao de sistemas Linux. A configurao dos ns pode no ser muito trivial. Porm, apesar de algumas desvantagens, clusters so surpreendentemente poderosos. H uma inscrio semestral reunida pela Universidade de Manhiem na Alemanha que descreve os 500 supercomputadores mais poderosos no mundo [29]. At 1997, quase todos os sistemas listados eram supercomputadores comerciais de fabricantes famosos como Cray, Silicon Graphics e IBM. Porm em 1998, comearam a aparecer nesta lista Clusters paralelos baseados em Linux. Dois sistemas se localizam perto do topo da lista: o nmero 97, chamado CPlant desenvolvido por Sandia National Labs, e o nmero 113, chamado Avalon desenvolvido por Los Alamos Labs. O Avalon um cluster de 140 mquinas Alpha 533 MHz, localizado no Laboratrio Nacional de Los Alamos, nos Estados Unidos, e custou uma frao do preo de seus concorrentes prximos no ranking, mesmo usando mquinas de alta qualidade, um exemplo do poder que clusters podem ter.

3.3 - HARDWARE PARA CLUSTERS

Pode-se construir um cluster de quase qualquer tipo de hardware. Os fatores que provavelmente pesaro em sua deciso sero o tempo de implementao e o custo. 29

Antes de decidir que tipo de hardware usar bom primeiro considerar qual a utilizao se far do sistema. Existem basicamente dois componentes de hardware envolvidas no projeto de um sistema Beowulf: o tipo de computadores ou ns que se vai usar, e a forma como interligar esses ns. Embora o nmero de opes no seja muito grande, existem algumas decises importantes que devem ser tomadas relativamente ao projeto antes de se construir um sistema Beowulf. Dependendo do tipo de aplicao que se pretende dar ao Beowulf, assim se deve decidir quanto ao nmero de ns a colocar no cluster. Existem implementaes muito variadas desde 4 ns at implementaes com vrias centenas de ns. Para os ns pode optar-se por encomendar os componentes desmontados (memria, drives, discos, processadores, placa-me, gabinetes, placas de rede, etc) e fazer a montagem dos componentes nos gabinetes ou optar por encomendar as unidades j montadas, o que economiza muito trabalho tcnico. A vantagem de adquirir os componentes desmontados est na possibilidade de se poder fazer algumas otimizaes no hardware atravs do ajuste dos componentes, como por exemplo, Vcc (tenso de trabalho do processador) [16] atravs de jumpers na placa me, porem este procedimento requer um certo grau de experincia em arquitetura de computadores.

3.3.1 - PRINCIPAIS COMPONENTES.

Embora o primeiro cluster Beowulf fosse projetado para rodar em plataforma arquitetura Intel x86, outros clusters foram construdos nas mais diversas arquiteturas de computadores. A maioria dos sistemas de computao atual baseia-se em dois tipos de arquitetura de computadores chamadas de RISC e CISC. Um processador CISC (Complex Instruction Set Computer) capaz de executar vrias centenas de instrues complexas, sendo extremamente verstil. Exemplos de processadores CISC so o Pentium (Intel) e o Athlon (AMD), conhecidos tambm por processadores x86 devido ao conjunto de instrues que executam. No comeo da dcada de 1980, a tendncia era construir chips com um conjunto de instrues cada vez mais complexas. Mas alguns fabricantes resolveram seguir o caminho

30

oposto, criando o padro RISC (Reduced Instruction Set Computer). Ao contrrio dos complexos CISC, os processadores RISC so capazes de executar apenas algumas poucas instrues simples. Justamente por isso, os chips baseados nesta arquitetura so mais simples e muito mais baratos. O que isto quer dizer que as instrues interpretveis pelos RISC so muito mais simples que as interpretadas pelos CISC. A grosso modo uma instruo CISC poderia ser decomposta em vrias instrues RISC. Em termos de microarquitetura, os processadores so sempre iguais. Eles quebram as instrues em microoperaes, despachando os dados e instrues para registradores, unidades de execuo de inteiros, de ponto flutuante e de instrues SIMD. Outra vantagem dos processadores RISC, que por terem um menor nmero de circuitos internos e podem trabalhar com clocks mais altos. Um dos modos para construir um cluster de alto-desempenho ter controle sobre todos os componentes do cluster. Isto significa construir as mquinas baseadas em cluster a partir dos componentes fundamentais. H seis componentes principais que compem qualquer sistema de computao: a) Placa-me; b) CPUs; c) Sistema de Memria; d) Disco Rgido; e) Equipamentos de rede e f) Gabinetes.

a) Placame: o centro de todas as conexes do PC. um dos principais componentes responsveis para que o potencial do processador seja totalmente explorado. Ela determina que tipo de dispositivos pode ser incorporado ao PC. As principais caractersticas de uma placa-me so determinadas pelo seu chipset (conjunto de circuitos integrado que se destinam a uma determinada funo). O chipset a base para implementao das vias de comunicao entre perifricos e subsistemas da placa-me. Estas vias recebem o nome especial de barramentos. O chipset dividido em dois grandes circuitos chamados de North Bridge e South Bridge. O North Bridge atribuda tarefa de controlar o barramento de

31

vdeo, enquanto o South Bridge responsveis pelos dispositivos de E/S, atendendo aos barramentos restantes (PCI) e interface IDE (controladora de disco rgido). As limitaes da placa-me so reflexos diretos das limitaes do chipset. Por exemplo, a memria principal amplamente dependente do chipset, nenhum dado sai ou entra nela sem antes passar pelo chipset [17,18]. b) Processadores: A CPU tambm pode ser chamada de processador ou microprocessador. O processador capaz de executar apenas instrues simples, como somas, leituras ou escritas de dados, comparaes, etc. Basicamente apenas isso que o processador pode fazer. Operaes mais complexas so conseguidas utilizando-se vrias instrues simples. Para calcular uma multiplicao, por exemplo, o processador utilizar seqencialmente vrias operaes de soma. Na verdade, dentro do processador todas as operaes, mesmo as mais complexas, so calculadas com base em vrias operaes de soma, feitas entre os valores binrios processados pelo processador. Todos os demais clculos, mesmo os mais complexos, executados pelo co-processador aritmtico, so resolvidos usando apenas as quatro operaes, que por sua vez so obtidas a partir da simples instruo de soma. Excluindo-se componentes de apoio como o cache L1, deixando apenas a parte "funcional" do processador, pode-se dividir o processador em trs partes: a primeira parte o decodificador de instrues. Este componente tem a funo de converter as instrues x86 usadas pelos programas nas instrues simples que podem ser executadas pelo processador. As instrues simples so enviadas para uma unidade de controle, que organiza as instrues de forma que possam ser executadas mais rapidamente. As instrues formam ento uma fila (scheduler) a fim de permitir que a unidade de controle tenha tempo de fazer ser trabalho. importante notar os processadores atuais so superescalares, executam vrias instrues por ciclo, simultaneamente, o que torna essencial existncia de algum circuito que as coloque numa ordem em que a execuo de uma no dependa do resultado da execuo de outra [16,17]. Finalmente, tm-se as unidades de execuo, onde as instrues preparadas e organizadas so finalmente processadas. Basicamente, a CPU executa clculos muito simples como somas e comparaes entre nmeros, mas com uma caracterstica muito

32

especial: uma velocidade extremamente elevada. Algumas caractersticas das principais dos processadores sero comentadas a seguir. Clock Speed: a velocidade em que um microprocessador executa instrues. Quanto mais rpido o clock, mais instrues uma CPU pode executar por segundo. A velocidade de clock expressa em megahertz (MHz). Cache: uma poro de memria utilizada para armazenar dados freqentemente consultados pelo ncleo de operao. O cache do processador dividido em duas partes: cache L1 e cache L2. O cache L1 opera na mesma freqncia de processamento e dedicado integralmente ao processador sendo otimizado em dois blocos uma para armazenar dados e outro para instrues. Estes blocos geralmente apresentam igual capacidade de armazenamento e podem possuir vias diferenciadas para melhorar o desempenho. O tamanho do cache L1 dos processadores atuais pode ser visto na Tabela 3.1. O cache L2 implementado devido ao tamanho reduzido do cache L1. O cache L2 tem uma rea de armazenamento maior do que o cache L1, mas sem separao entre rea de dados e instrues. O cache L2 acoplado ao processador, para tentar manter a desempenho compatvel com o do cache L1, pelo menos em termos de freqncia de operao. FSB Barramento Frontal Antes de chegarem a unidade de decodificao ou ao cache L2 as instrues passam por uma interface chamada de Barramento frontal ou Front Side Bus (FSB). A taxa com que os dados podem trafegar por ele o parmetro mais divulgado. Quanto maior a freqncia melhor. Atualmente esta freqncia varia entre 66 MHz e 533MHz. O processador Athlon opera em 333 MHz. Outro parmetro a ele relacionado a sua largura, isto , quantos bits podem circular por ele simultaneamente. Atualmente a largura deste barramento para os processadores atuais de 64 bits. A combinao de freqncia do FSB e de sua largura de banda pode levar a um outro parmetro chamado de banda passante do barramento (bus bandwidth). Por exemplo, um processador com FSB de 200 MHz com largura de 64 bits tem um bus bandwidth 1600 MB/s. Algumas destas caractersticas podem ser vistas na Tabela 3.1.

33

Sistemas tipo Intel X86 Os trs maiores fabricantes para sistemas x86 so a Intel (processadores da famlia Pentium e Celerom), a AMD (Advanced Micro Devices srie de processadores AMD, Athlon e Duron) a VIA-Cyrix. Na tabela 3.1 h alguns dados dos principais processadores que podem ser encontrados em sistemas x86[15,16].

Tabela 3.1 Principais caractersticas dos processadores x86. Freqncias (GHz) Tamanho FSB (MHz) Cache L1 Cache L2

Fabricante Srie

Atlhon XP AMD Duron Pentium III

1.1 a 2.25

200 333(DDR) 200 266(DDR) 100 e 133 400(QDR)

64K+64K

512 KB 1/2

1 a 1.3

64K+64K

128KB on die

(Coppermine) Intel Pentium IV Celeron (Coppermine) 128

1Ghz 1.4 a 3.06

16KB+16KB 256KB on die 8KB+8KB 512KB on die

1.3 a 2

66 a 133

16KB+16KB 128KB on die

c) Sistema de Memria: onde o computador armazena as instrues necessrias ao funcionamento do sistema operacional e programas. O processador precisa de espao para arrumar as instrues contidas no programa de modo possa execut-las rapidamente. Todo programa que se executa est na memria RAM, seja ele um software antivrus, um protetor de tela, impresso, etc. A tecnologia de memrias empregada atualmente chamada de SDRAM (Synchronous Dynamic Random Access Memory) que um padro. Uma caracterstica chave da SDRAM consiste na sua capacidade para sincronizar todas as operaes com o sinal de clock do processador. O padro atual das memrias utilizar uma tcnica de leitura 34

e escrita de dados chamada SDR (Single Data Rate taxa de dados nica) em que ela aproveita apenas um sinal do clock para fazer suas operaes, porm em mdio prazo as memrias com tcnica DDR (Double Data Rate taxa de dados dupla) que podem dobrar a velocidade das memrias atuais por utilizarem dois sinais do clock para realizarem suas operaes, tendem a se tornar mais comuns. As freqncias de operao atuais das DDRAM operam na faixa de 200Mhz a 400Mhz. Outro tipo de memria que pode ser utilizada so as RAMBUS, que operam em 800Mhz, fazendo at 4 operaes por ciclo de clock, a sua desvantagem consiste no fato de s poderem ser utilizadas com processadores INTEL PENTIUM IV. d) Disco Rgido: Alcana uma maior capacidade de armazenamento, da ordem de centenas de Mbytes para os mais antigos, at Gbytes para os mais modernos. Os discos rgidos funcionam em unidades lacradas, montadas em locais altamente isentos de poeira e partculas em suspenso. So extremamente suscetveis a impactos. Os discos rgidos possuem diferentes tipos de conexes eltricas a serem realizadas para que funcionem. Tais conexes so chamadas de interface e podem ser do tipo ST-5xx, IDE, e variaes SCSI (SCSI, SCSI-II, Fast SCSI, Wide). A capacidade do disco rgido influenciada pelo nmero de lminas, pelo material magntico das lminas e pelo conjunto dos cabeotes. A seguir so analisados os principais fatores que o influenciam no desempenho do disco rgido. Tempo Mdio de Acesso: Determina o tempo que o mecanismo pode gastar at encontrar um byte aleatrio de dados. O tempo mdio de acesso descreve apenas um dos aspectos da velocidade dos discos rgidos. Depois que um byte localizado na superfcie do disco, ele tem que ser transferido para o computador. Uma outra especificao das unidades de disco, a velocidade de transferncia dos dados, reflete a velocidade com que os dados so jogados para um lado e para outro, indicando efetivamente a rapidez com que as informaes podem ser intercambiadas entre o microprocessador e o disco rgido. Velocidade de Transferncia de Dados: O principal determinante da velocidade de transferncia de dado o tipo de interface usado na conexo do disco rgido com o computador. Os organismos dedicados ao estabelecimento de normas e padres

35

reconhecem vrias interfaces de disco rgido, e especificam rigorosamente as suas interconexes. Diferentes padres - o padro SCSI (Small Computer System Interface) define um tipo de dispositivo que possui algoritmo interno de manipulao das requisies de leitura e escrita de dados. Ao contrrio das interfaces IDE (Integrated Drive Eletronics), as controladoras SCSI podem reordenar as requisies aleatrias de dados, provenientes de diversos usurios, para minimizar o tempo de busca das informaes. Algumas caractersticas dos discos IDE e SCSI podem ser vistos na Tabela 3.2. e 3.3. Tabela 3.2 Caractersticas dos Discos IDE. Protocolos /Especificaes ATA Ultra DMA Mode 2 /ATA 4 Ultra DMA Mode 3 /ATA 5 Ultra DMA Mode 4 /ATA 5 Ultra DMA Mode 5 /ATA 5 Ultra DMA Mode 6 /ATA 6 Taxa de transferncia (MB/s) 33,3 44,4 66,6 100 133

Tabela 3.3 - Caractersticas dos Discos SCSI. Freqncia (MHz) 10 20 Transferncia em 8 Bits Padro Fast SCSI Ultra SCSI Taxa (MB/s) 10 20 Transferncia em 16 Bits Padro Taxa (MB/s)

Fast Wide SCSI 20 Wide SCSI Wide SCSI Wide SCSI Ultra3 Ultra2 Ultra 40

40

Ultra2 SCSI

40

80

80

Inexiste

inexiste

160

36

e) Equipamentos de Rede: So os dispositivos utilizados para efetuar a comunicao entre os ns do cluster: placa de rede, switches e roteadores. Roteadores: Os roteadores operam na camada de rede. Sua funo examinar o endereo de cada mensagem e decidir de que lado da ponte est o destinatrio. Se a mensagem no precisar ser transportada pela ponte e, por algum motivo, venha a criar trfego na rede estendida, o roteador no ir envi-la. Os roteadores podem traduzir sinais enviados por vrios cabos e esquemas de sinalizao. Por exemplo, um roteador pode receber suas mensagens atravs da Ethernet e coloc-las em uma rede com comutao de pacotes operando atravs de modems conectados a linhas telefnicas privativas de alta velocidade. Switches: Os comutadores, mais conhecidos como switches, esto se tornando cada vez mais populares nas redes locais Ethernet em substituio aos hubs. H switches de diversos portes, desde aqueles para emprego domstico at outros para emprego industrial. Alguns switches utilizam tcnicas de roteamento to refinadas quanto dos prprios roteadores, porm a grande diferena que os switches de pacotes, como chamada esta classe de switch, primeiro estabelecem uma rota fixa entre o emissor e o destinatrio. Nem sempre os envolvidos so o emissor inicial e o receptor final. Uma rota de comutao pode ser estabelecida apenas entre duas subredes que esto no caminho dinmico de um roteamento para uma transao mais externa. Os switch mais simples, conhecidos como hub-switch so extremamente baratos frente aos switch de roteamento para longas distncias com custo pouco maior do que o dos hubs convencionais.At bem pouco tempo o seu custo era muito mais elevado. Quase sempre ao abordar switches lembra-se de redes ATM, as chamadas redes orientadas conexo de circuitos. Os comutadores so empregados para estabelecer canais entre emissores e destinatrios durante todo o tempo de conexo ou apenas quando houver necessidade de transportar dados. De fato, o emprego mais convencional para os switches ainda em redes locais de grande porte, na qual h diviso dos meios com servidores, aumentando assim a eficincia local e global. Geralmente os switches conectam-se a um roteador para acessar outras subredes.

37

Placa de rede: so as interfaces de comunicao presentes nos ns do cluster, a maiorias das placas atuais opera na faixa 10/100 Mbits/s. e trazem uma srie de acessrios que podem melhorar o desempenho da rede.(como permitir a transmisso half-Duplex ou full-duplex). Tem um baixo custo devido a grande diversidade de fabricantes.

f) Gabinetes Diferentemente de outros aparelhos eletrnicos que utilizam fontes lineares, os microcomputadores utilizam fontes chaveadas, pois estas permitem uma substancial reduo de tamanho e so mais eficientes. A potncia da fonte deve ser compatvel com o tipo de microcomputador a ser montado e com seus perifricos. Estas fontes variam de 250W a 500W (Watts). O dimensionamento de uma fonte para um microcomputador depende da quantidade de perifricos, e conseqentemente das placas que sero ligadas no barramento de expanso. Sempre nesses casos devemos escolher uma fonte onde no se utilize mais de 2/3 da sua potncia nominal. Discos rgidos consomem bastante energia e alguns processadores atuais (como no Pentium e Atlhon) podem dissipar at 15 W. Por isso um bom dimensionamento da fonte de alimentao de um computador muito importante, para que possa operar seus sistemas com o mnimo de erros. Outro fator importante na escolha do gabinete e se mesmo possibilita uma refrigerao adequada da CPU e placa-me. Um bom gabinete deve possuir espao para fixao de ventoinhas extras (Coolers) para facilitar a exausto do ar quente dentro do gabinete, caso aja necessidade.

3.3.2 - ACONDICIONAMENTO DO MATERIAL

Depois de todos os ns estarem individualmente montados necessrio estudar a melhor forma de acondicionar o material. A soluo encontrada pode ser bastante variada e depende essencialmente da quantidade de ns. At 16 PCs possvel acomodar dentro de um nico hack de 19''. A utilizao de hacks tem vantagens, porque o equipamento fica protegido e a cabeamento fica escondido, porm nem todos os modelos de hardware (placa-me) podem ser acomodados neste tipo de compartimento. Muitos sistemas Beowulf

38

comerciais vm acomodados em pilhas de hacks, como pode ser visto na Figura 3.2[49]. O equipamento ativo (hubs ou switchs) de rede deve sempre que possvel ficar dentro de um hack. Nas implementaes baseadas em gabinetes comuns, os PCs podem ser colocados em prateleiras especiais, construdas propositadamente para o efeito, como se pode observar no exemplo da Figura 3.3[49]. A organizao dos cabos e a forma como as mquinas so ligadas fundamental. Se existir alguma falha a esse nvel, pode levar a diagnsticos errados, dirigindo a ateno para questes de configurao.

Figura 3.2 - Soluo com hack Figura 3.3. - Soluo com prateleiras

3.3.3. REFRIGERAO DO SISTEMA

O acondicionamento do material deve leva em conta eventuais problemas de sobreaquecimento, resultantes da grande concentrao de equipamento. Dependendo do tamanho do cluster h a necessidade de um projeto de refrigerao. Algumas vezes o aumento excessivo da temperatura pode comear a causar erros de processamento do CPU, que passa a se comportar erraticamente, em geral como conseqncia de uma m montagem do dissipador no corpo do CPU, por exemplo, por falta de pasta trmica na regio de contato entre os dois. Deve ser prevista instalao de ar condicionado na sala onde o Cluster vai

39

ficar instalado. No caso de se utilizarem Hacks estes devem incluir kits de ventilao, para facilitar a circulao de ar. Na verso com prateleiras, no caso de no haver ar condicionado podero ser instaladas ventoinhas extras nos gabinetes de forma a facilitar a circulao de ar. Para se conseguir monitorizar a evoluo da temperatura no cluster, importante que as Placa-me dos computadores seja equipada com chipset de controle e indicao de temperatura. Este pormenor pode ser importante, para evitar problemas de sobreaquecimento no controlados.

3.3.4 INSTALAO ELTRICA E ATERRAMENTO

Devido quantidade de mquinas o consumo de energia pode ser excessivo, havendo a necessidade de se projetar circuitos eltricos separados para alimentao do cluster. Outro fator importante o aterramento, pois dele depende todo funcionamento. Todas as tenses de operao do computador tem como referncia o terra do circuito alimentador. Um mau aterramento pode ocasionar falhas como travamentos, aquecimentos, leituras imprpria e conseqentemente tornam o sistema instvel e inseguro.

3.4 - TOPOLOGIAS E TECNOLOGIAS DE REDE

Um cluster um tipo de sistema de processamento paralelo, que consiste num conjunto de computadores (ns), interligados entre si, funcionando de uma forma integrada como se fosse um nico sistema de computao. Um n de um cluster pode ser um sistema monoprocessador ou multiprocessador, PC, workstation ou SMP, com memria, facilidades de I/O e sistema operacional. Os clusters Beowulf em particular so pilhas de PCs, consistindo no mnimo em dois ou mais ns (PCs) interligados atravs de uma rede local privada. Tipicamente utilizam-se dois segmentos Ethernet, como se pode observar na Figura 3.4, para interligar os ns.

40

Barramento lgico

switch

switch

n Barramento fsico

Figura 3.4 - Configurao de rede com dois segmentos Ethernet em paralelo. A interligao clssica entre os ns no Beowulf feita atravs de dois segmentos Ethernet em paralelo. Os processadores comunicam utilizando TCP/IP. Nesta topologia, a desempenho das comunicaes inter-processador severamente limitada pelo desempenho (latncia e largura de banda) da tecnologia Ethernet. O Beowulf tem sido usado para explorar a viabilidade de utilizar mltiplas redes Ethernet em paralelo para satisfazer a largura de banda requerida para a transferncia de dados interna. Nesta arquitetura, cada n do Beowulf tem acesso, de forma transparente para o utilizador, a vrias redes, que constituem domnios de difuso distintos. No exemplo da figura 3.4 podemos ver que cada PC do cluster tem acesso a dois segmentos Ethernet. Esta arquitetura designada channel bonding e est implementada como um melhoramento ao nvel do kernel do Linux (que o sistema operacional tipicamente utilizado nos clusters Beowulf). Vrios projetos Beowulf mostraram que podem ser utilizadas vrias redes em paralelo para obter um aumento significativo de largura de banda e, portanto, validar a utilizao da tcnica de channel bonding.

41

Figura 3.5. - Exemplo de configurao de rede com roteamento por software. A topologia de rede do Beowulf original (figura 3.4.) consiste num par de segmentos Ethernet que interliga todo o cluster operando em paralelo como se fosse um nico barramento virtual. Esta configurao apresenta uma largura de banda agregada de 20Mbps, que constitui um fator bastante limitativo para o desempenho do cluster. Outra configurao alternativa consiste em explorar a tecnologia Ethernet 10Mbps com dois adaptadores de rede por n, mas criando agora oito segmentos separados. Cada n ligado a dois segmentos e cada segmento interliga quatro ns como se pode observar no exemplo da Figura 3.5. Os quatro segmentos verticais esto interligados entre si assim como os segmentos horizontais. Embora a largura de banda agregada terica tenha quadruplicado com este esquema, existem restries largura de banda agregada efetiva e a desempenho. A topologia de rede do cluster Beowulf original (Dois segmentos Ethernet) interliga cada n com uma rota direta para todos os ns do cluster no havendo necessidade de fazer encaminhamentos na rede. Na topologia da Figura 3.6 podemos observar que cada um dos ns no cluster comunica diretamente com apenas seis ns (ns locais), os trs ns com quem partilha o segmento vertical e os trs ns com quem partilha o segmento horizontal. Para um n comunicar com os outros nove ns (ns remotos), necessrio que um n intermdio que

42

local ao emissor e ao receptor funcione como roteador, encaminhando os pacotes atravs dos segmentos de rede. Desta forma dois ns podem sempre comunicar usando no mais que um n intermdio que o roteador. Desta topologia com roteamento por software resultam duas conseqncias: O roteamento consome largura de banda. Um pacote para passar de um segmento para outro tem de ser replicado nos dois segmentos e consome o dobro da largura de banda agregada do que um pacote que no precise passar pelo roteador; O roteamento no grtis. Existe um custo adicional a pagar em latncia associada com o roteamento, quer seja feito por hardware quer seja por software, sendo este custo mais elevado no roteamento por software. A topologia com roteamento tira vantagem do encaminhamento IP, que uma funcionalidade implementada no kernel do Linux. Isto permite que os ns funcionem como roteadores, aceitando um pacote numa interface, determinando se deve ser reencaminhado, podendo tambm ser fragmentado e transmitindo-o pela segundo interface. Apesar dos adaptadores de rede utilizados no Beowulf serem do tipo que permite reduzir a carga no CPU porque copiam os dados de e para a memria principal autonomamente, a mquina que faz o roteamento continua a ter que carregar o software para atender uma recepo, alocar espao temporrio para o pacote a ser reencaminhado, copi-lo, consultar a tabela de roteamento e colocar o pacote na fila de transmisso da respectiva interface. Este processo que tambm feito pelos roteadores designa-se store and forward e provoca latncia na rede. Uma variao alternativa a este esquema de interligao pode ser observada na Figura 3.6. Este novo esquema mantm a ligao fsica dos oito segmentos do esquema com roteamento anterior, mas adiciona dois switchs Ethernet de quatro portas para fazer a comutao entre os segmentos. Os switch Ethernet de alta velocidade encarregam-se de fazer a comutao entre os segmentos, libertando os ns das tarefas de encaminhamento. Para evitar estrangulamentos na comutao, o swicth deve ter como especificaes tcnicas uma largura de banda superior largura de banda dos segmentos e uma latncia baixa.

43

Figura 3.6 - Exemplo de configurao de rede comutada

3.5 - TECNOLOGIAS DE REDE

J que uma interligao com um nico segmento Ethernet a 10 Mbps no satisfatria em termos de desempenho, pois esta tecnologia de rede j est na fase de declnio e a largura de banda e latncia no est balanceada com o poder computacional dos PCs atuais. Recentemente tm surgido novas tecnologias de rede de alta velocidade que podem ser exploradas para melhorar o desempenho da comunicao inter-processadores. Em seguida analisar algumas delas e discutir a sua adequao para os clusters Beowulf. Mecanismos que a rede deve suportar: Deve ter suporte para Linux; Adaptadores de rede PCI com drivers para Linux;

44

Protocolos eficientes; Primitivas de comunicao eficiente com baixa latncia; Deve ser escalonvel de forma a permitir o upgrade do equipamento ativo.

Tecnologias de Rede local com suporte para Linux: Ethernet (10 Mbps); Fast Ethernet (100Mbps); Gigabit Ethernet (1Gbps); Myrinet (1.2Gbps); SCI (Dolphin - MPI - 12 s latncia); HIPPI; ATM; FDDI.

3.5.1 ETHERNET

A tecnologia Ethernet tornou-se sinnimo de rede para interligar PCs. Esta tecnologia tem um campo de utilizao muito basto de tal forma que se pode encontrar em quase todos os sectores de atividade. Contudo, a sua largura de banda de 10 Mbps deixou de ser suficiente para utilizao em ambientes onde exista necessidade de transferir grandes quantidades de dados ou exista uma grande densidade de trfego.

3.5.2 - FAST ETHERNET

Uma verso melhorada da Ethernet surge com o nome de Fast Ethernet, que permite 100 Mbps de largura de banda. Principais caractersticas da tecnologia Fast Ethernet: Desempenho moderado (100 Mbps); Custo reduzido; Ferramentas de diagnstico disponveis e controlo a vrios nveis; Cablagem em cabo de cobre UTP CAT-5; Adaptadores de rede com drivers para Linux disponveis.

45

3.5.3 - GIGABIT ETHERNET

Atualmente, o estado da arte na tecnologia Ethernet o Gigabit Ethernet. Tem como caractersticas: Alto desempenho: 1 Gbps (Gigabit-por-segundo) full-duplex; Preserva a simplicidade da Ethernet; Cablagem em fibra ou cabo UTP CAT-6; Padro aprovado IEEE. Nvel fsico do Gigabit Ethernet Ligaes em fibra com conectores SC; Algumas empresas comearam a comercializar muito recentemente solues Gigabit Ethernet com cablagem em cobre; As ligaes Half-duplex tm distncias muito limitadas; As distncias para as ligaes Full-duplex s so limitadas pelas perdas pticas na fibra ou pela atenuao e cross-talk no cobre. Topologia Estrela Full-duplex; Existe j uma grande variedade de Switch disponveis. Nova caracterstica Ethernet: frames de controle de fluxo Aparecem como frames multicast; Geradas automaticamente pelo hardware; Opcionalmente geradas pelo software. Adaptadores PCI 64 bits; Podem utilizar barramento PCI 32 bits; Possui modelo que opera a 66 MHz e utiliza endereos de 64 bits; Consumo de potncia moderado; Capacidade para manipular frames grandes; Pode usar frames de 96 KB no standard; Drivers para Linux disponveis.

46

3.5.4 - ASYNCHRONOUS TRANSFER MODE (ATM) O ATM uma tecnologia de circuitos virtuais e foi originalmente desenvolvida para a indstria das telecomunicaes. O ATM suposto ser usado tanto em redes LAN como WAN. baseado em pequenos pacotes de dados de tamanho fixo a que se designam clulas. Principais caractersticas: Requer comutadores sofisticados para interligar os ns; Todas as comunicaes utilizam estabelecimento de conexes Cablagem em fibra ou cobre.

3.5.5 - SCALABLE COHERENT INTERFACE (SCI)

SCI um padro IEEE 1596-1992 desenvolvido com o objetivo de fornecer memria compartilhada num ambiente distribudo. SCI foi projetado para suportar multiprocessamento distribudo com uma grande largura de banda e latncia reduzida. Fornece uma arquitetura escalonvel que permite construir grandes sistemas utilizando componentes baratos. O SCI uma arquitetura ponto-a-ponto. Consegue reduzir o atraso nas comunicaes inter-processador mesmo quando comparado com as melhores tecnologias atualmente disponveis como o Fiber Channel e ATM. Isto conseguido porque elimina a necessidade de executar translaes de protocolos. Uma comunicao remota ocorre como sendo um simples carregamento ou armazenamento de um processo num processador. Tipicamente um endereo remoto resulta em perda de memria cache. Isto por sua vez faz com que o controlador de cache enderece memria remota atravs do SCI para conseguir os dados. Os dados so capturados para a cache com um atraso na ordem dos poucos s e o processador continua a execuo. Atualmente a empresa Dolphin produz placas SCI para os SPARC's SBUS e tambm j esto disponveis placas SCI para PCI. Esta tecnologia apresenta bons resultados em termos de latncia e especialmente recomendada para suporte a sistemas MPI. Tem como desvantagens o preo dos

47

componentes relativamente altos e algumas restries de implementao devido ao tipo de comutadores existentes.

3.5.6 MYRINET

Myrinet uma tecnologia de rede local [8] a 1.28 Gbps (Gigabits por segundo) fullduplex baseada na tecnologia usada para comunicao de pacotes nos supercomputadores MPP. uma tecnologia proprietria fornecida pela Myricom, de alto desempenho e latncia reduzida. Tem tolerncia falhas devido ao mapeamento automtico da configurao da rede. Isto tambm facilita a tarefa de configurao. A tecnologia Myrinet suporta Linux e Windows NT. Para alm do TCP/IP suporta a implementao MPICH do MPI para alguns pacotes como Berkeley Active Messages, com latncias inferiores a 10 s. A tecnologia Myrinet mais dispendiosa quando comparada com Fast Ethernet, mas tem vantagens relativamente a esta. Apresenta latncia muito baixa (5 s, comunicao unidireccional ponto-a-ponto), grande largura de banda e as placas de rede tm um processador on-board programvel que garante independncia do CPU. Consegue saturar a largura de banda efetiva de um barramento PCI a quase 120 Mbytes/s com pacotes de 4 Kbytes. Uma das principais desvantagens da Myrinet , como j foi mencionado, o preo comparado com Fast Ethernet. Tambm no existem comutadores disponveis com mais de 8 portas, o que pode trazer alguns problemas de escalabilidade. Uma LAN Myrinet composta por placas de rede, comutadores e ligaes. Os comutadores multi-porta podem ser ligados a outros comutadores ou a placas de rede instaladas nos ns, usando qualquer topologia. Ao contrrio da Ethernet e do FDDI, que compartilham a mesma largura de banda por todos os clientes, a largura de banda agregada da Myrinet pode ser escalonada com a configurao. Uma ligao Myrinet consiste num par de canais full-duplex, cada um operando a uma taxa de transferncia de 0.64 Gbps (Gigabits por segundo), ou uma a uma taxa agregada para uma ligao full-duplex de 1.28 Gbps. O comprimento mximo por segmento do cabo de 25 m. Podem ser usados comutadores e repetidores para permitir aumentar o dimetro da rede. Adaptadores para ligaes at 2 Km em fibra ptica esto a ser desenvolvidos.

48

O protocolo de ligao de dados permite controlo de fluxo, packet framing e controlo de erros. Apresenta uma taxa de erros muito baixa e muito robusta no que concerne s ligaes host - comutador e falhas nos cabos. No caso de haver falhas nos cabos ou nos comutadores so automaticamente utilizadas rotas alternativas se estiverem disponveis para contornar os problemas. O hardware processa e verifica um CRC para cada pacote em cada link. As placas de rede Myrinet/Sbus incluem um processador onboard que executa um programa de controle que mapeia e monitoriza a rede continuamente, e traduz os endereos usados pelas mquinas (como endereos IP) e as rotas usadas pelos comutadores Myrinet. Um comutador Myrinet um pequeno componente, com pequeno consumo de potncia e software de auto-inicializao. Atualmente existem comutadores de 4 ou 8 portas. Comutadores de 16 e 32 portas esto em desenvolvimento. Devido ao fato de poder transportar pacotes de qualquer tamanho, a Myrinet suporta IP diretamente sem nenhuma camada de adaptao, e todos os protocolos acima do IP, tais como TCP e FTP. Devido sua elevada largura de banda, baixa latncia e escalabilidade, a tecnologia Myrinet particularmente interessante para interligar PCs em clusters usados para aplicaes de computao paralela. Isto no surpreende, porque a tecnologia Myrinet desenvolveu-se com a tecnologia multi-computador. Esta tecnologia tambm recomendada para construo de backbones, e para aplicaes que utilizam muita largura de banda como transferncia de imagens de elevada resoluo ou vdeo.

3.5.7 HIPPI

O acrnimo HIPPI significa Interface Paralela de Alto-desempenho. A tecnologia HIPPI um padro ANSI X3T11. Esta tecnologia funciona com velocidades de 800 Mbps ou 1.6 Gbps e foi desenvolvida para interligar mainframes ou supercomputadores em cluster. A verso paralela do HIPPI usa 50 pares de cabo STP com comprimentos at 25 m, enquanto a nova interface permite ligaes em fibra com conectores SC e distncias at 300m.

49

Para esta tecnologia existe pouco hardware e suporte para drivers e s se refere no contexto deste trabalho por uma questo de complementao. Contudo, de todas as tecnologias em anlise, esta a que apresenta maior largura de banda.

3.5.8 FDDI

O FDDI uma tecnologia de rede a 100 Mbps, normalmente utilizada em backbones. Tem uma configurao em duplo anel e suporta vrios modos de transmisso que so importantes para a comunicao de dados. O Modo sncrono permite reserva de largura de banda e define um atraso mximo end to end para cada pacote de dados; o modo assncrono no tem restries temporais, similar ao protocolo Token Ring e algumas implementaes suportam apenas este modo.

3.6 - ANLISE COMPARATIVA

O principal elemento no desenvolvimento de novos clusters Beowulf est na possibilidade de se utilizar redes de alto desempenho para servir de base de sustentao ao cluster. Recentemente emergiram vrias tecnologias de rede Gigabit com suporte para Linux, abrindo novas perspectivas para a evoluo e crescente expanso dos clusters Beowulf. Abaixo podemos verificar as principais caractersticas das tecnologias de rede apresentadas nas Tabelas 3.4. Tabela 3.4 Analise Comparativa das Tecnologias de Rede Tecnologia rede Ethernet Fast Ethernet Gigabit Ethernet Myrinet SCI HIPPI de Topologia Barramento ou estrela Estrela Estrela Estrela Ponto-aponto Ponto-aponto Largura Banda 10Mbps 100Mbps 1Gbps 1.2Gbps 1.6Gbps 800Mbps 1.6Gbps ou de Latncia Alta Mdia Baixa Muito Baixa Muito Baixa Baixa Meio Fsico Cobre Suporte Equipamento a Linux Ativo Sim Switch e Hub Switch e Hub Switch e Hub Comutadores Comutadores Comutadores

Cobre Sim Fibra e Sim Cobre Cobre Cobre Sim No

Fibra e Sim Cobre

50

ATM FDDI

Estrela Duplo Anel

25 a 155Mbps 100Mbps

Baixa Mdia

Fibra e No Cobre Fibra No

Comutadores Comutadores

No prximo capitulo ser abordado o software utilizado em Clusters Beowulf como: Sistema Operacional, sistemas de arquivos, bibliotecas de comunicao e software administrativos.

51

CAPTULO 4 - SOFTWARE Neste captulo pretende-se oferecer uma panormica do software mais utilizado nos clusters Beowulf. Referenciam-se brevemente as ferramentas que podem ser utilizadas para gesto dos recursos do sistema e escalonamento de tarefas, programao e debug em ambiente paralelo e sistema operacional utilizado. Descrevem-se tambm com algumas ferramentas desenvolvidas especificamente para clusters Beowulf com o objetivo de criar uma imagem nica de sistema. Por fim, refere-se uma aplicao de gesto do cluster de forma integrada, o SCMS (SMILE Cluster Management System). A quase totalidade do software descrito de domnio pblico e encontra-se sob a GPL - GNU Public License. Apesar de todo o software se encontrar disponvel de forma separada existem algumas colees de ferramentas que incluem praticamente tudo aquilo que necessrio para instalar um Beowulf, como por exemplo, o pacote Beowulf includo na distribuio SuSE do Linux. 4.1. SISTEMA OPERACIONAL Seguindo as finalidades do projeto de clusters tipo Beowulf o sistema operacional teria que atender as seguintes caractersticas: ser estvel, seguro, ter capacidade de trabalhar em sistemas multiusurio e multitarefa, poder operar sobre as mais diversas arquiteturas de computadores, ser gratuito e ter seu cdigo fonte disponvel. Atendendo estas caractersticas aparecem duas verses do Sistema Operacional Unix conhecidas como Linux e FreeBSD [23]. O Free BSD surge a partir de Unix BSD 4.4 desenvolvido pela Universidade de Berkeley, Califrnia e se diferencia do Linux, que foi desenvolvido do zero Baseia-se na modificao e melhoramento do cdigo BSD j existente. Qualquer um dos dois seria uma tima escolha, mas devido sua grande popularidade e crescente uso na comunidade optou-se por usar o Linux como sistema operacional num ambiente de cluster, pois ele se adequa muito bem. Alm do preo, que s vezes determina a realizao ou no de um projeto, especialmente num ambiente acadmico ou em empresas pequenas, ainda se tem vantagem do cdigo fonte aberto. Embora a tarefa de fazer o Linux funcionar em clusters esteja comeando, a natureza aberta dos projetos permite que j se vejam resultados excelentes, superiores a muitas solues comerciais bem mais caras. Muitas melhorias ao kernel-padro do Linux foram

desenvolvidas, bem como mais e melhores drivers para placas de rede, a pilha TCP/IP foi melhorada e vrias outras implementaes foram feitas em outros pontos do sistema. 4.1.1 - CARACTERSTICAS DO LINUX O Linux uma implementao independente da especificao POSIX [21], com a qual todas as verses do UNIX padro esto convencionadas. O Linux foi primeiramente desenvolvido para PCs baseados em 386/486/Pentium, mas atualmente tambm pode ser executado em computadores Alpha da DEC, Sparcs da SUN, mquinas M68000 (semelhantes a Atari e Amiga), MIPS e PowerPCs (IBM). O Linux est disponvel na forma de cdigo objeto, bem como em cdigo fonte e pode ser livremente distribudo nos termos da GNU, General Public License [21,24]. O Linux possui todos as caractersticas que se pode esperar de um UNIX moderno, incluindo: multitarefa real; memria virtual; Modularizao - O Linux somente carrega para a memria o que usado durante o processamento, liberando totalmente a memria assim que o programa/dispositivo finalizado. Suporte a diversos dispositivos e perifricos disponveis no mercado, tanto os novos como obsoletos. Suporte a nomes extensos de arquivos e diretrios (255 caracteres). Pode ser executado em arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc). suporte a at 16 processadores no mesmo sistema com verso do Kernel 2.4; Biblioteca compartilhada; "Demand loading"; gerenciamento de memria prprio; executveis "copy-on-write" compartilhados; rede TCP/IP (incluindo SLIP/PPP/ISDN) e X Windows. Suporte a diversos sistemas de arquivos: ext2, ext3, jfs, Xfs e Reiserfs.

O sistema GNU/Linux encontrado nos mais diversos formatos e tamanhos, que atendem as mais diversas especificaes desde de pequenos sistemas que podem funcionar em Microcontroladores at Supercomputadores. S o sistema operacional Linux no necessrio para ter um sistema funcional, mas o principal. Existem grupos de pessoas, empresas e organizaes que decidem "distribuir" o Linux junto com outros programas essenciais (como por exemplo, editores grficos, planilhas, bancos de dados, ambientes de programao, formatao de documentos, firewalls, etc). Este o significado bsico de distribuio. Cada distribuio tem sua caracterstica prpria, como o sistema de instalao, o objetivo, a localizao de programas, nomes de arquivos de configurao, etc. A escolha de uma distribuio depende da necessidade de cada um. Algumas distribuies bastante conhecidas so: Mandrake, Slackware, Debian, Red Hat, Conectiva, Suse, todas usando o SO Linux como kernel principal (a Debian uma distribuio independente de kernel e pode ser executada sob outros kernels, como o GNU hurd). A escolha de sua distribuio vai depender do grau de conhecimento da mesma. Porem existem algumas distribuies que j trazem pacotes prontos para clusters, como: Sycld, baseado no Red HaT, cuja principal caracterstica poder ser instalada apenas no servidor, sendo que os ns clientes podem ser computadores sem disco rgido. Outras distribuies possuem diversos pacotes voltados para clusters como a SUSE, uma distribuio alem e tambm a prpria Red Hat que possui uma distribuio chamada Extreme Linux. Outro projeto o Mosix [25], desenvolvido em Israel, tambm especialmente interessante. Com a diferena de requerer a maior modificao no kernel do Linux. O Mosix permite a migrao automtica de processos entre vrias mquinas de um cluster. Isso pode permitir que aplicaes existentes funcionem num ambiente de cluster com poucas alteraes. Embora na prtica o projeto no esteja completo, ele pode se tornar vivel para uma grande quantidade de problemas. Os desenvolvedores do Mosix esto trabalhando com diversas abordagens interessantes, como sockets migrveis. Apesar de tudo isso ao se determinar que distribuio utilizar na montagem do cluster deve-se levar em conta algumas caractersticas da distribuio como: suporte a drivers para perifricos, facilidade de instalao e manuteno, suporte a bibliotecas de comunicao e suporte nativo aos diferentes sistemas de arquivos.

4.1.2 SISTEMA DE ARQUIVOS LOCAIS Na hora de escolher o sistema de arquivos a ser utilizado as opes so: usar o sistema EXT2, que acompanha o Linux h vrios anos, ou utilizar um dos novos sistemas com journaling como EXT3, ReiserFS e JFS. O journaling permite que o sistema de arquivos mantenha um log, onde so armazenadas todas as mudanas feitas em arquivos do disco. Quando qualquer erro inesperado surge ou o sistema desligado incorretamente possvel localizar todas as operaes que no haviam sido concludas, restaurando a consistncia do sistema de arquivos em poucos segundos, sem a necessidade de vascular arquivo por arquivo. Isso bem diferente do que acontece no EXT2, onde o utilitrio fsck [32] precisa vasculhar todo o disco em busca de erros depois de cada desligamento incorreto, um processo que pode demorar alguns minutos, dependendo do tamanho da partio. Alm disso, a freqncia com que so perdidos arquivos ou mesmo pastas inteiras (ou at mesmo a tabela de partio do disco) no EXT2 por causa dos desligamentos incorretos alta, um perigo que minimizado nos sistemas com suporte a journaling.As principais caractersticas dos trs sistemas de arquivos so enunciadas abaixo: Sistema de arquivos ext3 uma alternativa para usurios do sistema de arquivos ext2 que desejam obter as vantagens do journaling Permite a converso entre os sistemas de arquivos ext2 e ext3 sem a necessidade de reformatao Desde a verso 2.4 encontra-se disponvel como parte integrante do kernel do sistema operacional Linux Permite o uso de journal para dados, meta-dados1 ou ambos ext3 = ext2 + journal No suporta alocao dinmica de inodes O suporte a ele j se encontra disponvel em vrias distribuies Linux, incluindo Conectiva 8.0, RedHat 7.2 e Mandrake 8.0

Meta-dados local onde as informaes como data e tamanho dos dados so armazenados

Sistema de arquivos ReiserFS Projetado por Hans Reiser, tem a grande vantagem de ser o primeiro sistema de arquivos baseado em journaling a ser includo como parte integrante do kernel do Linux Ainda no oferece suporte a quotas para usurios e grupos Permite arquivos com at 2 GB de tamanho Possui otimizaes para trabalhar com arquivos pequenos, reduzindo a fragmentao O suporte a ele j se encontra disponvel em vrias distribuies Linux, incluindo Conectiva (desde a v6.0), RedHat 7.1, SuSe Linux 7.0 e Mandrake 8.0

Sistema de arquivos XFS Criado em 1994 pela SGI para substituir outro sistema de arquivos (EFS), tornouse disponvel para Linux em Jul/2001 pela licena GPL Projetado especialmente para trabalhar com arquivos grandes (de at 9 mil petabytes) e diretrios com vrios arquivos Pode trabalhar com tamanho de bloco variando de 512 bytes at 64 KB Oferece suporte a quotas para usurios e grupos Suporte ao NFSv3 - cliente e servidor O suporte a ele j se encontra disponvel em distribuies Linux, incluindo RedHat 7.1 e Mandrake 8.0 O suporte a ele ainda no parte integrante do kernel do Linux, mas pode ser adicionado com a aplicao de Patches

Sistema de arquivos JFS Criado pela IBM para uso em servidores corporativos Permite o emprego de blocos com tamanho de 512,1024,2048 e 4096 bytes Para um tamanho de bloco de 512 bytes, o tamanho mximo de um arquivo de 512 Tb Para um tamanho de bloco de 4KB, o tamanho mximo de um arquivo de 4 petabytes Incorporado na v2. 5.6 do kernel para o sistema operacional Linux

O suporte a ele pode ser adicionado em verses anteriores do kernel com a aplicao de patches O suporte a ele j se encontra disponvel em distribuies Linux, incluindo Mandrake 8.0 Sistemas de arquivos com journaling so recomendveis para uso em sistemas que exigem alto desempenho e disponibilidade, pois reduz o tempo de reparo do sistema de arquivos e diminui as chances de serem introduzidas inconsistncias no sistema de arquivos aps alguma falha. 4.2. AMBIENTES DE PASSAGEM DE MENSAGEM A comunicao entre os ns dos clusters pode ser efetuada de duas formas diferentes: utilizando o software Distributed Inter-Process Communication (DIPC) ou software de passagem de mensagem como o PVM (Parallel Virtual Machine) e o MPI (Message Passing Interface). Existem duas tcnicas de programao: MPMD (Multiple Program Multiple Data): diversos blocos de instrues diferentes. So aplicados a diferentes conjuntos de dados; SPMD (Single Program Multiple Data): um nico bloco de instrues simultaneamente aplicado a mltiplos conjuntos de dados (os processadores podem, no entanto seguir diferentes caminhos de acordo com as instrues de controle de fluxo do programa). A tcnica utilizada depende da aplicao. SPMD eficiente quando a mesma parte de um determinado trabalho computacional pode ser paralelizada. MIMD destina-se a ter diferentes processadores a executar tarefas distintas. 4.2.1 - Distributed Inter-Process Communication Consiste numa implementao dos mecanismos de comunicao entre processos (IPC) do System V [33], tipicamente semforos, filas de mensagens e memria compartilhada, modificada de forma a funcionar em ambiente de memria distribuda (por exemplo, Clusters). A sintaxe similar do System V de forma a garantir a portabilidade das aplicaes. As suas funcionalidades so garantidas por um daemon (dipcd) em kernel space, o que obriga a uma recompilao do ncleo do Linux de forma a incluir o DIPC [48].

Distributed Shared Memory (DSM) consiste na implementao de memria compartilhada do DIPC, que utiliza a semntica mltiplos leitores - escritor nico, e um modelo de consistncia strict consistency que garante que o resultado de uma leitura sempre o valor mais atual. No entanto este modelo origina diminuio de desempenho. Apesar de o DIPC se encontrar integrado ao kernel, o seu desempenho atualmente inferior aos mecanismos de passagem de mensagem. 4.2.2 - Parallel Virtual Machine O PVM (Parallel Virtual Machine) [26] em como objetivo utilizar um conjunto de ns de um cluster para executar uma determinada aplicao como se estes se tratassem de uma nica mquina virtual. Utiliza o paradigma de comunicao passagem de mensagem. As aplicaes so vistas como uma coleo de tarefas que utilizam as bibliotecas de funes do PVM para sincronizao e comunicao. As arquiteturas suportadas pelo PVM abrangem a famlia x86 (da Intel), estaes de trabalho e computadores multi-processador. Isto no significa que, apesar de se poder formar um cluster heterogneo, seja possvel compilar uma nica vez a aplicao, pois para cada arquitetura necessrio compilar o cdigo. A transparncia conseguida atravs do Identificador de Tarefa (TID) nico para cada tarefa de cada mquina virtual. O PVM tem as seguintes caractersticas: O conjunto de ns que constitui a mquina virtual escolhido pelo usurio; O modelo de mensagens explcito (ao contrrio do DIPC); Permite heterogeneidade, seja de arquitetura, formato de dados, velocidade de computao, carga do processador e da rede. O software que integra o PVM divide-se em duas partes: um daemon (pvmd3) colocado em todos os ns do cluster e uma biblioteca de funes de interface utilizadas pelas aplicaes (libpvm3.a). Cada usurio pode criar uma mquina virtual PVM que englobe qualquer conjunto de ns do cluster, ou seja, em simultneo podem existir diversas mquinas virtuais executando nos mesmos ns do cluster. O arquivo rhosts2 identifica os servidores restantes da mquina virtual (daemons nos outros ns) e autoriza o acesso a esses servidores.
2

Arquivo de configurao de Sistema Operacional GNU/linux que indica que mquinas tm permisso de acesso na mquina local

O PVM utiliza os seguintes mecanismos de comunicao entre processos: Sockets UDP3 para comunicao entre os daemons. O protocolo de transporte UDP oferece um servio de mensagens no confivel pelo que esta tem de ser garantida ao nvel da camada protocolar constituda pelo PVM. O TCP no utilizado devido ao elevado nmero de conexes que seria necessrio estabelecer entre os diversos ns Sockets TCP4 para comunicao entre tarefas e entre um daemon e uma tarefa, que oferecem um servio stream oriented confivel. Pode ainda utilizar Unix sockets para comunicaes locais, o que diminui a latncia. O XPVM uma interface grfica para ambiente X-Windows que permite monitorizar o desempenho e debug ao nvel das chamadas do PVM. Foi desenvolvido em Tcl/Tk e distribudo livremente sob a GPL. 4.2.3 - MPI - MESSAGE-PASSING INTERFACE O MPI [28] um padro criado por um comit de especialistas representativos da indstria de HPC (High Processing Computer) e de centros de pesquisa entre 1993 e 1994. Existem vrias verses disponveis de MPI como, por exemplo: a MPICH [29] e a LAM-MPI [30] que tem um desempenho melhor. O objetivo principal do MPI estabelecer um padro que fosse largamente utilizado, para escrever programas que utilizem troca de mensagens, pretendendo-se que seja portvel, prtico, eficiente e flexvel para tal finalidade.Algumas de suas caractersticas so descritas a seguir: a) Universalidade: O modelo troca de mensagens funciona bem sobre processadores separados conectados por uma rede (rpida ou lenta) de comunicao. b) Depurao: O modelo troca de mensagens controla referncias de memria mais explicitamente que qualquer outro modelo (somente um processo tem acesso direto a qualquer posio de memria). Isto permite localizar facilmente erros de leitura e escrita na memria. c) Desempenho: Como as CPUs modernas so muito rpidas, a manipulao de seus caches e a hierarquia da memria em geral tem se convertido na chave para obter o
3 4

UDP (User Datagrama Protocol) Protocolo de transmisso no-confiavl TCP(Transport Control Protocol) protocolo de transmisso orientado a conexo

mximo delas. A troca de mensagens propicia uma forma para, explicitamente, o programador associar dados especficos a processos e assim permitir ao compilador e ao hardware de cache funcionar completamente. Alm disso, uma vantagem dos computadores de memria distribuda sobre as mquinas com processadores simples que eles tipicamente possuem mais memria e mais cache. O MPI uma biblioteca e no uma linguagem, pois especifica nomes, seqncias de chamadas e resultados de sub-rotinas ou funes ara serem realizadas a partir de programas de Fortran ou C. Os programas que os usurios escrevem em Fortran e C so compilados com compiladores ordinrios e acoplados (linked) com a biblioteca MPI. A biblioteca MPI prev a definio de tipos especiais que facilitam bastante a troca de dados entre os processadores, utilizando o conceito de comunicador que permite organizar os processadores por grupo. Um comunicador especifica um domnio de comunicao que pode ser utilizado para comunicao de ponto a ponto. A seguir mostramos algumas caractersticas importantes da biblioteca MPI Comunicaes coletivas: Outro conceito proveniente das bibliotecas de troca de mensagens existentes a noo de operao coletiva, realizada por todos os processos em uma computao. As operaes coletivas so de dois tipos: Operaes de movimento de dado utilizadas para reagrupar dados entre os processos. Operaes de computao coletiva (mnimo, mximo, soma, OR lgico, etc., assim como operaes definidas pelo usurio). Em ambos os casos, uma biblioteca de troca de mensagens pode tirar proveito do seu conhecimento da estrutura da mquina para otimizar e incrementar o paralelismo nestas operaes. O MPI tem um grande conjunto de operaes de comunicao coletivas, sendo um mecanismo pelo qual os usurios podem criar suas prprias operaes. Alm disso, o MPI fornece operaes para a criao e manipulao em uma forma escalvel. Tais operaes podem ser usadas para controlar o alcance de operaes coletivas. O MPI tem um mecanismo flexvel para descrever rotinas de movimento de dados. Existe particularmente potencialidade quando usado em conjuno com os tipos de dados derivados. Algumas das principais caractersticas de MPI so:

Topologias virtuais. O MPI suporta grafos e malhas de processos. As topologias fornecem um mtodo de alto nvel para manipular grupos de processos sem tratar diretamente com eles. As topologias so uma parte padro do MPI.

Depurao: O MPI permite aos usurios interceptar chamadas MPI e, portanto, definir seus prprios mecanismos de debugging. Modos de comunicao. O MPI tem ambas operaes de bloqueio (send e receive) e as verses sem bloqueio cujas execues podem ser testadas explicitamente. possvel testar e esperar em mltiplas operaes simultaneamente.

Diversos modelos de comunicao: o Ponto a Ponto: Transferncia de dados entre dois processos; o Coletiva: comunicao padro que invoca todos os processos em grupo coleo de processos que podem se comunicar entre si. As rotinas de comunicao coletiva so voltadas para comunicao/coordenao de grupos de processos

Suporte a redes heterogneas. Os programas MPI podem ser executados em redes de mquinas que tenham diferentes tamanhos e formatos para vrios tipos de dados fundamentais, desde que cada operao de comunicao especifique uma estrutura e os tipos de dados que a compem, portanto as implementaes do MPI tm suficiente informao para fazer as converses aos formatos de dados, se for necessrio. O MPI no especifica como isto feito, mas permitir uma variedade de otimizaes.

A biblioteca possui rotinas para programas em FORTRAN e C/C++. O paralelismo explcito, ou seja, o programador responsvel por identificar o paralelismo e implementar o algoritmo utilizando as chamadas aos comandos do MPI.

O XMPI [39] uma interface grfica para ambiente X-Windows, desenvolvida pela equipe do padro LAM (Local Area Multicomputer), que permite monitorar o desempenho e debuging do MPI. A desvantagem desta interface que ela s funciona em conjunto com distribuio da biblioteca LAM. O MPI no tem presente o conceito de mquina virtual do PVM. No entanto o desempenho constituiu uma preocupao central no seu desenvolvimento, pelo que teoricamente mais rpido e eficiente que o PVM. Por este

motivo, se a arquitetura homognea como acontece com os clusters Beowulf, a ambiente de passagem de mensagem MPI acabou-se tornado um padro de fato para estes sistemas. Algumas implementaes do MPI so: MPI-F: IBM Research MPICH: ANL/MSU Argone National Laboratory e Missipi State University UNIFY: Missipi State University CHIMP: Edinburg Parallel Computing Center LAM: Ohio Supercomputer Center Entre todas essas distribuies do MPI destacam-se: a LAM(Local Area Multicomputer) e MPICH(MPIChameleon). Apesar destas distribuies seguirem o padro MPI, elas incorporam uma srie de funcionalidades adicionais como, por exemplo: suporte a mquinas SMP e interoperabilidade entre mquinas heterogneas (MPICH). A distribuio LAM a nica distribuda atravs de pacotes RPM(Red Hat Packages Management) o que a torna muito popular nas distribuies GNU/Linux que utilizam essa forma de empacotamento.

4.4. COMPILAO E DEBUG No existem ainda compiladores que paralelizem automaticamente o cdigo de uma aplicao de forma a ser executado em paralelo num cluster. No entanto existem algumas ferramentas que auxiliam a paralelizao manual do cdigo. Estas ferramentas destinam-se essencialmente a aplicaes escritas em Fortran (por exemplo, o software BERT [40] da Prologic). Usualmente os fabricantes de sistemas computacionais HPC fornecem ferramentas de debug para os seus sistemas, no entanto, o nmero de debuggers capazes de serem utilizados numa arquitetura heterognea bastante limitado. Como exemplo tem-se o TotalView [41], que um produto comercial da Dolphin Interactive Solution, atualmente o nico que suporta mltiplas plataformas de HPC, sistemas operacionais (SunOS, Solaris, AIX, Digital Unix, SGI Irix), linguagens de programao (C, C++, Fortran) e modelos de comunicao (PVM e MPI). No entanto, apesar de poder ser executado em mltiplas plataformas o sistema operacional deve ser o mesmo em todas elas.

4.5 - GESTO DE RECURSOS E ESCALONAMENTO Gesto de recursos e escalonamento (GRE) consiste em distribuir os processos pelos diversos ns, de forma a minimizar o tempo total de execuo e equilibrar a carga dos ns. A gesto de recursos encarrega-se da localizao de recursos, da autenticao e da criao e migrao de processos. O escalonador encarrega-se da gesto da fila de processos e da atribuio de recursos aos processos. A arquitetura bsica da GRE o modelo cliente-servidor. Cada n que partilha recursos computacionais executa um processo servidor que mantm informao sobre os recursos que disponibiliza e que responsvel pela gesto e escalonamento das tarefas. Para submeter uma tarefa necessrio utilizar os processos cliente, que interagem com os servidores de recursos, indicando, por exemplo, a localizao dos arquivos executveis, os dados de entrada, a localizao de destino dos dados de sada, entre outros parmetros. A GRE oferece servios de Middleware que incluem: Migrao de processos: deslocamento de processos entre ns; Checkpointing: garante a confiabilidade armazenando o estado do processo em certos instantes de forma a ser possvel retomar a sua execuo em caso de falha; Distribuio de Carga: determinao da melhor forma de distribuir os processos ao longo do sistema de forma a garantir uma utilizao equilibrada dos diversos ns. H diversos software que foram desenvolvidos visando atender a maioria destes requisitos, muitos so de domnio pblico e esto disponveis para downloads. A escolha de que software utilizar vai depender do tamanho da aplicao e se o mesmo atende a todos os critrios do seu sistema. Abaixo sero descritas as caractersticas de alguns deste software: 4.5.1 - OpenPBS (Open Portable Batch System) O OpenPBS [42] subsistema que serve para submeter, monitorar e controlar a carga de processamento em sistema distribudo heterogneo. O OpenPBS faz um planejamento da execuo dos processos de acordo com uma poltica preestabelecida pelo administrador e com os recursos disponveis no sistema. Atualmente o OpenPBS, opera em sistema UNIX multiplataforma, incluindo cluster, supercomputadores e sistemas maciamente paralelos(MPP). Os principais recursos oferecidos pelo OpenPBS so:

Interface para mltiplos usurios em linha de comando(CLI) ou interface grfica Interdependncia das tarefas Escalonamento atravs do sistema Segurana e lista de controle de acesso Contas para tarefas Distribuio de carga dinmica Organizao automtica de arquivos

O OpenPBS consiste em quatro componentes bsicos: Comandos: usado para submeter, monitorar, modificar e apagar os processos. Job Server: prover os servios bsicos de grupo (Proteger processos contra a queda do sistema, executar um processo, criar/receber grupo de tarefas). Job executor: daemom que coloca todos os processos em execuo e retorna as sadas correspondentes. Job Scheduler controla qual processo ser executado, onde e quando, baseado na poltica de escalonamento implementada. 4.5.2 ANTS O ANTS Load Balancing System [42] um escalonador de sistemas distribudos que executa tarefas remotas em uma rede. O melhor n da rede pode ser escolhido para executar a tarefa. O ANTS uma aproximao diferente dos tradicionais escalonadores. A Tarefa no colocada em uma fila, ela executada imediatamente se houver um host disponvel. Este escalonador possui um bom desempenho em execuo de um nmero grande de pequenas tarefas. O sistema tentar utilizar mtricas pra enviar requisies de tarefas a outros ns do cluster, caso o n no responda ele continuar tentando at achar uma disponvel para executar a tarefa. O ANTS consiste em duas partes: O daemom antsd: Cada n dever executa uma cpia desse processo daemom. Cada n tem sua prpria configurao com limites de recursos e configuraes do tipo de tarefas que podem ser executadas.Estes processos se comunicam pelo protocolo UDP. O rant o job shell, ou seja, na compilao tradicional usa-se o compilador de programas do sistema, dessa forma, gcc c prog.c, neste caso basta

acrescentar a seguinte condio :rant t gcc c prog.c e compilador ir procurar o melhor n disponvel para executar o programa. O nmero de ferramentas desenvolvidas para este propsito extenso. Alm das descritas podemos ainda citar: CONDOR [45], GNQS [46] e DQS [47]. Todas podem ser encontradas na web e esto disponveis para download livremente. 4.6. SISTEMAS DE MIDDLEWARE Os clusters devem ser vistos no como um grupo de mquinas, mas como se fosse uma nica mquina, como um supercomputador. Para que o mesmo possua tal caracterstica necessrio o uso de ferramentas que permitam a construo de uma imagem nica de todo o sistema diante do usurio, isto , no cabe a ele saber quantas e quais mquinas fazem parte do cluster.Existem diversas ferramentas que possuem estas caractersticas como: PFVS e o BPROC que podem ser considerados, dentro da arquitetura de clusters, como parte da integrante da camada de Middleware descrita no captulo 2. 4.6.1 - ESPAO DE PROCESSOS DISTRIBUIDO - BPROC O BPROC - Beowulf distributed PROCess space [35] tem como objetivo criar a imagem de sistema virtual nico para um cluster Beowulf. Para o efeito oferece mecanismos para gerir processos nos diversos ns do sistema atravs do front-end do cluster sem ser necessrio efetuar remote shell (rsh) nem remote login (rlogin). O espao de processos distribudo permite representar processos de qualquer n na tabela de processos do front-end, de forma a ser possvel comunicar com esses processos como se fossem processos locais. O BPROC no se ocupa da gesto de recursos nem da distribuio de carga. O seu nico objetivo consiste em criar um espao de processos nico para todo o cluster Beowulf. As mquinas que pretendem distribuir o seu espao de processos devem executar um master daemon. As mquinas que aceitam processos de outros ns devem executar um slave daemon. Cada n pode executar mltiplos slave daemon, mas apenas um master daemon, ou seja, cada mquina pode conter processos em diversos espaos diferentes, mas apenas pode gerir um espao de processos. Num cluster Beowulf o servidor ou front-end deve executar um master daemon e os ns restantes devem executar slave daemons.

Existem diversas primitivas que permitem iniciar um novo processo em qualquer n a partir de um processo em qualquer outro n: bproc_rexec: permite iniciar um processo num n remoto desde que o executvel se encontre nesse n. Portanto, requer a instalao prvia do executvel nesse n. A sintaxe desta funo a seguinte: bproc_rexec( node, file, argv, envp );

Os argumentos identificam o executvel (file), o n onde se pretende iniciar o processo (node), os parmetros de entrada (argv) e as variveis de ambiente (envp). bproc_move: permite deslocar o processo que invoca esta primitiva para um determinado n especificado (node): bproc_move( node, flags );

Esta primitiva tem a vantagem de transportar o executvel para o n de destino de uma forma automtica, o que reduz o espao ocupado em disco nos ns mas apresenta a desvantagem do overhead que resulta da utilizao da rede de comunicaes para transferir o executvel. bproc_rfork: permite criar um processo filho do processo que a invoca num determinado n (node) selecionado. O BPROC consiste em trs componentes bsicos, chamados de Processos Ghost no front-end, o Mascaramento de PID e os Daemons, que so descritos de seguida. Processos Ghost - Estes processos representam, no front-end, os processos remotos, que so executados nos ns restantes sob a monitorizao dos slave daemons. Estes processos no tm espao de memria, arquivos associados nem contexto. Estes processos espelham o estado dos processos remotos que representam. A informao acerca desses processos remotos apresentada no diretrio /proc do sistema de arquivos para usurio. Essa informao atualizada a pedido (por consulta de /proc utilizando o comando top por exemplo) e tambm periodicamente. Mascaramento de PID - Os ns remotos executam uma parte da rvore de processos do front-end. Alm desses processos podem existir outros processos iniciados por rsh(remote shell) por exemplo, que devem coexistir com os processos remotos controlados pelo BPROC. Quando se desloca um processo de um n para outro o seu PID no deve mudar devido s dependncias que existem entre os

diversos processos. Para que tal seja possvel o slave daemon cria e controla um espao de processos local que um subconjunto do espao de processos do master daemon. Neste subespao, os processos tm o mesmo PID dos processos correspondentes - isto se designa de Mascaramento de PID. Podem eventualmente existir outros processos no n associados a diferentes daemons e conseqentemente a diferentes espaos de processos que no interferem entre si. Daemons - O master daemon armazena a informao acerca da configurao dos ns e conhece a localizao de todos os processos no seu espao de processos. responsvel pela criao da imagem de uma nica rvore de processos. Os slave daemons atuam como intermedirios entre os processos remotos e o master daemon. Representam um subconjunto do espao de processos global e efetuam o Mascaramento de PID nesse subespao. 4.6.2 - Network File System (NFS) NFS foi proposto pela Sun Microsystem Inc.O NFS baseado no conceito de sistemas de arquivos do sistema operacional UNIX. O objetivo principal do sistema NFS permitir que um conjunto de estaes de trabalho compartilhem um sistema de arquivos de forma comum e transparente. Ele usa uma arquitetura cliente/servidor e RPC5(Remote Procedure Call) para comunicao. O sistema composto por uma mquina servidor, que distribui os arquivos, e as mquinas clientes, que os manipulam. O servidor exporta arquivos para o cliente que pode acessa-los como se fosse um arquivo local. O NFS no salva as informaes de cada estado da operao do cliente, e cada requisio considerada independentemente.Em contrapartida, toda a informao necessria execuo de qualquer arquivo tem que ser consultada no servidor. Isto causa um consumo de largura de banda da rede. O fato de o servidor ser desprovido de estado traz uma vantagem consiste no fato, se o cliente falhar, no haver perda de informao, pois o servidor no guarda informaes sobre os arquivos abertos, e o servidor continuar funcionando, atendendo outras requisies.A ltima distribuio do NFS a verso 3, que vem implementada no Kernel do Linux 2.4.x. Esta nova verso vem corrigir alguns problemas relacionados escalabilidade e desempenho.

RPC Chamada de Procedimento Remoto um protocolo de comunicao entre os ns da rede, onde so chamadas funes fora do escopo de endereamento local.

O sistema NFS composto por trs protocolos: Protocolo de montagem (MOUNT) efetua a requisio de cliente ao servidor para a montagem do arquivo ou diretrio Protocolo de acesso NFS encarregado de executar todas as operaes nos sistemas exportados Protocolo do Gerenciador de LOCK protocolo responsvel pela operao de locking dos arquivos 4.6.3 - PARALLEL VIRTUAL FILE SYSTEM (PVFS) O desenvolvimento do Parallel Virtual File System (PVFS)[44] deve-se crescente disparidade que se tem verificado nos ltimos anos entre a evoluo do desempenho dos dispositivos de armazenamento de dados e dos processadores( sendo notoriamente superior nestes ltimos), o que origina um ponto de estrangulamento naqueles dispositivos especialmente em aplicaes que manipulem grandes conjuntos de dados. Com o objetivo de minimizar este problema surgiu o projeto PVFS na NASA, intimamente ligado ao desenvolvimento do Beowulf. A idia base consiste em dividir um arquivo em diversas parties e armazenar essas diferentes parties ao longo de diversos ns do sistema de forma a conseguir uma capacidade de input/output agregada sobre o arquivo como um mltiplo da que estaria disponvel se o arquivo se encontrasse armazenado num nico n. Desta forma possvel paralelizar as operaes de leitura e de escrita sobre um arquivo. O PVFS utilizado em ambiente Linux sobre o protocolo de transporte TCP. Atualmente encontra-se implementado em nvel de usurio no sendo necessrio modificar o kernel. Suporta a interface de input/output do Unix e inclui uma biblioteca compartilhada que permite a portabilidade dos programas escritos para ambiente Unix sem necessidade de recompilao. Os comandos da shell, como ls, cp e rm podem ser utilizados nos arquivos e diretrio abrangidos pelo PVFS. Oferece ainda uma interface nativa que permite um maior controle sobre os parmetros que regem o sistema de arquivos paralelos. Os ns do sistema de arquivos paralelo podem ser de trs tipos: De Gesto: executa um daemon de gesto que gere os acessos aos arquivos com base em permisses e mantm metadados acerca dos arquivos. Atualmente o PVFS utiliza o NFS para obter um nico espao global visvel a todos os ns;

De I/O (input/output) ou de Armazenamento: so utilizados para armazenar os arquivos. O acesso aos arquivos efetuado pelo I/O daemon utilizando as primitivas do Linux;

De Processamento: executam as aplicaes paralelas que utilizam a biblioteca de funes que permite comunicar com os daemons de gesto e I/O. Usualmente existe apenas um n de gesto, o front-end do cluster, sendo todos os

restantes ns de processamento e I/O em simultneo. Como j se referiu, cada arquivo a ser armazenado fragmentado em diversas parties que so armazenadas ao longo de diversos ns. Quando a aplicao necessita de determinados segmentos de um determinado arquivo envia pedidos de leitura aos diversos ns de armazenamento que contm esse arquivo. Em cada n o I/O daemon respectivo efetua a interseco entre as parties do arquivo localmente armazenadas e os segmentos pretendidos pela aplicao enviando em seguida o resultado ao n de processamento que efetuou o pedido. 4.7. APLICAES DE GESTO DO CLUSTER necessrio dispor de bom software de gesto para poder explorar o cluster de uma forma eficiente. As ferramentas de gesto permitem monitorizar e configurar o cluster a partir de uma aplicao com interface grfica amigvel colocada no front-end. As principais vantagens de um sistema de gesto so: Ponto nico de instalao de software Gerenciamento e controle de segurana Instalao de sistemas de programao paralela

4.7.1 - bWatch O bWatch [43] um programa escrito em Tcl/Tk que produz uma tabela com estatsticas de ocupao de processadores e memria em cada n do sistema. apenas uma ferramenta de monitorizao e anlise do desempenho do cluster. A figura 4.1.mostra a interface oferecida por esta aplicao. As referncias contm apontadores para este e outros programas do mesmo gnero.

4.7.2 -SCMS O SCMS - SMILE Cluster Management System [36] uma excelente ferramenta grfica de gerenciamento de clusters. Foi concebido de forma a simplificar as tarefas de gesto de clusters Beowulf de elevada dimenso. constitudo pelos seguintes componentes: Camada de software que implementa uma arquitetura do tipo cliente-servidor que escolhe e centraliza num nico ponto os parmetros de configurao do cluster; Interface de programao que permite a programas escritos em C, Java ou Tcl/Tk acessar a informao recolhida; Componente designado de Parallel Unix Command que implementa comandos com funcionalidades idnticas s de ps, cp, rm e outros da shell de Unix mas sobre os recursos distribudos do sistema; Sistema de Alarmes que permite a definio de condies associadas a certos eventos que originam alarmes. possvel gerar alarmes de acordo com limites estabelecidos para a ocupao dos processadores, da memria, a temperatura e muitas outras variveis. Permite ainda definir aes de resposta ocorrncia desses alarmes. Inclui mdulos de sntese de voz e interface com a rede telefnica de forma a ser possvel sinalizar alarmes atravs deste meio. Interface grfica com os seguintes componentes: Tema de Gesto: permite conhecer o estado dos ns, espao em disco, arquivos, utilizadores, efetuar reboot, shutdown, selecionar aes e ns onde se pretende atuar; Sistema de Monitorizao: permite a monitorizao dos ns em tempo real; Interface para o Parallel Unix Command; Interface para configurar o sistema de alarmes. Os Principais componentes do sistema so: CMA Agente de Monitoramento e Controle o Detem as informaes do sistema local de cada n o Prov portabilidade total usando camada de abstrao de hardware. SMA Agente de Monitoramento do Sistema.Executado no n gerenciado para coletar informaes RMI Interface de Gerenciamento de Recursos Bibliotecas que provem o funcionamento do SMA

A Figura 4.2 SCMS - interface grfica de monitoramento do cluster.

4.8 - LINGUAGEM DE PROGRAMAO. A escolha da linguagem de programao provavelmente o tpico mais importante para a programao paralela. Programao paralela muito diferente da tarefa de programao seqencial, porque tudo tem de acontecer simultaneamente. Algumas linguagens, como FORTRAN, tm como benefcio mais de 30 anos de experincia. A escolha da linguagem de programao muito uma questo do tipo de aplicao que se quer desenvolver. A seguir sero comentadas algumas das linguagens mais usadas. a) FORTRAN (F77, F90, HPF) FORTRAN uma das maiores linguagens de programao matemticas. Seu nome at mesmo uma traduo de sua funo FORmula TRANslator. FORTRAN foi desenvolvido na dcada de 1950 para permitir aos programadores escreverem programas matemticos complexos sem ter que recorrer a linguagem de mquina.

FORTRAN possui os fundamentos bsicos de fluxo - controle, ordens e um conjunto de rotinas para operaes matemticas. Embora FORTRAN tenha sido projetado para ser simples e no to complexo quanto C++ ou Java, no uma linguagem morta. Como FORTRAN foi usado no desenvolvimento de programas para serem executados em computadores de alto desempenho, o desenvolvimento destes computadores propiciou um avano no FOTRAN. Durante os anos, a linguagem foi sendo estendida para incluir caractersticas de outras linguagens mais estruturadas como C e C++. FORTAN9O/95, a mais recente verso do padro, inclui diversos tipos de dados, funes virtuais interface explcita, e outras caractersticas que permitem ao FORTRAN competir com linguagens orientadas a objeto como C++. A maior vantagem do FORTRAN em uma perspectiva de desempenho que ele sintaticamente simples, podendo o seu cdigo ser otimizado facilmente. Esta simplicidade e facilidade de otimizao tambm fazem do FORTRAN uma grande escolha como linguagem de programao paralela. Em sua mais recente verso, FORTRAN 9O/95, linguagem inclui caractersticas explcitas e palavras chaves que podem dizer ao compilador do FORTRAN quando ele precisar gerar cdigo para ser executado em um processador paralelo. b) LINGUAGEM C/C++ A linguagem C foi projetada originalmente como linguagem de programao de software bsico. Permite manipulao muito eficiente de tipos de dados primrios (pedaos, bytes, palavras) e bem apropriado criao de drivers de dispositivo e cdigo de sistemas de baixo nvel. Foram desenvolvidas inmeras bibliotecas externas para estender sua funcionalidade a diversas reas inclusive computao de alto-desempenho. Esta aproximao extremamente modular se empresta computao de altodesempenho: este o tipo de trabalho que os clusters executam. C++ se tornou muito popular principalmente porque a metodologia de orientao a objetos se adequa muitos bem aos tipos de dados e decomposio funcional que so necessrios para executar um trabalho em sistemas de alto-desempenho. A dificuldade em usar C++ para programao paralela pode ser em encontrar bibliotecas que possam suportar os tipos de operaes que so necessrias a sua aplicao.

O outro assunto com C++ (como tambm outros idiomas orientados a objeto) a quantidade de tempo necessria para depurar um programa. No prximo captulo ser abordado os padres envolvidos no projeto de clusters Beowulf, aplicadas a implementao do cluster LANE02-AMAZNIA.

CAPTULO 6 - CONCLUSES No presente trabalho discutiu-se os principais conceitos envolvidos em sistemas de computao paralela e como eles podem ser usados para solucionar problemas que necessitem de grande capacidade computacional: como modelamento de estruturas eletromagnticas. Demonstraram-se os avanos em computao paralela, tanto no projeto de arquiteturas paralelas como no uso de novas ferramentas de software para disponibilizar o maior desempenho nesta arquitetura. Em especial em arquiteturas tipo Beowulf. Os resultados deste trabalho foram divididos da seguinte forma: 1) Foram discutidas as tcnicas necessrias para o projeto de sistema de computao paralela. Este projeto baseado no modelo de arquitetura, de sistemas MIMD, mas especificamente clusters de Linux (Beowulf). 2) Foram demonstrados as ferramentas e os paradigmas envolvidos em computao paralela, em especial as que esto diretamente envolvidas com o desenvolvimento de clusters Linux 3) Foi estabelecido um padro para o projeto e implementao de clusters tipo Beowulf 4) Baseado neste padro foi projetado e implementado um cluster de 08 mquinas. 5) Foram feitos teste de desempenho garantindo a viabilidade do projeto.

Com base nos estudos realizados ao longo dos trabalhos tm-se algumas sugestes para trabalhos futuros: 1) 2) Elaborao de um sistema de gesto do cluster. Estudar novos modelos de rede de interconexo de forma a aumentar o desempenho. 3) Elaborar um sistema de submisso de trabalhos via web, baseado em algum escalonador de processos. 4) Estudo de modelos de banco de dados para serem executados em clusters.

REFERNCIAS BIBLIOGRFICAS

[1] - Spector, David Building Linux Clusters- OReilly & Associates, USA 2000 [2] - GregoryF Pfister - In Search of Clusters, the ongoing battle in lowly parallel computing. Prentice Hall, second edition, 1998. [3] - Reschke, Chance; Sterling, Thomas; Ridge, Daniel; Savarese, Daniel; Becker, Donald; Merkey, Phillip - A Design Study of Alternative Network Topologies for the Beowulf Parallel Workstation. Proceedings, High Performance and Distributed Computing, 1996 [4] Hennesy, John e David Patersso - Computer Architeture : A quantitative Approach.San Francisco, CA, Morgam Kauffamam Publishing, 1996 [5] Taub, Herbert Circuitos Digitais e Microprocessadores, So Paulo, Markron Books do Brasil [6] Foster. Ian T Desiging and Building a Parallel Programs: Concepts e Tools for Parallel Software. New York Addison- Wesley Publish Co, 1995 [7 ]Hank Dietz. High-performance parallel processing using pcs and linux. Conference on Parallel Processing, August 1996. [8] Tanenbaun, Andrew Network Computers Prentice-Hall , 2 edio 1989 [9] Gortmaker, Paul. Linux Ethernet-Howto. Disponvel via WWW em http://sunsite.unc.edu/LDP/HOWTO/. [10] Becker, Donald - Beowulf Ethernet Channel Bonding. Disponvel via WWW em http://cesdis.gsfc.nasa.gov/linux/beowulf/software/bonding.html [11] Becker, Donald. Beowulf Software. Disponvel via WWW em http://cesdis.gsfc.nasa.gov/linux/beowulf/software/software.html [12] The Bulk Synchronous Parallel (BSP) Compiting Model Worldwide Homepage. [13]W.Richard Stevens. TCP/IP Illustrated: the protocols. Addison-Wesley, February 1998. [14] CESDIS Beowulf team Beowulf Consortium. Disponvel via WWW em http://cesdis.gsfc.nasa.gov/consortium/consortium.html [15] Rosch, Winn L. The Hardware Bible. Indianaplis, Indiana : Sams Publish, 1997 [16] - www.gabrieltorres.com [17] Revista PCs n02 Edio Especial Editora BWEA So Paulo [18] Revista PCs n08 Editora Fittipaldi So Paulo

[19] Revista PCs n14 Editora BWEA So Paulo [20] Revista REDES n01 Editora BWEA So Paulo [21] - http://www.cs.helsinki.fi/linux/gpl.html [22] Manu Konchady. Parallel computing using linux. Linux Journal, 45:7881, January1998. [23] - TACKETT, JACK / BURNETT JUNIOR, STEVEN, Usando Linux , Editra Campus, So PAulo 2000 [24] - Scoot, Maxell Kernel do Linux Markron Books- So Paulo 2000 [25] - Rarak, Amnom, Shai Guday e Richard G.Weler. The Mosix Distributed Operating System. Berlim Germany, Spring 1998 [26] - AlGeist, Adam Beguelim, Jack Dongarra, Weicheng Jiang, Robert Manchek, and Vaidy Sunderam. PVM: Parallel Virtual Machine, A User's Guide and Tutorial for Networked Parallel Computing. MIT Press, 1994. [27] - AloGeist, Adam Beguelim, Jack Dongarra, Weicheng Jiang, Robert Manchek, and Vaidy Sunderam. PVM: Parallel Virtual Machine, A User's Guide and Tutorial for Networked Parallel Computing. MIT Press, 1994. [28] - Message Passing Interface Forum. MPI: A Message-Passing Interface standard, April 1997. version 2 [29] www.top500.org [30] www.mpi.nd.edu./lam [31] Lynch, Nancy A. Distributed Algorithms San francisco, CAMorgan Kaufman Publishers, 1996 [32] Jacek Radajewski and Douglas Eadline. Beowulf howto. Technical report, Linux Documentation Project, November 1998. [33] Ohio Supercomputer Center. MPI Primer / Developing with LAM, November 1996. Ohio LAM 6.1. Disponvel via WWW em http://www.bsp-worldwide.org/ [34] E.M.Toledo. R.S. Silva , Introduo computao paralela, LNCC/CNPq, 1997 [35] http://www.beowulf.org/software/bproc.html. [36] http://smile.cpe.ku.ac.th/software/scms/ [37] www.beowulf.org [38] Almasi, G.S.,Gotillieb A.,Highly Parallel Computing 2 ed .The Benjamin Cummings [39] - http://www.mpi.nd.edu/lam/

[40] - Prologic - www.prologic.com [41] - Dolphin Interconnect Solutions - www.dolphinics.com. [42] www.openpbs.org [42] http://unthought.net/antsd/ [43] - http://www.sci.usq.edu.au/staff/jacek/bWatch/. [44] - http://ece.clemson.edu/parl/pvfs/. [45] - ww.cs.wisc.edu/condor [46] - www.gnqs.org [47] - www.scri.fsu.edu/~pasko/dqs.html [48] - http://wallybox.cei.net/dipc/]. [49] - www.com2000si.com [50] - http://www.aspsys.com [51] http://www6.tomshardware.com [52] - http://liinwww.ira.uka.de/~skampi/ [53] - www.fftw.org [54] - http://www.tux.org/~mayer/linux/results2.1.html#faster [55] Johnny M. Rocha, Josivaldo S. Arajo, Ronaldo O. Santos Carlos L. S. S. Sobrinho, Luiz A. Guedes - Anlise de Antenas por FDTD utilizando processamento paralelo - X SBMO Simpsio Brasileiro de Microondas E Optoeletrnica [56] www.cenapad.unicamp.br [57] Buyya, Rajkumar - High Performance Cluster Computing: Architectures and Systems, Vol. 1 - Prentice Hall - PTR, NJ, USA, 1999