SlideShare a Scribd company logo
1 of 71
UNIVERSIDADE DE UBERABA
    ROGÉRIO ABADIO CARDOSO RODRIGUES




          COMPUTAÇÃO PARALELA:
VIABILIDADE EM CLUSTER DE ALTO DESEMPENHO




              UBERLÂNDIA - MG
                   2011
ROGÉRIO ABADIO CARDOSO RODRIGUES




          COMPUTAÇÃO PARALELA:
VIABILIDADE EM CLUSTER DE ALTO DESEMPENHO




                     Trabalho de conclusão de curso apresentado à
                     Universidade de Uberaba, como parte dos
                     requisitos à graduação e obtenção do título de
                     Engenheiro de Computação.

                     Orientadora: Profª Ms. Luciene Chagas de
                     Oliveira.

                     Co-Orientador: Prof.    Esp.   Mário    Cesar
                     Pintaudi Peixoto




              UBERLÂNDIA - MG
                   2011
A toda minha família, principalmente,
           minha mãe Elza e meu pai José,
                     meus amigos de curso,
                 e à minha noiva Rossana,
              sem os quais seria impossível
               alcançar mais esta conquista
       e que sempre estiveram ao meu lado
               não importando o momento,
incentivando-me a buscar o conhecimento,
                      Dedico este trabalho.
AGRADECIMENTOS


         À Deus, acima de tudo, agradeço, pela saúde, serenidade e perseverança sobre mim
concedidas, para superar mais esta batalha e alcançar mais um degrau na escada da vida.

         Aos meus queridos pais, Elza e José, que se dedicaram a mim com amor , carinho e
sempre me incentivaram, acreditando em meus sonhos.

         Especialmente a Rossana, que soube me ouvir e compreender, nas horas que precisei
do seu apoio e carinho, pela dedicação incondicional e pelas conquistas e superações
realizadas em conjunto.

         Aos professores do curso de Engenharia de Computação, pelo apoio no convívio
estimulante durante toda a trajetória, e que, por meio de seus ensinamentos, permitiram a
construção de uma base de conhecimentos sólida. Em especial à Profª Mario Cesar e à minha
orientadora Profª Luciene Chagas de Oliveira, pelo estímulo e competente orientação durante
a pesquisa.

         Aos colegas de turma, pelas reflexões críticas e sugestões recebidas, e ainda, pelo
maior aprendizado obtido durante o curso, a convivência, o companheirismo nas horas
difíceis do aprendizado e o respeito às diferenças.
“[...] no pain, no gain [...]”
                                (Scorpions)

                          “Por mais difícil
     que seja cada novo degrau da vida ele
deve ser superado mesmo que cause alguns
                    desgastes emocionais"
                        (Rogério Cardoso)
Resumo


         Com o avanço e popularização das tecnologias de ponta, os microcomputadores cada
vez mais presentes no cotidiano da população trazem por conseqüência um aumento do
número de usuários conectados a aplicações Web ou local em um ambiente interno de uma
Intranet. Esta demanda de poder computacional exige que o processamento seja cada vez mais
eficiente.

         Na busca de garantir o sucesso das aplicações, os diferentes tipos de sistemas
distribuídos são implementados para garantir a demanda dos processos usados nas aplicações.
Justamente nesse sentido, procura-se o aumento de desempenho, colocando-se assim, a
computação paralela, como fator determinante para um maior poder computacional de
maneira mais viável.

         Este projeto apresenta uma visão geral sobre Sistemas Operacionais com destaque e
ênfase para o sistema GNU/Linux, analisando o desenvolvimento de um supercomputador
com um Hardware de baixo custo, sendo uma possível solução interessante para uso em
conjunto com outras tecnologias atuais como, por exemplo, a virtualização e outras aplicações
que exijam um alto desempenho de processamento.

         Para efeito de validação do conhecimento contido neste trabalho foi projetado um
sistema de cluster com três máquinas, que demonstra o desempenho possível de se conseguir
com o uso de um aglomerado de computadores do tipo Beowulf1.



         Palavras - chave: Sistemas Operacionais, Cluster, Linux, Supercomputadores.




1
  Beowulf são clusters de desempenho escalável baseado em hardware commodity, em uma rede do tipo privado
e software open source (BEOWULF, 2011).
Abstract


       With the advancement and popularization of technologies, personal computers are
increasingly present in daily life of the population consequently bring an increase in the
number of    users    connected    to applications     or Web site   in an internal       environment
of an Intranet. This demand       for computing        power requires that       the       processing
is more efficient.

       In seeking to ensure the success of applications, different types of distributed systems
are implemented to ensure the demand of the processes used in applications. Precisely in this
sense, we seek to increase performance, placing it well, and parallel computing, as the
determining factor for greater computing power in a more viable.

       This project presents an overview of operating systems with emphasis and focus to
the GNU / Linux system, analyzing the development of a supercomputer with a low-cost
hardware, and an interesting possible solution for use in conjunction with other current
technologies such        as       virtualization and       other applications          requiring high
performance processing.

       For    the    purpose of   validating   the knowledge      contained in     this     paper was
designed a cluster system with three machines, which shows the performance possible to
achieve with the use of a cluster of Beowulf type computers.




         Keywords: Operating Systems, Cluster, Linux, Supercomputers.
LISTA DE FIGURAS


Figura 1- Paralelização de Tarefas ........................................................................................... 30
Figura 2 - Organização geral de um cluster de servidores de três camadas ............................. 32
Figura 3 - modelo de sistema de alta disponibilidade .............................................................. 34
Figura 4 - Cluster de balanceamento de Carga......................................................................... 34
Figura 5 - Arquitetura de um cluster de PCs ............................................................................ 36
Figura 6 - Diagrama Básico de um cluster Beowulf ................................................................. 37
Figura 7 - Gráfico Sistemas Operacionais em Supercomputadores ......................................... 41
Figura 8 - Dois segmentos de redes .......................................................................................... 45
Figura 9 - Interface do Putty ..................................................................................................... 48
Figura 10 - Ambiente de manipulação do WinSCP ................................................................. 48
Figura 11- Teste inicial do sistema ........................................................................................... 49
Figura 12 - imagem renderizada com POVRay........................................................................ 50
Figura 13 - imagem renderizada com POVRay........................................................................ 52
Figura 14 - Webmin no servidor Mestre .................................................................................. 55
Figura 15 - Webmin no servidor escravo1 ............................................................................... 55
Figura 16 - Processo de paralelização de uma aplicação .......................................................... 57
Figura 17 - Estrutura MPI......................................................................................................... 57
Figura 18 - Funcionamento em teste do bWatch ...................................................................... 58
Figura 19 - Aplicação com POVRay ........................................................................................ 59
Figura 20 - Primeira renderização de imagem.......................................................................... 60
Figura 21 - nó Mestre ............................................................................................................... 62
Figura 22 - nó Escravo1 ........................................................................................................... 63
Figura 23 - nó Escravo 2 .......................................................................................................... 63
Figura 24 - Roteador de acesso remoto ao nó mestre ............................................................... 64
LISTA DE TABELAS


Tabela 1 – S. O. % utilizado em Supercomputadores .............................................................. 41
Tabela 2 - Tempo de resposta para Skyvase.pov ..................................................................... 51
Tabela 3 - Tempo de resposta para Benchmark.pov................................................................. 51
LISTA DE QUADROS

Quadro 1- Código utilizado no Arquivo hosts.equiv. ............................................................... 46
Quadro 2 - Código utilizado no Arquivo securetty. ................................................................. 47
Quadro 3 - Código utilizado no Arquivo exports. .................................................................... 47
Quadro 4 - Script Shell resolvendo Dependências. .................................................................. 53
Quadro 5 - Arquivo hosts de todos os micros do cluster.......................................................... 54
Quadro 6 - Arquivo .hosts ........................................................................................................ 54
LISTA DE ABREVIATURAS E SIGLAS

API - Application Program Interface (Interface de Aplicação)

CC-NUMA – Cache Coherence Non-Uniform Memory Access

CPU – Central Processing Unit – Unidade Central de Processamento

DNS – Domain Name Service (Serviço de Domínio de Nomes).
FTP – File Transfer Protocol (Protocolo de Transferência de Arquivo).
GNU - General Public License (Softwares Licenciados pelo Projeto GNU (Licença Pública
Geral)).
HA – High Availability
HD – Hard Disk (Disco Rígido).
HOST – Máquina ligada à rede.
HPC – High Performance Computing
HPCC/ESS - High Performance Computing Cluster/Earth and Space Sciences
HTTP - Hyper Text Transfer Protocol (Protocolo de Transferência de Hiper texto ).
HTTPS - Hyper Text Transfer Protocol Secure (Protocolo Seguro de Transferência de Hiper
texto).
IBM - International Business Machines.
IP - Internet Protocol (Protocolo de Internet).
IPV4 – Internet Protocol Version 4 (Protocolo de Internet Versão 4).
IPV6 – Internet Protocol Version 6 (Protocolo de Internet Versão 6).
LAN – Local Area Network (Rede de Área Local).
MB – Megabytes
MFlops – Megaflops
MIMD – Multiple Instruction Multiple Data (Múltiplas Instruções de Dados Múltiplos).
MISD – Multiple Instruction Single Data.
MPI - Message Passing Interface (Interface de passagem de mensagens).

MAN – Metropolitan Area Network (Rede de trabalho Metropolitana).
NAT - Network Address Translation (Conversão de Endereços de Redes).
NASA - National Aeronautics and Space Administration (Administração Nacional do Espaço
e da Aeronáutica).

NFS - Network File System (Sistema de Arquivos de Rede).
POVRay - Persistence Of Vision Raytracer (Persistência da visão Raytracer).
PVM - Parallel Virtual Machine (Maquina virtual paralela).

RAM – Random Access Memory (Memória de acesso aleatório).

SAD – Sistema de Arquivos Distribuído.

SSH – Security Shell (Segurança Shell).

S. O. – Sistema Operacional.
SUMÁRIO


Capítulo 1 – Introdução ....................................................................................... 16
   1.1 Justificativa e Motivação .....................................................................................18
   1.2      Objetivo Geral ..................................................................................................19
   1.3 Objetivos Específicos ..........................................................................................19
   1.4 Organização do Trabalho .....................................................................................20
Capítulo 2 – Sistemas Operacionais e Sistemas Distribuídos ............................. 21
   2.1 Sistemas Operacionais .........................................................................................21
      2.1.1 Memória virtual ....................................................................................................... 22
      2.1.2 Deadlock .................................................................................................................. 22
      2.1.3 Proteção do Sistema................................................................................................. 24
      2.1.4 Segurança em Sistemas Operacionais ..................................................................... 25
      2.1.5. Sistemas de Arquivos Distribuídos......................................................................... 25
      2.1.6. Threads ................................................................................................................... 26
      2.1.7. Sistemas Open Sources ........................................................................................... 26
   2.2 Sistemas Distribuídos ..........................................................................................29
      2.2.1 Processamentos Paralelos ........................................................................................ 29
      2.2.1.1 Tipos de processamentos paralelos ...................................................................... 30
      2.2.2 Tipos de Cluster ...................................................................................................... 31
      2.2.2.1 - Cluster de alta disponibilidade ........................................................................... 33
      2.2.2.2 – Clusters de Alto Desempenho ........................................................................... 35
      2.2.2.2.1 – Arquitetura de um cluster Beowulf ................................................................. 36
      2.2.2.2.2 – Vantagens e desvantagens de um cluster Beowulf ......................................... 38
      2.2.2.2.3 – Tipo de Rede utilizada em um cluster Beowulf .............................................. 39
      2.2.2.2.4 – Hardware utilizado em um cluster Beowulf ................................................... 40
      2.2.2.2.5 – Sistema Operacional utilizado em um cluster Beowulf .................................. 40
      2.2.2.2.6 – Aplicações de um cluster Beowulf ................................................................. 42
Capítulo 3 – Desenvolvimento de Cluster De Alto Desempenho ...................... 44
   3.1 Visão Geral do Projeto do Cluster .......................................................................45
   3.3 Protótipos do Sistema ..........................................................................................46
      3.3.1 Acesso ao Nó mestre ............................................................................................... 46
3.3.2 Requisitando uma tarefa .......................................................................................... 49
      3.3.3 Resposta do Sistema ................................................................................................ 51
   3.4 Ferramentas e Tecnologias ..................................................................................53
      3.4.1 Scripts ...................................................................................................................... 53
      3.4.2 Automatização da Construção do Cluster ............................................................... 54
      3.4.3 Programação Paralela .............................................................................................. 56
      3.4.4 Ferramentas de Monitoramento do Cluster ............................................................. 58
      3.4.5 Aplicação do Cluster Renderizando Imagens ......................................................... 58
   3.6 Hardware .............................................................................................................61
Capítulo 4 – Considerações Finais ...................................................................... 65
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................ 66
ANEXO ............................................................................................................... 68
16



    Capítulo 1 – Introdução


            Nas últimas décadas, a taxa de crescimento do poder de processamento de mini-
computadores, mainframes2 e os tradicionais supercomputadores tem sido algo em torno de
20% ao ano, enquanto a taxa de crescimento do poder de processamento de
microprocessadores tem sido algo em média de 40% ao ano (PITANGA, 2008).

            Atualmente, os computadores voltados para usuários finais evoluem tanto na
arquitetura quanto na tecnologia. Exemplos destas tecnologias que foram incorporadas são o
uso da memória cache, pipelines dentre outros, que os supercomputadores da década de 70 já
tinham a maioria destes recursos que foram incorporados.

            Conforme comentado por Morimoto (2009), com a popularização das redes e da
Internet, passamos a depender da conexão com a Internet até mesmo para as tarefas mais
básicas e a armazenar cada vez mais informações em servidores remotos.

            As aplicações e a estrutura que mantém esse suporte passam a ter uma vital
importância para os dias atuais e aplicações como Google Docs e serviços online dependem
de mais processamento e velocidade, exigindo mais esforços tanto de Hardware quanto de
desenvolvimento de softwares otimizados para esse tipo de aplicação.
            Cluster pode ser definido como um sistema onde dois ou mais computadores
trabalham de maneira conjunta para realizar processamento pesado. Em outras palavras, os
computadores dividem as tarefas de processamento e trabalham como se fossem um único
computador (ALECRIM, 2011).
            A computação em cluster possui um longo histórico de casos atividades bem
sucedidas como é o caso cluster do tipo Beowulf que foi usado na produção do filme Titanic
feito pela Digital Domain (DOMAIN, 2002), em Venice, Califórnia com o uso de 160
computadores, para fazer os cálculos de adição de elementos nas cenas do navio fazendo com
que o mesmo pareça estar navegando, ancorado ou afundando. O custo do projeto foi 40%
menor que uma solução baseada em supercomputadores do mesmo poder de processamento
da época.
            Os grandes mainframes de duas décadas atrás deram lugar a servidores de baixo
custo, montados usando componentes similares aos usados nos desktops, hospedados em

2
    Mainframes: computadores de grande porte de processamento.
17



datacenters3 e administrados remotamente. Os links de fibra óptica caíram brutalmente de
preço tornando viáveis sites que disponibilizam vídeos e outros tipos de mídia (MORIMOTO,
2009).
          Os supercomputadores, como são de se esperar, são máquinas caras, mas que
oferecem um grande desempenho. Essa característica os torna quase inacessíveis para as
empresas de menor porte. Fica então o dilema: ou se gasta muito dinheiro e compra-se um
supercomputador de alto desempenho, ou então se economiza dinheiro e tenta-se satisfazer
com máquinas de desempenho inferior. Por esta razão que os clusters de computadores a cada
dia crescem mais (PITANGA, 2008).
          O Sistema Operacional que tem o maior destaque no uso de clusters é o GNU/Linux
por ser de código fonte aberto possui maior flexibilidade a diferentes tipos de situações.
Dados estatísticos do site TOP500 (TOP500, 2011) mostram os mais potentes
supercomputadores sendo que 79% deles utilizam o GNU/Linux. Portanto, este é o sistema
utilizado nesse projeto para comprovar a versatilidade e viabilidade de um cluster.
          Cluster Beowulf pode ser considerado o cluster mais difundido e utilizado para o
processamento de alto desempenho, isto se deve muito ao seu baixo custo de implementação.
Veio suprir a crescente necessidade de elevada capacidade de processamento em diversas
áreas científicas. (ALVARENGA, 2007).
          Ha outros tipos de aglomerados de computadores como o Mosix que baseia-se na
distribuição de processos, mais por ser relativamente complicado de implantar, pois envolve
modificar o Kernel do sistema e recompilar o Beowulf acaba sendo mais atrativo aos
iniciantes em supercomputadores.
          A semente inicial veio ainda na década de 1960, com a IBM (International
Business Machines), em uma forma de interligar vários mainframes, com o projeto que
recebeu o nome de IBM Parallel Sysplex System. Porém, foi somente em 1993 que os
pesquisadores Donald J. Becker e Thomas Sterling começaram a desenvolver um sistema de
processamento distribuído utilizando-se Hardware convencional. Em 1994, trabalhando no
CEDIS (subsidiária da NASA), sob o patrocínio do Projeto HPCC/EES, nasceu o projeto
Beowulf (NETO, 2008).

3
 Datacenters: são conhecidos como central de processamento de dados, que possuem toda uma estrutura
adequada e abrigar vários computadores.
18



    1.1 Justificativa e Motivação

        Os benefícios mais importantes que os clusters podem nos proporcionar segundo
Pitanga (2008), Batista (2007) e Dantas (2005) são:

               Baixo custo: a redução de custo para se obter processamento de alto
                desempenho utilizando-se simples PCs.
               Disponibilidade: devido ao cluster possuir no mínimo dois nós, em caso de
                ocorrer qualquer problema, a disponibilidade dos serviços não deve ser
                prejudicada.
               Escalabilidade: a configuração pode crescer à medida que mais recursos
                estiverem disponíveis.
               Tolerância à falhas: o aumento de confiabilidade do sistema como um todo,
                caso alguma parte falhe.
               Alto desempenho: possibilidade de se resolver problemas muito complexos
                através do processamento paralelo, o que diminui o tempo de resolução dos
                problemas.
               Produtividade de Negócios: Empresas que operam em cluster possuem uma
                operaração com mais eficiência, melhor aproveitamento de economias de
                escala e recursos compartilhados.
               Sensibilização de Mercado: Clustering permite que as empresas possam
                atender aos mercados existentes é responder melhor às mudanças do mercado
                futuro, através do estabelecimento de laços mais estreitos com clientes e
                mercados locais. Empresas que empregam cluster também podem atuar de
                forma cooperativa no fornecimento de dados de mercado para novas
                soluções.
               Transferência de Inovação e conhecimento: Como parte de um cluster, as
                empresas podem conhecer melhor novas fontes e buscar oportunidades de
                inovação através de vínculos mais fortes com instituições, prestadores de
                serviços e estabelecimentos de ensino.

        A estrutura de aglomerados de computadores ou cluster tem como vantagem
diferencial o seu valor de custo-benefício muito inferior ao de um ambiente multiprocessado e
por esta razão permite maior flexibilidade de expansão de processamento acrescentando mais
19



máquinas de forma rápida. Outro fator também importante é a manutenção do cluster, pois os
componentes são facilmente encontrados no mercado, ao contrário do ambiente
multiprocessado. Entende-se por ambiente multiprocessado como sendo um Hardware
dedicado com motherboards que possuem vários processadores em uma única placa
(PITANGA, 2008).

        São inúmeros os benefícios que um aglomerado de computadores, ou seja, cluster
pode trazer para uma organização ou instituição. Porém, antes do desenvolvimento do cluster,
a finalidade do mesmo já deve estar previamente definida, pois devem ser desenvolvidos com
uma finalidade especifica e não desenvolver sem saber os processos que devem ser agilizados.
(DANTAS, 2005).

        Um cluster de computadores pode ser visto como uma solução alternativa para
universidades e empresas de pequeno a médio porte, para obterem processamento de alto
desempenho na resolução de problemas através de aplicações paralelizáveis, a um custo
razoavelmente baixo se comparado com os altos valores necessários para a aquisição de um
supercomputador da mesma classe de processamento (PITANGA, 2008).

        Este trabalho tem a proposta de montar um cluster físico e abordar os conhecimentos
sobre computação paralela, para que seja atribuído o cluster a sistemas de virtualização
comercial utilizando a plataforma do Citrix XENServer.


    1.2 Objetivo Geral

        O objetivo deste trabalho é realizar um estudo aprofundado nos conteúdos de
sistemas operacionais e sistemas distribuídos usando cluster, bem como realizar uma
implementação prática de um cluster de alto desempenho e baixo custo facilitando a
compreensão e implementação.



    1.3 Objetivos Específicos

       Os objetivos específicos deste trabalho são:

             Apresentar uma abordagem geral da teoria de sistemas distribuídos e clusters;

             Desenvolver um cluster Beowulf que tenha as seguintes características:
