Você está na página 1de 61

UNIVERSIDADE ESTADUAL DE MONTES CLAROS Centro de Cincias Exatas e Tecnolgicas Departamento de Cincias da Computao Curso Sistemas de Informao

Hrcules Batista de Oliveira

CONSTRUO DE UM SUPERCOMPUTADOR DE BAIXO CUSTO PARA PROCESSAMENTO DE ALTO DESEMPENHO UTILIZANDO O SISTEMA BEOWULF

Montes Claros/MG Novembro/2009

HRCULES BATISTA DE OLIVEIRA

CONSTRUO DE UM SUPERCOMPUTADOR DE BAIXO CUSTO PARA PROCESSAMENTO DE ALTO DESEMPENHO UTILIZANDO O SISTEMA BEOWULF

Monografia apresentada ao Curso de Sistemas de Informao da Universidade Estadual de Montes Claros como exigncia para obteno do grau de bacharel em Sistemas de Informao.

Orientador: Professor RENATO DOURADO MAIA

Montes Claros/MG Novembro/2009

HRCULES BATISTA DE OLIVEIRA

Construo de um supercomputador de baixo custo para processamento de alto desempenho utilizando o sistema Beowulf
Monografia apresentada ao Curso de Sistemas de Informao da Universidade Estadual de Montes Claros como exigncia para obteno do grau de bacharel em Sistemas de Informao.

Orientador: Professor MESTRE RENATO DOURADO MAIA

Membros: ____________________________________________________ Patrcia Takaki Neves

____________________________________________________ Eduardo Diniz Amaral

Montes Claros/MG Novembro/2009

AGRADECIMENTOS

Agradeo a todos aqueles que acreditaram que seria possvel mesmo quando eu duvidei. Em especial aos Professores pelo incentivo e orientao, aos colegas e familiares pelo apoio e finalmente a Deus pela oportunidade de realizar este trabalho.

RESUMO

A evoluo e popularizao dos computadores culminaram no desenvolvimento do conceito de processamento paralelo. Os sistemas, que inicialmente operavam isolados, passam a se comunicar e a, juntos, executar tarefas. Com isso surgiram os aglomerados computacionais (clusters), que so um tipo de sistema paralelo ou distribudo formado por um conjunto de computadores que so utilizados como recurso nico. Essa capacidade de se apresentar como recurso unicado que o torna altamente atrativo. Os clusters tornaram possvel a soluo de problemas antes intratveis. O sistema Beowulf, desenvolvido pela NASA em 1994, apresenta-se como uma das melhores alternativas para a implantao de clusters computacionais, j que seu custo de reduzido por utilizar computadores comuns (commodity cluster) e seu processamento atinge nveis de alto desempenho. Este trabalho conceitua e descreve a instalao, configurao e testes comparativos de um cluster de alto desempenho da classe Beowulf, apontando suas peculiaridades, vantagens e desvantagens. Este cluster foi construdo a partir da distribuio GNU PelicanHPC Linux, e segundo metodologia utilizada pelo Microwulf, ou seja, um cluster de pequeno porte, com apenas quatro ns, mas com um poder de processamento considervel, atingindo assim uma boa relao custo x beneficio. No decorrer dos testes de desempenho realizados no cluster deste trabalho, obteve-se 20,33 Gigaflops.

Palavras-Chave: clusters, sistemas distribudos, Beowulf, computao de alto desempenho

ABSTRACT

The development and popularization of computers resulted in the development of the concept of parallel processing. The systems, which initially operated in isolation, they begin to communicate and together they perform tasks. With that came the computer clusters (clusters), which are a type of parallel or distributed system consisting of a set of computers that are used as a unique resource. This ability to present itself as a unified resource that makes it highly attractive. Clusters made possible the solution of intractable problems before. The Beowulf system, developed by NASA in 1994, is presented as one of the best alternatives for the deployment of compute clusters, since their cost is reduced by using common computers (commodity cluster) and its processing achieves high performance levels. This paper conceptualizes and describes the installation, configuration and comparative tests of a cluster of high-performance Beowulf class, pointing out their peculiarities, advantages and disadvantages. This cluster was built from the GNU PelicanHPC Linux distribution, and according to the methodology used by Microwulf, or a cluster of small, with only four of us but with a considerable processing power, thereby achieving a cost-benefit ratio. During the performance tests in the cluster of this work, we obtained 20.33 Gigaflops. Keywords: clusters, distributed systems, Beowulf, high performance computing

LISTA DE ILUSTRAES

Figura 1 Classe SISD segundo taxonomia proposta por Flynn........................................... 13 Figura 2 Classe SIMD segundo taxonomia proposta por Flynn.......................................... 14 Figura 3 Classe MISD segundo taxonomia proposta por Flynn.......................................... 14 Figura 4 Classe MIMD segundo taxonomia proposta por Flynn......................................... 15 Figura 5 Linha do tempo dos maiores supercomputadores de cada poca.......................... 20 Figura 6 Camadas para funcionamento do MPI.................................................................. 23 Figura 7 Inicializao do PelicanHPC 64bits pelo CD-ROM............................................. 26 Figura 8 Diagrama do Cluster Montado ............................................................................. 32 Figura 9 Passos para construo do cluster utilizando o PelicanHPC................................ 33 Figura 10 Interao do PelicanHPC: seleo do armazenamento do diretrio /home........ 34 Figura 11 Interao do PelicanHPC: opo de copiar arquivos de configurao e exemplos................................................................................................................................. 35 Figura 12 Interao do PelicanHPC: definio da senha ................................................... 35 Figura 13 Interao do PelicanHPC: boas vindas do n master......................................... 36 Figura 14 Interao do PelicanHPC: Escolha da placa de rede para o cluster................... 37 Figura 15 Interao do PelicanHPC: iniciar servios de rede............................................. 37 Figura 16 Interao do PelicanHPC: Inicializar as bibliotecas de troca de mensagem...... 38 Figura 17 Interao do PelicanHPC: Hora de inicializar os demais ns do cluster............ 39 Figura 18 Interao do PelicanHPC: Tela de boas vindas dos ns..................................... 39 Figura 19 Interao do PelicanHPC: Atualizado o nmero de ns..................................... 40 Figura 20 Interao do PelicanHPC: Cluster pronto para ser utilizado.............................. 40 Figura 21 PelicanHPC executando em modo grfico um exemplo em MPI...................... 41 Figura 22 Contedo do arquivo de configurao HPL.dat.................................................. 44 Figura 23 Execuo do programa top no cluster ao executar o benchmark HPL .............. 45

LISTA DE TABELAS

Tabela 1 Taxonomia dos sistemas distribudos computacionais......................................... 13 Tabela 2 Equipamentos essenciais e seus valores para montagem do cluster..................... 29 Tabela 3 Principais pacotes instalados no PelicanHPC........................................................ 31

Tabela 4 Retorno do Octave para o cluster montado........................................................... 42 Tabela 5 Retorno do Linpack HPL para o cluster montado................................................ 43

LISTA DE ABREVIATURAS E SIGLAS

CD-ROM CPU DDI DDR DHCP DNS DVD flops GB GHz Gigaflops GNU HD HA HPC HS HPL IBM IEEE IP ISO LAM LINPACK Mbps Megaflops MHz MIMD MISD MPI MPICH MPITB MPP NASA NCSA NTPD NUHICRE PC PDF Pentaflops PVM PVP PXE RAM SIMD SISD SMP Teraflops UAL

Compact Disc - Read Only Memory Central Processament Unit Diretoria de Documentao e Informaes Double Data Rate Dynamic Host Configuration Protocol Domain Name Server Digital Video Disc floating point per second GigaByte Giga Hertz 109 flops GNU is Not Unix Hard Disk High Availability High Performance Computing Horizontal Scaling High-Performance Linpack Inteligent Business Machine Institute of Electrical and Electronics Engineers Internet Protocol International Organization for Standardization Local Area Multicomputer Linear Algebra Package Mega bits por segundo 105 flops Mega Hertz Multiple Instruction Stream / Multiple Data Stream Multiple Instruction Stream / Single Data Stream Message Passing Interface Implementao do MPI MPI Matlab Massively Parallel Processors National Aeronautics and Space Administration National Center for Supercomputing Applications Network Time Protocol Daemon Ncleo de Histria e Cultura Regional da Unimontes Personal Computer Portable Document Format 1015 flops Parallel Virtual Machine Parallel Vector Processors Preboot eXecution Environment Random Acess Memory Single Instruction Stream / Multiple Data Stream Single Instruction Stream / Single Data Stream Symetric Multiprocessors 1012 flops Unidade Aritmtica-Lgica

SUMRIO

1 INTRODUO ...................................................................................................................10 2 REFERENCIAL TERICO ..............................................................................................12 2.1 Sistemas Distribudos ...................................................................................................12 2.2 Cluster ............................................................................................................................16 2.2.1 Tipos de clusters.....................................................................................................16 2.2.2 Aplicaes dos clusters ..........................................................................................20 2.3 Beowulf ..........................................................................................................................21 2.4 MPI (Messagem Passing Interface) .............................................................................23 2.5 LAM (Local Area Multicomputer) ...............................................................................24 2.6 GNU PelicanHPC Linux ..............................................................................................25 2.7 Benchmarks ...................................................................................................................26 3 MONTAGEM DO CLUSTER ............................................................................................28 3.1 Hardware Utilizado .......................................................................................................28 3.2 Software Utilizado .........................................................................................................29 2.3 Preliminares ..................................................................................................................31 4 INSTALAO E CONFIGURAO DO CLUSTER ...................................................33 5 TESTES E BENCHMARKS................................................................................................42 5.1 Otimizao do HPL ......................................................................................................43 6 CONCLUSO......................................................................................................................47 REFERNCIAS BIBLIOGRFICAS .................................................................................49 ANEXO I .................................................................................................................................51 Scripts De Instalao E Configurao Do Pelicanhpc .....................................................51

10

1 INTRODUO

O objetivo deste trabalho a construo de um supercomputador de baixo custo baseado em clusters Beowulf para oferecer processamento de alto desempenho no mbito da comunidade acadmica da Unimontes. Como objetivos secundrios esta pesquisa visa demonstrar a construo de um cluster de baixo custo para a comunidade cientfica; identificar os principais fatores crticos de sucesso da construo de um cluster; comparar os desempenhos computacionais do cluster construdo com os resultados publicados na literatura e com os benchmarks estabelecidos na rea. A pesquisa cientfica da Unimontes pode ser de sobremaneira beneficiada com a existncia de uma infra-estrutura de processamento de alto desempenho no mbito da Unimontes. Os atuais projetos em execuo coordenados por pesquisadores da Unimontes, ou em parcerias com estes, podero expandir seus horizontes qualitativa e quantitativamente levando suas pesquisas para nveis de anlises e servios compatveis com o estado da arte em computao de grande porte. Ademais, outros projetos na rea da computao que envolvem subreas como as de computao grfica, processamento de sinais, criptografia, reconhecimento de padres, sistemas multimdia, dentre outros, podero ser concebidos localmente por pesquisadores e acadmicos da Unimontes, com ou sem a parceria de outras instituies de ensino e pesquisa, para avanar a fronteira do conhecimento nessas linhas especficas de atuao que esto longe da saturao. A metodologia deste trabalho baseia-se no estudo comparativo e anlise dos dados obtidos com a implantao do sistema, e dos testes e benchmarks aplicados no mesmo, em relao a outros sistemas distribudos do mesmo porte. A principal referencia utilizada foi ser o cluster Microwulf construdo pela Universidade de Calvin, composto de 04(quatro) ns, e que atingiu a marca de 25,25 Gigaflops. Nas comparaes foram levadas em conta as seguintes variveis: poder de processamento, custo do sistema, disponibilidade de processamento, facilidade de construo e manuteno. Com a construo deste cluster obteve-se inicialmente com os benchmarks um resultado abaixo do esperado. Foi necessrio configurar e otimizar o benchmark para que ento esse cluster revela-se todo o seu poder de processamento. Este trabalho esta organizado da seguinte forma: o segundo captulo apresenta um referencial terico sobre sistemas distribudos, passando pelo conceito de clusters at os benchmarks que foram aplicados ao cluster deste trabalho; o terceiro captulo apresenta o ambiente em que foi montado o cluster objeto desta pesquisa, detalhando hardware e

11

software utilizados; o quarto captulo demonstra a instalao e a configurao de um cluster Beowulf, com opo pelo PelicanHPC, demonstrando suas peculiaridades, vantagens e desvantagens; o quinto captulo apresenta os resultados dos testes e benchmarks sobre o cluster montado, e aponta meios de otimizar o funcionamento e a performance do cluster; o sexto captulo apresenta a consideraes finais, concluso e as perspectivas de trabalhos futuros.

12

2 REFERENCIAL TERICO

O uso de computadores tem evoludo com intensidade desde a sua inveno (COMPUTER HISTORY MUSEUM, 2009). Em meados de 1980, a difuso da utilizao de computadores ainda encontrava barreiras. Nessa poca as mquinas, existentes apenas em ambientes organizacionais e universidades, eram de grande porte e de alto custo de aquisio e manuteno, alm de trabalharem de forma independente entre si, pois no haviam ainda mecanismos para conect-las de forma eficiente. Por volta de 1985, no entanto, dois grandes avanos em tecnologia comearam a transformar tal realidade. O primeiro foi o desenvolvimento de processadores poderosos que se comparavam aos computadores de grande porte, com a vantagem de apresentarem custos inferiores. O segundo avano foi o desenvolvimento das redes de alta velocidade, que permitiam a interconexo de centenas de mquinas, de forma que grandes quantidades de dados podiam ser transferidas em fraes de segundos (MORRISON, 2003).

2.1 Sistemas Distribudos

O resultado da juno dessas tecnologias a habilidade de construir conjuntos de mquinas, compostos por uma grande quantidade de processadores independentes interconectados por redes de alta velocidade. Tais sistemas so conhecidos como Sistemas Distribudos, fazendo referncia aos sistemas centralizados, que utilizam memria compartilhada (TANENBAUM, 2001a). Vrias formas de se classificar os sistemas distribudos computacionais tm sido propostas ao longo dos anos. Uma das mais utilizadas a proposta por Flynn (1972), que criou uma taxonomia de classificao em quatro grupos, de acordo com a sequncia de instrues e a sequncia de dados. Tanenbaum (2001b) resume os quatro grupos propostos por Flynn, conforme Tabela 1:

Seqncia de Instrues 1

Sequncia de Dados 1

Nome SISD

Exemplos Mquina clssica de Von Neumann

13

1 Vrias Vrias

Vrias 1 Vrias

SIMD MISD MIMD

Supercomputador vetorial, processador matricial Nenhum exemplo Multiprocessador, multicomputador

Tabela 1 Taxonomia dos sistemas distribudos computacionais Fonte Tanenbaum (2001b) adaptada

Para melhor entender essa taxonomia, sero detalhados os significados de cada nome dos quatro grupos, bem como seu funcionamento (Tanenbaum, 2001b):

SISD Single Instruction Stream / Single Data Stream: esse tipo de mquina prope uma execuo tipicamente sequencial, sem nenhuma forma de paralelismo. o modelo clssico proposto por Von Neumann. Mquinas pessoais com processadores de um nico ncleo se enquadram nessa categoria. A figura 1 ilustra essa classe:

Figura 1 Classe SISD segundo taxonomia proposta por Flynn Fonte Tanenbaum (2001b) adaptada

SIMD Single Instruction Stream / Multiple Data Stream: so mquinas que possuem uma nica unidade de controle de fluxo de instruo, mas possuem vrias UAL (Unidade Aritmtica-Lgica) executando uma mesma instruo sobre diferentes conjuntos de dados simultaneamente. Mquinas desse tipo so utilizadas principalmente em problemas das reas cientficas e de engenharia, em problemas que utilizem estruturas de dados regulares, como vetores e matrizes, sendo, por

14

conseguinte, os computadores vetoriais e matriciais os principais representantes desta classe. Como exemplo de processadores matriciais, podemos citar o ILLIAC IV, o CM-2 e MP-2. No caso de processadores vetoriais, um dos mais conhecidos o Cray1, que foi sucedido pelo C90 e T90. O Cray-1 foi utilizado por vrios anos na soluo de problemas cientficos(COMPUTER HISTORY MUSEUM, 2009). A figura 2 ilustra essa classe:

Figura 2 Classe SIMD segundo taxonomia proposta por Flynn Fonte Tanenbaum (2001b) adaptada

MISD Multiple Instruction Stream / Single Data Stream: nessa arquitetura vrias instrues estariam acessando o mesmo conjunto de dados. No h consenso entre os autores se alguma mquina prtica poderia ser enquadrada nesse grupo, embora, alguns autores considerem as mquinas pipeline pertencentes a essa categoria. A figura 3 ilustra essa classe:

Figura 3 Classe MISD segundo taxonomia proposta por Flynn Fonte Tanenbaum (2001b) adaptada

15

MIMD Multiple Instruction Stream / Multiple Data Stream: nessa categoria se encontram a maioria dos sistemas multicomputadores e multiprocessadores, cuja diferena bsica diz respeito forma com que os dados so compartilhados em sistemas multiprocessadores, um nico espao de endereamento est disponvel para todas as unidades processadoras. Denomina-se tal configurao de fortemente acoplada. Como a memria compartilhada, a velocidade de comunicao entre os diferentes processadores quase que limitada unicamente pela largura de banda da memria principal, o que implica em baixa deteriorizao do desempenho apesar das vrias interaes entre os processadores. Porm, deve-se esclarecer que a competio por recursos pode influir em queda no desempenho global do sistema. J em arquiteturas multicomputadores, cada computador possui seu prprio espao de memria. So os sistemas fracamente acoplados. A comunicao entre os elementos processadores se d basicamente pela troca de mensagens em uma rede comunicao de dados. A figura 4 ilustra essa classe:

Figura 4 Classe MIMD segundo taxonomia proposta por Flynn Fonte Tanenbaum (2001b) adaptada

nessa

ultima

categoria

(MIMD),

especificamente

na

arquitetura

multicomputadores, ou seja, nos sistemas fracamente acoplados, que se encontram os aglomerados computacionais, ou clusters, objetos de estudo deste trabalho.

16

2.2 Cluster

A evoluo das cincias em geral impulsionada pela computao criou uma nova rea de pesquisa: a computao cientfica. Esta rea requer processamento de alto desempenho, uma vez que a natureza dos problemas tratados cada vez mais complexos, com nmeros em formato de ponto flutuante e muitas operaes matriciais. Antes do surgimento dos sistemas distribudos o alto desempenho requerido na computao cientfica era obtido por hardware especifico, de alto custo, dedicado a resolver esse tipo de problema como os chamados supercomputadores. O avano tecnolgico j apontado nos trabalhos dos anos 80 possibilitou outro tipo de soluo. A produo em larga escala para uso domstico de processadores de grande poder computacional e o desenvolvimento de redes de computadores mais eficientes e de baixo custo possibilitaram o progressivo abandono do paradigma dos supercomputadores em favor de uma nova soluo: buscar o processamento de alto desempenho em computao atravs de processamento paralelo e distribudo, utilizando vrios processadores em vez de um s, com a diviso das tarefas computacionais, de modo que, trabalhando concorrentemente, o resultado seja obtido mais rapidamente. Essa soluo surgiu a partir da arquitetura de Sistemas Distribudos, com o conceito de processamento paralelo, que consiste na diviso de grandes problemas em pedaos menores que podem ser resolvidos separadamente: nesse contexto surgiram os clusters. Pfister (1997) definiu cluster como um tipo de sistema paralelo ou distribudo formado por um conjunto de computadores que so utilizados como um recurso unificado. E justamente essa capacidade de se apresentar como um recurso unificado que o torna altamente atrativo.

2.2.1 Tipos de clusters

Os clusters so tipificados e classificados de acordo as suas caractersticas, funcionalidades e finalidades. Os trs tipos de clusters, segundo Manoel e Ferreira (2005), mais comuns atualmente so os de Alta Disponibilidade (High Availability HA), de Alto

17

Desempenho de Computao (High Performance Computing HPC) e o de Balanceamento de Carga (Horizontal Scaling HS): Alta Disponibilidade (HA): normalmente construdo com a inteno de fornecer um ambiente seguro contra falhas (fail safe), utilizando-se da redundncia de componentes (sejam de hardware, software, servios de rede ou de interconectividade ou interoperabilidade). Em outras palavras, fornecer um ambiente computacional onde a falha de um ou mais componentes no ir afetar significativamente a disponibilidade do ambiente de computao ou aplicaes que estejam sendo usadas (BUYYA, 1999). Alto Desempenho Computao (HPC): projetado para fornecer maior poder de computao para a soluo de um problema e tradicionalmente est relacionado com aplicaes cientficas, de simulao ou de manipulao de imagens. O usurio interage com um n especfico para iniciar ou escalonar uma atividade que dever ser executada. A aplicao, juntamente com as funes internas do cluster, ir determinar como a atividade ser dividida e enviada para cada elemento que compe o ambiente computacional, buscando extrair uma maior vantagem dos recursos disponveis (BUYYA, 1999). Balanceamento de Carga (HS): usado para fornecer uma interface simplificada para um conjunto de recursos que podem aumentar ou diminuir com o passar do tempo e conforme a necessidade por processamento. Nesse tipo de cluster, esto implcitos os conceitos da alta disponibilidade (com a redundncia de componentes) e de alto desempenho de computao (com a distribuio das tarefas completas pelos vrios componentes replicados)(BIRMAN, 2003). O objeto de estudo deste trabalho se trata de um cluster de alto desempenho (HPC), configurando assim um supercomputador (por definio supercomputador designa os computadores mais rpidos da sua poca, para processamento de dados cientficos da Universidade Estadual de Montes Claros Unimontes). Segundo o Guia de Estruturao e Administrao do Ambiente de Cluster e Grid (2006, pag. 28), supercomputador pode ser definidos como:

um computador com altssima velocidade de processamento e grande capacidade de memria, empregado em pesquisas cienticas e militares. Esse termo geralmente confundido com cluster, um tipo de supercomputador criado a partir da cooperao de vrios computadores convencionais.

18

A histria e conceito dos supercomputadores se confundem com a dos clusters, uma vez que os clusters so uma forma de se conseguir supercomputadores. A outra forma utilizando computadores construdos especificamente para esse fim, como as maquinas PVP (Parallel Vector Processors - Processadores vetoriais paralelos), as SMP (Symetric Multiprocessors - Multiprocessadores simtricos) e as MPP (Massively Parallel Processors Mquinas Massivamente Paralelas) (DE ROSE, 2008). O fabricante mais famoso desse tipo de computador dedicado supercomputao a Cray Research, empresa criada por Seymour Cray em 1970, densenvolvedor dos primeiros supercomputadores em 1960, e que dominou o mercado da supercomputao durante 25 anos. (GUIA DE ESTRUTURAO E ADMINISTRAO DO AMBIENTE DE CLUSTER E GRID, 2006) O conceito de cluster no algo recente, j que o primeiro cluster foi desenvolvido na dcada de 1950 pela IBM (STERLING, 2003). Entretanto, o interesse por sua utilizao cresceu realmente ao longo da dcada de 1990, devido, principalmente, possibilidade de criao de clusters utilizando computadores tradicionais, com processadores e redes de alta velocidade. Esse tipo de cluster conhecido como commodity cluster, e seu representante mais famoso o Beowulf. A figura 5 apresenta a linha do tempo dos melhores supercomputadores de cada poca, desde a criao dos primeiros computadores at os dias atuais. At 1993, os dados apresentados na figura provm do Computer History Museum (2009) e, de 1993 at os dias atuais, os dados foram levantados do TOP500 (2009). O desempenho dos supercomputadores esta em OPS (Operaes Por Segundo) e FLOPS (Floating Point Operation per Second Operaes em ponto flutuante por segundo), esta diferena se d devido evoluo percebida no desempenho dos computadores.