20



                   Baixo custo de implementação;

                   Alto poder de processamento;

                   Gerenciamento fácil de ser visualizado e monitorado;

                   Utilização de sistemas GNU/Linux de forma que a implementação seja
                    facilmente personalizada para determinadas aplicações;

                   Implementação de configurações específicas;

                   Construção de um nó mestre e três escravos;

        Portanto, o trabalho tem por objetivo realizar o projeto de um cluster Beowulf de
baixo custo e fácil entendimento do seu funcionamento.



    1.4 Organização do Trabalho

        O presente trabalho encontra-se dividido e organizado nos seguintes capítulos:

               Capítulo 1 foi apresentado uma introdução e contextualização geral do tema
                computação paralela: cluster, destacando sua colocação no momento
                histórico atual e suas aplicações;

               Capítulo 2 apresenta um referencial teórico e apresenta uma abordagem geral
                sobre o cluster Beowulf, em que são apresentados os principais conceitos
                relativos à sistemas operacionais e sistemas distribuídos para o entendimento
                do cluster, destacando as vantagens do uso de sistemas open source em
                implementações do tipo, principais supercomputadores que marcaram épocas,
                o funcionamento dos clusters de alta disponibilidade e de alto desempenho;

               Capítulo 3 apresenta o Cluster desenvolvido, mostrando a topologia,
                tecnologias usadas e os resultados de testes obtidos comparando o sistema
                como todo;

               Capítulo 4 apresenta as considerações finais e trabalhos futuros, concluindo a
                pesquisa sobre cluster e sua colocação no mercado atual;
21



Capítulo 2 – Sistemas Operacionais e Sistemas Distribuídos

        Este capítulo aborda conceitos fundamentais para a construção do cluster, que de
certa maneira pode ser definido com duas áreas distintas para sua construção: sistemas
operacionais e sistemas distribuídos.

        No contexto de Sistemas Operacionais, citam-se os problemas encontrados para que
a solução de computação paralela fosse implementada e os conteúdos relacionados como
funcionamento de memória virtual do sistema, Deadlock e segurança do sistema.

        Já em Sistemas distribuídos é discutido as soluções de computação paralela e quais
os ambientes possíveis para sua aplicação, discutindo sobre tipos de clusters e forma de como
este pode ser utilizado. Ainda neste capítulo, tem-se uma introdução aos tipos de redes que
podem ser utilizadas na implementação do Cluster Beowulf.




    2.1 Sistemas Operacionais

        Um sistema operacional é um programa que gerência o Hardware do computador.
Ele também fornece uma base para os programas e aplicativos e atua como intermediário
entre o usuário e o Hardware do computador (SILBERSCHATZ, 2010).

        Um aspecto interessante dos sistemas operacionais é o quanto eles assumem
diferentes abordagens ao cumprir regras e tarefas. Por exemplo, os sistemas de mainframe são
projetados basicamente para aperfeiçoar a utilização do Hardware, os sistemas desktop são
utilizados para a utilização de jogos e aplicações do usuário, os sistemas para tablets são
voltados para mobilidade, e cada um possui suas características específicas. Já a utilização de
sistemas operacionais com a distribuição de tarefas e de processamento leva ao
aperfeiçoamento da computação paralela detalhadas em sistemas distribuídos e para
apresentar os fundamentos de um cluster será descritos estes dois conceitos.

        Para o entendimento das aplicações relacionadas a clusters ou outras variações da
sua arquitetura, o conhecimento de sistemas operacionais é de suma importância, pois sem o
entendimento do seu funcionamento como um todo, as funcionalidades desejadas ao se
construir um cluster podem não ter sucesso durante sua construção. Tais problemas podem
estar relacionados a programação paralela mal feita gerando deadlocks, travamentos por má
22



configuração de memória virtual ou SWAP, defeitos de distribuição de arquivos entre os nós
do cluster e entre outros assuntos relacionados a sistemas operacionais.

        Relacionado a sistemas operacionais será discutido os conceitos de memória virtual,
Deadlock, sistemas de I/O, proteção dos sistemas, segurança e sistemas Open Source que são
importantes para a realização do trabalho com clusters Beowulf.



    2.1.1 Memória virtual

       A memória virtual é uma técnica que permite a execução de processos que não estão
completamente em memória. Uma das principais vantagens desse esquema é que os
programas podem ser maiores do que a memória física.

       A memória virtual abstrai a memória principal em um array de armazenamento muito
extenso e uniforme, separando a memória lógica visualizada pelo usuário da memória física.
Essa técnica libera os programadores das preocupações com as limitações de armazenamento
da memória. A memória virtual também permite que os processos compartilhem arquivos
facilmente e que a memória compartilhada seja implementada (SILBERSCHATZ, 2010).

       Além disso, ela fornece um mecanismo eficiente para a criação de processos.
Entretanto, a memória virtual não é fácil de implementar e pode degradar o desempenho se
for empregada de uma forma descuidada.

       Clusters possuem suas particularidades para serem montados, mas um problema
encontrado após sua montagem é conseguir encontrar softwares aptos a trabalharem em seu
ambiente. É importante que vários cuidados adicionais sejam tomados ao se tratar a memória
virtual que é um importante assunto tratado em sistemas operacionais. É um recurso que
permite um desempenho mais aprimorado do cluster se bem dimensionada e configurada de
acordo com a carga de processamento imposta ao aglomerado de computadores.

    2.1.2 Deadlock

    Deadlock são problemas que necessitam ser tratados e em um ambiente de clustering,
que possui um alto poder de processamento, o que de certa forma não o deixa imune a um
deadlock. O deadlock deve ser conhecido e ter um tipo de prevenção ou administração para
que o cluster fique otimizado, aproveitando o máximo seus recursos, ao invés de ter
23



problemas de travamentos ocasionados por má gerenciamento ou falta de prevenção de
deadlocks.

       Um estado de deadlock ocorre quando dois ou mais processo estão esperando
indefinidamente por um evento que só pode ser causado por um dos processos em espera. Há
três métodos principais para a manipulação de deadlock:

      Usar algum protocolo para a prevenção ou o impedimento de Deadlock, garantindo
       que o sistema nunca entre em estado de Deadlock;
      Permitir que o sistema entre em estado de Deadlock, detecte-o e promova a
       recuperação;
      Ignorar o problema e assumir que nunca ocorrerão Deadlocks no sistema.

       Um método de impedimento de Deadlock alternativo ao método de prevenção requer
que o sistema tenha a informações a priori sobre como cada processo utilizará os recursos do
sistema. O algoritmo do banqueiro, por exemplo, requer informações a priori sobre a
quantidade máxima de cada classe de recurso que cada processo pode solicitar, usando essas
informações podemos as diferenças entre um processo que estará em um estado seguro e um
inseguro garantindo assim que todos serão concluídos e impedindo o estado de Deadlock
(TANENBAUM, 2003).
       Se um sistema não empregar um protocolo pra garantir que os Deadlock jamais
ocorram, então um esquema de detecção e recuperação pode ser usado um algoritmo de
detecção de Deadlock deve ser invocado para determinar se ocorreu um Deadlock. Se um
Deadlock for detectado, o sistema deve se recuperar encerrando alguns dos processos
envolvidos no Deadlock ou provocando a preempção dos recursos de alguns desses processos.

       A maioria dos sistemas operacionais, incluindo Unix e Windows, simplesmente ignora
o problema, supondo que a maior parte dos usuários preferiria um Deadlock ocasional a uma
regra que restrinja cada usuário a somente um processo, um arquivo aberto e um de cada
recurso. Se fosse possível eliminar Deadlock sem custo, não haveria muita discussão. O
problema e que o custo e alto – na maioria das vezes implica restrições não convencionais aos
processos. Assim, deparamos com uma analise não muito prazerosa de custo-benefício ente
conveniência e correção, alem de muita discussão acerca do que e mais importante para quem.
Nessas condições torna-se difícil encontrar soluções gerais. Uma citação que pode-se ser
lembrada e o algoritmo do avestruz(TANENBAUM, 2003).
24



    2.1.3 Proteção do Sistema

       Os sistemas de computação contem muitos objetos, e eles precisam ser protegidos
contra a má utilização. Os objetos podem ser de Hardware (tais como memória, tempo de
CPU e outros) ou de software (tais como arquivos programas e semáforos). Um direito de
acesso é a permissão para executar uma operação sobre um objeto. Um domínio é um
conjunto de direitos de acesso.

       Os processos são executados em domínios e podem utilizar qualquer um dos direitos
de acesso do domínio para acessar e manipular objetos. Durante seu tempo de vida, um
processo pode tanto ser limitado a um domínio de proteção como autorizando a comutar de
um domínio para outro. A matriz de acesso é um modelo geral que fornece um mecanismo
para proteção sem a imposição de uma determinada política de acesso ao sistema ou a seus
usuários. A separação entre política e mecanismo é uma propriedade de projeto importante a
matriz de acesso e esparsa. Ela é normalmente implementada tanto como lista de acessos
associadas a cada objeto, quanto como listas de competência associadas a cada domínio.

       Podemos incluir proteção dinâmica no modelo da matriz de acesso considerando os
domínios e a própria matriz de acesso como objetos. A revogação de direitos de acesso em
um modelo de proteção dinâmica e normalmente mais fácil de implementar com um esquema
de lista de acessos do que com uma lista de competências (SILBERSCHATZ, 2010).

       Proteção de sistema refere-se a um conjunto de técnicas para proteger o sistema de
erros e sobreposições em várias camadas. A prevenção de que um mesmo pacote ou aplicativo
utilize a mesma área de memória alocada é um exemplo, que inclusive foi o motivo da
clássica tela de erro com a mensagem “este programa executou uma operação ilegal e será
finalizado" que ocorrem freqüentemente no Windows 3.x e no Windows 9x. Essa proteção e a
sua utilização é de suma importância, pois o sistema Beowulf deve possuir estabilidade para
executar exaustivas tarefas de processamento e a proteção do sistema operacional escolhido
deve garantir essa característica.
25



    2.1.4 Segurança em Sistemas Operacionais

       Os recursos computacionais devem ser protegidos contra acessos não autorizados,
destruição ou alteração maliciosa e introdução acidental de inconsistências. Esses recursos
incluem as informações armazenadas no sistema tanto de dados quanto código, assim como a
CPU, memória e discos e rede que compõem o computador (SILBERSCHATZ, 2010).

       Os Beowulfs, por definição, não tem contato com o mundo externo à sua própria rede.
Isto os torna seguros por natureza. A única preocupação seria entre o nó principal e o resto da
rede, mas neste caso se aplicam as regras padrões de segurança para qualquer rede normal.
Como em geral eles são usados em ambientes de pesquisa e por poucas pessoas, segurança
normalmente não é uma preocupação. Em ambientes mais hostis onde possa ser necessário
um controle mais severo, pode-se limitar o acesso ao nó principal (que na verdade representa
todo o cluster para o mundo externo) da mesma maneira que se limita o acesso a qualquer
máquina em qualquer rede na Internet (RUIZ, 2011).



    2.1.5. Sistemas de Arquivos Distribuídos

       Um sistema de arquivos distribuído (SAD) é um tipo de sistema de arquivos no qual
todos os dados nele armazenados estão espalhados em Hardwares fisicamente diferentes,
interconectados através de uma rede. Tais sistemas possuem vários aspectos semelhantes aos
dos sistemas de arquivos centralizados, além de operações de manipulação de arquivos,
mecanismos de redundância e consistência, entre outros atributos. A vantagem do uso de um
SAD é a possibilidade de montar estratégias de distribuição de carga para melhor desempenho
no acesso aos dados, mesmo sob alta demanda (MAGAZINE, 2010).

       A escolha da melhor opção de um sistema de arquivos distribuído eficiente depende da
topologia de rede, ou da estratégia de armazenamento de dados. E para os clusters que usam a
distribuição de arquivos entre o nó mestre e os escravos, o conhecimento do tipo e da
estrutura de arquivos distribuído é fundamental para o seu funcionamento e para sua
otimização.
26



    2.1.6. Threads

       Em sistemas operacionais tradicionais, cada processo tem um espaço de
endereçamento e um único thread (fluxo) de controle. Na verdade, isso é quase uma definição
de processo. Contudo, freqüentemente há situações em que é desejável ter múltiplos Threads
de controle no mesmo espaço de endereçamento executando em quase-paralelo, como se eles
fossem processos separados (exceto para espaços de endereçamento compartilhados)
(TANANENBAUM, 2003).

       Uma thread, às vezes chamado de processo leve, é uma unidade básica de utilização de
CPU; compreende um ID de thread, um contador de programa, um conjunto de registradores e
uma pilha. Compartilha com outros Threads pertencentes ao mesmo processo sua seção de
código, seção de dados e outros recursos do sistema operacional, tais como arquivos abertos e
sinais. Um processo tradicional, ou pesado, tem um único fluxo de controle. Processos com
múltiplos Threads podem realizar mais de uma tarefa de cada vez (SILBERSCHATZ, 2000).

       O conhecimento e controle sobre os Threads em um cluster no momento de distribuir
as informações a serem processadas pelos nós ocasiona melhor desempenho e otimização do
sistema distribuído para os recursos do sistema.




    2.1.7. Sistemas Open Sources

       Uma das características de clusters Beowulfs é a utilização de sistemas Open Sources
e em função desta propriedade que será detalhada a seguir.

       Segundo Mazioli (2010), Linux é um Sistema Operacional criado em 1991 por Linus
Torvalds na universidade de Helsinki na Finlândia. É um sistema Operacional de código
aberto distribuído gratuitamente pela Internet.    Seu código fonte é liberado como Free
Software (software livre), sob licença GNU GPL (General Public License), o aviso de
copyright do Kernel feito por Linus descreve detalhadamente isto e mesmo ele não pode
fechar o sistema para que seja usado apenas comercialmente.

       As definições para a licença de softwares livres se definem em quatro liberdades
básicas que são elas:
27



      A liberdade de executar um programa seja qual for o propósito;

      A liberdade de modificar um programa para adaptá-lo às suas necessidades e, para que
       isso ocorra, você deve ter acesso ao código-fonte;
      A liberdade de redistribuir cópias, gratuitamente ou mediante uma taxa;
      A liberdade de distribuir versões modificadas do programa e, nesse caso, toda a
       comunidade poderá beneficiar-se dos aperfeiçoamentos.

       As definições anteriores são palavras de Richard Stallman (1985), o fundador do
movimento de softwares livre em 1985 que agregou mais tarde ao sistema Linux
desenvolvido por Linux Torvalds e foi combinado formando um sistema operacional
completo.

       Para a construção de um projeto com alto poder de processamento, manipulação de
dados, informações e gerenciamento de diferentes tipos de Hardwares, os sistemas Open
Sources possuem como principal característica da liberdade número dois, sendo este um fator
decisivo para sua escolha, sendo mais utilizado para clusters do tipo Beowulf. Mas não é
somente essa característica que o torna o favorito para este tipo de aplicação, de acordo com
Mazioli (2010) algumas das características do Linux são:

      Recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu
       desenvolvimento
      Multitarefa real
      Multiusuário
      Utiliza permissões de acesso a arquivos, diretórios e programas em execução na
       memória RAM.
      Proteção entre processos executados na memória RAM
      Suporte a mais de 63 terminais virtuais (consoles)
      Modularização - O Linux somente carrega para a memória o que é usado durante o
       processamento, liberando totalmente a memória assim que o programa/dispositivo é
       finalizado
      Suporte nativo a rede e tecnologias avançadas como: balanceamento de carga, ips,
       alias, failover, vlans, bridge.
28



      Suporte nativo a múltiplas CPUs, assim processadores como Dual Core, Core Duo,
       Athlon Duo, Quad Core tem seu poder de processamento integralmente aproveitado,
       tanto em 32 ou 64 bits.
      Rede TCP/IP mais rápida que no Windows e tem sua pilha constantemente melhorada.
       O GNU/Linux tem suporte nativo a redes TCP/IP e não depende de uma camada
       intermediária como o WinSock. Em acessos via modem a Internet, a velocidade de
       transmissão é 10% maior.
      Possui recursos para atender a mais de um endereço IP na mesma placa de rede, útil
       para situações de manutenção em servidores de redes ou para a emulação de
       "múltiplos computadores".
      Suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto os novos
       como obsoletos.
      Pode ser executado em 16 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.)
       e diversas outras sub-arquiteturas.

       Os sistemas operacionais do tipo Open Sources possuem características e qualidades
que fazem com que o aglomerado de computadores do tipo Beowulf tenha-o como sistema
favorito para suas implementações e desenvolvimentos. Torna-se básico um conhecimento
prévio das características e vantagens que esse tipo de sistema pode oferecer, como por
exemplo da necessidade deste conhecimento pode-se comparar uma analogia a este fato a
compra e utilização de um carro: quando um mecânico/piloto compra um carro ele preza não
somente o fato do carro andar, mas também a possibilidade de melhorar este com regulagens
especificas e próprias para o seu uso adaptando-o. Agora caso este mesmo carro fosse de
alguma forma impossibilitado de ser manipulado, provavelmente ele não terá um bom
desempenho para este dono, já que originalmente é feito de forma genérica para ser utilizado
por qualquer tipo de usuário sem seus devidos ajustes é de certa maneira um problema maior
ainda o fato de nem mesmo saber como este carro anda ou funciona. Portanto, sistemas
proprietários não podem ser alterados para a montagem de um cluster.
29



    2.2 Sistemas Distribuídos

         Um sistema distribuído é uma coleção de processadores que não compartilha memória
ou relógio. Em vez disso cada processador possui sua própria memória local. Os
processadores comunicam-se uns com os outros através de várias redes de comunicação, tais
como, os buses de alta velocidade ou linhas telefônicas.

         De acordo com Silberschatz (2010), um sistema distribuído é uma coleção de
processadores fracamente acoplados interconectados por uma rede de comunicação. Do ponto
de vista de um processador específico em um sistema distribuído, os outros processadores e
seus respectivos recursos são remotos, enquanto seus próprios recursos são locais.

         Os conceitos básicos para montagem de um cluster Beowulf são mostrados com a
soma de conhecimentos de duas áreas de tecnologia uma delas são os sistemas operacionais
que fora explicada na seção anterior e sistemas distribuídos que se relaciona com Beowulfs.
Pelo princípio de que um conjunto de operações são feitas e compartilhadas com outros
componentes do sistema, o papel fundamental de sistemas distribuídos para cluster é entender
sua arquitetura, estrutura e sua distribuição de cargas entre os componentes.




    2.2.1 Processamentos Paralelos

         Os problemas computacionais usualmente podem ter algumas de suas partes divididas
em pedaços que poderiam ser solucionados ao mesmo tempo ou processados em paralelo.
Define-se então processamento paralelo como uma forma pela qual a demanda computacional
é suprida através do uso simultâneo de recursos computacionais como processadores para
solução de um problema de forma mais rápida com algum tipo de coordenação (PINHEIROS,
2008).

         Os sistemas com múltiplos processadores também podem economizar dinheiro em
comparação com vários sistemas de um único processador, porque os processadores podem
compartilhar periféricos, armazenamento de massa e fontes de alimentação. Se vários
programas forem processar o mesmo conjunto de dados, fica mais barato armazenar esses
dados em um disco e fazer com que todos os processadores os compartilhem, em vez de ter
muitos computadores com discos locais e muitas cópias dos dados (SILBERSCHATZ, 2000).
30



        O processamento paralelo é uma técnica que divide as tarefas grandes em tarefas
menores, e estas são distribuídas em vários processadores para serem executadas
simultaneamente. Estes processadores comunicam-se entre si para que haja coordenação
(sincronização) na sua execução (REBONATTO, 2004). A Figura 1 apresenta o modelo de
paralelismo computacional.




                                             Tarefa 1                        Processador A




 Tarefas Grandes e
    complexas                                Tarefa 2                        Processador B




                                             Tarefa 3                        Processador C



Figura 1- Paralelização de Tarefas
Fonte: PITANGA, 2008.



        2.2.1.1 Tipos de processamentos paralelos

        A área de processadores paralelos foi, por muitos anos, uma área ativa de pesquisa.
Houve várias abordagens diferentes para criar computadores paralelos efetivos, e todos eles
(inclusive Clusters tipo Beowulf) tiveram níveis 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.

        Uma forma de classificação é referente aos tipos de processamento paralelo. De
acordo Pitanga (2008), os tipos podem ser: Multiprocessadores Simétricos (SMP),
Processadores Massivamente Paralelas (MPP) e CC-NUMA (Memória de Acesso não-
uniforme com Coerência de Cachê) e as características de cada um deles são:
31



      Processadores Paralelos Massivos (MPP): É um grande sistema de processamento
       paralelo com arquitetura de memória compartilhada (DSM) e centralizada. Conta com
       centenas e até milhares de elementos processadores (nós), que são interligados por
       uma conexão de rede com alta velocidade, os nós possuem memória própria e um ou
       mais processadores.

      Multiprocessadores Simétricos (SMP): Sistema de processamento simétrico que
       apresenta de dois até sessenta e quatro processadores, compartilhando a mesma
       memória, através de um barramento ou uma rede de comunicação dedicada. Como
       todos os processadores podem acessar a mesma memória, o tempo de acesso deve ser
       muito baixo, porém quanto maior o sistema mais cresce o tempo de acesso.

       Memória de Acesso não-uniforme com Coerência de Cachê (CC-NUMA): CC-
       NUMA é um sistema de multiprocessadores escaláveis que possuem uma arquitetura
       de coerência de cachê com acesso não uniforme. Igual a uma máquina SMP, cada
       processador é um sistema CC-NUMA com uma visão globalizada da memória. Nessa
       arquitetura a memória é dividida e cada processador tem seu bloco de memória, cada
       bloco de memória é conectado via barramento a um processador como memória local.
       Segundo Dantas (2005) Destaca-se algumas aplicações para esta arquitetura como
       serviços de Web, banco de dados, processamento de sinal, CRM e ERP.


    2.2.2 Tipos de Cluster

    Quando se utilizam dois ou mais computadores em conjunto para resolver um problema,
você tem um cluster, que do inglês significa agrupamento (PITANGA, 2008).

    Em muitas palavras simples, um cluster de servidores nada mais é que um conjunto de
máquina conectado por uma rede, no qual cada máquina executa um ou mais servidores. Na
maioria dos casos o cluster é organizado logicamente em três camadas como mostra a Figura
2. A primeira camada consiste em um comutador (lógico) por meio do qual são rateadas as
requisições do cliente. Esse comutador pode variar muito de acordo com o tipo de cluster
(TANENBAUM, 2007). A segunda camada corresponde aos servidores de aplicação que são
responsáveis pelo processamento das requisições e a terceira camada consiste em servidores
de arquivos e bancos de dados. Neste modelo, temos uma explicação genérica para a maioria
dos clusters.
32




                          Comutador logico       Serviço de aplicaçao        Sistema distribuido de
                                                                           arquivos/ banco de dados

                                Requisição
                                despachada

 requisição de cliente




                         Primeira Camada      Segunda Camada               Segunda Camada

Figura 2 - Organização geral de um cluster de servidores de três camadas
Fonte: TANEMBAUM, 2007.



           O termo “clustering” referencia atualmente a um número de diferentes tecnologias e
configurações. Podemos dividir os clusters em duas categorias básicas: alta disponibilidade
(HA – High Avaibility) e alto desempenho de computação (HPC – High Performance
Computing). Os clusters HA têm a finalidade de manter um determinado serviço de forma
segura o maior tempo possível. Os clusters HPC são uma configuração designada a prover
grande poder computacional do que somente um único computador poderia lhe oferecer em
capacidade de processamento (PITANGA, 2008).

           De uma forma geral, a computação baseada em clusters já ocasionou o
desenvolvimento de dezenas de ambientes de programação e gerenciamento. O teste de várias
tecnologias para interconexão de nós, o desenvolvimento e até mesmo, reimplementações de
bibliotecas e aplicações já desenvolvidas, a produção de inúmeros artigos e o estabelecimento
de grupos de trabalhos ao redor do mundo. O ponto desfavorável é que todo o conhecimento
produzido está espalhado por várias fontes e cresce rapidamente, o que dificulta, às vezes, um
entendimento mais amplo ou atualizado desse assunto (PITANGA, 2008).

             O “Cluster da NASA” era “formado por 16 PCs 486 DX-100 ligados em rede. Para
manter a independência do sistema e baixar os custos, os desenvolvedores optaram por
utilizar o Linux”. (MORIMOTO, 2011).
33



        Os tipos de clusters são divididos em duas categorias: alta disponibilidade e de alto
desempenho. O tipo de cluster utilizado neste trabalho foi do de alto desempenho denominado
cluster Beowulf.

  2.2.2.1 - Cluster de alta disponibilidade

       Clusters de alta disponibilidade ou (HA – High Avaibility) fazem parte do tipo mais
comum de cluster, pois são utilizados como servidores de tarefas criticas que não podem
deixar de funcionar em momento algum. Um bom exemplo desse tipo de cluster são alguns
sistemas web que para suportar determinado fluxo de informações mantém dois ou mais
servidores em forma de Load Balancing ou balanceamento de cargas para que caso um fique
com muitas tarefas o fluxo e direcionado para o outro que assume fazendo com que o sistema
fique sempre disponível.

       O cenário típico de Clusters HA possui duas ou mais máquinas cujos serviços estão
espelhados. Dois arranjos normalmente são utilizados. O primeiro deles é o caso de um
servidor ficar sempre na espera que o outro fique fora de funcionamento e quando isso ocorre,
entra no lugar e passa a realizar a função do servidor que está fora. Isso é mostrado na Figura
3, mas para que tudo ocorra perfeitamente os dois compartilham um disco em comum.

       No segundo tipo, os dois servidores ou mais ficam em funcionamento distribuindo a
carga sobre eles, conforme mostrado na Figura 4. Em algumas situações, pode haver a
combinação desses dois arranjos de forma que a disponibilidade dos serviços tenha a maior
disponibilidade possível.

       Este tipo de sistema é bem conhecido, pois ele faz com que serviços de vitais
importâncias para as empresas fiquem sempre funcionando. Exemplos comerciais onde esse
tipo de cluster é vital são os sites de comércio eletrônicos. Segundo Pitanga (2008), de uma
maneira geral um servidor de boa qualidade apresenta uma disponibilidade de 99,5%,
enquanto uma solução baseada em clusters de computadores apresenta uma disponibilidade
de 99,99%.
34




                                                      Requisição dos
                                                         Clientes


                                              Rede Pública


       Disco Local                                                                     Disco Local


                                         Cabo Crossover

      Servidor 1      Servidor 1:                                      Servidor 2:
                      192.168.1.8                                      192.168.1.9    Servidor 2 em
      ativo como
                                                                                     espera por falha
       primario
                                                                                       ou Standby


       Resposta do cluster                          Storage
       Endereço IP:                              compartilhado
       192.168.1.10                                do Cluster

Figura 3 - modelo de sistema de alta disponibilidade
Fonte: JAYASWAL, 2006.
                     Clientes                 Clientes                 Clientes




                                        Internet



                                      VIP ( IP virtual)




                                        Balanceador




                                          Servidores Reais
Figura 4 - Cluster de balanceamento de Carga.
35



           2.2.2.2 – Clusters de Alto Desempenho

       O funcionamento básico de um cluster de alto desempenho pode ser exemplificado da
seguinte forma: dado um problema, que possa ser divido em partes menores (“ser
paralelizado”), um servidor fica responsável por dividir o problema em várias partes e enviar
para os respectivos nós. Esses, por sua vez, acham a solução e respondem ao servidor, que
junta às respostas e disponibiliza para o usuário. (GORINO, 2006).

       Um cluster de computadores pode ser visto como uma solução alternativa para
universidades e empresas de pequeno a médio porte, para obterem processamento de alto
desempenho na resolução de problemas através de aplicações paralelizáveis, a um custo
razoavelmente baixo se comparado com os altos valores necessários para a aquisição de um
supercomputador da mesma classe de processamento (PITANGA, 2008).

       De acordo com Pitanga (2008), as características principais dos clusters são: alto
desempenho, escalabilidade, tolerância a falhas, baixo custo e independência de fornecedores,
a saber:
            Alto Desempenho: capacidade de resolver problemas complexos utilizando o
             poder computacional gerado pelo processamento paralelo, de forma que o tempo
             de resolução de uma atividade seja reduzido a valores consideráveis;
            Escalabilidade: característica que permite a possibilidade de expansão do cluster
             a medida que for necessário o crescimento do poder computacional, o cluster pode
             ser facilmente adicionado com recursos;
            Tolerância a falhas: quanto maior o sistema, maior será sua confiabilidade com
             um todo. Caso uma parte falhe, outro executará sua tarefa;
            Baixo custo: devido a sua implementação ser feita com PC’s simples, o custo é
             relativamente menor se comparado com o custo de computadores de grande porte;

            Independência de fornecedores: utilização de Hardware aberto, software de uso
             livre e independência de fabricantes e licenças de uso.

       Entre os principais objetivos dos projetos de clusters de alto desempenho, em geral,
está a busca pelo aperfeiçoamento do processamento e a melhoria na distribuição de tarefas
entre os nós integrantes do sistema. Para os clusters de alto desempenho, outra necessidade é
que o sistema deve parecer para o usuário final como um único computador ou a soma dos
36



recursos individuais de todos os nós pertencentes ao cluster. Um exemplo de cluster de alto
desempenho é o cluster Beowulf mostrados a seguir. O cluster do tipo Beowulf surge na
história como uma necessidade de elevar o processamento em diversas áreas científicas com o
objetivo de compor os sistemas computacionais de alto desempenho e com viabilidade
econômica.

          2.2.2.2.1 – Arquitetura de um cluster Beowulf


          O cluster HPC é um tipo de sistema para processamento paralelo ou distribuído que
consiste de uma coleção de computadores interconectados, trabalhando juntos como um
recurso de computação simples e integrado. Um nó do cluster pode ser um simples sistema:
multiprocessador (PCs4, estações de trabalho ou SMPs) com memória, dispositivos de
entrada/saída de dados e um sistema operacional. No entanto, esse sistema pode fornecer
características e benefícios (serviços rápidos e confiáveis), encontrados somente em sistemas
com       memória       compartilhada     (multiprocessadores       simétricos          -   SMP),   como   os
supercomputadores. A arquitetura típica de um cluster é mostrada na Figura 5 (PITANGA,
2008).

                                                                   Aplicações Paralelas


           Aplicações Sequenciais                          Ferramentas de programação Paralela


             Cluster Middleware – Sistema de Imagen Simples (SSI – System Single Image)

                         PC                         PC                       PC



                     Interface de               Interface de             Interface de
                         Rede                       Rede                     Rede




                                Rede / Comutador de alta velocidade

                   Figura 5 - Arquitetura de um cluster de PCs

          A arquitetura apresentada mostra de certa maneira um formato genérico de clusters de
computadores. O tipo Beowulf apresenta particularidades especificas da sua implementação

4
    PC’s: abreviatura de Personal Computers ou computadores pessoais no português
37



entre elas pode-se verificar o esquema na Figura 6 que pode-se destacar os seguintes
componentes:

            Nó Controlador (Servidor Mestre): controla a administração e distribuição das
             tarefas entre seus clientes também chamados de escravos. Este membro é
             responsável pela interface de conexão com o lado externo do sistema de acesso de
             clientes e usuários finais do software. Portanto, ele está em um ponto critico, pois
             controla tanto a segurança do sistema, quanto as suas ligações de front-end.
             Comumente é utilizado somente um servidor do tipo mestre. Em clusters de
             grandes proporções, pode-se utilizar mais de um.

            Nós Escravos: definido como a parte do sistema que não pode ser acessado pela
             rede externa. Normalmente, não possui nem mesmo dispositivos de acesso local a
             eles, são controlados pelo nó controlador e ficam a disposição do mestre para
             executar tarefas de processamento que lhe são enviadas pela rede.

            Rede dedicada: esta parte é a rede de alta velocidade que interliga o nó
             controlador aos nos escravos.

           Usuário
                                                                       Nós Escravos Estrutura de
                                                                              Back-End’s




   LAN Pública            interface de rede esclusiva




                                                Nó Controlador




                                                                     Nós Escravos Estrutura de
                                                                            Back-End’s
Figura 6 - Diagrama Básico de um cluster Beowulf
38



     2.2.2.2.2 – Vantagens e desvantagens de um cluster Beowulf

        Considerando-se que o desempenho de um cluster Beowulf pode ser a mesma de (ou
maior que) um supercomputador, sem dúvida a maior vantagem é o preço (RUIZ, 2011).
        Depois cita-se a manutenção barata e também o alto nível de experiência que já foi
atingido por cientistas que trabalham nesta área e estão dispostos a compartilhar este
conhecimento com outras pessoas (RUIZ, 2011).
        Quanto às vantagens de um cluster podemos segundo Marcus (2006), citar:

               Estes sistemas são muito escaláveis, pois é possível pôr em rede (e coordenar)
                um grande número de nós. Assim, não existe um limite definido para o
                tamanho de um cluster.

               Os componentes utilizados são maciçamente comercializados e que desta
                forma pode-se usufrui economias de escala.
               Substituir um nó defeituoso é tão simples quanto mudar de PC. Assim, é
                possível ter uma gestão de falhas eficiente, baseada na fácil substituição de
                componentes.
               Existe uma independência em relação ao fornecedor de hardware. Como o
                material que o constitui é muito comum, se faltar uma peça pode-se encontrá-la
                com facilidade. Existem também mais especialistas em PCs do que de
                Hardware proprietário.
               O software é gratuito e inclui o código fonte. Por essa razão é mais flexível
                permitindo alterações tanto ao nível do sistema operacional, como das
                aplicações utilizadas. Disponibilizar o código fonte torna o sistema mais
                robusto e de confiança, pois significa que quem estiver interessado pode fazer
                debugging5, detectar erros e gerar correções.

               Cada nó do cluster pode ser um sistema completo, útil para uma grande
                variedade de aplicações. Assim, o risco de um projeto de cluster não resultar
                em nada é sempre reduzido pelo fato de todo o hardware poder ser reutilizável.
                Da mesma forma, toda a configuração pode ser utilizada (e testada) para outros
                fins.

5
 Debugging: também conhecido por Debug e o processo de encontrar e reduzir defeitos em software’s ou
hardware’s.
39



       Entretanto, há algumas desvantagens no uso de clusters Beowulfs:
              Com algumas exceções, o Hardware de rede não foi criado para funcionar em
               Processamento Paralelo. Tipicamente tem uma grande latência 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á
               informação sobre processos sendo executados em um único nó do cluster.
              É necessário ter experiência e conhecimento de administração de sistemas
               Linux. A configuração dos nós pode não ser muito trivial.

       Porém, apesar de algumas desvantagens, clusters são surpreendentemente poderosos.
Há uma inscrição semestral reunida pela Universidade de Manhiem na Alemanha que
descreve os 500 supercomputadores mais poderosos no mundo (TOP 500, 2011).

       Até 1997, quase todos os sistemas listados eram supercomputadores comerciais de
fabricantes famosos como Cray, Silicon Graphics e IBM. Porém em 1998, começaram a
aparecer nesta lista Clusters paralelos baseados em Linux. Dois sistemas se localizam perto
do topo da lista: o número 97, chamado “CPlant” desenvolvido por Sandia National Labs, e o
número 113, chamado “Avalon” desenvolvido por Los Alamos Labs. O Avalon é um cluster
de 140 máquinas Alpha 533 MHz, localizado no Laboratório Nacional de Los Alamos, nos
Estados Unidos, e custou uma fração do preço de seus concorrentes próximos no ranking,
mesmo usando máquinas de alta qualidade, é um exemplo do poder que clusters podem ter
(MARCUS, 2006).



     2.2.2.2.3 – Tipo de Rede utilizada em um cluster Beowulf

       Um cluster é um tipo de sistema de processamento paralelo, que consiste num
conjunto de computadores (nós), interligados entre si, funcionando de uma forma integrada
como se fosse um único sistema de computação. Um nó de um cluster pode ser um sistema
monoprocessador ou multiprocessador, PC, Workstation ou SMP, com memória, facilidades
de I/O e sistema operacional. Os clusters Beowulf em particular são pilhas de PCs, consistindo
no mínimo em dois ou mais nós (PCs) interligados através de uma rede local privada.
Tipicamente utilizam-se dois segmentos Ethernet para interligar os nós (MARCUS, 2006).
40



    2.2.2.2.4 – Hardware utilizado em um cluster Beowulf

       Pitanga (2008) lista uma série importante de características a serem levadas em
consideração na hora da montagem do projeto de cluster: tipo de processador; tamanho e
velocidade da memória cache (L1/L2/L3); número de processadores por nó; capacidade,
velocidade e tecnologia da memória RAM; velocidade do barramento; chipset da placa mãe e
placas de rede.

       Para Dantas (2005) quando à interconexão é formado por multiprocessadores e
multicomputadores específicos, o projetista poderá avaliar o sistema de interconexão somente
com a comparação do material fornecido pelo fabricante.

       Braga (2003) orienta que a escolha dos componentes de “Hardware” e “software” para
a construção de clusters do tipo Beowulf devem ser criteriosa e vem se mostrando bastante
viável a computação de alto desempenho para instituições com fortes restrições financeiras.
Em um projeto de cluster, o ideal é produzir uma análise dos aplicativos que irão compor o
ambiente e o respectivo custo-benefício do ambiente projetado. (DANTAS, 2005).


    2.2.2.2.5 – Sistema Operacional utilizado em um cluster Beowulf

       Segundo Ferreira (2001), um sistema operacional executa várias tarefas como
gerenciamento de periféricos de entrada / saída, memória e controle de arquivos e diretórios
no disco. Vários sistemas operacionais podem ser usados no projeto de cluster Beowulf e o
GNU/Linux (incluindo suas variadas distribuições) é o mais utilizado para este fim, devido a
sua confiabilidade, robustez e por ser software livre com código fonte aberto, permitindo
várias otimizações e custo reduzido.

       De acordo com o principal projeto de classificação de supercomputadores o Top 500
organizado por Hans Meuer da University of Mannheim, Alemanha, Jack Dongarra da
University of Tennessee, Erich Strohmaier e Horst Simon do NERSC / Lawrence Berkeley
National Laboratory. o principal sistema operacional utilizado em Supercomputadores é o
sistema operacional Linux como pode ser verificado na Tabela 1. A Figura 7 mostra a Tabela
1 com seu gráfico correspondente.
41



               Sistema Operacional
                                                Contagem        Participação em %

               Linux                                 413             82.60 %
               Super-UX                               1              0.20 %
               AIX                                   20              4.00 %
               Cell OS                                1              0.20 %
               SuSE Linux Enterprise
               Server 9                                3                0.60 %
               CNK/SLES 9                             14                2.80 %
               SUSE Linux                              2                0.40 %
               Redhat Linux                            4                0.80 %
               RedHat Enterprise 4                     1                0.20 %
               SUSE Linux Enterprise
               Server 10                               2                0.40 %
               SLES10 + SGI ProPack 5                 14                2.80 %
               UNICOS/lc                               1                0.20 %
               CNL                                    10                2.00 %
               Windows HPC 2008                        6                1.20 %
               RedHat Enterprise 5                     1                0.20 %
               CentOS                                  6                1.20 %
               Open Solaris                            1                0.20 %

               Totals                                500                100%
                        Tabela 1 – S. O. % utilizado em Supercomputadores
                                     Fonte: Top 500, 2011.




                                                                  Linux
                                                                  Super-UX
                                                                  AIX
                                                                  Cell OS
                                                                  SuSE Linux Enterprise Server 9
                                                                  CNK/SLES 9
                                                                  SUSE Linux
                                                                  Redhat Linux
                                                                  RedHat Enterprise 4
                                                                  SUSE Linux Enterprise Server 10
                                                                  SLES10 + SGI ProPack 5


Figura 7 - Gráfico Sistemas Operacionais em Supercomputadores
Fonte: Top 500, 2011.
42



       Segundo Rubem e Ferreira (2003) as vantagens principais do Linux são:

      Estabilidade: O sistema operacional Linux, embora exista uma variação entre a
       maioria das distribuições, apresenta uma estabilidade muito satisfatória;

      Recursos do UNIX: O Linux compartilha as mesmas vantagens da maioria das versões
       do UNIX;

      Gerenciamento: Assim como o UNIX, o Linux possui um poderoso gerenciamento e
       interface de linhas de comandos.

      Fonte Aberta: Além de adquirir o sistema operacional gratuitamente, tem-se também o
       código fonte. O que permite mudar inclusive o Kernel de acordo com os requisitos de
       segurança.

       Ainda de acordo com Rubem e Ferreira (2003) o Linux possui também algumas
desvantagens, de onde pode se destacar:

      Pessoal Habilitado: ainda existe uma carência com relação à pessoal habilitado para o
       mercado de trabalho;

      Variação entre distribuições: apesar de obedecer a uma padronização, existem muitas
       variações entre as diversas distribuições disponíveis.

   Mediante todas confirmações de diversos especialistas na área inclusive o projeto Top 500
que possui significativa participação em medidas de desempenho e auxilia a projetos de
supercomputadores, confirma a escolha pelo sistema operacional Linux para a implementação
de projetos do tipo Beowulf como melhor alternativa principalmente pelas suas características
e o seu valor para implementações de baixo custo.




    2.2.2.2.6 – Aplicações de um cluster Beowulf

       O desenvolvimento da eletrônica que impulsionou a construção dos semicondutores e
por conseqüência o acesso a equipamentos eletrônicos somado ao uso da Internet tiveram um
grande efeito no público em geral. Computadores de alto-desempenho e sistemas de clusters
43



Beowulf podem ter o mesmo efeito, em particular a pessoas que fazem ferramentas de
informação e ambientes de simulação.

       A área de aplicação dos clusters é muito diversificada. São geralmente as aplicações
seqüenciais muito grandes, que necessitam de enorme quantidade de memória e tempo de
enorme de processamento. Tradicionalmente, o desenvolvimento de computadores tem sido
motivado por simulações numéricas de sistemas complexos como analise meteorológica,
simulação de dispositivos mecânicos, circuitos eletrônicos, reações químicas, seqüenciamento
de DNA e aplicações que podem manipular grandes quantidades de dados para extrair alguma
espécie de informação ou conhecimento (MARCUS, 2006).

       Alguns exemplos de áreas onde os clusters podem ser implementados e serão muito