ANO 1938 1941 1943 1944 1946 1946

Supercomputador Zuse Z1 Zuse Z3 Colossus 1 Colossus 2 (Single Processor) Colossus 2 (Parallel Processor) UPenn ENIAC

Desempenho

Local de Instalao

1 OPS Konrad Zuse, Berlin, Germany 20 OPS Konrad Zuse, Berlin, Germany Post Office Research Station, Bletchley 5 kOPS Park, UK Post Office Research Station, Bletchley 25 kOPS Park, UK Post Office Research Station, Bletchley 50 kOPS Park, UK 5 kOPS Department of War

19

(antes das modificaes de 1948) 1954 1956 1961 1964 1969 1974 1975 IBM NORC MIT TX-0 IBM 7030 "Stretch" CDC 6600 CDC 7600 CDC STAR-100 Burroughs ILLIAC IV

Aberdeen Proving Ground, Maryland, USA Department of Defense 67 kOPS U.S. Naval Proving Ground, Dahlgren, Virginia, USA Massachusetts Inst. of Technology, 83 kOPS Lexington, Massachusetts, USA 1.2 MFLOPS AEC-Los Alamos National Laboratory, New Mexico, USA

1976 1981 1983

Cray-1 CDC Cyber 205 Cray X-MP/4

1984 1985 1989 1990

M-13 Cray-2/8 ETA10-G/8 NEC SX-3/44R Thinking Machines CM5/1024 Fujitsu Numerical Wind Tunnel Intel Paragon XP/S 140

3 MFLOPS AEC-Lawrence Livermore National 36 MFLOPS Laboratory, California, USA 100 MFLOPS NASA Ames Research Center, California, 150 MFLOPS USA Energy Research and Development Administration (ERDA) 250 MFLOPS Los Alamos National Laboratory, New Mexico, USA (80+ sold worldwide) 400 MFLOPS 40 sistemas pelo mundo U.S. Department of Energy (DoE) 941 MFLOPS Los Alamos National Laboratory; Lawrence Livermore National Laboratory; Battelle; Boeing Scientific Research Institute of Computer 2.4 GFLOPS Complexes, Moscow, USSR 3.9 GFLOPS 10.3 GFLOPS 23.2 GFLOPS 59.7 GFLOPS 124.50 GFLOPS 143.40 GFLOPS 170.40 GFLOPS 220.4 GFLOPS 368.2 GFLOPS DoE-Lawrence Livermore National Laboratory, California, USA Florida State University, Florida, USA NEC Fuchu Plant, Fuch,_Tokyo, Japan DoE-Los Alamos National Laboratory; National Security Agency National Aerospace Laboratory, Tokyo, Japan DoE-Sandia National Laboratories, New Mexico, USA National Aerospace Laboratory, Tokyo, Japan University of Tokyo, Japan Center for Computational Physics, University of Tsukuba, Tsukuba, Japan

1993

1994 1996 1997 1999 2000 2002

Fujitsu Numerical Wind Tunnel Hitachi SR2201/1024 Hitachi/Tsukuba CPPACS/2048 Intel ASCI Red/9152 Intel ASCI Red/9632 IBM ASCI White NEC Earth Simulator

1.338 TFLOPS DoE-Sandia National Laboratories, New 2.3796 TFLOPS Mexico, USA DoE-Lawrence Livermore National 7.226 TFLOPS Laboratory, California, USA 35.86 TFLOPS Earth Simulator Center, Yokohama, Japan

20

2004 2005 2007 2008 IBM Roadrunner Blade Center IBM Blue Gene/L

70.72 TFLOPS DoE/IBM Rochester, Minnesota, USA DoE/U.S. National Nuclear Security 136.8 TFLOPS Administration, 280.6 TFLOPS Lawrence Livermore National Laboratory, 478.2 TFLOPS California, USA 1.026 PFLOPS DoE-Los Alamos National Laboratory, 1.105 PFLOPS New Mexico, USA

Figura 5 Linha do tempo dos maiores supercomputadores de cada poca. Fonte Computer History Museum (2009) e TOP500 (2009) adaptada.

2.2.2 Aplicaes dos clusters

H diversas aplicaes possveis para um cluster na Unimontes, como processamento de dados meteorolgicos que j so coletados, clculos de anlise de solo e seus nutrientes nas pesquisas desenvolvidas no campi de Janaba, entre vrias outras aplicaes que exigem poder de processamento computacional maior que o normal para obter resultados de forma rpida e significativa. As reas de aplicao dos clusters so bastante diversificadas. Pitanga (2004) enumerou algumas, a saber: Servidores de Internet: o grande crescimento de utilizao de Internet revelou fragilidade nos sites muito visitados. Um cluster pode distribuir a carga e aumentar a capacidade de resposta. Segurana: a grande capacidade que o processamento paralelo oferece beneficiar qualquer processo para identificao, quebra na segurana (criptografia) e verificao de possveis solues. Base de Dados: pesquisas intensivas em banco de dados podem demorar muito tempo em um sistema comum. A utilizao de um cluster pode reduzir esse tempo significativamente. Aerodinmica: produes de novas capacidades tecnolgicas e econmicas na presso enfrentada em aeronaves, lanamento de naves espaciais e nos estudos de turbulncia. Anlise de elementos finitos: clculos de barragens, pontes, navios, avies, grandes edifcios, veculos espaciais.

21

Aplicaes em sensoriamento remoto: anlise de imagens de satlite para obteno de informaes sobre a agricultura, florestas, geologia, fontes hbridas. Inteligncia artificial e automao: processamento de imagens, reconhecimento de padres, viso por computador, reconhecimento de voz, mquinas de inferncia. Engenharia Gentica: projeto Genoma. Engenharia ssmica: empregado especialmente pelas companhias petrolferas para determinao de local de poos de petrleo. Oceanografia e astrofsica: explorao de recursos dos oceanos, estudo da formao da terra, dinmica das galxias. Previso do tempo: um processo demorado e com pouca preciso quando gerado atravs de computadores sequenciais. Pesquisas militares: projeto de armas nucleares, simulao dos efeitos das armas em especial as radioativas, processamento de sinais de radares para o comando de msseis antibalsticos, gerao automtica de mapas, acompanhamento de submarinos.

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

Segurana de reatores nucleares: anlise das condies do reator, controle automtico, treinamento atravs de simulao de operaes, atuao rpida em caso de acidente.

2.3 Beowulf

O primeiro cluster Beowulf foi fundamentado e desenvolvido na NASA em 1994 por Thomas Sterling e Donald Becker, usando as primeiras verses do sistema operacional Linux, que ainda se encontrava em fase de popularizao. Esse cluster usava a biblioteca PVM (Parallel Virtual Machine - Maquina Virtual Paralela), desenvolvida em 1989 no Oak Ridge National Laboratory.

22

Construdo com 16 computadores pessoais Intel 486 de 100MHz conectados atravs de uma rede dupla de 10Mbps (802.3), foi necessrio o desenvolvimento do driver para rede Ethernet no Linux e ferramentas adicionais de baixo nvel para gerenciamento e demonstrao da performance e baixo custo efetivo do sistema para aplicaes cientificas do mundo real (STERLING, 2003). Esse cluster atingiu a marca de 70 megaflops (flops floating point per second operaes em ponto flutuante por segundo, medida utilizada para comparao entre computadores de alto desempenho), o que poca equivalia a um supercomputador de mdio porte, mas com um custo de apenas 1/10 do valor deste. Inicialmente esse cluster tinha a finalidade de processar informaes espaciais que a entidade recolhia (BRAGA, 2003). As caractersticas que distinguem os clusters do tipo Beowulf dos outros tipos so determinadas pela finalidade do cluster, e podem ser assim resumidas (PITANGA, 2004): A conexo dos ns pode ser feita por redes do tipo ethernet (IEEE 802.3u); Existe um servidor responsvel por controlar todo o cluster, principalmente quanto distribuio de tarefas e processamento (pode haver mais de um servidor, sendo cada um dedicado a tarefas especficas, como monitorao de falhas). Esse servidor chamado de n master ou front-end; possvel utilizar computadores comuns, inclusive modelos considerados obsoletos; No necessrio usar equipamentos prprios para clusters. Bastam equipamentos comuns a redes e os tradicionais PCs; isso faz com que seu custo seja reduzido. Utilizao de sistema operacional livre, de cdigo aberto, podendo ser configurado e melhorado de acordo com a necessidade e a custo baixo. O cluster Beowulf possibilita a criao de sistemas que podem alcanar nveis de processamento na ordem de gigaflops (um gigaflop equivale a 1 bilho de instrues de ponto flutuante executadas por segundo). Tais caractersticas fizeram do cluster Beowulf um objeto de pesquisa muito explorado em universidades e aplicado em diversas classes de problemas. Ainda no ano de 1994, baseado na experincia com muitas bibliotecas de troca de mensagem, o MPI (Message Passing Interface) foi adotado pela comunidade de computao paralela para prover um padro de sintaxe e semntica na troca de mensagens. Desde ento o MPI vem dominando a programao para computao paralela, sendo suportado por praticamente todos os construtores de clusters e mquinas paralelas, incluindo os clusters da Sun Microsystems que utilizam o Solaris como sistema operacional e os clusters da National

23

Center for Supercomputing Applications - NCSA - na Universidade de Illinois que utilizam o sistema operacional Microsoft Windows (STERLING, 2003).

2.4 MPI (Messagem Passing Interface)

A biblioteca MPI foi desenvolvida em 1992, num esforo conjunto de fabricantes e pesquisadores em computao paralela, num evento ocorrido na Frana. Essa conveno unificou as vrias bibliotecas de processamento paralelo que eram utilizadas no momento, como o PVM(Parallel Virtual Machine - Maquina Virtual Paralela), aproveitando o que de melhor existia nas mesmas para a computao paralela, dando origem biblioteca MPI (PITANGA, 2004). Apesar de no se tratar de um padro IEEE ou ISO, essa biblioteca um padro para a construo de software para computao paralela com troca de mensagens em rede, possibilitando um ambiente onde toda a rede de computadores passa a funcionar como um supercomputador, ou seja, um cluster MPI. A arquitetura de funcionamento do MPI envolve hardware e software e pode ser dividida em 4 camadas. A figura 6 ilustra a arquitetura de funcionamento da biblioteca MPI.

Figura 6 Camadas para funcionamento do MPI Fonte LAM/MPI users Guide (2007) adaptada.

Programa MPI do Usurio: nessa camada feita a execuo do programa implementado pelo usurio utilizando os recursos da biblioteca MPI;

24

Biblioteca MPI: essa camada responsvel pelo gerenciamento das mensagens trocadas pelos computadores do cluster; Protocolo de Rede: essa camada fornece um ambiente de comunicao confivel entre as mquinas do cluster; Rede Fsica: nessa camada que a troca de mensagens se efetua. Ela responsvel pelo envio dos dados entre os computadores do cluster. Mas MPI no um ambiente completo, algumas caractersticas, como

gerenciamento dos processos e depurao do programa, no esto presentes no MPI. O que a biblioteca MPI garante um ambiente eficiente e seguro para a troca de dados entre os computadores em um cluster. Para suprir essas lacunas deixadas pelo MPI existem algumas outras bibliotecas que implementam funes e servios sobre o MPI, como o LAM (Local Area Multicomputer) e o OpenMPI.

2.5 LAM (Local Area Multicomputer)

A LAM no apenas uma biblioteca que implementa o MPI, mas tambm caracterizado como um ambiente de run-time, tanto no nvel do usurio quanto no nvel de servio, e implementa diversas funcionalidades exigidas por programas MPI. Ao usurio essa biblioteca oferece uma interface amigvel para instalar e configurar ns no cluster MPI, j como servio, implementa funes de depurao e controle de processos para os programas escritos em MPI, preenchendo assim as principais lacunas do padro MPI (LAM/MPI Users Guide, 2007). Originalmente, a biblioteca LAM foi desenvolvida pela Ohio Supercomputing Center. Desde ento, os membros originais do projeto foram movidos para outros projetos e a mesma ficou rfo. Ento o Laboratory for Scientific Computing (LSC) da Universidade de Notre Dame, que adotou a LAM e vem dando continuidade no seu desenvolvendo. Em 2001 o LSC foi movido para a Universidade de Indiana, e o projeto LAM acompanhou o mesmo. O projeto LAM esta na verso 7.1.4 (LAM/MPI Users Guide, 2007).