úteis são: servidores de Internet, banco de dados, computação gráfica, aerodinâmica, análise
de elementos finitos, inteligência artificial e automação, engenharia genética, exploração
sísmica, oceanografia e astrofísica, previsão do tempo, pesquisas militares, problemas e
pesquisa básica (física, química, engenharia e matemática), segurança de reatores nucleares.
(PITANGA, 2008).
44



Capítulo 3 – Desenvolvimento de Cluster De Alto Desempenho


         O projeto desenvolvido neste trabalho tem como finalidade fazer a montagem de um
cluster paralelo com custo de viabilidade baixo aproveitando micro-computadores antigos e
conseguindo uma alta performance de processamento. Lembra-se também que neste momento
será demostrado os passos de montagem e configuração do cluster Beowolf.

         O desenvolvimento do projeto foi feito em duas partes: no primeiro momento a
montagem dos locais físicos para alocar os computadores, montagem e testes com os
componentes adquirido logo em seguida a instalação e configuração do sistema operacional
básico no caso do projeto foi utilizado a distribuição Linux Centos 6 por já ser bastante
utilizada no meio acadêmico e comercial com suas características sempre mencionadas de
estabilidade e robustez para trabalhos de servidores.

         As etapas de configuração do sistema Beowolf foram divididas de acordo com o
modelo proposto por PITANGA (2008):

               Configurar endereços lógicos (IP) para o controlador mestre e os nos
                computacionais;

               Projetar um ambiente de resolução de nomes, podendo utilizar arquivos host
                ou DNS.

               Criar um relacionamento de confiança entre as máquinas

               Permitir o uso de comandos remotos para colocar as aplicações em execução
                nos nodos;

               Distribuir o sistema de arquivos do controlador mestre para os nos escravos
                via Network File System (NFS)

               Instalar uma aplicação de gerenciamento

               Instalar bibliotecas de passagem de mensagens: PVM e MPI

               Instalar sistemas de gerenciamento de recursos para aproveitar nos ociosos no
                cluster.
45



        3.1 Visão Geral do Projeto do Cluster

           O intuito principal da construção do projeto foi a configuração e o estudo teórico para
manipular um cluster do tipo Beowulfs e conseguir realizar sua aplicação com um baixo
custo de implantação, e com isso o projeto foi desenvolvido e montado através de um
computador comum de uso pessoal com desempenho razoavelmente bom para os padrões
atuais de computação e com mais dois micros que foram descartados, por serem antigos e
lentos para os dias atuais. Desta forma, o projeto visa unir poder de processamento e
conseguir um desempenho de supercomputador a doação do que seria descartado como lixo,
foi aproveitada nesse projeto.

             A Figura 8 ilustra o tipo de rede utilizada para a construção do cluster do projeto e
suas configurações mais simples como o acesso remoto ao computador mestre e as classes de
endereçamento IP’s 6utilizadas.




                          Acesso
                        remoto ao
                        nó mestre




    Roteador Wireless                Interface de
                                      rede Wlan
                                    192.168.0.0/24



                                                       Interface de                           Nós Escravos com
                                                        rede eth0                              rede separada
                                                                                               192.168.1.0/24
                                      Nó mestre
                                    Mestre.tcc.local
                                     192.168.1.1



Figura 8 - Dois segmentos de redes




6
 IP’S: Internet Protocol ou no português protocolo de internet e o mais utilizado protocolo para envio de pacotes
via rede de comunicação.
46



    3.3 Protótipos do Sistema

       Para explicar melhor o funcionamento do sistema foi dividido em: acessar o no mestre,
requisitar uma tarefa e resultados conseguidos. Que será mais bem detalhado nos tópicos 3.3.1
ao 3.3.3.


            3.3.1 Acesso ao Nó mestre

       O acesso ao servidor mestre para realizar as configurações tanto iniciais quanto as
programações para realizar tarefas são feita remotamente por uma rede wireless e alguns
pontos interessantes a serem destacados é que o acesso ao sistema é feito utilizando o
protocolo SSH com o pacote OpenSSH. O acesso entre o mestre e seus nos escravos é feito
por acesso remoto com relação de confiança através do RSH, Rlogin e Rexec com algumas
configurações especificas podem ser visualizadas nos Quadros 1,2 que mostram os arquivos
de configuração que estão localizados em: /etc/securetty, /etc/hosts.equiv. O arquivo que
monta o sistema de arquivos remoto no servidor mestre e compartilha o sistema de arquivos
distribuídos com os nos escravos através do protocolo NFS Network File System a
configuração foi feita no arquivo localizado em /etc/exports acrescentando algumas
configurações para que o sistema permita a montagem do sistema de arquivos durante a
inicialização do sistema operacional o arquivo e visualizado no Quadro 3.

hosts.equiv
mestre
escravo1
escravo2
                        Quadro 1- Código utilizado no Arquivo hosts.equiv.

console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
47



tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
rsh
rlogin
                         Quadro 2 - Código utilizado no Arquivo securetty.

/home           *(rw,no_root_squash)
/usr/local      *(rw,no_root_squash)
                          Quadro 3 - Código utilizado no Arquivo exports.

         O ntsysv é um utilitário de configuração de quais pacotes serão inicializados com o
sistema durante o boot, tanto para o mestre quanto para os nós escravos é importante que
alguns pacotes sejam inicializados por padrão devem estar marcados no ntsysv: rsh, sshd,
rlogin e rexec as opções marcadas já anteriormente não devem ser alteradas já que para a
utilização do sistema neste projeto foi utilizado uma versão mínima da distribuição Centos
que traz instalada por padrão o mínimo possível para que o sistema funcione e, portanto, não
possui acessórios extras que muitas vezes nem mesmo são utilizados deixando o sistema
enxuto e com recursos sempre a disposição do cluster para uma máxima performance.
         Para o gerenciamento do sistema o computador remoto que acessa o mestre utiliza
sistema Windows e com isso, as ferramentas utilizadas para acessar o sistema foram o Putty e
o WinSCP para manipular arquivos e comandos no nó mestre a interface do Putty e
visualizada na Figura 9 e a interface do WinSCP na Figura 10.
48




Figura 9 - Interface do Putty




Figura 10 - Ambiente de manipulação do WinSCP
49



          3.3.2 Requisitando uma tarefa

        Com todo sistema montado os primeiros testes foram executados, com tarefas simples,
a primeira delas foi o cálculo do número matemático PI com várias casas decimais, e
distribuindo a tarefa pelos nós do cluster esta tela é verificada na Figura 11 que mostra os
tempos de respostas dos dois nós integrantes do cluster executando a requisição remota e
trocando mensagens entre eles para o cálculo o código fonte utilizado para realizar a
simulação abaixo está no anexo.




Figura 11- Teste inicial do sistema
50



        Para confirmar o desempenho proporcionado pelo cluster Beowolf em segundo
momento pós testes iniciais foi utilizado o exemplo skyvase.pov que inclusive funciona como
benchmark 7para vários clusters e possui uma lista de adeptos e inscritos no seu site que pode
ser acessado em : http://www.haveland.com/index.htm?povbench/index.php . O arquivo
skyvase.pov esta no capítulo em anexo para possíveis referências é a imagem gerada pode ser
visualizada na Figura 12.

        A requisição de uma renderização utilizado o POVRay em conjunto com a biblioteca
MPICH que foi utilizada no projeto foi feita utilizando o seguinte comando:


        # povray -i skyvase.pov +v1 -d +ft -x +a0.300 +r3 -q9 -w1024 -h768




Figura 12 - imagem renderizada com POVRay




7
 Benchmark: processo sistemático e contínuo de avaliação que são reconhecidas como representantes das
melhores práticas com a finalidade de comparar desempenhos.
51



            3.3.3 Resposta do Sistema


       Para verificar o teste de desempenho do sistema utilizando a imagem skyvase.pov foi
feito a renderização desta imagem com 2 configurações distintas no primeiro momento
usando 2 nós do cluster e em segundo momento somente com o poder de processamento do
mestre no primeiro teste a imagem foi renderizada com o tamanho de 1024 x 768 e no
segundo teste em alta resolução 640 x 480 a Tabela 5 mostra a o tempo de resposta do
sistema usando estes parâmetros.


Tamanho da imagem                           640 x 480                1024 x 768
Somente no mestre                               00:04:15              00:10:05
Mestre + escravo 1                              00:03:10              00:06:08
Tabela 2 - Tempo de resposta para Skyvase.pov
        O tempo de resposta da renderização de imagens é diretamente afetado de acordo com
a quantidade de computadores que manipulam a as imagens é comprova de acordo com a
tabela 5 justamente a idéia que o cluster que possui maior quantidade de nós consegue um
desempenho maior, mesmo que tenham diferentes Hardwares envolvidos no sistema.
       Para poder comprovar o funcionamento e o desempenho do cluster foi utilizado em
segundo momento uma imagem um pouco mais pesada que a anterior com um maior grau de
detalhes, para que o desempenho de processamento fosse realmente tirado a prova, neste
segundo teste foi utilizada a imagem gerada pelo arquivo Benchmark.pov mostrada na Figura
13.

Tamanho da imagem                          1024 x 768                 640 x 480
Somente no mestre                               00:42:35              00:20:05
Mestre + escravo 1                              00:30:18              00:17:10
Tabela 3 - Tempo de resposta para Benchmark.pov


       Comparando a Tabela 3 de resposta com a Tabela 2 é verificado que o segundo
arquivo possui um grau de detalhes muito maior que o anterior necessitado assim de muito
mais poder de processamento, mas mesmo assim é possível verificar o funcionamento do
cluster que com um no escravo a mais para complementar seu poder de processamento da
demonstra uma melhoria de quase 30% em relação a somente o micro mestre fazendo seu
trabalho.
52




Figura 13 - imagem renderizada com POVRay

       Uma questão interessante que vale a pena ser lembrada que inclusive é citada por
Pitanga (2008), e a diferença entre clusters homogêneos e heterogêneos, no desenvolvimento
do projeto foi utilizado um sistema heterogêneo que de certa maneira tem várias diferenças
entre os Hardwares utilizados, mas mesmo assim cumpriram bem o seu papel fazendo o
trabalho distribuído as tarefas normalmente entre os nós, mas poderia oferecer um
processamento melhor caso fosse homogêneo, pois iria processar no mesmo tempo cada parte
de informação que lhe foi enviada, mas por maior que seja o esforço para manter o cluster
sempre homogêneo em um determinado momento ele se tornara heterogêneo, devido a rápida
mudança de tecnologia no mercado e quando for necessário mudar ou modificar qualquer
componente ele será diretamente afetado.
53



    3.4 Ferramentas e Tecnologias

         Para o desenvolvimento do trabalho foram utilizadas algumas ferramentas de
controle e monitoramento, entre elas pode-se mencionar o uso de editores de arquivos como
VIM, o conhecido protocolo de comunicação com servidores Linux e acesso remoto
OpenSSH, administrador de servidores via Web com o Webmin e ferramentas de
monitoramento de conexão e testes como o Nmap, o POVRay e o Nagios.



         3.4.1 Scripts

       Os scripts de configuração que são arquivos executáveis em sistemas Linux, eles
podem desde modificar uma simples configuração ate mesmo instalar editar arquivos e
realizar toda uma configuração ou automatização de uma tarefa. No projeto foi utilizada uma
linguagem comum conhecida para os administradores de redes. Os scripts têm o formato
básico padrão em Shell e utilizando o interpretador Bash comum e normalmente básico em
todas distribuições Linux atuais.

       Scripts para instalação das principais dependências tanto no micro mestre quanto nos
escravos. O Quadro 4 mostra este detalhe.


#/bin/bash!

yum –y update;

yum install - y htop unrar zip rar locate perl-Net-SSLeay perl-Net-Rexec rsh-server ntsysv
nmap nfs* ;

cd /usr/src;

wget http://prdownloads.sourceforge.net/webadmin/webmin-1.570-1.noarch.rpm ;

rpm –uvh webmin-1.570-1.noarch.rpm ;

                         Quadro 4 - Script Shell resolvendo Dependências.


       O arquivo do Quadro 4 foi salvo e teve permissão de execução utilizando o comando
chmod +x e depois deve ser executado com ./nome_do_arquivo.sh
54



        O Quadro 5 mostra o arquivo de hosts de cada nó componente do cluster ele foi
configurado desta maneira para que cada computador do cluster consiga identificar tanto por
nome quanto por IP o computador presente no sistema, também poderia ser utilizado um
servidor DNS – Domain Name Server mais por questões de preferência foi utilizado a
configuração do arquivo hosts que por padrão fica localizado em /etc/ .

127.0.0.1     mestre.tcc.local      mestre localhost.localdomain localhost
::1    mestre.tcc.local      mestre localhost6.localdomain6      localhost6
192.168.1.1 mestre           mestre.tcc.local
192.168.1.2 escravo1         escravo1.tcc.local
192.168.1.3 escravo2         escravo2.tcc.local

Quadro 5 - Arquivo hosts de todos os micros do cluster.

        O Arquivo .hosts de todos micros localizado em: /home e /root mostrado no Quadro
6, este arquivo e necessário para que cada computador tenha confiança de acesso remoto sem
senha pelo pacote rsh.

.rhosts
mestre
escravo1
escravo2
Quadro 6 - Arquivo .hosts



           3.4.2 Automatização da Construção do Cluster

           Para automatizar algumas mudanças de configuração tornando-as mais ágeis para
serem executadas foi utilizado tanto nó mestre como nos nós escravos a ferramenta de
administração por Web browser, o Webmin, que facilitou a configuração do sistema de horas
e várias outras tarefas. Na Figura 14 pode-se visualizar a tela inicial do micro mestre e na
Figura 15 a tela de exemplo do mesmo sistema para manipulação dos escravos na rede.
55




Figura 14 - Webmin no servidor Mestre




Figura 15 - Webmin no servidor escravo1
56



            3.4.3 Programação Paralela

          Até pouco tempo atrás, o paralelismo era visto como uma área da computação, sem
qualquer interesse para os programadores experientes. O estudo das tendências nas aplicações,
tanto ao nível das arquiteturas de computadores como das redes de interligação, tem revelado
que esta perspectiva deixou de ter qualquer realidade. Com efeito, o paralelismo tem vindo a
se tornar o tema central na programação. Nas últimas décadas, a ciência da computação tem
se dedicado aos sistemas de computação paralela e distribuída (PITANGA, 2008).

          Paralelismo de software é a habilidade de acelerar a execução de um programa
dividindo o mesmo em fragmentos múltiplos 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 (MARCUS, 2006).

          Para desenvolver o projeto foi utilizada a biblioteca MPI8, uma biblioteca com funções
de troca de mensagens e sincronização das atividades desenvolvidas pelo cluster seu
funcionamento permite que os processos de um programa que foi escrito em uma linguagem
seqüencial como C ou Fortran possa ser executado no projeto de forma paralelo desde que
tenha sido programado desta maneira a Figura 17 mostra a estrutura de funcionamento da
biblioteca MPI.

          Há também, além da biblioteca MPI que foi utilizada, várias outras bibliotecas para
desenvolvimento paralelo: uma delas é a PVM – Maquina Virtual Paralela que foi
desenvolvida em 1989 pela University of Tennessee. O PVM foi um dos primeiros sistemas
de software a possibilitar que programadores utilizem uma rede de sistemas heterogêneos
(máquinas com sistemas operacionais diversos) para desenvolver aplicações paralelas sob o
conceito de passagem de mensagens (PITANGA, 2008).

          O objetivo da programação paralela é transformar grandes algoritmos complexos em
pequenas tarefas que possam ser executadas simultaneamente por vários processadores,
reduzindo, assim, o tempo de processamento. A Figura 16 mostra o processo de paralelização
de uma aplicação de maneira genérica.

8
    MPI: Message Passing Interface é um padrão para comunicação de dados em computação paralela.
57




          Problema original
                                    Decomposição em tarefas



   Unidades de execução agrupados
                                                                            Tarefas, dados locais e compatilhados




                                                       Código com o ambiente de
                                                         programação paralela




   Unidades de execução + novos dados                                              Codigo fonte conrrespondente
   compartilhados para as dependências
                extraídas
Figura 16 - Processo de paralelização de uma aplicação
Fonte: PITANGA, 2008




Figura 17 - Estrutura MPI
Fonte: VIANA, 2010
58



         3.4.4 Ferramentas de Monitoramento do Cluster



       O monitoramento de um cluster é de fundamental importância para o seu
funcionamento, para esta função existem vários recursos que podem ser utilizados desde
avançados monitores de sistema com o protocolo snmp como: Nagios, Gaglia, Cacti e vários
outros, como também o BWatch que o próprio nome diz B de Beowolf que é simples e ideal
para o monitoramento de até 10 micros no cluster. O bWatch é um script escrito em Tcl/Tk
designado para monitorar supercomputadores foi desenvolvido por Jack Radajewski
(PITANGA,2008).

       Somente para efeito de teste após, instalado e configurado o bWatch foi feito o teste
desligando os dois escravos e deixando somente o nó mestre funcionando e o resultado é
visualizado na Figura 18 mostrando o sistema de monitoramento funcionando.




Figura 18 - Funcionamento em teste do bWatch


         3.4.5 Aplicação do Cluster Renderizando Imagens

       A aplicação escolhida para teste do processamento do cluster foi uma ferramenta
muito usada em filmes de Hollywood como Titanic, Final Fantasy, True Lies, Apolo 13 e
vários outros esta ferramenta e Open Source e pode ser utilizada livremente. O pacote
POVRay (Persistence Of Vision Raytracer) que possui algoritmos que produzem imagens
tridimensionais com mais alta qualidade e requinte de detalhes
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho

More Related Content

Similar to Viabilidade em cluster de alto desempenho

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Gestao contexto qos_qoe
Gestao contexto qos_qoeGestao contexto qos_qoe
Gestao contexto qos_qoeIP10
 
Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...
Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...
Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...Fernando Geraldo Mantoan
 
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de GraduaçãoTrabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de GraduaçãoDaniel Fernando Pigatto
 
Monografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de CursoMonografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de CursoGabriela Almeida
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)gsabatke
 
Tcc controle robótico referenciado por sistema de visão computacional utiliza...
Tcc controle robótico referenciado por sistema de visão computacional utiliza...Tcc controle robótico referenciado por sistema de visão computacional utiliza...
Tcc controle robótico referenciado por sistema de visão computacional utiliza...Hamilton Sena
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenAlan Brumate
 
Conexão remota e segurança de rede
Conexão remota e segurança de redeConexão remota e segurança de rede
Conexão remota e segurança de redeSoftD Abreu
 
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsComparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsMawcor
 
Desenvolvimento Ágil de Software: uma abordagem com SCRUM e XP
Desenvolvimento Ágil de Software: uma abordagem com SCRUM e XPDesenvolvimento Ágil de Software: uma abordagem com SCRUM e XP
Desenvolvimento Ágil de Software: uma abordagem com SCRUM e XPTiago Oliveira
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...Felipe Nascimento
 
Monografia - Titao Yamamoto
Monografia - Titao YamamotoMonografia - Titao Yamamoto
Monografia - Titao YamamotoTitao Yamamoto
 
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...Flávio Oscar Hahn
 
Modelos de avaliacao de ambientes virtuais de aprendizagem
Modelos de avaliacao de ambientes virtuais de aprendizagemModelos de avaliacao de ambientes virtuais de aprendizagem
Modelos de avaliacao de ambientes virtuais de aprendizagemjoao jose saraiva da fonseca
 
Dissertação - Janeiro/2003 - DC/UFC
Dissertação - Janeiro/2003 - DC/UFCDissertação - Janeiro/2003 - DC/UFC
Dissertação - Janeiro/2003 - DC/UFCCamilo Almendra
 
Arca Sistema Gerencial
Arca Sistema GerencialArca Sistema Gerencial
Arca Sistema GerencialRicardo Júlio
 

Similar to Viabilidade em cluster de alto desempenho (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Gestao contexto qos_qoe
Gestao contexto qos_qoeGestao contexto qos_qoe
Gestao contexto qos_qoe
 
Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...
Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...
Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizando Desi...
 
Trabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de GraduaçãoTrabalho de Conclusão de Curso de Graduação
Trabalho de Conclusão de Curso de Graduação
 
Monografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de CursoMonografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de Curso
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)
 
Tcc controle robótico referenciado por sistema de visão computacional utiliza...
Tcc controle robótico referenciado por sistema de visão computacional utiliza...Tcc controle robótico referenciado por sistema de visão computacional utiliza...
Tcc controle robótico referenciado por sistema de visão computacional utiliza...
 
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e XenVirtualizacao de Servidores: Um comparativo entre VMware e Xen
Virtualizacao de Servidores: Um comparativo entre VMware e Xen
 
Conexão remota e segurança de rede
Conexão remota e segurança de redeConexão remota e segurança de rede
Conexão remota e segurança de rede
 
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsComparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
 