25

2.6 GNU PelicanHPC Linux

Um cluster Beowulf pode ser montado sobre qualquer distribuio GNU Linux. No entanto, existem diversas distribuies atualmente que foram especialmente desenvolvidas para cluster, e incorporam diversas ferramentas e configuraes com vistas a facilitar a montagem (Pitanga 2004). Uma dessas distribuies o PelicanHPC GNU Linux (PelicanHPC, 2009), baseada no Debian live e focada em clusters de alto desempenho. A escolha por uma distribuio baseada em Debian tem fundamentao no fato que um pacote somente considervel estvel para essa distribuio aps larga escala de testes. Essa distribuio possibilita um sistema voltil, uma vez que o mesmo no precisa ser instalado no computador, sendo executado apenas da unidade de CD-ROM (master) ou pela rede (PXE - Preboot eXecution Environment, ns) e na memria RAM, no fazendo qualquer alterao nos arquivos armazenados no computador, o que lhe confere uma grande vantagem, que merece bastante destaque, j que podemos utilizar computadores no dedicados ao cluster que aps a sua utilizao no cluster podem voltar as suas tarefas rotineiras sem que se faa necessria nenhuma reconfigurao, no imobilizando assim nenhum recurso somente para o cluster (SHARMA, 2009). O PelicanHPC desenvolvido e mantido pela Universidade Autnoma de Barcelona, est na sua verso 1.9.2 atualmente (lanada em 19 de outubro de 2009), e est disponvel nas verses para arquiteturas 32 e 64 bits. A figura 7 mostra a tela de inicializao do boot pelo CD-ROM do PelicanHPC 64bits.

26

Figura 7 Inicializao do PelicanHPC 64bits pelo CD-ROM. Fonte Prpria.

A biblioteca MPI que o Beowulf utiliza para fazer o paralelismo no cluster encontra-se configurada e instalada no PelicanHPC juntamente com o MPITB (MPI Matlab), o LAM(Local Area Multicomputer) 7.1.2 e a OpenMPI, implementaes do MPI (CREEL, 2009).

2.7 Benchmarks

Como o objeto deste trabalho um cluster de alto desempenho, faz-se necessria a realizao de testes para medir tal desempenho e, dentro do possvel, compar-lo com outros clusters para confirmar se satisfatrio e, ainda, se tem uma boa relao entre custo e beneficio. Xu (2008, pag. 4) em sua dissertao de mestrado, Performance benchmarking of FreeRTOS and its Hardware Abstraction, define benchmark como:

27

ato de executar um programa de computador, um conjunto de programas ou outras operaes, a fim de avaliar a performance relativa de um objeto, normalmente executando uma srie de testes padro e ensaios. O termo benchmark tambm comumente usado para os prprios programas (de benchmarking) desenvolvidos para executar o processo.

Para testes comparativos necessrio estabelecer uma medida de desempenho. Nesse contexto a medida de desempenho mais aceita pela comunidade cientifica para computadores expressa na unidade flops (Floating-Point Operations per Second operaes de ponto flutuante por segundo). Os nmeros em formato ponto flutuante se assemelham ao formato da notao cientfica, e so usados pelos computadores para representar nmeros em grandes faixas de valores (de muito pequenos a muito grandes) com uma largura fixa de bits, sem exceder a mxima que pode ser armazenado num registrador dos processadores. As operaes utilizando nmeros em ponto flutuante so as mais custosas em qualquer processador. Essas operaes so usadas intensamente em computao cientifica, j que normalmente necessita clculos que envolvem valores em escala muito varivel, desde os muito pequenos at os muito grandes. Isso evidencia a sua relevncia como medida de desempenho. O computador mais rpido do mundo atualmente, o IBM BladeCenter QS22/LS21 Cluster, tem desempenho na casa dos Petaflops (1015 flops)(TOP500, 2009). Vrios testes podem ser elaborados utilizando os flops como referncia, mas como o objetivo comparar o desempenho dos clusters computacionais optou-se por utilizar um teste padronizado, que possa ser executado em qualquer cluster e que seja amplamente difundido mundialmente junto comunidade cientfica. No fim da dcada de 1970 foi desenvolvido o benchmark LINPACK (Linear Algebra Package) que teve como base uma biblioteca de mesmo nome. Inicialmente o LINPACK foi desenvolvido para as mquinas de alto desempenho da sua poca, mas com o advento de outras arquiteturas, o LINPACK foi sendo substitudo por outros pacotes com funo ampliada, buscando assim obter resultados mais prximos das realidades das novas mquinas que surgiam. Assim surgiu o benchmark High-Performance Linpack (HPL), uma adaptao do LINPACK para as mquinas de memria distribuda, como os clusters (Dongarra et al., 2002). O HPL mede em quanto tempo um sistema capaz de resolver um sistema denso N X N de equaes lineares Ax=B. O HPL o benchmark usado pelo site www.top500.org, que faz um ranking dos quinhentos computadores com maior desempenho na atualidade. Esta lista atualizada a cada seis meses (TOP500, 2009).

28

3 MONTAGEM DO CLUSTER

Um cluster Beowulf pode ser montado utilizando-se de hardware convencional, largamente encontrado em locais comuns, como laboratrios de informtica de uma Universidade, ou at mesmo nos ambientes domsticos com computadores pessoais e notebooks. Para a montagem fsica do cluster deve-se apenas garantir que os ns estejam ligados em rede, seja com o padro IEEE 802.3u ou Gigabit Ethernet, com o uso de um ou de vrios switches. A seguir so detalhados os hardwares e softwares que foram utilizados para construo do cluster construdo com este trabalho.

3.1 Hardware Utilizado

Para a construo do cluster descrito e utilizado neste trabalho foram utilizados como ns trs computadores, com a seguinte configurao: Processador Intel Dual Core E2180 1,8GHz com 1MB de Cache L2, 01GB de Memria RAM DDR2 667MHz, HD SATA-2 de 80 GB 7200 rpm, Placa me Gigabyte 8VM800-VM Chipset Via (Placa de Som, Rede e Vdeo Onboard) sendo a placa de rede padro Gigabit Ethernet (10/100/1000Mbps). Para o computador principal (master ou front-end) que controla o cluster, foi utilizado um computador com a seguinte configurao: Processador Intel Core 2 Duo T7100 1.8GHz com 2MB de Cache L2, 2GB de Memria RAM DDR2 667Mhz, HD de 120GB 7200 rpm, Placa Me Dell com Chipset Intel, Placa de rede padro Gigabit Ethernet (10/100/1000 Mbps). Para a interconexo dos computadores em rede foi utilizado um switch 3Com 2824 (24 Portas 10/100/1000 Mbps, padro Gigabit Ethernet) e cabos padro Cat5e. Os computadores utilizados nesse experimento so de propriedade da Universidade Estadual de Montes Claros Unimontes, exceo do n master, que de propriedade do autor deste trabalho, e tratam-se de computadores utilizados para tarefas administrativas. Pelas caractersticas do PelicanHPC de criar um cluster voltil, que no faz alteraes permanentes nos computadores, foi possvel utilizar esses computadores sem a necessidade de que os mesmos fossem de uso dedicado e exclusivo desta pesquisa.

29

Como os computadores j so de propriedade da Unimontes, no houve custo especfico para o projeto, mas para ilustrar o baixo custo de montagem deste cluster foi orado no ms de outubro de 2009 junto a empresas locais o valor de aquisio dos equipamentos essenciais utilizados, montado assim um equipamento semelhante ao Microwulf (ADAMS, 2008a). O valor orado apresentado na Tabela 2.

Descrio QTD Valor Unit. Valor Total R$ 230,00 R$ 920,00 Placa Me Gigabyte 04 R$ 200,00 R$ 800,00 Processador Intel E2180 04 R$ 100,00 R$ 400,00 Memria 2GB DDR2 667Mhz 04 R$ 45,00 R$ 180,00 Fonte ATX 450W 04 R$ 70,00 R$ 70,00 Gravador de DVD 01 R$ 30,00 R$ 30,00 Armaes e Parafusos 01 R$ 250,00 R$ 250,00 Switch Gigabit 8 portas 01 Total R$ 2.650,00 Tabela 2 Equipamentos essenciais e seus valores para montagem do cluster. Fonte Prpria.

O Microwulf foi o primeiro supercomputador a bater a barreira dos U$$100,00 (cem dlares) por Gigaflop, j que obteve 25,25 Gigaflops com U$$ 2.430,00 (dois mil, quatrocentos e trinta dlares) poca (ADAMS, 2008b). Essa conquista do Microwulf evidencia a evoluo da computao, j que foi possvel construir um supercomputador de baixo custo e porttil, uma vez que o mesmo tem dimenses reduzidas, para que possa ser levado para onde fosse necessrio o seu processamento.

3.2 Software Utilizado

Na construo do cluster dessa pesquisa foi utilizado o PelicanHPC, que nada mais do que uma verso pr-configurada atravs de um script do Debian Live, com a adio de pacotes para computao paralela e muitos exemplos. Este script esta disponvel no ANEXO 1 deste trabalho. Tais exemplos so de grande utilidade para usurios iniciantes em clusters, uma vez que demonstram toda a potencialidade do cluster sem muito esforo e tempo configurando e instalando pacotes. possvel ainda, para os usurios mais experientes, configurar e personalizar a sua prpria verso do PelicanHPC, todavia, para demonstrar a simplicidade e a eficincia do mesmo, no foi feita nenhuma alterao no sistema utilizado. Como foi citado anteriormente neste trabalho, todas as bibliotecas necessrias computao paralela j vm includas e pr-

30

configuradas no PelicanHPC: entre elas merece destaque o LAM/MPI, j que ela automatiza o processo de criao do cluster e gerencia a execuo dos programas de forma concorrente entre os ns. Uma limitao encontrada no PelicanHPC diz respeito ao nmero de ns no cluster de at 100(cem). Apesar de poder ser configurado para retirar tal limitao, isso no foi necessrio, uma vez que o cluster tratado neste trabalho possui apenas 04(quatro) ns. A lista completa dos pacotes utilizados pelo PelicanHPC composta por quase 600 pacotes, uma vez que o mesmo tem muitos exemplos e softwares de apoio. A Tabela 3 apresenta os principais pacotes instalados e utilizados no PelicanHPC. Ressalta-se que todos so advindos dos repositrios oficiais do Debian e considerados estveis e atualizados.

Tipo Base do Cluster

Nome do Pacote ssh dhcp3-server nfs-kernel-server nfs-common atftpd ifenslave binary blobs for networking firmware-bnx2 firmware-iwlwifi firmware-ralink Linux-wlan-ng-firmware slurm-llnl slurm-llnl-sview Slurm-llnl-basic-plugins wget bzip2 dialog less net-tools rsync fping screen make htop fail2ban locales console-common bsd-mailx liblockfile1 mailx postfix ssl-cert lam-runtime lam4-dev openmpi-bin openmpi-dev octave3.0 octave3.0-headers gnuplot python-scipy python-matplotlib python-numpy ipython lampython gfortran libatlas-headers libatlas3gf-base

Comunicao Gerenciamento de Recursos Configurao e Ferramentas

Suporte a Email

Troca de Mensagens

Clculo Matemtico Programao Cientficos

31

Ambiente Grfico

xorg xfce4 konqueror ksysguard ksysguardd kate kpdf Abiword

Tabela 3 - Principais pacotes instalado no PelicanHPC. Fonte CREEL (2009) adaptada.

Salienta-se que todos os softwares utilizados neste projeto so livres e de cdigo fonte aberto; assim, o custo para utilizao zero.

2.3 Preliminares

Com os computadores interligados em rede, pode-se dar incio configurao do cluster. Existem diversas maneiras de configur-lo; no entanto, como foi citado anteriormente, neste trabalho optou-se pelo PelicanHPC, que j vem pr-configurado para a construo de um cluster. Basicamente, o PelicanHPC automatiza algumas tarefas e pr-configura o cluster por meio de um script. As seguintes tarefas so facilitadas por meio desse script: Criar e configurar o usurio do cluster; Configurar o endereo IP do n mster (front-end); Instalar e configurar um servidor DHCP (Dynamic Host Configuration Protocol); Instalar e configurar um servidor PXE; Configurar o arquivo /etc/hosts (DNS - Domain Name Server para as maquinas do cluster); Configurar confiana entre as mquinas; Configurar um servidor de tempo (NTPD - Network Time Protocol Daemon); Todas essas tarefas so fundamentais para o bom funcionamento do cluster, mas a ltima (configurar um servidor de tempo) merece destaque, uma vez que essencial para o sincronismo entre os ns do cluster, o que uma premissa bsica para a correta execuo de algoritmos. A troca de mensagens entre os ns do cluster e o master (front-end) a base do funcionamento do MPI, o que justifica a destacada importncia do sincronismo. A figura 8 apresenta o diagrama do cluster montado, composto pelo n master, ns escravos e a estrutura de comunicao, representada pelo switch Gigabit Ethernet e os cabos de rede.

32

Ns escravos

Switch Gigabit Ethernet

N Master
Figura 8 Diagrama do Cluster Montado. Fonte Prpria.

33

4 INSTALAO E CONFIGURAO DO CLUSTER

A figura 9 apresenta um resumo dos passos necessrios para a construo do cluster descrito neste trabalho:

Figura 9 Passos para construo do cluster utilizando o PelicanHPC. Fonte Prpria.

Com a utilizao do PelicanHPC quase a totalidade das tarefas para criar o cluster executada de modo transparente, sendo que apenas em alguns momentos solicitada a interveno ou confirmao do usurio que est instalando o cluster, para aes como a definio da sua senha e a confirmao de que os ns j foram todos ligados. A figura 1 mostra a tela inicial aps a inicializao do n master pelo CD-ROM do PelicanHPC: ao entrar na opo Live (opo padro), o sistema operacional carregado e o script de configurao do cluster iniciado. A primeira interveno do usurio trata-se da escolha por utilizar ou no um armazenamento permanente para o diretrio /home (diretrio padro do Linux para arquivos do usurio). Caso o usurio apenas confirme a opo ram1, o sistema ir

34

utilizar a memria RAM para o /home, e nenhum dispositivo de armazenamento permanente ser utilizado. Mesmo que o usurio faa a opo por utilizar a memria, h a opo de salvar o seu trabalho em outras mdias como pen drivers, CDs gravveis, ou enviar o mesmo pela internet: basta que isso seja feito antes de desligar o computador. A figura 10 ilustra esta tela de interao com o usurio que a instalando o cluster:

Figura 10 Interao do PelicanHPC: seleo do armazenamento do diretrio /home Fonte Prpria.

A seguir o usurio questionado se a instalao deve copiar arquivos de configurao e exemplos para o diretrio /home/user. Caso esteja executando sem a utilizao de um armazenamento permanente (opo padro), o usurio deve responder Sim, para que os exemplos e configuraes sejam devidamente copiados. A figura 11 ilustra tal interao:

35

Figura 11 Interao do PelicanHPC: opo de copiar arquivos de configurao e exemplos Fonte Prpria.

Aps a cpia dos arquivos a instalao, deve ser definida uma senha para o usurio user (usurio padro predefinido). A figura 12 ilustra esse momento da instalao:

Figura 12 Interao do PelicanHPC: definio da senha Fonte Prpria.

Aps essa etapa, o sistema operacional j est em pleno funcionamento. exibida a tela de boas vindas, onde se podem ver as seguintes indicaes: 1 Para criar o cluster, tecle pelican_setup; 2 Para entrar no ambiente de desktop, tecle startx. Contudo, antes necessrio fazer o login no sistema. Assim, deve-se entrar com o usurio user e a senha que

36

foi definida na etapa anterior. A figura 13 ilustra a tela de boas vindas do sistema PelicanHPC j instalado.

Figura 13 Interao do PelicanHPC: boas vindas do n master Fonte Prpria.

Como o objetivo criar um cluster, aps fazer a autenticao no sistema ser executado o script pelican_setup para iniciar o processo de criao. Ao executar tal script, o mesmo imediatamente proporciona a interao com o questionamento de qual interface de rede ser utilizada para a criao do cluster. Essa interao somente ser exibida caso haja mais de uma placa de rede instalada no computador master, o que normalmente acontece, objetivando o acesso externo ao cluster, seja para que este tenha acesso internet ou para disponibilizar seus recursos dentro de uma rede privada de computadores, como num laboratrio de pesquisa. A figura 14 mostra tal interao:

37

Figura 14 Interao do PelicanHPC: Escolha da interface de rede para o cluster Fonte Prpria.

A prxima interao diz respeito necessidade dos servios de rede do Cluster. solicitado ao usurio informar se deseja iniciar os servios de rede necessrios ao cluster, ou seja, o servidor PXE, servidor DHCP, etc. Essa interao ainda alerta para o fado de que, se o cluster est numa rede compartilhada em que estes servios j estejam presentes, pois prosseguir dessa forma pode causar erros. Por isso recomenda-se que o cluster esteja numa rede isolada do resto do mundo. Como do interesse tais servios, deve-se apenas confirmar essa opo. A figura 15 ilustra essa interao:

Figura 15 Interao do PelicanHPC: iniciar servios de rede Fonte Prpria.

38

A seguir o script de instalao prossegue com a preparao do ambiente, agora instalando e habilitando as bibliotecas de troca de mensagem. A figura 16 mostra a interao em que o usurio avisado que qualquer trabalho que esteja utilizando essas bibliotecas ser parado, uma vez que as mesmas sero reconfiguradas. Essa mensagem pode parecer estranha, mas o script faz parte do pelican_restart_hpc, que executado pelo pelican_setup: o objetivo desse script dar a possibilidade de aumentar ou diminuir o cluster depois de instalado.

Figura 16 Interao do PelicanHPC: Inicializar as bibliotecas de troca de mensagem Fonte Prpria.

A rede ento percorrida em busca de mquinas conectadas que possam fazer parte do cluster. Como ainda est se instalando o n master, nenhum n encontrado. A prxima interao com o usurio indica que o n master est pronto e que deve-se proceder com a adio dos demais ns. A figura 17 mostra esse momento, onde o sistema apresenta o numero de ns atual no cluster, excluindo-se o n master, e oferece a opo percorrer a rede novamente em busca de ns disponveis:

39

Figura 17 Interao do PelicanHPC: Hora de inicializar os demais ns do cluster Fonte Prpria.

Deve-se ento ligar os computadores que sero os ns do cluster e executar a inicializao atravs da rede. Aps a inicializao dos ns, a tela de boas vindas e alerta exibida, conforme a figura 18.

Figura 18 Interao do PelicanHPC: Tela de boas vindas dos ns Fonte Prpria.

Com os ns j ligados e com o sistema operacional inicializado, deve-se voltar ao n master para finalizar a instalao do cluster. Ao percorrer novamente a rede percebe-se a alterao no nmero de ns, como apontado na figura 19:

40

Figura 19 Interao do PelicanHPC: Atualizado o nmero de ns Fonte Prpria.

Ao finalizar a espera e varredura por ns, finalmente inicializada a biblioteca LAM/MPI, e retornada uma mensagem exibindo o nmero total de ns no cluster, seguida de uma instruo de como redimension-lo. O cluster pode ser redimensionado executando o script pelican_restart_hpc, que j foi citado nesta seo. A figura 20 ilustra esse momento:

Figura 20 Interao do PelicanHPC: Cluster pronto para ser utilizado Fonte Prpria.

Feita a configurao inicial, retorna-se ao terminal e o cluster j est pronto para ser utilizado, bastando executar tarefas no n master (front-end) escritas com a utilizao do

41

MPI para que as mesmas sejam divididas e executadas de maneira paralela por todo o cluster. O cluster pode ser utilizado tanto no modo texto, recomendado uma vez que aumenta o desempenho, quanto no modo grfico, uma vez que o PelicanHPC vem instalado com o XFCE4 que oferece um ambiente completo de desktop para o usurio, com navegador de internet, editor de textos, leitor de PDF(Portable Document Format), entre outros. A figura 21 representa um o PelicanHPC sendo executado no modo grfico, com tarefas em MPI sendo executadas pelo cluster utilizando o software GNU Octave, que tambm vem incluso no PelicanHPC.

Figura 21 PelicanHPC executando em modo grfico um exemplo em MPI. Fonte CRELL (2009).

42

5 TESTES E BENCHMARKS

Para verificar se o cluster do presente trabalho est corretamente instalado e configurado, existem diversos testes e benchmarks que podem ser executados (benchmarks so testes padronizados comparativos de desempenho). O mais simples e rpido de ser executado utilizando o software matemtico Octave (GNU Octave, 2009). O Octave um software livre de linha de comandos para clculo matemtico compatvel com o Matlab, um software matemtico proprietrio largamente utilizado no mundo educacional e de pesquisa. Ao inicilizar o Octave, pode-se executar a instruo parallel_performance, que realiza uma operao padronizada com uma matriz 30x30 e retorna o tempo levado para processamento para um n do cluster e para dois ns do cluster. A Tabela 4 apresenta os resultado dessa execuo no cluster, e deixa evidente o ganho de desempenho:

N de Ns 1 2

Tempo para executar o teste 43,16 23,43

Tabela 4. Retorno do Octave para o cluster montado Fonte Prpria.

O Octave est restrito a no mximo dois ns para processamento paralelo, mas o experimento j serve de ilustrao para que se ateste que o presente cluster est funcionando corretamente. O benckmark mais utilizado para medida de desempenho de clusters de alto desempenho o Linpack HPL (DONGARRA, 2002). Esse teste retorna o nmero de flops. Operaes em ponto flutuante por segundo, medida utilizada para a comparao entre computadores de alto desempenho (atualmente existem computadores na casa de Gigaflops (109 flops), Teraflops (1012 flops) e Petaflops (1015 flops)). A Tabela 5 apresenta os resultados da execuo do Linpack HPL, utilizando a configurao padro. O teste foi executado acrescentando-se ns ao cluster, de forma a se poder verificar qual o nmero de ns apresenta o melhor custo beneficio no ambiente instalado. Com esses resultados possvel verificar o ganho de desempenho com a adio de ns ao cluster.

43

N de Ns 1 2 3 4
Tabela 5. Retorno do Linpack HPL para o cluster montado Fonte Prpria.

Gigaflops 3,877 6,83 7,93 9,50

Apesar do ganho de desempenho gradual que pode ser percebido na Tabela 5, este desempenho esta abaixo do esperado, afinal este trabalho visa a construo de um supercomputador de alto desempenho. Para obter um resultado melhor no benchmark HPL necessria a otimizao da configurao do mesmo, para conseguir extrair do cluster todo o desempenho possvel deste.

5.1 Otimizao do HPL

O benchmark HPL impe um limite terico para o sistema que ir avaliar, dependendo da arquitetura, uma vez que esse pode e deve ser configurado para utilizar melhor os recursos do ambiente do cluster. Esse limite chamado de Rpeak, valor que exprime a quantidade de processadores multiplicada pelo nmero de instrues em ponto flutuante simultneas que cada processador capaz de executar e pelo clock do processador. Como os processadores utilizados (Intel Dual Core E2180 e Core 2 Duo T7100) tm clock de 1,8 GHz, dois ncleos por processador e capacidade de executar 2 instrues de ponto flutuante simultaneamente, cada n pode atingir a taxa mxima de 7,2 gigaflops (1,8 X 2 X 2). Como o cluster formado por quatro ns, o desempenho mximo terico que pode ser alcanado de 28,8 gigaflops (4 X 7,2), ou seja, Rpeak = 28,8 gigaflops. Nenhum cluster tem desempenho igual Rpeak. A cada execuo dos clculos do HPL, gerado um resultado com o desempenho obtido. O melhor resultado chamado de Rmax e divulgado como desempenho mximo do sistema. As mquinas que so as primeiras colocadas no Top500 apresentam Rmax em torno de 80% de Rpeak. A alterao dos parmetros do HPL tm influncia no resultado. Esses parmetros so: N: nmero de problemas a ser resolvido; normalmente, quanto maior o seu valor, melhor o resultado aferido para o desempenho do sistema, j que assim o sistema