Desenvolvimento Ágil de Software: uma abordagem com SCRUM e XP
Desenvolvimento Ágil de Software: uma abordagem com SCRUM e XPDesenvolvimento Ágil de Software: uma abordagem com SCRUM e XP
Desenvolvimento Ágil de Software: uma abordagem com SCRUM e XP
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
TCC - Utilização de Metodologias Ágeis para Adaptação de um Processo de Desen...
 
Monografia - Titao Yamamoto
Monografia - Titao YamamotoMonografia - Titao Yamamoto
Monografia - Titao Yamamoto
 
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
Proposta de Melhoria do portal do Senac/AL, Utilizando Técnicas de Usabilidad...
 
Modelos de avaliacao de ambientes virtuais de aprendizagem
Modelos de avaliacao de ambientes virtuais de aprendizagemModelos de avaliacao de ambientes virtuais de aprendizagem
Modelos de avaliacao de ambientes virtuais de aprendizagem
 
1999_05_rodrigues
1999_05_rodrigues1999_05_rodrigues
1999_05_rodrigues
 
Dissertação - Janeiro/2003 - DC/UFC
Dissertação - Janeiro/2003 - DC/UFCDissertação - Janeiro/2003 - DC/UFC
Dissertação - Janeiro/2003 - DC/UFC
 
Arca Sistema Gerencial
Arca Sistema GerencialArca Sistema Gerencial
Arca Sistema Gerencial
 

More from Rogério Cardoso

Processadores tipos e modelos amd intel e cpuz
Processadores tipos e modelos amd intel e cpuzProcessadores tipos e modelos amd intel e cpuz
Processadores tipos e modelos amd intel e cpuzRogério Cardoso
 
Memorias edo ddr 1,2 e 3 e dual channel
Memorias edo ddr 1,2 e 3 e dual channelMemorias edo ddr 1,2 e 3 e dual channel
Memorias edo ddr 1,2 e 3 e dual channelRogério Cardoso
 
Aula 4 Mini Curso de Linux
Aula 4 Mini Curso de LinuxAula 4 Mini Curso de Linux
Aula 4 Mini Curso de LinuxRogério Cardoso
 
Aula 2 Mini Curso de Linux
Aula 2 Mini Curso de LinuxAula 2 Mini Curso de Linux
Aula 2 Mini Curso de LinuxRogério Cardoso
 
Aula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxAula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxRogério Cardoso
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova Rogério Cardoso
 
Prova de gestao de projetos turma manha pronta
Prova de gestao de projetos turma manha prontaProva de gestao de projetos turma manha pronta
Prova de gestao de projetos turma manha prontaRogério Cardoso
 
Memorias edo ddr 1 2 e 3 e dual channel
Memorias edo ddr 1 2 e 3 e dual channelMemorias edo ddr 1 2 e 3 e dual channel
Memorias edo ddr 1 2 e 3 e dual channelRogério Cardoso
 
Sistemas distribuídos e de tempo real
Sistemas distribuídos e de tempo realSistemas distribuídos e de tempo real
Sistemas distribuídos e de tempo realRogério Cardoso
 
Aplicações de redes neurais 2010
Aplicações de redes neurais 2010Aplicações de redes neurais 2010
Aplicações de redes neurais 2010Rogério Cardoso
 
Apostila cemig instalacoes_residenciais
Apostila cemig instalacoes_residenciaisApostila cemig instalacoes_residenciais
Apostila cemig instalacoes_residenciaisRogério Cardoso
 
Aplicações de algoritimos geneticos 2010
Aplicações de algoritimos geneticos 2010Aplicações de algoritimos geneticos 2010
Aplicações de algoritimos geneticos 2010Rogério Cardoso
 

More from Rogério Cardoso (20)

Processadores tipos e modelos amd intel e cpuz
Processadores tipos e modelos amd intel e cpuzProcessadores tipos e modelos amd intel e cpuz
Processadores tipos e modelos amd intel e cpuz
 
Memorias edo ddr 1,2 e 3 e dual channel
Memorias edo ddr 1,2 e 3 e dual channelMemorias edo ddr 1,2 e 3 e dual channel
Memorias edo ddr 1,2 e 3 e dual channel
 
Placa mãe
Placa mãePlaca mãe
Placa mãe
 
Aula 4 Mini Curso de Linux
Aula 4 Mini Curso de LinuxAula 4 Mini Curso de Linux
Aula 4 Mini Curso de Linux
 
Aula 2 Mini Curso de Linux
Aula 2 Mini Curso de LinuxAula 2 Mini Curso de Linux
Aula 2 Mini Curso de Linux
 
Aula 1 Mini Curso de Linux
Aula 1 Mini Curso de LinuxAula 1 Mini Curso de Linux
Aula 1 Mini Curso de Linux
 
Modelo de prova
Modelo de prova Modelo de prova
Modelo de prova
 
Prova Mysql
Prova MysqlProva Mysql
Prova Mysql
 
lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova lista de exercícios de estrutura de dados Básico primeira prova
lista de exercícios de estrutura de dados Básico primeira prova
 
Prova de gestao de projetos turma manha pronta
Prova de gestao de projetos turma manha prontaProva de gestao de projetos turma manha pronta
Prova de gestao de projetos turma manha pronta
 
Multimídia para PC's
Multimídia para PC'sMultimídia para PC's
Multimídia para PC's
 
Memorias edo ddr 1 2 e 3 e dual channel
Memorias edo ddr 1 2 e 3 e dual channelMemorias edo ddr 1 2 e 3 e dual channel
Memorias edo ddr 1 2 e 3 e dual channel
 
Sistemas distribuídos e de tempo real
Sistemas distribuídos e de tempo realSistemas distribuídos e de tempo real
Sistemas distribuídos e de tempo real
 
Aplicações de redes neurais 2010
Aplicações de redes neurais 2010Aplicações de redes neurais 2010
Aplicações de redes neurais 2010
 
Apostila cemig instalacoes_residenciais
Apostila cemig instalacoes_residenciaisApostila cemig instalacoes_residenciais
Apostila cemig instalacoes_residenciais
 
Utilizando o open ssh
Utilizando o open   sshUtilizando o open   ssh
Utilizando o open ssh
 
Introdução a psk e qam
Introdução  a   psk  e  qamIntrodução  a   psk  e  qam
Introdução a psk e qam
 
Introdução ao pipeline
Introdução  ao  pipelineIntrodução  ao  pipeline
Introdução ao pipeline
 
Aplicações de algoritimos geneticos 2010
Aplicações de algoritimos geneticos 2010Aplicações de algoritimos geneticos 2010
Aplicações de algoritimos geneticos 2010
 
Boinc
Boinc Boinc
Boinc
 