44

forado utilizar o mximo de recursos computacionais disponveis. Os melhores resultados foram para N=30000; acima deste valor os processos eram finalizados abruptamente nos ns, devido falta de recursos para resolver os problemas. NB: tamanho do bloco de dados para diviso da matriz e a execuo dos clculos parciais. Os melhores resultados obtidos por ns foram para NB= 160. P e Q: respectivamente o nmero de linhas e colunas da grade de processadores que vai resolver o problema. P multiplicado por Q deve ser igual ao nmero de ns do cluster. Como os processadores utilizados so de ncleo duplo ento P=2 e Q=4. Para fazer as configuraes do benchmark HPL, basta editar as configuraes do arquivo HPL.dat, que se encontra junto ao executvel do benchmark. A figura 22 mostra o arquivo de configurao HPL.dat aps todas as otimizaes executadas:
HPLinpack benchmark input file Innovative Computing Laboratory, University of Tennessee HPL.out output file name (if any) 8 device out (6=stdout,7=stderr,file) 1 # of problems sizes (N) 30000 Ns 1 # of NBs 160 NBs 0 PMAP process mapping (0=Row-,1=Column-major) 1 # of process grids (P x Q) 2 Ps 4 Qs 16.0 threshold 1 # of panel fact 2 PFACTs (0=left, 1=Crout, 2=Right) 1 # of recursive stopping criterium 4 NBMINs (>= 1) 1 # of panels in recursion 2 NDIVs 1 # of recursive panel fact. 1 RFACTs (0=left, 1=Crout, 2=Right) 1 # of broadcast 1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM) 1 # of lookahead depth 1 DEPTHs (>=0) 2 SWAP (0=bin-exch,1=long,2=mix) 64 swapping threshold 0 L1 in (0=transposed,1=no-transposed) form 0 U in (0=transposed,1=no-transposed) form 1 Equilibration (0=no,1=yes) 8 memory alignment in double (> 0) ##### This line (no. 32) is ignored (it serves as a separator). ###### 0 Number of additional problem sizes for PTRANS 1200 10000 30000 values of N 0 number of additional blocking sizes for PTRANS 40 9 8 13 13 20 16 32 64 values of NB Figura 22 Contedo do arquivo de configurao HPL.dat. Fonte Prpria.

45

Aps realizar testes com valores de N, NB, P e Q, o desempenho mximo foi em torno de 20,33 gigaflops, o que representa 70% de Rpeak. O prprio sistema operacional fez o balanceamento dos processos entre os dois ncleos do processador, distribuindo processamento entre dois processadores sempre que necessrio: isso era observado quando o processo xhpl (o processo do benchmark) ocupava quase 200% de CPU, o que na verdade significa que os dois ncleos do processador estavam ocupados naquele instante, como pode ser observado na figura 23:

Figura 23 Execuo do programa top no cluster ao executar o benchmark HPL. Fonte Prpria.

A anlise dos resultados neste ponto permitia observar que o presente teste encontrava-se mximo de uso de memria RAM e que os melhores resultados com este ambiente j haviam sido encontrados. Para continuar a otimizao fazia-se necessrio o aumento da quantidade de memria e a possvel substituio de todas as memrias por outras de maior freqncia, aumentando-se assim o throughput (largura e frequncia de comunicao entre a memria e a placa me). Esse desempenho semelhante ao atingido pelo IBM DeepBlue, primeiro computador a vencer um mestre em xadrez, na dcada de 1990, e que, na linha do tempo dos supercomputadores seria o maior entre 1989 e 1990 (COMPUTER HISTORY MUSEUM, 2009). Em 1999, esse desempenho colocaria o cluster do presente trabalho dentro da listagem do TOP500 na posio 439 (TOP500, 2009). E tambm comparvel a qualquer cluster contemporneo de igual configurao, como o caso do Microwulf, que alcanou 25,25

46

gigaflops (ADAMS, 2008b), com o mesmo nmero de ns, mas utilizando processadores AMD com freqncia maior e configuraes no volteis, ou seja, de carter permanente. Com a otimizao percebeu-se um ganho de mais de 100(cem) por cento de desempenho quando comparado com o teste HPL no otimizado, o que evidncia a necessidade Numa comparao da relao flops x custo, foram obtidos 20,33 Gigaflops com um custo de R$ 2.650,00 (dois mil seiscentos e cinqenta reais), resultando em cerca de R$ 130,00 (cento e trinta reais) por Gigaflop, valor que est dentro dos padres do Microwulf, que apontou a quebra da barreira de US$100 por Gigaflop (ADAMS, 2008a). Com o dlar na casa de R$ 1,72 (um real e setenta e dois centavos em 05/11/2009), o custo por Gigaflop em dlar fica em US$ 75,80 (setenta e cinco dlares e oitenta cents), o que representa uma boa relao entre flops e custo, e evidencia a grande viabilidade econmica de um cluster Beowulf. Algumas tarefas podem aperfeioar os resultados de benchmark de um cluster, a saber: Utilizar o kernel Linux mais atual; Utilizar pacotes e softwares, como a biblioteca de passagem de mensagens, atualizados e estveis; Utilizar uma rede dedicada e isolada para o cluster, ou seja, um switch independente sem comunicao com o mundo externo.

47

6 CONCLUSO

Este trabalho, pioneiro na Unimontes na rea de computao paralela e distribuda, abre muitas possibilidades para outras pesquisas, seja na rea de computao ou no, uma vez que promove uma soluo de baixo custo para acelerar as pesquisas de todas as reas do conhecimento, especialmente as que demandam grande capacidade de processamento. Com este trabalho, verificou-se que possvel desenvolver e utilizar tecnologias de ponta mesmo sem fazer grandes investimentos financeiros. Pode-se afirmar que mesmo estando inserido numa regio de escassez de recursos econmicos, possvel desenvolver e trabalhar com o que existe de melhor na rea de computao. No se pode esquecer que a criatividade para resolver o problema de recursos resultou na criao do cluster Beowulf. Durante a execuo dos trabalhos percebeu-se que, mesmo estando em um ambiente de rede de alta velocidade, padro Gigabit Ethernet de at 1000Mbps, a execuo de algoritmos pequenos foi mais rpida executando-se apenas no n mster. Isso se deve ao tempo perdido na comunicao entre os ns do cluster (delay da rede), o que permite confirmar que a clusterizao deve ser implementada quando o trabalho a ser processado for considervel, de modo que os tempos de comunicao sejam desprezveis em relao aos tempos de execuo em cada n. Por se tratar de um cluster de alto desempenho com grande poder de processamento, o cluster Beowulf se mostra muito vantajoso para grandes clculos, mas ainda no tem uma aplicao comercial direta. Sua utilizao tem sido verificada quase que unicamente em trabalhos de ensino e pesquisa, uma vez que limitado execuo de algoritmos escritos para seu ambiente. Em sendo assim, no seguro afirmar que o mesmo tenha larga utilizao comercial futuramente, a menos que sejam desenvolvidas formas de tornar softwares criados para processamento no paralelo compatveis e executveis no cluster Beowulf. Outros tipos de cluster, como o de balanceamento de carga e o de alta disponibilidade, tm maior penetrao comercial, j que no requerem que o sistema e os softwares que sero utilizados sejam reescritos seguindo um padro especfico, no caso do cluster Beowulf o MPI/MPICH. O presente trabalho atingiu os seus objetivos, uma vez que foi construdo um supercomputador de alto poder de processamento de baixo custo utilizando o sistema

48

Beowulf. Foram detalhados os requisitos de hardware e software para construo de um cluster e com base nestes requisitos evidenciou-se o seu baixo custo. Os resultados dos testes e benchmarks foram dentro do esperado, j que possvel afirmar que se construiu um supercomputador com alto poder de processamento, tendo esse atingido a marca de 20,33 Gigaflops. Na confeco deste trabalho percebeu-se que algumas das possveis aplicaes levantadas na fase de projeto no so possveis no momento, visto que demandariam a programao integral de novos softwares para realiz-las, como a renderizao de imagens e vdeos para o NUHICRE Ncleo de Histria e Cultura Regional da Unimontes, o tratamento de imagens para a DDI Diretoria de Documentao e Informaes, dentre outras. Para trabalhos futuros com clusters, pretende-se instal-lo e configur-lo em outros ambientes, com um nmero maior de ns; em redes Infiniband; em ns com arquiteturas diferentes da i386, como a PowerPC; descobrir maneiras de instalar e configurar um cluster no voltil, que fique permanentemente configurado. de interesse test-lo em ns com processadores AMD e realizar os testes de benchmark citados para ento verificar em qual ambiente tem-se um melhor custo x beneficio com a clusterizao. A configurao de um cluster no voltil, de carter permanente, em um laboratrio da Universidade Estadual de Montes Claros, permitir impulsionar as pesquisas na rea de computao paralela e dar alicerces para as pesquisas cientficas em diversas reas do conhecimento nesta universidade, posto que criar infra-estrutura para computao cientfica, estudo este que se apresenta tambm como trabalho futuro. H tambm a necessidade de um trabalho futuro com a finalidade de repetir os testes executados pelo cluster deste trabalho, j que o numero de execues na fase de testes foi reduzido, para que seja feita a validao estatstica dos dados referentes ao desempenho do cluster. Outra indicao interessante para trabalhos futuros o desenvolvimento de meios de tornar softwares j existentes compatveis e executveis em clusters sem a necessidade de alteraes no seu cdigo fonte. Essa pesquisa se justifica pela necessidade utilizar softwares de cdigo fechado, muitas vezes legados, e que requerem grande poder de processamento. Uma possvel soluo para este problema seria o desenvolvimento de um middleware que faria a converso de software sequencial para software paralelo.

49

REFERNCIAS BIBLIOGRFICAS

ADAMS, Joel. Brom, Tim. Layton, Jeff (2008a). Microwulf: Breaking the $100/GFLOP Barrier. Disponvel em: http://www.clustermonkey.net//content/view/211/1/, Acessado em: 05/11/2009 ADAMS, Joel. Brom, Tim (2008b). Microwulf: A Personal, Portable Beowulf Cluster. Disponvel em: http://www.calvin.edu/~adams/research/microwulf/ Acessado em: 05/11/2009 DE ROSE, Csar A. F. NAVAUX, Philippe O. A. Arquiteturas Paralelas - Volume 15. Porto Alegre: Bookman, 2008. BIRMAN, Kenneth (2003). Building Secure and Reliable Network Applications. Disponvel em: http://gsyc.escet.urjc.es/docencia/asignaturas/redes-II/libro/libro.pdf, Acessado em: 05/11/2009 BRAGA, Ataualpa Albert Carmo. Aspectos tcnicos envolvidos na construo de um "cluster Beowulf". Qumica Nova, Maio 2003, vol.26, no.3, p.401-406. ISSN 0100-4042 BUYYA, Rajkumar. High Performance Cluster Computing: Architectures and Systems, volume 1. Upper Saddle River: Prentice-Hall, 1999. COMPUTER HISTORY MUSEUM (2009). Timeline of computers. Disponvel em: http://www.computerhistory.org/timeline/, Acessado em: 05/11/2009 CREEL, Michael (2009). PelicanHPC Tutorial. Universitat Autnoma de Barcelona Disponvel em: http://pareto.uab.es/mcreel/PelicanHPC/Tutorial/PelicanTutorial.html, 05/11/2009. DONGARRA, J. J.; Luszcek, P.; Petitet, A. (2002). The Linpack Benchmark: Past, Present and Future. Disponvel em: www.netlib.org/netlib/utk/people/JackDongarra/PAPERS/hplpaper.pdf, Acessado em: 05/11/2009 FLYNN, M., Some Computer Organizations and Their Effectiveness, IEEE Trans. Comput., Vol. C-21, pp. 948, 1972. GNU Octave. 05/11/2009 Disponvel em: http://www.gnu.org/software/Octave/ Acessado em:

Guia de Estruturao e Administrao do Ambiente de Cluster e Grid. Braslia, 2006. LAM/MPI Users Guide (2007). Disponvel mpi.org/download/files/7.1.4-user.pdf, Acessado em: 05/11/2009 em: http://www.lam-

MANOEL, Edson e FERREIRA, Luis (2005). Linux Clustering with CSM and GPFS. Disponvel em: http://www.redbooks.ibm.com/abstracts/sg246601.html, Acessado em: 05/11/2009

50

MORRISON, Richard. (2003) Cluster Computing: Architectures, Operating Systems, Parallel Processing & Programming Languages. Disponvel em: http://www.ace.ual.es/~jaberme/docsppal/cluster/, Acessado em: 05/11/2009. PelicanHPC GNU Linux (2009). Disponvel em: http://idea.uab.es/mcreel/ParallelKnoppix/, Acessado em: 05/11/2009. PFISTER, Gregory. (1997) In Search of Clusters. Upper Saddle River: Prentice-Hall, 1997. PITANGA, Marcos. Computao em Cluster - O Estado da Arte da Computao. Rio de Janeiro: Brasport, 2004 PITANGA, Marcos. Construindo supercomputadores com Linux. Rio de Janeiro: Brasport, 2004 SHARMA, Mayank (2009). Cluster to Cluster: Turn your desktop computer into a highperformance cluster with PelicanHPC. Disponvel em: http://www.linuxpromagazine.com/Issues/2009/103/CLUTTER-TO-CLUSTER, Acessado em: 05/11/2009 STERLING, Thomas. Beowulf Cluster computing with Linux. Cambridge: MIT Press, 2003 TANENBAUM, Andrew. Modern Operating Systems. Upper Saddle River: Pearson Education, 2001a TANENBAUM, Andrew. Organizao Estruturada de Computadores. Rio de Janeiro: Prentice-Hall, 2001b Top 500 Supercomputers list (2009). Disponvel em: www.top500.org, Acessado em: 05/11/2009. XU, Tao. Tese de Mestrado: Performance benchmarking of FreeRTOS and its Hardware Abstraction. Technische Universiteit Eindhoben. 2008

51

ANEXO I

Scripts De Instalao E Configurao Do Pelicanhpc

#!/bin/sh # Copyright 2007, 2008, 2009 Michael Creel <michael.creel@uab.es> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # set this to the network you'd like to use for the cluster # # # # make_pelican: this script allows you to make a custom version of the PelicanHPC live CD image for creation of high performance computing clusters. You need to install the live_helper package to use it. See http://pareto.uab.es/mcreel/PelicanHPC for more information.

# Version 1.9.2 # * fix for pxe server configuration to use live-helper > v1.0.3 # * add a little nap time here and there to let compute nodes finish booting if user is too quick on the draw # * fix a bug in kernel_example ############ packages to add - place names of packages you want here #################### cat <<PACKAGELIST > addlist # basic stuff needed for cluster setup ssh dhcp3-server nfs-kernel-server nfs-common atftpd # binary blobs for networking firmware-bnx2 firmware-iwlwifi firmware-ralink linux-wlan-ng-firmware # resource management slurm-llnl slurm-llnl-sview slurm-llnl-basic-plugins # configuration and tools wget bzip2 dialog less net-tools rsync fping screen make htop fail2ban locales console-common ifenslave # mail support (to forward status reports) bsd-mailx liblockfile1 mailx postfix ssl-cert # MPI lam-runtime lam4-dev openmpi-bin libopenmpi-dev # Octave Octave3.0 Octave3.0-headers gnuplot # Python python-scipy python-matplotlib python-numpy ipython lampython # other scientific gfortran libatlas-headers libatlas3gf-base # X stuff xorg xfce4 konqueror ksysguard ksysguardd kate konsole kdenetwork kdeadmin kcontrol kpdf # other stuff, including requests from users bc libxp6 vim hal libhal1 libhal-storage1

52

PACKAGELIST ################## END OF PACKAGELIST ################ PELICAN_NETWORK="10.11.12" MAXNODES="100" ARCHITECTURE="amd64" KERNEL="amd64" #ARCHITECTURE="i386" #KERNEL="686" IMAGETYPE="iso" #IMAGETYPE="usb-hdd" DISTRIBUTION="lenny" MIRROR="de" # leave the rest of this alone unless you really know what you're up to THISDIR="`pwd`" mkdir "$ARCHITECTURE" cd "$THISDIR/$ARCHITECTURE" # ############## compute node configuration ########## # this section should be uncommented the first time # you make Pelican for an architecture, then commented # out, to avoid wasting time and bandwidth LIVECDDIR="nodes" #rm -R -f "$THISDIR/$ARCHITECTURE/$LIVECDDIR" rm -R -f "$THISDIR/$ARCHITECTURE"/tftpboot mkdir "$THISDIR/$ARCHITECTURE/$LIVECDDIR" cd "$THISDIR/$ARCHITECTURE/$LIVECDDIR" lh_config \ -a "$ARCHITECTURE" \ --categories "main contrib non-free" \ --packages "firmware-bnx2 firmware-iwlwifi firmware-ralink linux-wlan-ngfirmware" \ -b net \ -d "$DISTRIBUTION" \ -k "$KERNEL" \ --mirror-binary http://ftp.$MIRROR.debian.org/debian/ \ --mirror-chroot http://ftp.$MIRROR.debian.org/debian/ \ --mirror-bootstrap http://ftp.$MIRROR.debian.org/debian/ \ --mirror-binary-security http://security.eu.debian.org/ \ --mirror-chroot-security http://security.eu.debian.org \ --net-root-server "$PELICAN_NETWORK".1 \ --net-root-path "/live/image" \ --bootappend-live "noautologin noxautologin" \ --syslinux-menu enabled \ --syslinux-timeout 5 lh_clean # use local packages if they're there rsync -az "$THISDIR"/packages/* config/chroot_local-packages # chroot hook to use local includes (new aug 2008) cat <<CHROOTHOOK > config/chroot_local-hooks/script.sh #!/bin/bash update-initramfs -u -k all CHROOTHOOK chmod +x config/chroot_local-hooks/script.sh # SYSLINUX SPLASH SCREEN if [ -e "$THISDIR/splash.rle" ]; then cp "$THISDIR"/splash.rle config/binary_syslinux/splash.rle lh_config --syslinux-splash "config/binary_syslinux/splash.rle" fi # post boot script to get nodes to talk to frontend

53

install -d config/chroot_local-includes/usr/share/initramfstools/scripts/live-bottom/ cat <<99START > config/chroot_local-includes/usr/share/initramfstools/scripts/live-bottom/99script #!/bin/sh cat <<RC_LOCAL > /root/etc/rc.local #! /bin/sh pelican_boot_setup RC_LOCAL chmod a+x /root/etc/rc.local 99START chmod +x config/chroot_local-includes/usr/share/initramfstools/scripts/live-bottom/99script lh_build cd "$THISDIR/$ARCHITECTURE" mv "$THISDIR/$ARCHITECTURE/$LIVECDDIR"/tftpboot "$THISDIR/$ARCHITECTURE"/ # safeguard against crashes umount proc-live umount sysfs-live umount devpts-live sync rm -R -f "$THISDIR/$ARCHITECTURE/$LIVECDDIR" ############## end of compute node configuration ################### # frontend configuration LIVECDDIR="frontend" # uncomment the next line if you really want to start from scratch #rm -R -f "$LIVECDDIR" mkdir "$THISDIR/$ARCHITECTURE/$LIVECDDIR" cd "$THISDIR/$ARCHITECTURE/$LIVECDDIR" lh_config \ --apt apt --apt-recommends disabled \ -a "$ARCHITECTURE" \ --categories "main contrib non-free" \ -b "$IMAGETYPE" \ -d "$DISTRIBUTION" \ -k "$KERNEL" \ --mirror-binary http://ftp.$MIRROR.debian.org/debian/ \ --mirror-chroot http://ftp.$MIRROR.debian.org/debian/ \ --mirror-bootstrap http://ftp.$MIRROR.debian.org/debian/ \ --mirror-binary-security http://security.eu.debian.org/ \ --mirror-chroot-security http://security.eu.debian.org \ -p "addlist" \ --hostname pelican \ --iso-volume PelicanHPC \ --syslinux-timeout 20 \ --syslinux-menu enabled \ --bootappend-live "ramdisk_size=100000 noautologin noxautologin" lh_clean # SYSLINUX SPLASH SCREEN if [ -e "$THISDIR/splash.rle" ]; then cp "$THISDIR"/splash.rle config/binary_syslinux/splash.rle lh_config --syslinux-splash "config/binary_syslinux/splash.rle" fi # PACKAGE LIST cp "$THISDIR"/addlist config/chroot_local-packageslists ########## make directories on chroot ######### install -d config/chroot_local-includes/usr/bin install -d config/chroot_local-includes/usr/share/pelican/tftpboot

54

rm -R -f config/chroot_local-includes/etc/skel install -d config/chroot_local-includes/etc/skel ########## copy stuff to be added to chroot ###### rsync -az "$THISDIR/$ARCHITECTURE"/tftpboot/ config/chroot_localincludes/usr/share/pelican/tftpboot rsync -az "$THISDIR"/pelicanhome/ config/chroot_local-includes/etc/skel rsync -az "$THISDIR"/packages/ config/chroot_local-packages # chroot hook to compile stuff in /etc/skel cat <<CHROOTHOOK > config/chroot_local-hooks/script.sh #!/bin/bash update-initramfs -u -k all if [ -d "/etc/skel/Econometrics" ]; then LOCATION="/etc/skel/Econometrics" ############ MPITB ############ cd \$LOCATION/MyOctaveFiles/mpitb/src make clean make -j8 cd \$LOCATION/MyOctaveFiles/mpitb/DLD FILES="*.oct" for f in "\$FILES"; do strip \$f; done ############ my oct files############ cd \$LOCATION/MyOctaveFiles/OctFiles echo "making my .cc files" make clean make all FILES="*.oct" for f in "\$FILES"; do strip \$f; done ######### PEA ########### cd \$LOCATION/Examples/Parallel/pea/example mkoctfile *.cc FILES="*.oct" for f in "\$FILES"; do strip \$f; done fi CHROOTHOOK chmod +x config/chroot_local-hooks/script.sh ######## WRITE THE PELICAN SETUP SCRIPTS ############# cat <<01SETUP > config/chroot_local-includes/usr/bin/pelican_boot_setup #!/bin/bash PATH="/bin:/sbin:/usr/bin:/usr/sbin" export PATH TMP="/tmp/pelican_setup.tmp\$\$" DIALOG="dialog" TITLE="Pelican Setup" exec >/dev/console </dev/console 2>&1 NORMAL=" [0;39m" RED=" [1;31m" GREEN=" [1;32m" YELLOW=" [1;33m" BLUE=" [1;34m" MAGENTA=" [1;35m" CYAN=" [1;36m" WHITE=" [1;37m" bailout(){ # set user password \$DIALOG --title "\$TITLE" --inputbox "Welcome to PelicanHPC. Please type in a password, and then press <enter> to continue" 15 50 "PleaseChangeMe!" 2>/home/user/pw chmod 644 /home/user/pw

55