Viabilidade em cluster de alto desempenho

  • 1. UNIVERSIDADE DE UBERABA ROGÉRIO ABADIO CARDOSO RODRIGUES COMPUTAÇÃO PARALELA: VIABILIDADE EM CLUSTER DE ALTO DESEMPENHO UBERLÂNDIA - MG 2011
  • 2. ROGÉRIO ABADIO CARDOSO RODRIGUES COMPUTAÇÃO PARALELA: VIABILIDADE EM CLUSTER DE ALTO DESEMPENHO Trabalho de conclusão de curso apresentado à Universidade de Uberaba, como parte dos requisitos à graduação e obtenção do título de Engenheiro de Computação. Orientadora: Profª Ms. Luciene Chagas de Oliveira. Co-Orientador: Prof. Esp. Mário Cesar Pintaudi Peixoto UBERLÂNDIA - MG 2011
  • 3.
  • 4. A toda minha família, principalmente, minha mãe Elza e meu pai José, meus amigos de curso, e à minha noiva Rossana, sem os quais seria impossível alcançar mais esta conquista e que sempre estiveram ao meu lado não importando o momento, incentivando-me a buscar o conhecimento, Dedico este trabalho.
  • 5. AGRADECIMENTOS À Deus, acima de tudo, agradeço, pela saúde, serenidade e perseverança sobre mim concedidas, para superar mais esta batalha e alcançar mais um degrau na escada da vida. Aos meus queridos pais, Elza e José, que se dedicaram a mim com amor , carinho e sempre me incentivaram, acreditando em meus sonhos. Especialmente a Rossana, que soube me ouvir e compreender, nas horas que precisei do seu apoio e carinho, pela dedicação incondicional e pelas conquistas e superações realizadas em conjunto. Aos professores do curso de Engenharia de Computação, pelo apoio no convívio estimulante durante toda a trajetória, e que, por meio de seus ensinamentos, permitiram a construção de uma base de conhecimentos sólida. Em especial à Profª Mario Cesar e à minha orientadora Profª Luciene Chagas de Oliveira, pelo estímulo e competente orientação durante a pesquisa. Aos colegas de turma, pelas reflexões críticas e sugestões recebidas, e ainda, pelo maior aprendizado obtido durante o curso, a convivência, o companheirismo nas horas difíceis do aprendizado e o respeito às diferenças.
  • 6. “[...] no pain, no gain [...]” (Scorpions) “Por mais difícil que seja cada novo degrau da vida ele deve ser superado mesmo que cause alguns desgastes emocionais" (Rogério Cardoso)
  • 7. Resumo Com o avanço e popularização das tecnologias de ponta, os microcomputadores cada vez mais presentes no cotidiano da população trazem por conseqüência um aumento do número de usuários conectados a aplicações Web ou local em um ambiente interno de uma Intranet. Esta demanda de poder computacional exige que o processamento seja cada vez mais eficiente. Na busca de garantir o sucesso das aplicações, os diferentes tipos de sistemas distribuídos são implementados para garantir a demanda dos processos usados nas aplicações. Justamente nesse sentido, procura-se o aumento de desempenho, colocando-se assim, a computação paralela, como fator determinante para um maior poder computacional de maneira mais viável. Este projeto apresenta uma visão geral sobre Sistemas Operacionais com destaque e ênfase para o sistema GNU/Linux, analisando o desenvolvimento de um supercomputador com um Hardware de baixo custo, sendo uma possível solução interessante para uso em conjunto com outras tecnologias atuais como, por exemplo, a virtualização e outras aplicações que exijam um alto desempenho de processamento. Para efeito de validação do conhecimento contido neste trabalho foi projetado um sistema de cluster com três máquinas, que demonstra o desempenho possível de se conseguir com o uso de um aglomerado de computadores do tipo Beowulf1. Palavras - chave: Sistemas Operacionais, Cluster, Linux, Supercomputadores. 1 Beowulf são clusters de desempenho escalável baseado em hardware commodity, em uma rede do tipo privado e software open source (BEOWULF, 2011).
  • 8. Abstract With the advancement and popularization of technologies, personal computers are increasingly present in daily life of the population consequently bring an increase in the number of users connected to applications or Web site in an internal environment of an Intranet. This demand for computing power requires that the processing is more efficient. In seeking to ensure the success of applications, different types of distributed systems are implemented to ensure the demand of the processes used in applications. Precisely in this sense, we seek to increase performance, placing it well, and parallel computing, as the determining factor for greater computing power in a more viable. This project presents an overview of operating systems with emphasis and focus to the GNU / Linux system, analyzing the development of a supercomputer with a low-cost hardware, and an interesting possible solution for use in conjunction with other current technologies such as virtualization and other applications requiring high performance processing. For the purpose of validating the knowledge contained in this paper was designed a cluster system with three machines, which shows the performance possible to achieve with the use of a cluster of Beowulf type computers. Keywords: Operating Systems, Cluster, Linux, Supercomputers.
  • 9. LISTA DE FIGURAS Figura 1- Paralelização de Tarefas ........................................................................................... 30 Figura 2 - Organização geral de um cluster de servidores de três camadas ............................. 32 Figura 3 - modelo de sistema de alta disponibilidade .............................................................. 34 Figura 4 - Cluster de balanceamento de Carga......................................................................... 34 Figura 5 - Arquitetura de um cluster de PCs ............................................................................ 36 Figura 6 - Diagrama Básico de um cluster Beowulf ................................................................. 37 Figura 7 - Gráfico Sistemas Operacionais em Supercomputadores ......................................... 41 Figura 8 - Dois segmentos de redes .......................................................................................... 45 Figura 9 - Interface do Putty ..................................................................................................... 48 Figura 10 - Ambiente de manipulação do WinSCP ................................................................. 48 Figura 11- Teste inicial do sistema ........................................................................................... 49 Figura 12 - imagem renderizada com POVRay........................................................................ 50 Figura 13 - imagem renderizada com POVRay........................................................................ 52 Figura 14 - Webmin no servidor Mestre .................................................................................. 55 Figura 15 - Webmin no servidor escravo1 ............................................................................... 55 Figura 16 - Processo de paralelização de uma aplicação .......................................................... 57 Figura 17 - Estrutura MPI......................................................................................................... 57 Figura 18 - Funcionamento em teste do bWatch ...................................................................... 58 Figura 19 - Aplicação com POVRay ........................................................................................ 59 Figura 20 - Primeira renderização de imagem.......................................................................... 60 Figura 21 - nó Mestre ............................................................................................................... 62 Figura 22 - nó Escravo1 ........................................................................................................... 63 Figura 23 - nó Escravo 2 .......................................................................................................... 63 Figura 24 - Roteador de acesso remoto ao nó mestre ............................................................... 64
  • 10. LISTA DE TABELAS Tabela 1 – S. O. % utilizado em Supercomputadores .............................................................. 41 Tabela 2 - Tempo de resposta para Skyvase.pov ..................................................................... 51 Tabela 3 - Tempo de resposta para Benchmark.pov................................................................. 51
  • 11. LISTA DE QUADROS Quadro 1- Código utilizado no Arquivo hosts.equiv. ............................................................... 46 Quadro 2 - Código utilizado no Arquivo securetty. ................................................................. 47 Quadro 3 - Código utilizado no Arquivo exports. .................................................................... 47 Quadro 4 - Script Shell resolvendo Dependências. .................................................................. 53 Quadro 5 - Arquivo hosts de todos os micros do cluster.......................................................... 54 Quadro 6 - Arquivo .hosts ........................................................................................................ 54
  • 12. LISTA DE ABREVIATURAS E SIGLAS API - Application Program Interface (Interface de Aplicação) CC-NUMA – Cache Coherence Non-Uniform Memory Access CPU – Central Processing Unit – Unidade Central de Processamento DNS – Domain Name Service (Serviço de Domínio de Nomes). FTP – File Transfer Protocol (Protocolo de Transferência de Arquivo). GNU - General Public License (Softwares Licenciados pelo Projeto GNU (Licença Pública Geral)). HA – High Availability HD – Hard Disk (Disco Rígido). HOST – Máquina ligada à rede. HPC – High Performance Computing HPCC/ESS - High Performance Computing Cluster/Earth and Space Sciences HTTP - Hyper Text Transfer Protocol (Protocolo de Transferência de Hiper texto ). HTTPS - Hyper Text Transfer Protocol Secure (Protocolo Seguro de Transferência de Hiper texto). IBM - International Business Machines. IP - Internet Protocol (Protocolo de Internet). IPV4 – Internet Protocol Version 4 (Protocolo de Internet Versão 4). IPV6 – Internet Protocol Version 6 (Protocolo de Internet Versão 6). LAN – Local Area Network (Rede de Área Local). MB – Megabytes MFlops – Megaflops MIMD – Multiple Instruction Multiple Data (Múltiplas Instruções de Dados Múltiplos). MISD – Multiple Instruction Single Data. MPI - Message Passing Interface (Interface de passagem de mensagens). MAN – Metropolitan Area Network (Rede de trabalho Metropolitana). NAT - Network Address Translation (Conversão de Endereços de Redes). NASA - National Aeronautics and Space Administration (Administração Nacional do Espaço e da Aeronáutica). NFS - Network File System (Sistema de Arquivos de Rede). POVRay - Persistence Of Vision Raytracer (Persistência da visão Raytracer).
  • 13. PVM - Parallel Virtual Machine (Maquina virtual paralela). RAM – Random Access Memory (Memória de acesso aleatório). SAD – Sistema de Arquivos Distribuído. SSH – Security Shell (Segurança Shell). S. O. – Sistema Operacional.
  • 14. SUMÁRIO Capítulo 1 – Introdução ....................................................................................... 16 1.1 Justificativa e Motivação .....................................................................................18 1.2 Objetivo Geral ..................................................................................................19 1.3 Objetivos Específicos ..........................................................................................19 1.4 Organização do Trabalho .....................................................................................20 Capítulo 2 – Sistemas Operacionais e Sistemas Distribuídos ............................. 21 2.1 Sistemas Operacionais .........................................................................................21 2.1.1 Memória virtual ....................................................................................................... 22 2.1.2 Deadlock .................................................................................................................. 22 2.1.3 Proteção do Sistema................................................................................................. 24 2.1.4 Segurança em Sistemas Operacionais ..................................................................... 25 2.1.5. Sistemas de Arquivos Distribuídos......................................................................... 25 2.1.6. Threads ................................................................................................................... 26 2.1.7. Sistemas Open Sources ........................................................................................... 26 2.2 Sistemas Distribuídos ..........................................................................................29 2.2.1 Processamentos Paralelos ........................................................................................ 29 2.2.1.1 Tipos de processamentos paralelos ...................................................................... 30 2.2.2 Tipos de Cluster ...................................................................................................... 31 2.2.2.1 - Cluster de alta disponibilidade ........................................................................... 33 2.2.2.2 – Clusters de Alto Desempenho ........................................................................... 35 2.2.2.2.1 – Arquitetura de um cluster Beowulf ................................................................. 36 2.2.2.2.2 – Vantagens e desvantagens de um cluster Beowulf ......................................... 38 2.2.2.2.3 – Tipo de Rede utilizada em um cluster Beowulf .............................................. 39 2.2.2.2.4 – Hardware utilizado em um cluster Beowulf ................................................... 40 2.2.2.2.5 – Sistema Operacional utilizado em um cluster Beowulf .................................. 40 2.2.2.2.6 – Aplicações de um cluster Beowulf ................................................................. 42 Capítulo 3 – Desenvolvimento de Cluster De Alto Desempenho ...................... 44 3.1 Visão Geral do Projeto do Cluster .......................................................................45 3.3 Protótipos do Sistema ..........................................................................................46 3.3.1 Acesso ao Nó mestre ............................................................................................... 46
  • 15. 3.3.2 Requisitando uma tarefa .......................................................................................... 49 3.3.3 Resposta do Sistema ................................................................................................ 51 3.4 Ferramentas e Tecnologias ..................................................................................53 3.4.1 Scripts ...................................................................................................................... 53 3.4.2 Automatização da Construção do Cluster ............................................................... 54 3.4.3 Programação Paralela .............................................................................................. 56 3.4.4 Ferramentas de Monitoramento do Cluster ............................................................. 58 3.4.5 Aplicação do Cluster Renderizando Imagens ......................................................... 58 3.6 Hardware .............................................................................................................61 Capítulo 4 – Considerações Finais ...................................................................... 65 REFERÊNCIAS BIBLIOGRÁFICAS ................................................................ 66 ANEXO ............................................................................................................... 68
  • 16. 16 Capítulo 1 – Introdução Nas últimas décadas, a taxa de crescimento do poder de processamento de mini- computadores, mainframes2 e os tradicionais supercomputadores tem sido algo em torno de 20% ao ano, enquanto a taxa de crescimento do poder de processamento de microprocessadores tem sido algo em média de 40% ao ano (PITANGA, 2008). Atualmente, os computadores voltados para usuários finais evoluem tanto na arquitetura quanto na tecnologia. Exemplos destas tecnologias que foram incorporadas são o uso da memória cache, pipelines dentre outros, que os supercomputadores da década de 70 já tinham a maioria destes recursos que foram incorporados. Conforme comentado por Morimoto (2009), com a popularização das redes e da Internet, passamos a depender da conexão com a Internet até mesmo para as tarefas mais básicas e a armazenar cada vez mais informações em servidores remotos. As aplicações e a estrutura que mantém esse suporte passam a ter uma vital importância para os dias atuais e aplicações como Google Docs e serviços online dependem de mais processamento e velocidade, exigindo mais esforços tanto de Hardware quanto de desenvolvimento de softwares otimizados para esse tipo de aplicação. Cluster pode ser definido como um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar processamento pesado. Em outras palavras, os computadores dividem as tarefas de processamento e trabalham como se fossem um único computador (ALECRIM, 2011). A computação em cluster possui um longo histórico de casos atividades bem sucedidas como é o caso cluster do tipo Beowulf que foi usado na produção do filme Titanic feito pela Digital Domain (DOMAIN, 2002), em Venice, Califórnia com o uso de 160 computadores, para fazer os cálculos de adição de elementos nas cenas do navio fazendo com que o mesmo pareça estar navegando, ancorado ou afundando. O custo do projeto foi 40% menor que uma solução baseada em supercomputadores do mesmo poder de processamento da época. Os grandes mainframes de duas décadas atrás deram lugar a servidores de baixo custo, montados usando componentes similares aos usados nos desktops, hospedados em 2 Mainframes: computadores de grande porte de processamento.
  • 17. 17 datacenters3 e administrados remotamente. Os links de fibra óptica caíram brutalmente de preço tornando viáveis sites que disponibilizam vídeos e outros tipos de mídia (MORIMOTO, 2009). Os supercomputadores, como são de se esperar, são máquinas caras, mas que oferecem um grande desempenho. Essa característica os torna quase inacessíveis para as empresas de menor porte. Fica então o dilema: ou se gasta muito dinheiro e compra-se um supercomputador de alto desempenho, ou então se economiza dinheiro e tenta-se satisfazer com máquinas de desempenho inferior. Por esta razão que os clusters de computadores a cada dia crescem mais (PITANGA, 2008). O Sistema Operacional que tem o maior destaque no uso de clusters é o GNU/Linux por ser de código fonte aberto possui maior flexibilidade a diferentes tipos de situações. Dados estatísticos do site TOP500 (TOP500, 2011) mostram os mais potentes supercomputadores sendo que 79% deles utilizam o GNU/Linux. Portanto, este é o sistema utilizado nesse projeto para comprovar a versatilidade e viabilidade de um cluster. Cluster Beowulf pode ser considerado o cluster mais difundido e utilizado para o processamento de alto desempenho, isto se deve muito ao seu baixo custo de implementação. Veio suprir a crescente necessidade de elevada capacidade de processamento em diversas áreas científicas. (ALVARENGA, 2007). Ha outros tipos de aglomerados de computadores como o Mosix que baseia-se na distribuição de processos, mais por ser relativamente complicado de implantar, pois envolve modificar o Kernel do sistema e recompilar o Beowulf acaba sendo mais atrativo aos iniciantes em supercomputadores. A semente inicial veio ainda na década de 1960, com a IBM (International Business Machines), em uma forma de interligar vários mainframes, com o projeto que recebeu o nome de IBM Parallel Sysplex System. Porém, foi somente em 1993 que os pesquisadores Donald J. Becker e Thomas Sterling começaram a desenvolver um sistema de processamento distribuído utilizando-se Hardware convencional. Em 1994, trabalhando no CEDIS (subsidiária da NASA), sob o patrocínio do Projeto HPCC/EES, nasceu o projeto Beowulf (NETO, 2008). 3 Datacenters: são conhecidos como central de processamento de dados, que possuem toda uma estrutura adequada e abrigar vários computadores.
  • 18. 18 1.1 Justificativa e Motivação Os benefícios mais importantes que os clusters podem nos proporcionar segundo Pitanga (2008), Batista (2007) e Dantas (2005) são:  Baixo custo: a redução de custo para se obter processamento de alto desempenho utilizando-se simples PCs.  Disponibilidade: devido ao cluster possuir no mínimo dois nós, em caso de ocorrer qualquer problema, a disponibilidade dos serviços não deve ser prejudicada.  Escalabilidade: a configuração pode crescer à medida que mais recursos estiverem disponíveis.  Tolerância à falhas: o aumento de confiabilidade do sistema como um todo, caso alguma parte falhe.  Alto desempenho: possibilidade de se resolver problemas muito complexos através do processamento paralelo, o que diminui o tempo de resolução dos problemas.  Produtividade de Negócios: Empresas que operam em cluster possuem uma operaração com mais eficiência, melhor aproveitamento de economias de escala e recursos compartilhados.  Sensibilização de Mercado: Clustering permite que as empresas possam atender aos mercados existentes é responder melhor às mudanças do mercado futuro, através do estabelecimento de laços mais estreitos com clientes e mercados locais. Empresas que empregam cluster também podem atuar de forma cooperativa no fornecimento de dados de mercado para novas soluções.  Transferência de Inovação e conhecimento: Como parte de um cluster, as empresas podem conhecer melhor novas fontes e buscar oportunidades de inovação através de vínculos mais fortes com instituições, prestadores de serviços e estabelecimentos de ensino. A estrutura de aglomerados de computadores ou cluster tem como vantagem diferencial o seu valor de custo-benefício muito inferior ao de um ambiente multiprocessado e por esta razão permite maior flexibilidade de expansão de processamento acrescentando mais
  • 19. 19 máquinas de forma rápida. Outro fator também importante é a manutenção do cluster, pois os componentes são facilmente encontrados no mercado, ao contrário do ambiente multiprocessado. Entende-se por ambiente multiprocessado como sendo um Hardware dedicado com motherboards que possuem vários processadores em uma única placa (PITANGA, 2008). São inúmeros os benefícios que um aglomerado de computadores, ou seja, cluster pode trazer para uma organização ou instituição. Porém, antes do desenvolvimento do cluster, a finalidade do mesmo já deve estar previamente definida, pois devem ser desenvolvidos com uma finalidade especifica e não desenvolver sem saber os processos que devem ser agilizados. (DANTAS, 2005). Um cluster de computadores pode ser visto como uma solução alternativa para universidades e empresas de pequeno a médio porte, para obterem processamento de alto desempenho na resolução de problemas através de aplicações paralelizáveis, a um custo razoavelmente baixo se comparado com os altos valores necessários para a aquisição de um supercomputador da mesma classe de processamento (PITANGA, 2008). Este trabalho tem a proposta de montar um cluster físico e abordar os conhecimentos sobre computação paralela, para que seja atribuído o cluster a sistemas de virtualização comercial utilizando a plataforma do Citrix XENServer. 1.2 Objetivo Geral O objetivo deste trabalho é realizar um estudo aprofundado nos conteúdos de sistemas operacionais e sistemas distribuídos usando cluster, bem como realizar uma implementação prática de um cluster de alto desempenho e baixo custo facilitando a compreensão e implementação. 1.3 Objetivos Específicos Os objetivos específicos deste trabalho são:  Apresentar uma abordagem geral da teoria de sistemas distribuídos e clusters;  Desenvolver um cluster Beowulf que tenha as seguintes características:
  • 20. 20  Baixo custo de implementação;  Alto poder de processamento;  Gerenciamento fácil de ser visualizado e monitorado;  Utilização de sistemas GNU/Linux de forma que a implementação seja facilmente personalizada para determinadas aplicações;  Implementação de configurações específicas;  Construção de um nó mestre e três escravos; Portanto, o trabalho tem por objetivo realizar o projeto de um cluster Beowulf de baixo custo e fácil entendimento do seu funcionamento. 1.4 Organização do Trabalho O presente trabalho encontra-se dividido e organizado nos seguintes capítulos:  Capítulo 1 foi apresentado uma introdução e contextualização geral do tema computação paralela: cluster, destacando sua colocação no momento histórico atual e suas aplicações;  Capítulo 2 apresenta um referencial teórico e apresenta uma abordagem geral sobre o cluster Beowulf, em que são apresentados os principais conceitos relativos à sistemas operacionais e sistemas distribuídos para o entendimento do cluster, destacando as vantagens do uso de sistemas open source em implementações do tipo, principais supercomputadores que marcaram épocas, o funcionamento dos clusters de alta disponibilidade e de alto desempenho;  Capítulo 3 apresenta o Cluster desenvolvido, mostrando a topologia, tecnologias usadas e os resultados de testes obtidos comparando o sistema como todo;  Capítulo 4 apresenta as considerações finais e trabalhos futuros, concluindo a pesquisa sobre cluster e sua colocação no mercado atual;
  • 21. 21 Capítulo 2 – Sistemas Operacionais e Sistemas Distribuídos Este capítulo aborda conceitos fundamentais para a construção do cluster, que de certa maneira pode ser definido com duas áreas distintas para sua construção: sistemas operacionais e sistemas distribuídos. No contexto de Sistemas Operacionais, citam-se os problemas encontrados para que a solução de computação paralela fosse implementada e os conteúdos relacionados como funcionamento de memória virtual do sistema, Deadlock e segurança do sistema. Já em Sistemas distribuídos é discutido as soluções de computação paralela e quais os ambientes possíveis para sua aplicação, discutindo sobre tipos de clusters e forma de como este pode ser utilizado. Ainda neste capítulo, tem-se uma introdução aos tipos de redes que podem ser utilizadas na implementação do Cluster Beowulf. 2.1 Sistemas Operacionais Um sistema operacional é um programa que gerência o Hardware do computador. Ele também fornece uma base para os programas e aplicativos e atua como intermediário entre o usuário e o Hardware do computador (SILBERSCHATZ, 2010). Um aspecto interessante dos sistemas operacionais é o quanto eles assumem diferentes abordagens ao cumprir regras e tarefas. Por exemplo, os sistemas de mainframe são projetados basicamente para aperfeiçoar a utilização do Hardware, os sistemas desktop são utilizados para a utilização de jogos e aplicações do usuário, os sistemas para tablets são voltados para mobilidade, e cada um possui suas características específicas. Já a utilização de sistemas operacionais com a distribuição de tarefas e de processamento leva ao aperfeiçoamento da computação paralela detalhadas em sistemas distribuídos e para apresentar os fundamentos de um cluster será descritos estes dois conceitos. Para o entendimento das aplicações relacionadas a clusters ou outras variações da sua arquitetura, o conhecimento de sistemas operacionais é de suma importância, pois sem o entendimento do seu funcionamento como um todo, as funcionalidades desejadas ao se construir um cluster podem não ter sucesso durante sua construção. Tais problemas podem estar relacionados a programação paralela mal feita gerando deadlocks, travamentos por má
  • 22. 22 configuração de memória virtual ou SWAP, defeitos de distribuição de arquivos entre os nós do cluster e entre outros assuntos relacionados a sistemas operacionais. Relacionado a sistemas operacionais será discutido os conceitos de memória virtual, Deadlock, sistemas de I/O, proteção dos sistemas, segurança e sistemas Open Source que são importantes para a realização do trabalho com clusters Beowulf. 2.1.1 Memória virtual A memória virtual é uma técnica que permite a execução de processos que não estão completamente em memória. Uma das principais vantagens desse esquema é que os programas podem ser maiores do que a memória física. A memória virtual abstrai a memória principal em um array de armazenamento muito extenso e uniforme, separando a memória lógica visualizada pelo usuário da memória física. Essa técnica libera os programadores das preocupações com as limitações de armazenamento da memória. A memória virtual também permite que os processos compartilhem arquivos facilmente e que a memória compartilhada seja implementada (SILBERSCHATZ, 2010). Além disso, ela fornece um mecanismo eficiente para a criação de processos. Entretanto, a memória virtual não é fácil de implementar e pode degradar o desempenho se for empregada de uma forma descuidada. Clusters possuem suas particularidades para serem montados, mas um problema encontrado após sua montagem é conseguir encontrar softwares aptos a trabalharem em seu ambiente. É importante que vários cuidados adicionais sejam tomados ao se tratar a memória virtual que é um importante assunto tratado em sistemas operacionais. É um recurso que permite um desempenho mais aprimorado do cluster se bem dimensionada e configurada de acordo com a carga de processamento imposta ao aglomerado de computadores. 2.1.2 Deadlock Deadlock são problemas que necessitam ser tratados e em um ambiente de clustering, que possui um alto poder de processamento, o que de certa forma não o deixa imune a um deadlock. O deadlock deve ser conhecido e ter um tipo de prevenção ou administração para que o cluster fique otimizado, aproveitando o máximo seus recursos, ao invés de ter
  • 23. 23 problemas de travamentos ocasionados por má gerenciamento ou falta de prevenção de deadlocks. Um estado de deadlock ocorre quando dois ou mais processo estão esperando indefinidamente por um evento que só pode ser causado por um dos processos em espera. Há três métodos principais para a manipulação de deadlock:  Usar algum protocolo para a prevenção ou o impedimento de Deadlock, garantindo que o sistema nunca entre em estado de Deadlock;  Permitir que o sistema entre em estado de Deadlock, detecte-o e promova a recuperação;  Ignorar o problema e assumir que nunca ocorrerão Deadlocks no sistema. Um método de impedimento de Deadlock alternativo ao método de prevenção requer que o sistema tenha a informações a priori sobre como cada processo utilizará os recursos do sistema. O algoritmo do banqueiro, por exemplo, requer informações a priori sobre a quantidade máxima de cada classe de recurso que cada processo pode solicitar, usando essas informações podemos as diferenças entre um processo que estará em um estado seguro e um inseguro garantindo assim que todos serão concluídos e impedindo o estado de Deadlock (TANENBAUM, 2003). Se um sistema não empregar um protocolo pra garantir que os Deadlock jamais ocorram, então um esquema de detecção e recuperação pode ser usado um algoritmo de detecção de Deadlock deve ser invocado para determinar se ocorreu um Deadlock. Se um Deadlock for detectado, o sistema deve se recuperar encerrando alguns dos processos envolvidos no Deadlock ou provocando a preempção dos recursos de alguns desses processos. A maioria dos sistemas operacionais, incluindo Unix e Windows, simplesmente ignora o problema, supondo que a maior parte dos usuários preferiria um Deadlock ocasional a uma regra que restrinja cada usuário a somente um processo, um arquivo aberto e um de cada recurso. Se fosse possível eliminar Deadlock sem custo, não haveria muita discussão. O problema e que o custo e alto – na maioria das vezes implica restrições não convencionais aos processos. Assim, deparamos com uma analise não muito prazerosa de custo-benefício ente conveniência e correção, alem de muita discussão acerca do que e mais importante para quem. Nessas condições torna-se difícil encontrar soluções gerais. Uma citação que pode-se ser lembrada e o algoritmo do avestruz(TANENBAUM, 2003).
  • 24. 24 2.1.3 Proteção do Sistema Os sistemas de computação contem muitos objetos, e eles precisam ser protegidos contra a má utilização. Os objetos podem ser de Hardware (tais como memória, tempo de CPU e outros) ou de software (tais como arquivos programas e semáforos). Um direito de acesso é a permissão para executar uma operação sobre um objeto. Um domínio é um conjunto de direitos de acesso. Os processos são executados em domínios e podem utilizar qualquer um dos direitos de acesso do domínio para acessar e manipular objetos. Durante seu tempo de vida, um processo pode tanto ser limitado a um domínio de proteção como autorizando a comutar de um domínio para outro. A matriz de acesso é um modelo geral que fornece um mecanismo para proteção sem a imposição de uma determinada política de acesso ao sistema ou a seus usuários. A separação entre política e mecanismo é uma propriedade de projeto importante a matriz de acesso e esparsa. Ela é normalmente implementada tanto como lista de acessos associadas a cada objeto, quanto como listas de competência associadas a cada domínio. Podemos incluir proteção dinâmica no modelo da matriz de acesso considerando os domínios e a própria matriz de acesso como objetos. A revogação de direitos de acesso em um modelo de proteção dinâmica e normalmente mais fácil de implementar com um esquema de lista de acessos do que com uma lista de competências (SILBERSCHATZ, 2010). Proteção de sistema refere-se a um conjunto de técnicas para proteger o sistema de erros e sobreposições em várias camadas. A prevenção de que um mesmo pacote ou aplicativo utilize a mesma área de memória alocada é um exemplo, que inclusive foi o motivo da clássica tela de erro com a mensagem “este programa executou uma operação ilegal e será finalizado" que ocorrem freqüentemente no Windows 3.x e no Windows 9x. Essa proteção e a sua utilização é de suma importância, pois o sistema Beowulf deve possuir estabilidade para executar exaustivas tarefas de processamento e a proteção do sistema operacional escolhido deve garantir essa característica.
  • 25. 25 2.1.4 Segurança em Sistemas Operacionais Os recursos computacionais devem ser protegidos contra acessos não autorizados, destruição ou alteração maliciosa e introdução acidental de inconsistências. Esses recursos incluem as informações armazenadas no sistema tanto de dados quanto código, assim como a CPU, memória e discos e rede que compõem o computador (SILBERSCHATZ, 2010). Os Beowulfs, por definição, não tem contato com o mundo externo à sua própria rede. Isto os torna seguros por natureza. A única preocupação seria entre o nó principal e o resto da rede, mas neste caso se aplicam as regras padrões de segurança para qualquer rede normal. Como em geral eles são usados em ambientes de pesquisa e por poucas pessoas, segurança normalmente não é uma preocupação. Em ambientes mais hostis onde possa ser necessário um controle mais severo, pode-se limitar o acesso ao nó principal (que na verdade representa todo o cluster para o mundo externo) da mesma maneira que se limita o acesso a qualquer máquina em qualquer rede na Internet (RUIZ, 2011). 2.1.5. Sistemas de Arquivos Distribuídos Um sistema de arquivos distribuído (SAD) é um tipo de sistema de arquivos no qual todos os dados nele armazenados estão espalhados em Hardwares fisicamente diferentes, interconectados através de uma rede. Tais sistemas possuem vários aspectos semelhantes aos dos sistemas de arquivos centralizados, além de operações de manipulação de arquivos, mecanismos de redundância e consistência, entre outros atributos. A vantagem do uso de um SAD é a possibilidade de montar estratégias de distribuição de carga para melhor desempenho no acesso aos dados, mesmo sob alta demanda (MAGAZINE, 2010). A escolha da melhor opção de um sistema de arquivos distribuído eficiente depende da topologia de rede, ou da estratégia de armazenamento de dados. E para os clusters que usam a distribuição de arquivos entre o nó mestre e os escravos, o conhecimento do tipo e da estrutura de arquivos distribuído é fundamental para o seu funcionamento e para sua otimização.
  • 26. 26 2.1.6. Threads Em sistemas operacionais tradicionais, cada processo tem um espaço de endereçamento e um único thread (fluxo) de controle. Na verdade, isso é quase uma definição de processo. Contudo, freqüentemente há situações em que é desejável ter múltiplos Threads de controle no mesmo espaço de endereçamento executando em quase-paralelo, como se eles fossem processos separados (exceto para espaços de endereçamento compartilhados) (TANANENBAUM, 2003). Uma thread, às vezes chamado de processo leve, é uma unidade básica de utilização de CPU; compreende um ID de thread, um contador de programa, um conjunto de registradores e uma pilha. Compartilha com outros Threads pertencentes ao mesmo processo sua seção de código, seção de dados e outros recursos do sistema operacional, tais como arquivos abertos e sinais. Um processo tradicional, ou pesado, tem um único fluxo de controle. Processos com múltiplos Threads podem realizar mais de uma tarefa de cada vez (SILBERSCHATZ, 2000). O conhecimento e controle sobre os Threads em um cluster no momento de distribuir as informações a serem processadas pelos nós ocasiona melhor desempenho e otimização do sistema distribuído para os recursos do sistema. 2.1.7. Sistemas Open Sources Uma das características de clusters Beowulfs é a utilização de sistemas Open Sources e em função desta propriedade que será detalhada a seguir. Segundo Mazioli (2010), Linux é um Sistema Operacional criado em 1991 por Linus Torvalds na universidade de Helsinki na Finlândia. É um sistema Operacional de código aberto distribuído gratuitamente pela Internet. Seu código fonte é liberado como Free Software (software livre), sob licença GNU GPL (General Public License), o aviso de copyright do Kernel feito por Linus descreve detalhadamente isto e mesmo ele não pode fechar o sistema para que seja usado apenas comercialmente. As definições para a licença de softwares livres se definem em quatro liberdades básicas que são elas:
  • 27. 27  A liberdade de executar um programa seja qual for o propósito;  A liberdade de modificar um programa para adaptá-lo às suas necessidades e, para que isso ocorra, você deve ter acesso ao código-fonte;  A liberdade de redistribuir cópias, gratuitamente ou mediante uma taxa;  A liberdade de distribuir versões modificadas do programa e, nesse caso, toda a comunidade poderá beneficiar-se dos aperfeiçoamentos. As definições anteriores são palavras de Richard Stallman (1985), o fundador do movimento de softwares livre em 1985 que agregou mais tarde ao sistema Linux desenvolvido por Linux Torvalds e foi combinado formando um sistema operacional completo. Para a construção de um projeto com alto poder de processamento, manipulação de dados, informações e gerenciamento de diferentes tipos de Hardwares, os sistemas Open Sources possuem como principal característica da liberdade número dois, sendo este um fator decisivo para sua escolha, sendo mais utilizado para clusters do tipo Beowulf. Mas não é somente essa característica que o torna o favorito para este tipo de aplicação, de acordo com Mazioli (2010) algumas das características do Linux são:  Recebe apoio de grandes empresas como IBM, Sun, HP, etc. para seu desenvolvimento  Multitarefa real  Multiusuário  Utiliza permissões de acesso a arquivos, diretórios e programas em execução na memória RAM.  Proteção entre processos executados na memória RAM  Suporte a mais de 63 terminais virtuais (consoles)  Modularização - O Linux somente carrega para a memória o que é usado durante o processamento, liberando totalmente a memória assim que o programa/dispositivo é finalizado  Suporte nativo a rede e tecnologias avançadas como: balanceamento de carga, ips, alias, failover, vlans, bridge.
  • 28. 28  Suporte nativo a múltiplas CPUs, assim processadores como Dual Core, Core Duo, Athlon Duo, Quad Core tem seu poder de processamento integralmente aproveitado, tanto em 32 ou 64 bits.  Rede TCP/IP mais rápida que no Windows e tem sua pilha constantemente melhorada. O GNU/Linux tem suporte nativo a redes TCP/IP e não depende de uma camada intermediária como o WinSock. Em acessos via modem a Internet, a velocidade de transmissão é 10% maior.  Possui recursos para atender a mais de um endereço IP na mesma placa de rede, útil para situações de manutenção em servidores de redes ou para a emulação de "múltiplos computadores".  Suporte a diversos dispositivos e periféricos disponíveis no mercado, tanto os novos como obsoletos.  Pode ser executado em 16 arquiteturas diferentes (Intel, Macintosh, Alpha, Arm, etc.) e diversas outras sub-arquiteturas. Os sistemas operacionais do tipo Open Sources possuem características e qualidades que fazem com que o aglomerado de computadores do tipo Beowulf tenha-o como sistema favorito para suas implementações e desenvolvimentos. Torna-se básico um conhecimento prévio das características e vantagens que esse tipo de sistema pode oferecer, como por exemplo da necessidade deste conhecimento pode-se comparar uma analogia a este fato a compra e utilização de um carro: quando um mecânico/piloto compra um carro ele preza não somente o fato do carro andar, mas também a possibilidade de melhorar este com regulagens especificas e próprias para o seu uso adaptando-o. Agora caso este mesmo carro fosse de alguma forma impossibilitado de ser manipulado, provavelmente ele não terá um bom desempenho para este dono, já que originalmente é feito de forma genérica para ser utilizado por qualquer tipo de usuário sem seus devidos ajustes é de certa maneira um problema maior ainda o fato de nem mesmo saber como este carro anda ou funciona. Portanto, sistemas proprietários não podem ser alterados para a montagem de um cluster.
  • 29. 29 2.2 Sistemas Distribuídos Um sistema distribuído é uma coleção de processadores que não compartilha memória ou relógio. Em vez disso cada processador possui sua própria memória local. Os processadores comunicam-se uns com os outros através de várias redes de comunicação, tais como, os buses de alta velocidade ou linhas telefônicas. De acordo com Silberschatz (2010), um sistema distribuído é uma coleção de processadores fracamente acoplados interconectados por uma rede de comunicação. Do ponto de vista de um processador específico em um sistema distribuído, os outros processadores e seus respectivos recursos são remotos, enquanto seus próprios recursos são locais. Os conceitos básicos para montagem de um cluster Beowulf são mostrados com a soma de conhecimentos de duas áreas de tecnologia uma delas são os sistemas operacionais que fora explicada na seção anterior e sistemas distribuídos que se relaciona com Beowulfs. Pelo princípio de que um conjunto de operações são feitas e compartilhadas com outros componentes do sistema, o papel fundamental de sistemas distribuídos para cluster é entender sua arquitetura, estrutura e sua distribuição de cargas entre os componentes. 2.2.1 Processamentos Paralelos Os problemas computacionais usualmente podem ter algumas de suas partes divididas em pedaços que poderiam ser solucionados ao mesmo tempo ou processados em paralelo. Define-se então processamento paralelo como uma forma pela qual a demanda computacional é suprida através do uso simultâneo de recursos computacionais como processadores para solução de um problema de forma mais rápida com algum tipo de coordenação (PINHEIROS, 2008). Os sistemas com múltiplos processadores também podem economizar dinheiro em comparação com vários sistemas de um único processador, porque os processadores podem compartilhar periféricos, armazenamento de massa e fontes de alimentação. Se vários programas forem processar o mesmo conjunto de dados, fica mais barato armazenar esses dados em um disco e fazer com que todos os processadores os compartilhem, em vez de ter muitos computadores com discos locais e muitas cópias dos dados (SILBERSCHATZ, 2000).
  • 30. 30 O processamento paralelo é uma técnica que divide as tarefas grandes em tarefas menores, e estas são distribuídas em vários processadores para serem executadas simultaneamente. Estes processadores comunicam-se entre si para que haja coordenação (sincronização) na sua execução (REBONATTO, 2004). A Figura 1 apresenta o modelo de paralelismo computacional. Tarefa 1 Processador A Tarefas Grandes e complexas Tarefa 2 Processador B Tarefa 3 Processador C Figura 1- Paralelização de Tarefas Fonte: PITANGA, 2008. 2.2.1.1 Tipos de processamentos paralelos A área de processadores paralelos foi, por muitos anos, uma área ativa de pesquisa. Houve várias abordagens diferentes para criar computadores paralelos efetivos, e todos eles (inclusive Clusters tipo Beowulf) tiveram níveis 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. Uma forma de classificação é referente aos tipos de processamento paralelo. De acordo Pitanga (2008), os tipos podem ser: Multiprocessadores Simétricos (SMP), Processadores Massivamente Paralelas (MPP) e CC-NUMA (Memória de Acesso não- uniforme com Coerência de Cachê) e as características de cada um deles são:
  • 31. 31  Processadores Paralelos Massivos (MPP): É um grande sistema de processamento paralelo com arquitetura de memória compartilhada (DSM) e centralizada. Conta com centenas e até milhares de elementos processadores (nós), que são interligados por uma conexão de rede com alta velocidade, os nós possuem memória própria e um ou mais processadores.  Multiprocessadores Simétricos (SMP): Sistema de processamento simétrico que apresenta de dois até sessenta e quatro processadores, compartilhando a mesma memória, através de um barramento ou uma rede de comunicação dedicada. Como todos os processadores podem acessar a mesma memória, o tempo de acesso deve ser muito baixo, porém quanto maior o sistema mais cresce o tempo de acesso.  Memória de Acesso não-uniforme com Coerência de Cachê (CC-NUMA): CC- NUMA é um sistema de multiprocessadores escaláveis que possuem uma arquitetura de coerência de cachê com acesso não uniforme. Igual a uma máquina SMP, cada processador é um sistema CC-NUMA com uma visão globalizada da memória. Nessa arquitetura a memória é dividida e cada processador tem seu bloco de memória, cada bloco de memória é conectado via barramento a um processador como memória local. Segundo Dantas (2005) Destaca-se algumas aplicações para esta arquitetura como serviços de Web, banco de dados, processamento de sinal, CRM e ERP. 2.2.2 Tipos de Cluster Quando se utilizam dois ou mais computadores em conjunto para resolver um problema, você tem um cluster, que do inglês significa agrupamento (PITANGA, 2008). Em muitas palavras simples, um cluster de servidores nada mais é que um conjunto de máquina conectado por uma rede, no qual cada máquina executa um ou mais servidores. Na maioria dos casos o cluster é organizado logicamente em três camadas como mostra a Figura 2. A primeira camada consiste em um comutador (lógico) por meio do qual são rateadas as requisições do cliente. Esse comutador pode variar muito de acordo com o tipo de cluster (TANENBAUM, 2007). A segunda camada corresponde aos servidores de aplicação que são responsáveis pelo processamento das requisições e a terceira camada consiste em servidores de arquivos e bancos de dados. Neste modelo, temos uma explicação genérica para a maioria dos clusters.
  • 32. 32 Comutador logico Serviço de aplicaçao Sistema distribuido de arquivos/ banco de dados Requisição despachada requisição de cliente Primeira Camada Segunda Camada Segunda Camada Figura 2 - Organização geral de um cluster de servidores de três camadas Fonte: TANEMBAUM, 2007. O termo “clustering” referencia atualmente a um número de diferentes tecnologias e configurações. Podemos dividir os clusters em duas categorias básicas: alta disponibilidade (HA – High Avaibility) e alto desempenho de computação (HPC – High Performance Computing). Os clusters HA têm a finalidade de manter um determinado serviço de forma segura o maior tempo possível. Os clusters HPC são uma configuração designada a prover grande poder computacional do que somente um único computador poderia lhe oferecer em capacidade de processamento (PITANGA, 2008). De uma forma geral, a computação baseada em clusters já ocasionou o desenvolvimento de dezenas de ambientes de programação e gerenciamento. O teste de várias tecnologias para interconexão de nós, o desenvolvimento e até mesmo, reimplementações de bibliotecas e aplicações já desenvolvidas, a produção de inúmeros artigos e o estabelecimento de grupos de trabalhos ao redor do mundo. O ponto desfavorável é que todo o conhecimento produzido está espalhado por várias fontes e cresce rapidamente, o que dificulta, às vezes, um entendimento mais amplo ou atualizado desse assunto (PITANGA, 2008). O “Cluster da NASA” era “formado por 16 PCs 486 DX-100 ligados em rede. Para manter a independência do sistema e baixar os custos, os desenvolvedores optaram por utilizar o Linux”. (MORIMOTO, 2011).
  • 33. 33 Os tipos de clusters são divididos em duas categorias: alta disponibilidade e de alto desempenho. O tipo de cluster utilizado neste trabalho foi do de alto desempenho denominado cluster Beowulf. 2.2.2.1 - Cluster de alta disponibilidade Clusters de alta disponibilidade ou (HA – High Avaibility) fazem parte do tipo mais comum de cluster, pois são utilizados como servidores de tarefas criticas que não podem deixar de funcionar em momento algum. Um bom exemplo desse tipo de cluster são alguns sistemas web que para suportar determinado fluxo de informações mantém dois ou mais servidores em forma de Load Balancing ou balanceamento de cargas para que caso um fique com muitas tarefas o fluxo e direcionado para o outro que assume fazendo com que o sistema fique sempre disponível. O cenário típico de Clusters HA possui duas ou mais máquinas cujos serviços estão espelhados. Dois arranjos normalmente são utilizados. O primeiro deles é o caso de um servidor ficar sempre na espera que o outro fique fora de funcionamento e quando isso ocorre, entra no lugar e passa a realizar a função do servidor que está fora. Isso é mostrado na Figura 3, mas para que tudo ocorra perfeitamente os dois compartilham um disco em comum. No segundo tipo, os dois servidores ou mais ficam em funcionamento distribuindo a carga sobre eles, conforme mostrado na Figura 4. Em algumas situações, pode haver a combinação desses dois arranjos de forma que a disponibilidade dos serviços tenha a maior disponibilidade possível. Este tipo de sistema é bem conhecido, pois ele faz com que serviços de vitais importâncias para as empresas fiquem sempre funcionando. Exemplos comerciais onde esse tipo de cluster é vital são os sites de comércio eletrônicos. Segundo Pitanga (2008), de uma maneira geral um servidor de boa qualidade apresenta uma disponibilidade de 99,5%, enquanto uma solução baseada em clusters de computadores apresenta uma disponibilidade de 99,99%.
  • 34. 34 Requisição dos Clientes Rede Pública Disco Local Disco Local Cabo Crossover Servidor 1 Servidor 1: Servidor 2: 192.168.1.8 192.168.1.9 Servidor 2 em ativo como espera por falha primario ou Standby Resposta do cluster Storage Endereço IP: compartilhado 192.168.1.10 do Cluster Figura 3 - modelo de sistema de alta disponibilidade Fonte: JAYASWAL, 2006. Clientes Clientes Clientes Internet VIP ( IP virtual) Balanceador Servidores Reais Figura 4 - Cluster de balanceamento de Carga.
  • 35. 35 2.2.2.2 – Clusters de Alto Desempenho O funcionamento básico de um cluster de alto desempenho pode ser exemplificado da seguinte forma: dado um problema, que possa ser divido em partes menores (“ser paralelizado”), um servidor fica responsável por dividir o problema em várias partes e enviar para os respectivos nós. Esses, por sua vez, acham a solução e respondem ao servidor, que junta às respostas e disponibiliza para o usuário. (GORINO, 2006). Um cluster de computadores pode ser visto como uma solução alternativa para universidades e empresas de pequeno a médio porte, para obterem processamento de alto desempenho na resolução de problemas através de aplicações paralelizáveis, a um custo razoavelmente baixo se comparado com os altos valores necessários para a aquisição de um supercomputador da mesma classe de processamento (PITANGA, 2008). De acordo com Pitanga (2008), as características principais dos clusters são: alto desempenho, escalabilidade, tolerância a falhas, baixo custo e independência de fornecedores, a saber:  Alto Desempenho: capacidade de resolver problemas complexos utilizando o poder computacional gerado pelo processamento paralelo, de forma que o tempo de resolução de uma atividade seja reduzido a valores consideráveis;  Escalabilidade: característica que permite a possibilidade de expansão do cluster a medida que for necessário o crescimento do poder computacional, o cluster pode ser facilmente adicionado com recursos;  Tolerância a falhas: quanto maior o sistema, maior será sua confiabilidade com um todo. Caso uma parte falhe, outro executará sua tarefa;  Baixo custo: devido a sua implementação ser feita com PC’s simples, o custo é relativamente menor se comparado com o custo de computadores de grande porte;  Independência de fornecedores: utilização de Hardware aberto, software de uso livre e independência de fabricantes e licenças de uso. Entre os principais objetivos dos projetos de clusters de alto desempenho, em geral, está a busca pelo aperfeiçoamento do processamento e a melhoria na distribuição de tarefas entre os nós integrantes do sistema. Para os clusters de alto desempenho, outra necessidade é que o sistema deve parecer para o usuário final como um único computador ou a soma dos
  • 36. 36 recursos individuais de todos os nós pertencentes ao cluster. Um exemplo de cluster de alto desempenho é o cluster Beowulf mostrados a seguir. O cluster do tipo Beowulf surge na história como uma necessidade de elevar o processamento em diversas áreas científicas com o objetivo de compor os sistemas computacionais de alto desempenho e com viabilidade econômica. 2.2.2.2.1 – Arquitetura de um cluster Beowulf O cluster HPC é um tipo de sistema para processamento paralelo ou distribuído que consiste de uma coleção de computadores interconectados, trabalhando juntos como um recurso de computação simples e integrado. Um nó do cluster pode ser um simples sistema: multiprocessador (PCs4, estações de trabalho ou SMPs) com memória, dispositivos de entrada/saída de dados e um sistema operacional. No entanto, esse sistema pode fornecer características e benefícios (serviços rápidos e confiáveis), encontrados somente em sistemas com memória compartilhada (multiprocessadores simétricos - SMP), como os supercomputadores. A arquitetura típica de um cluster é mostrada na Figura 5 (PITANGA, 2008). Aplicações Paralelas Aplicações Sequenciais Ferramentas de programação Paralela Cluster Middleware – Sistema de Imagen Simples (SSI – System Single Image) PC PC PC Interface de Interface de Interface de Rede Rede Rede Rede / Comutador de alta velocidade Figura 5 - Arquitetura de um cluster de PCs A arquitetura apresentada mostra de certa maneira um formato genérico de clusters de computadores. O tipo Beowulf apresenta particularidades especificas da sua implementação 4 PC’s: abreviatura de Personal Computers ou computadores pessoais no português
  • 37. 37 entre elas pode-se verificar o esquema na Figura 6 que pode-se destacar os seguintes componentes:  Nó Controlador (Servidor Mestre): controla a administração e distribuição das tarefas entre seus clientes também chamados de escravos. Este membro é responsável pela interface de conexão com o lado externo do sistema de acesso de clientes e usuários finais do software. Portanto, ele está em um ponto critico, pois controla tanto a segurança do sistema, quanto as suas ligações de front-end. Comumente é utilizado somente um servidor do tipo mestre. Em clusters de grandes proporções, pode-se utilizar mais de um.  Nós Escravos: definido como a parte do sistema que não pode ser acessado pela rede externa. Normalmente, não possui nem mesmo dispositivos de acesso local a eles, são controlados pelo nó controlador e ficam a disposição do mestre para executar tarefas de processamento que lhe são enviadas pela rede.  Rede dedicada: esta parte é a rede de alta velocidade que interliga o nó controlador aos nos escravos. Usuário Nós Escravos Estrutura de Back-End’s LAN Pública interface de rede esclusiva Nó Controlador Nós Escravos Estrutura de Back-End’s Figura 6 - Diagrama Básico de um cluster Beowulf
  • 38. 38 2.2.2.2.2 – Vantagens e desvantagens de um cluster Beowulf Considerando-se que o desempenho de um cluster Beowulf pode ser a mesma de (ou maior que) um supercomputador, sem dúvida a maior vantagem é o preço (RUIZ, 2011). Depois cita-se a manutenção barata e também o alto nível de experiência que já foi atingido por cientistas que trabalham nesta área e estão dispostos a compartilhar este conhecimento com outras pessoas (RUIZ, 2011). Quanto às vantagens de um cluster podemos segundo Marcus (2006), citar:  Estes sistemas são muito escaláveis, pois é possível pôr em rede (e coordenar) um grande número de nós. Assim, não existe um limite definido para o tamanho de um cluster.  Os componentes utilizados são maciçamente comercializados e que desta forma pode-se usufrui economias de escala.  Substituir um nó defeituoso é tão simples quanto mudar de PC. Assim, é possível ter uma gestão de falhas eficiente, baseada na fácil substituição de componentes.  Existe uma independência em relação ao fornecedor de hardware. Como o material que o constitui é muito comum, se faltar uma peça pode-se encontrá-la com facilidade. Existem também mais especialistas em PCs do que de Hardware proprietário.  O software é gratuito e inclui o código fonte. Por essa razão é mais flexível permitindo alterações tanto ao nível do sistema operacional, como das aplicações utilizadas. Disponibilizar o código fonte torna o sistema mais robusto e de confiança, pois significa que quem estiver interessado pode fazer debugging5, detectar erros e gerar correções.  Cada nó do cluster pode ser um sistema completo, útil para uma grande variedade de aplicações. Assim, o risco de um projeto de cluster não resultar em nada é sempre reduzido pelo fato de todo o hardware poder ser reutilizável. Da mesma forma, toda a configuração pode ser utilizada (e testada) para outros fins. 5 Debugging: também conhecido por Debug e o processo de encontrar e reduzir defeitos em software’s ou hardware’s.
  • 39. 39 Entretanto, há algumas desvantagens no uso de clusters Beowulfs:  Com algumas exceções, o Hardware de rede não foi criado para funcionar em Processamento Paralelo. Tipicamente tem uma grande latência 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á informação sobre processos sendo executados em um único nó do cluster.  É necessário ter experiência e conhecimento de administração de sistemas Linux. A configuração dos nós pode não ser muito trivial. Porém, apesar de algumas desvantagens, clusters são surpreendentemente poderosos. Há uma inscrição semestral reunida pela Universidade de Manhiem na Alemanha que descreve os 500 supercomputadores mais poderosos no mundo (TOP 500, 2011). Até 1997, quase todos os sistemas listados eram supercomputadores comerciais de fabricantes famosos como Cray, Silicon Graphics e IBM. Porém em 1998, começaram a aparecer nesta lista Clusters paralelos baseados em Linux. Dois sistemas se localizam perto do topo da lista: o número 97, chamado “CPlant” desenvolvido por Sandia National Labs, e o número 113, chamado “Avalon” desenvolvido por Los Alamos Labs. O Avalon é um cluster de 140 máquinas Alpha 533 MHz, localizado no Laboratório Nacional de Los Alamos, nos Estados Unidos, e custou uma fração do preço de seus concorrentes próximos no ranking, mesmo usando máquinas de alta qualidade, é um exemplo do poder que clusters podem ter (MARCUS, 2006). 2.2.2.2.3 – Tipo de Rede utilizada em um cluster Beowulf Um cluster é um tipo de sistema de processamento paralelo, que consiste num conjunto de computadores (nós), interligados entre si, funcionando de uma forma integrada como se fosse um único sistema de computação. Um nó de um cluster pode ser um sistema monoprocessador ou multiprocessador, PC, Workstation ou SMP, com memória, facilidades de I/O e sistema operacional. Os clusters Beowulf em particular são pilhas de PCs, consistindo no mínimo em dois ou mais nós (PCs) interligados através de uma rede local privada. Tipicamente utilizam-se dois segmentos Ethernet para interligar os nós (MARCUS, 2006).
  • 40. 40 2.2.2.2.4 – Hardware utilizado em um cluster Beowulf Pitanga (2008) lista uma série importante de características a serem levadas em consideração na hora da montagem do projeto de cluster: tipo de processador; tamanho e velocidade da memória cache (L1/L2/L3); número de processadores por nó; capacidade, velocidade e tecnologia da memória RAM; velocidade do barramento; chipset da placa mãe e placas de rede. Para Dantas (2005) quando à interconexão é formado por multiprocessadores e multicomputadores específicos, o projetista poderá avaliar o sistema de interconexão somente com a comparação do material fornecido pelo fabricante. Braga (2003) orienta que a escolha dos componentes de “Hardware” e “software” para a construção de clusters do tipo Beowulf devem ser criteriosa e vem se mostrando bastante viável a computação de alto desempenho para instituições com fortes restrições financeiras. Em um projeto de cluster, o ideal é produzir uma análise dos aplicativos que irão compor o ambiente e o respectivo custo-benefício do ambiente projetado. (DANTAS, 2005). 2.2.2.2.5 – Sistema Operacional utilizado em um cluster Beowulf Segundo Ferreira (2001), um sistema operacional executa várias tarefas como gerenciamento de periféricos de entrada / saída, memória e controle de arquivos e diretórios no disco. Vários sistemas operacionais podem ser usados no projeto de cluster Beowulf e o GNU/Linux (incluindo suas variadas distribuições) é o mais utilizado para este fim, devido a sua confiabilidade, robustez e por ser software livre com código fonte aberto, permitindo várias otimizações e custo reduzido. De acordo com o principal projeto de classificação de supercomputadores o Top 500 organizado por Hans Meuer da University of Mannheim, Alemanha, Jack Dongarra da University of Tennessee, Erich Strohmaier e Horst Simon do NERSC / Lawrence Berkeley National Laboratory. o principal sistema operacional utilizado em Supercomputadores é o sistema operacional Linux como pode ser verificado na Tabela 1. A Figura 7 mostra a Tabela 1 com seu gráfico correspondente.
  • 41. 41 Sistema Operacional Contagem Participação em % Linux 413 82.60 % Super-UX 1 0.20 % AIX 20 4.00 % Cell OS 1 0.20 % SuSE Linux Enterprise Server 9 3 0.60 % CNK/SLES 9 14 2.80 % SUSE Linux 2 0.40 % Redhat Linux 4 0.80 % RedHat Enterprise 4 1 0.20 % SUSE Linux Enterprise Server 10 2 0.40 % SLES10 + SGI ProPack 5 14 2.80 % UNICOS/lc 1 0.20 % CNL 10 2.00 % Windows HPC 2008 6 1.20 % RedHat Enterprise 5 1 0.20 % CentOS 6 1.20 % Open Solaris 1 0.20 % Totals 500 100% Tabela 1 – S. O. % utilizado em Supercomputadores Fonte: Top 500, 2011. Linux Super-UX AIX Cell OS SuSE Linux Enterprise Server 9 CNK/SLES 9 SUSE Linux Redhat Linux RedHat Enterprise 4 SUSE Linux Enterprise Server 10 SLES10 + SGI ProPack 5 Figura 7 - Gráfico Sistemas Operacionais em Supercomputadores Fonte: Top 500, 2011.
  • 42. 42 Segundo Rubem e Ferreira (2003) as vantagens principais do Linux são:  Estabilidade: O sistema operacional Linux, embora exista uma variação entre a maioria das distribuições, apresenta uma estabilidade muito satisfatória;  Recursos do UNIX: O Linux compartilha as mesmas vantagens da maioria das versões do UNIX;  Gerenciamento: Assim como o UNIX, o Linux possui um poderoso gerenciamento e interface de linhas de comandos.  Fonte Aberta: Além de adquirir o sistema operacional gratuitamente, tem-se também o código fonte. O que permite mudar inclusive o Kernel de acordo com os requisitos de segurança. Ainda de acordo com Rubem e Ferreira (2003) o Linux possui também algumas desvantagens, de onde pode se destacar:  Pessoal Habilitado: ainda existe uma carência com relação à pessoal habilitado para o mercado de trabalho;  Variação entre distribuições: apesar de obedecer a uma padronização, existem muitas variações entre as diversas distribuições disponíveis. Mediante todas confirmações de diversos especialistas na área inclusive o projeto Top 500 que possui significativa participação em medidas de desempenho e auxilia a projetos de supercomputadores, confirma a escolha pelo sistema operacional Linux para a implementação de projetos do tipo Beowulf como melhor alternativa principalmente pelas suas características e o seu valor para implementações de baixo custo. 2.2.2.2.6 – Aplicações de um cluster Beowulf O desenvolvimento da eletrônica que impulsionou a construção dos semicondutores e por conseqüência o acesso a equipamentos eletrônicos somado ao uso da Internet tiveram um grande efeito no público em geral. Computadores de alto-desempenho e sistemas de clusters
  • 43. 43 Beowulf podem ter o mesmo efeito, em particular a pessoas que fazem ferramentas de informação e ambientes de simulação. A área de aplicação dos clusters é muito diversificada. São geralmente as aplicações seqüenciais muito grandes, que necessitam de enorme quantidade de memória e tempo de enorme de processamento. Tradicionalmente, o desenvolvimento de computadores tem sido motivado por simulações numéricas de sistemas complexos como analise meteorológica, simulação de dispositivos mecânicos, circuitos eletrônicos, reações químicas, seqüenciamento de DNA e aplicações que podem manipular grandes quantidades de dados para extrair alguma espécie de informação ou conhecimento (MARCUS, 2006). Alguns exemplos de áreas onde os clusters podem ser implementados e serão muito úteis são: servidores de Internet, banco de dados, computação gráfica, aerodinâmica, análise de elementos finitos, inteligência artificial e automação, engenharia genética, exploração sísmica, oceanografia e astrofísica, previsão do tempo, pesquisas militares, problemas e pesquisa básica (física, química, engenharia e matemática), segurança de reatores nucleares. (PITANGA, 2008).
  • 44. 44 Capítulo 3 – Desenvolvimento de Cluster De Alto Desempenho O projeto desenvolvido neste trabalho tem como finalidade fazer a montagem de um cluster paralelo com custo de viabilidade baixo aproveitando micro-computadores antigos e conseguindo uma alta performance de processamento. Lembra-se também que neste momento será demostrado os passos de montagem e configuração do cluster Beowolf. O desenvolvimento do projeto foi feito em duas partes: no primeiro momento a montagem dos locais físicos para alocar os computadores, montagem e testes com os componentes adquirido logo em seguida a instalação e configuração do sistema operacional básico no caso do projeto foi utilizado a distribuição Linux Centos 6 por já ser bastante utilizada no meio acadêmico e comercial com suas características sempre mencionadas de estabilidade e robustez para trabalhos de servidores. As etapas de configuração do sistema Beowolf foram divididas de acordo com o modelo proposto por PITANGA (2008):  Configurar endereços lógicos (IP) para o controlador mestre e os nos computacionais;  Projetar um ambiente de resolução de nomes, podendo utilizar arquivos host ou DNS.  Criar um relacionamento de confiança entre as máquinas  Permitir o uso de comandos remotos para colocar as aplicações em execução nos nodos;  Distribuir o sistema de arquivos do controlador mestre para os nos escravos via Network File System (NFS)  Instalar uma aplicação de gerenciamento  Instalar bibliotecas de passagem de mensagens: PVM e MPI  Instalar sistemas de gerenciamento de recursos para aproveitar nos ociosos no cluster.
  • 45. 45 3.1 Visão Geral do Projeto do Cluster O intuito principal da construção do projeto foi a configuração e o estudo teórico para manipular um cluster do tipo Beowulfs e conseguir realizar sua aplicação com um baixo custo de implantação, e com isso o projeto foi desenvolvido e montado através de um computador comum de uso pessoal com desempenho razoavelmente bom para os padrões atuais de computação e com mais dois micros que foram descartados, por serem antigos e lentos para os dias atuais. Desta forma, o projeto visa unir poder de processamento e conseguir um desempenho de supercomputador a doação do que seria descartado como lixo, foi aproveitada nesse projeto. A Figura 8 ilustra o tipo de rede utilizada para a construção do cluster do projeto e suas configurações mais simples como o acesso remoto ao computador mestre e as classes de endereçamento IP’s 6utilizadas. Acesso remoto ao nó mestre Roteador Wireless Interface de rede Wlan 192.168.0.0/24 Interface de Nós Escravos com rede eth0 rede separada 192.168.1.0/24 Nó mestre Mestre.tcc.local 192.168.1.1 Figura 8 - Dois segmentos de redes 6 IP’S: Internet Protocol ou no português protocolo de internet e o mais utilizado protocolo para envio de pacotes via rede de comunicação.
  • 46. 46 3.3 Protótipos do Sistema Para explicar melhor o funcionamento do sistema foi dividido em: acessar o no mestre, requisitar uma tarefa e resultados conseguidos. Que será mais bem detalhado nos tópicos 3.3.1 ao 3.3.3. 3.3.1 Acesso ao Nó mestre O acesso ao servidor mestre para realizar as configurações tanto iniciais quanto as programações para realizar tarefas são feita remotamente por uma rede wireless e alguns pontos interessantes a serem destacados é que o acesso ao sistema é feito utilizando o protocolo SSH com o pacote OpenSSH. O acesso entre o mestre e seus nos escravos é feito por acesso remoto com relação de confiança através do RSH, Rlogin e Rexec com algumas configurações especificas podem ser visualizadas nos Quadros 1,2 que mostram os arquivos de configuração que estão localizados em: /etc/securetty, /etc/hosts.equiv. O arquivo que monta o sistema de arquivos remoto no servidor mestre e compartilha o sistema de arquivos distribuídos com os nos escravos através do protocolo NFS Network File System a configuração foi feita no arquivo localizado em /etc/exports acrescentando algumas configurações para que o sistema permita a montagem do sistema de arquivos durante a inicialização do sistema operacional o arquivo e visualizado no Quadro 3. hosts.equiv mestre escravo1 escravo2 Quadro 1- Código utilizado no Arquivo hosts.equiv. console vc/1 vc/2 vc/3 vc/4 vc/5 vc/6 vc/7 vc/8 vc/9 vc/10 vc/11 tty1 tty2
  • 47. 47 tty3 tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 rsh rlogin Quadro 2 - Código utilizado no Arquivo securetty. /home *(rw,no_root_squash) /usr/local *(rw,no_root_squash) Quadro 3 - Código utilizado no Arquivo exports. O ntsysv é um utilitário de configuração de quais pacotes serão inicializados com o sistema durante o boot, tanto para o mestre quanto para os nós escravos é importante que alguns pacotes sejam inicializados por padrão devem estar marcados no ntsysv: rsh, sshd, rlogin e rexec as opções marcadas já anteriormente não devem ser alteradas já que para a utilização do sistema neste projeto foi utilizado uma versão mínima da distribuição Centos que traz instalada por padrão o mínimo possível para que o sistema funcione e, portanto, não possui acessórios extras que muitas vezes nem mesmo são utilizados deixando o sistema enxuto e com recursos sempre a disposição do cluster para uma máxima performance. Para o gerenciamento do sistema o computador remoto que acessa o mestre utiliza sistema Windows e com isso, as ferramentas utilizadas para acessar o sistema foram o Putty e o WinSCP para manipular arquivos e comandos no nó mestre a interface do Putty e visualizada na Figura 9 e a interface do WinSCP na Figura 10.
  • 48. 48 Figura 9 - Interface do Putty Figura 10 - Ambiente de manipulação do WinSCP
  • 49. 49 3.3.2 Requisitando uma tarefa Com todo sistema montado os primeiros testes foram executados, com tarefas simples, a primeira delas foi o cálculo do número matemático PI com várias casas decimais, e distribuindo a tarefa pelos nós do cluster esta tela é verificada na Figura 11 que mostra os tempos de respostas dos dois nós integrantes do cluster executando a requisição remota e trocando mensagens entre eles para o cálculo o código fonte utilizado para realizar a simulação abaixo está no anexo. Figura 11- Teste inicial do sistema
  • 50. 50 Para confirmar o desempenho proporcionado pelo cluster Beowolf em segundo momento pós testes iniciais foi utilizado o exemplo skyvase.pov que inclusive funciona como benchmark 7para vários clusters e possui uma lista de adeptos e inscritos no seu site que pode ser acessado em : http://www.haveland.com/index.htm?povbench/index.php . O arquivo skyvase.pov esta no capítulo em anexo para possíveis referências é a imagem gerada pode ser visualizada na Figura 12. A requisição de uma renderização utilizado o POVRay em conjunto com a biblioteca MPICH que foi utilizada no projeto foi feita utilizando o seguinte comando: # povray -i skyvase.pov +v1 -d +ft -x +a0.300 +r3 -q9 -w1024 -h768 Figura 12 - imagem renderizada com POVRay 7 Benchmark: processo sistemático e contínuo de avaliação que são reconhecidas como representantes das melhores práticas com a finalidade de comparar desempenhos.
  • 51. 51 3.3.3 Resposta do Sistema Para verificar o teste de desempenho do sistema utilizando a imagem skyvase.pov foi feito a renderização desta imagem com 2 configurações distintas no primeiro momento usando 2 nós do cluster e em segundo momento somente com o poder de processamento do mestre no primeiro teste a imagem foi renderizada com o tamanho de 1024 x 768 e no segundo teste em alta resolução 640 x 480 a Tabela 5 mostra a o tempo de resposta do sistema usando estes parâmetros. Tamanho da imagem 640 x 480 1024 x 768 Somente no mestre 00:04:15 00:10:05 Mestre + escravo 1 00:03:10 00:06:08 Tabela 2 - Tempo de resposta para Skyvase.pov O tempo de resposta da renderização de imagens é diretamente afetado de acordo com a quantidade de computadores que manipulam a as imagens é comprova de acordo com a tabela 5 justamente a idéia que o cluster que possui maior quantidade de nós consegue um desempenho maior, mesmo que tenham diferentes Hardwares envolvidos no sistema. Para poder comprovar o funcionamento e o desempenho do cluster foi utilizado em segundo momento uma imagem um pouco mais pesada que a anterior com um maior grau de detalhes, para que o desempenho de processamento fosse realmente tirado a prova, neste segundo teste foi utilizada a imagem gerada pelo arquivo Benchmark.pov mostrada na Figura 13. Tamanho da imagem 1024 x 768 640 x 480 Somente no mestre 00:42:35 00:20:05 Mestre + escravo 1 00:30:18 00:17:10 Tabela 3 - Tempo de resposta para Benchmark.pov Comparando a Tabela 3 de resposta com a Tabela 2 é verificado que o segundo arquivo possui um grau de detalhes muito maior que o anterior necessitado assim de muito mais poder de processamento, mas mesmo assim é possível verificar o funcionamento do cluster que com um no escravo a mais para complementar seu poder de processamento da demonstra uma melhoria de quase 30% em relação a somente o micro mestre fazendo seu trabalho.
  • 52. 52 Figura 13 - imagem renderizada com POVRay Uma questão interessante que vale a pena ser lembrada que inclusive é citada por Pitanga (2008), e a diferença entre clusters homogêneos e heterogêneos, no desenvolvimento do projeto foi utilizado um sistema heterogêneo que de certa maneira tem várias diferenças entre os Hardwares utilizados, mas mesmo assim cumpriram bem o seu papel fazendo o trabalho distribuído as tarefas normalmente entre os nós, mas poderia oferecer um processamento melhor caso fosse homogêneo, pois iria processar no mesmo tempo cada parte de informação que lhe foi enviada, mas por maior que seja o esforço para manter o cluster sempre homogêneo em um determinado momento ele se tornara heterogêneo, devido a rápida mudança de tecnologia no mercado e quando for necessário mudar ou modificar qualquer componente ele será diretamente afetado.
  • 53. 53 3.4 Ferramentas e Tecnologias Para o desenvolvimento do trabalho foram utilizadas algumas ferramentas de controle e monitoramento, entre elas pode-se mencionar o uso de editores de arquivos como VIM, o conhecido protocolo de comunicação com servidores Linux e acesso remoto OpenSSH, administrador de servidores via Web com o Webmin e ferramentas de monitoramento de conexão e testes como o Nmap, o POVRay e o Nagios. 3.4.1 Scripts Os scripts de configuração que são arquivos executáveis em sistemas Linux, eles podem desde modificar uma simples configuração ate mesmo instalar editar arquivos e realizar toda uma configuração ou automatização de uma tarefa. No projeto foi utilizada uma linguagem comum conhecida para os administradores de redes. Os scripts têm o formato básico padrão em Shell e utilizando o interpretador Bash comum e normalmente básico em todas distribuições Linux atuais. Scripts para instalação das principais dependências tanto no micro mestre quanto nos escravos. O Quadro 4 mostra este detalhe. #/bin/bash! yum –y update; yum install - y htop unrar zip rar locate perl-Net-SSLeay perl-Net-Rexec rsh-server ntsysv nmap nfs* ; cd /usr/src; wget http://prdownloads.sourceforge.net/webadmin/webmin-1.570-1.noarch.rpm ; rpm –uvh webmin-1.570-1.noarch.rpm ; Quadro 4 - Script Shell resolvendo Dependências. O arquivo do Quadro 4 foi salvo e teve permissão de execução utilizando o comando chmod +x e depois deve ser executado com ./nome_do_arquivo.sh
  • 54. 54 O Quadro 5 mostra o arquivo de hosts de cada nó componente do cluster ele foi configurado desta maneira para que cada computador do cluster consiga identificar tanto por nome quanto por IP o computador presente no sistema, também poderia ser utilizado um servidor DNS – Domain Name Server mais por questões de preferência foi utilizado a configuração do arquivo hosts que por padrão fica localizado em /etc/ . 127.0.0.1 mestre.tcc.local mestre localhost.localdomain localhost ::1 mestre.tcc.local mestre localhost6.localdomain6 localhost6 192.168.1.1 mestre mestre.tcc.local 192.168.1.2 escravo1 escravo1.tcc.local 192.168.1.3 escravo2 escravo2.tcc.local Quadro 5 - Arquivo hosts de todos os micros do cluster. O Arquivo .hosts de todos micros localizado em: /home e /root mostrado no Quadro 6, este arquivo e necessário para que cada computador tenha confiança de acesso remoto sem senha pelo pacote rsh. .rhosts mestre escravo1 escravo2 Quadro 6 - Arquivo .hosts 3.4.2 Automatização da Construção do Cluster Para automatizar algumas mudanças de configuração tornando-as mais ágeis para serem executadas foi utilizado tanto nó mestre como nos nós escravos a ferramenta de administração por Web browser, o Webmin, que facilitou a configuração do sistema de horas e várias outras tarefas. Na Figura 14 pode-se visualizar a tela inicial do micro mestre e na Figura 15 a tela de exemplo do mesmo sistema para manipulação dos escravos na rede.
  • 55. 55 Figura 14 - Webmin no servidor Mestre Figura 15 - Webmin no servidor escravo1
  • 56. 56 3.4.3 Programação Paralela Até pouco tempo atrás, o paralelismo era visto como uma área da computação, sem qualquer interesse para os programadores experientes. O estudo das tendências nas aplicações, tanto ao nível das arquiteturas de computadores como das redes de interligação, tem revelado que esta perspectiva deixou de ter qualquer realidade. Com efeito, o paralelismo tem vindo a se tornar o tema central na programação. Nas últimas décadas, a ciência da computação tem se dedicado aos sistemas de computação paralela e distribuída (PITANGA, 2008). Paralelismo de software é a habilidade de acelerar a execução de um programa dividindo o mesmo em fragmentos múltiplos 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 (MARCUS, 2006). Para desenvolver o projeto foi utilizada a biblioteca MPI8, uma biblioteca com funções de troca de mensagens e sincronização das atividades desenvolvidas pelo cluster seu funcionamento permite que os processos de um programa que foi escrito em uma linguagem seqüencial como C ou Fortran possa ser executado no projeto de forma paralelo desde que tenha sido programado desta maneira a Figura 17 mostra a estrutura de funcionamento da biblioteca MPI. Há também, além da biblioteca MPI que foi utilizada, várias outras bibliotecas para desenvolvimento paralelo: uma delas é a PVM – Maquina Virtual Paralela que foi desenvolvida em 1989 pela University of Tennessee. O PVM foi um dos primeiros sistemas de software a possibilitar que programadores utilizem uma rede de sistemas heterogêneos (máquinas com sistemas operacionais diversos) para desenvolver aplicações paralelas sob o conceito de passagem de mensagens (PITANGA, 2008). O objetivo da programação paralela é transformar grandes algoritmos complexos em pequenas tarefas que possam ser executadas simultaneamente por vários processadores, reduzindo, assim, o tempo de processamento. A Figura 16 mostra o processo de paralelização de uma aplicação de maneira genérica. 8 MPI: Message Passing Interface é um padrão para comunicação de dados em computação paralela.
  • 57. 57 Problema original Decomposição em tarefas Unidades de execução agrupados Tarefas, dados locais e compatilhados Código com o ambiente de programação paralela Unidades de execução + novos dados Codigo fonte conrrespondente compartilhados para as dependências extraídas Figura 16 - Processo de paralelização de uma aplicação Fonte: PITANGA, 2008 Figura 17 - Estrutura MPI Fonte: VIANA, 2010
  • 58. 58 3.4.4 Ferramentas de Monitoramento do Cluster O monitoramento de um cluster é de fundamental importância para o seu funcionamento, para esta função existem vários recursos que podem ser utilizados desde avançados monitores de sistema com o protocolo snmp como: Nagios, Gaglia, Cacti e vários outros, como também o BWatch que o próprio nome diz B de Beowolf que é simples e ideal para o monitoramento de até 10 micros no cluster. O bWatch é um script escrito em Tcl/Tk designado para monitorar supercomputadores foi desenvolvido por Jack Radajewski (PITANGA,2008). Somente para efeito de teste após, instalado e configurado o bWatch foi feito o teste desligando os dois escravos e deixando somente o nó mestre funcionando e o resultado é visualizado na Figura 18 mostrando o sistema de monitoramento funcionando. Figura 18 - Funcionamento em teste do bWatch 3.4.5 Aplicação do Cluster Renderizando Imagens A aplicação escolhida para teste do processamento do cluster foi uma ferramenta muito usada em filmes de Hollywood como Titanic, Final Fantasy, True Lies, Apolo 13 e vários outros esta ferramenta e Open Source e pode ser utilizada livremente. O pacote POVRay (Persistence Of Vision Raytracer) que possui algoritmos que produzem imagens tridimensionais com mais alta qualidade e requinte de detalhes