read PASSWORD </home/user/pw echo "user:\$PASSWORD" | chpasswd chown -R user.user /home/user echo "" echo -n " [H [J" echo "\${GREEN}Welcome to \${CYAN}PelicanHPC\${GREEN}!" echo "" echo "To log in, enter \${YELLOW}user\${GREEN} as the username, and the password you just specified." echo "After you're logged in, you can:" echo "" echo "\${BLUE}* create a cluster: type \${YELLOW}pelican_setup\${GREEN}" echo "\${BLUE}* enter a desktop environment: type \${YELLOW}startx\${GREEN}" echo "" echo "For more information, visit http://PelicanHPC.org. Have fun!\${NORMAL}" echo "" exit \$1 } bailout2(){ read PASSWORD </home/user/pw echo "user:\$PASSWORD" | /usr/sbin/chpasswd echo "All done setting up this PelicanHPC compute node" echo "" echo -n " [H [J" echo "\${GREEN}This is a \${CYAN}PelicanHPC \${GREEN}compute node. It is part of a cluster of computers that is doing some \${YELLOW}REALLY important stuff\${GREEN}." echo "" echo "Please don't try to use it, and \${RED}DON'T TURN IT OFF!" echo "" echo "\${GREEN}THANKS!\${BLUE}" exit \$1 } echo "Welcome to PelicanHPC!" # things for both frontend and nodes echo "" > /etc/motd echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config # test for master or compute node: $PELICAN_NETWORK will only be there at boot if this is a compute node computenode=\`dmesg | grep -c nfsroot=$PELICAN_NETWORK\` if [ \$computenode = 0 ]; then # master node rm -R -f /home mkdir /home mkfs.ext2 -q -m 0 /dev/ram1 rm -f "\$TMP" \$DIALOG --title "\$TITLE" --inputbox "Do NOT type anything into this input box, it \ is only for the convenience of advanced users who have experience using PelicanHPC, and who have read the documentation to \ learn what it is used for. Press <enter> to continue" 15 50 "ram1" 2>"\$TMP" read HOMELOCATION <"\$TMP" ; rm -f "\$TMP" mount /dev/\$HOMELOCATION /home install -d /home/user MESSAGE="Copy user configuration and examples /home/user? You should probably choose YES unless you are using a specially made vesion of PelicanHPC that uses a permanent storage device, and you already have a setup you would like to keep."

56

\$DIALOG --defaultno --title "\$TITLE" --yesno "\$MESSAGE" 10 50 || bailout rsync -avz /etc/skel/ /home/user/ mkdir /home/user/backup # for vim backup files # Start up xfce4 install -d /home/user/.config/autostart echo "[Desktop Entry]" >> /home/user/.config/autostart/xfce4-tipsautostart.desktop echo "Hidden=true" >> /home/user/.config/autostart/xfce4-tipsautostart.desktop # echo "/usr/bin/startx" >> /home/user/.bash_profile # uncomment to make entry into GUI automatic # support software compiled using older Open MPI ln -s /usr/lib/openmpi/lib/libopen-rte.so.0.0.0 /usr/lib/openmpi/lib/liborte.so.0 ln -s /usr/lib/openmpi/lib/libopen-pal.so.0.0.0 /usr/lib/openmpi/lib/libopal.so.0 bailout # for the compute nodes else rm -R -f /home mkdir /home mount $PELICAN_NETWORK.1:/home /home myip=(\`/sbin/ifconfig | grep -i "Ethernet" -A 1|grep "inet addr"|cut -d " " -f 12|cut -d ":" -f 2\`) echo "\$myip is up" > /home/user/tmp/\$myip # support software compiled using older Open MPI ln -s /usr/lib/openmpi/lib/libopen-rte.so.0.0.0 /usr/lib/openmpi/lib/liborte.so.0 ln -s /usr/lib/openmpi/lib/libopen-pal.so.0.0.0 /usr/lib/openmpi/lib/libopal.so.0 bailout2 fi 01SETUP cat <<02USERSETUP > config/chroot_local-includes/usr/bin/pelican_setup #!/bin/bash pelican_setup_user pelican_setup_netdevice pelican_terminalserver pelican_restart_hpc 02USERSETUP cat <<03USER > config/chroot_local-includes/usr/bin/pelican_setup_user #!/bin/bash bailout(){ exit \$1 } cd /home/user HOME="/home/user" PKTMP="\$HOME/tmp" echo "Creating temporary directory" rm -R -f \$PKTMP mkdir \$PKTMP chown user.user \$PKTMP chmod 777 \$PKTMP # regenerate keys echo "Generating new RSA keys" rm -f \$HOME/.ssh/id_rsa* ssh-keygen -q -t rsa -N "" -f "\$HOME/.ssh/id_rsa" cp \$HOME/.ssh/id_rsa.pub \$HOME/.ssh/authorized_keys

57

chmod 600 \$HOME/.ssh/authorized_keys # make list of hosts to fping echo "$PELICAN_NETWORK.2" > \$HOME/fpinghosts i=2 while [ \$i -lt $MAXNODES ] do i=\`expr \$i + 1\` echo $PELICAN_NETWORK.\$i >> \$HOME/fpinghosts done bailout 03USER cat <<04NETDEVICE > config/chroot_localincludes/usr/bin/pelican_setup_netdevice #!/bin/bash # modification of netcardconfig from Knoppix. PATH="/bin:/sbin:/usr/bin:/usr/sbin" export PATH DIALOG="dialog" [ "\`id -u\`" != "0" ] && exec sudo "\$0" "\$@" TMP="/tmp/netconfig.tmp\$\$" bailout(){ rm -f "\$TMP" exit \$1 } TITLE="Pelican Setup" MESSAGE0="No supported network cards found." MESSAGE1="Please select the network device that connects to the cluster." NETDEVICES="\$(cat /proc/net/dev | awk -F: '/eth.:|br.:|tr.:|wlan.:/{print \$1}')" if [ -z "\$NETDEVICES" ]; then \$DIALOG --title "\$TITLE" --msgbox "\$MESSAGE0" 5 30 bailout fi count="\$(echo "\$NETDEVICES" | wc -w)" if [ "\$count" -gt 1 ]; then DEVICELIST="" for DEVICE in \$NETDEVICES; do DEVICELIST="\$DEVICELIST \${DEVICE} network_device_\${DEVICE}"; done rm -f "\$TMP" echo "Hints about your net devices" dmesg|grep eth rm -f "\$TMP" \$DIALOG --menu "\$MESSAGE1" 18 45 12 \$DEVICELIST 2>"\$TMP" || bailout read DV <"\$TMP" ; rm -f "\$TMP" else # Remove additional spaces DV="\$(echo \$NETDEVICES)" fi IP="$PELICAN_NETWORK.1" NM="255.255.255.0 " BC="$PELICAN_NETWORK.255" ifdown \$DV sleep 4 CMD="ifconfig \$DV \$IP netmask \$NM broadcast \$BC up" \$CMD sleep 4 bailout 04NETDEVICE cat <<05TERMINALSERVER > config/chroot_local-

58

includes/usr/bin/pelican_terminalserver #!/bin/sh PATH="/bin:/sbin:/usr/bin:/usr/sbin" export PATH DIALOG="dialog" [ "\`id -u\`" != "0" ] && exec sudo "\$0" "\$@" bailout(){ exit \$1 } cp -a /usr/share/pelican/tftpboot/* /var/lib/tftpboot/ sync # configure dhcp cat <<DHCP > /etc/dhcp3/dhcpd.conf # global settings allow booting; allow bootp; default-lease-time 600; max-lease-time 7200; subnet $PELICAN_NETWORK.0 netmask 255.255.255.0 { next-server $PELICAN_NETWORK.1; filename "pxelinux.0"; option subnet-mask 255.255.255.0; range $PELICAN_NETWORK.2 $PELICAN_NETWORK.$MAXNODES; } DHCP KERNELVERSION=\`uname -r\` # configure stuff for serving up netboot image this was not needed in live-helper 1.0.3 # but it is needed for the current version. Perhaps can remove in future. cat << PXEFIX > /var/lib/tftpboot/debianlive/$ARCHITECTURE/pxelinux.cfg/default prompt 1 timeout 10 default live LABEL live MENU LABEL Start PelicanHPC compute node kernel debian-live/$ARCHITECTURE/vmlinuz-\$KERNELVERSION append initrd=debian-live/$ARCHITECTURE/initrd.img\$KERNELVERSION boot=live noautologin noxautologin union=aufs netboot=nfs nfsroot=10.11.12.1:/live/image PXEFIX # tftpd - use one or the other # configure tftpd-hpa #cat <<TFTP > /etc/default/tftpd-hpa #Defaults for tftpd-hpa #RUN_DAEMON="yes" #OPTIONS="-l -s /var/lib/tftpboot" #TFTP # configure atftpd cat <<TFTP > /etc/default/atftpd USE_INETD=false OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 -mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /var/lib/tftpboot" TFTP # generate /etc/exports cat <<EXPORTS > /etc/exports /live/image *(ro,async,no_subtree_check,no_root_squash,fsid=12345)

59

/home $PELICAN_NETWORK.0/255.255.255.0(rw,root_squash,async,no_subtree_check) EXPORTS # start services TITLE="Start Pelican HPC netboot services" MESSAGE="We now get ready to set up the cluster by starting services that will allow the compute nodes to netboot. \ IMPORTANT: do not proceed if your cluster is on an existing network, or PelicanHPC's dhcp server may conflict \ with a running dhcp server. Continue?" \$DIALOG --title "\$TITLE" --yesno "\$MESSAGE" 15 90 || bailout sync /etc/init.d/atftpd start /etc/init.d/dhcp3-server start /etc/init.d/nfs-kernel-server start sleep 5 bailout 05TERMINALSERVER cat <<06HPC > config/chroot_local-includes/usr/bin/pelican_restart_hpc #!/bin/sh PKTMP="/home/user/tmp" PATH="/bin:/sbin:/usr/bin:/usr/sbin" export PATH DIALOG="dialog" bailout(){ exit 0 } # check which nodes are up checknodes(){ rm \$PKTMP/bhosts sudo fping -a -q -r0 -f /home/user/fpinghosts > \$PKTMP/bhosts } retry(){ checknodes NNODES="\$(grep -c "" \$PKTMP/bhosts)" MESSAGENODES="\nGo turn on your compute nodes now. \n\nAt the moment \$NNODES compute nodes (not counting this frontend node) are available. \n\nClick no to rescan the available nodes. Click yes when the desired number of nodes are available. You might want to wait a bit if some nodes are still finishing booting up." \$DIALOG --title "\$TITLE" --defaultno --yesno "\$MESSAGENODES" 20 50 || retry } trap bailout 1 2 3 15 TITLE="Restart Pelican HPC" MESSAGE="\nTime to bring the compute nodes into the cluster. If you are resizing a running cluster, be aware that continuing will interrupt any running MPI jobs. Continue?" \$DIALOG --title "\$TITLE" --yesno "\$MESSAGE" 15 90 || bailout retry # master must be last in the list echo "$PELICAN_NETWORK.1" | cat >> \$PKTMP/bhosts # lamboot 2X to generate known_hosts (and an error message) the first time sleep 5 lamwipe lamboot \$PKTMP/bhosts lamwipe lamboot \$PKTMP/bhosts lamnodes

60

sleep 5 # display success message NNODES="\$(grep -c "" \$PKTMP/bhosts)" # final report SUCCESS="\nYour cluster of \$NNODES nodes is (probably) lambooted. If there was a problem, just re-run the script.\nThe nodes in the cluster are listed in the file ~/tmp/bhosts. If you add or remove compute nodes, rerun this script (pelican_restart_hpc) whenever you like." \$DIALOG --title "\$TITLE" --msgbox "\$SUCCESS" 15 50 bailout 06HPC ######## END OF PELICAN SETUP SCRIPTS #############

######## POST BOOT SCRIPT #################### install -d config/chroot_local-includes/usr/share/initramfstools/scripts/live-bottom/ cat <<99START > config/chroot_local-includes/usr/share/initramfstools/scripts/live-bottom/99script #!/bin/sh cat <<RC_LOCAL > /root/etc/rc.local #! /bin/sh pelican_boot_setup RC_LOCAL chmod a+x /root/etc/rc.local 99START chmod +x config/chroot_local-includes/usr/share/initramfstools/scripts/live-bottom/99script # make the scripts in /usr/bin executable chmod +x config/chroot_local-includes/usr/bin/* # build the ISO image nice ionice -c2 lh_build --debug # safeguard against crashes umount proc-live umount sysfs-live umount devpts-live sync