SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br



Documentos relacionados
Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Cluster HPC High Performance Computing.

ALGORÍTMOS PARALELOS (Aula 2) LCAD. Neyval C. Reis Jr. OUTUBRO/2004. Laboratório de Computação de Alto Desempenho DI/UFES

Unidade 13: Paralelismo:

EAGLE TECNOLOGIA E DESIGN CRIAÇÃO DE SERVIDOR CLONE APCEF/RS

Sistemas Operacionais

Resumo. Introdução Cluster Cluster Beowulf Curiosidades Conclução

Profs. Deja e Andrei

Tipos de Sistemas Distribuídos (Cluster e Grid)

Instituto Superior de Engenharia do Porto Administração de Sistemas Informáticos I Clusters

Administração de Sistemas de Informação Gerenciais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

Introdução às arquiteturas paralelas e taxonomia de Flynn

Sistemas Operacionais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

SISTEMAS DISTRIBUÍDOS

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Supercomputadores dominavam o mercado

4 Estrutura do Sistema Operacional Kernel

Sistemas Operacionais Introdução. Professora: Michelle Nery

Sistemas Distribuídos

1. CAPÍTULO COMPUTADORES

Sistemas Operacionais

Comparação SDs X Scs

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Sistemas Operacionais Gerência de Dispositivos

SISTEMAS OPERACIONAIS

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Roteamento e Comutação

Sistemas Operacionais

SISTEMAS DISTRIBUÍDOS

Evolução na Comunicação de

Disciplina: Introdução à Informática Profª Érica Barcelos

XDOC. Solução otimizada para armazenamento e recuperação de documentos

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

} Monolíticas Aplicações em um computador centralizado. } Em Rede Aplicações com comunicação em rede. } Distribuídas Comunicação e cooperação em rede

Processamento Distribuído em Cluster do Tipo Beowulf

Arquitetura dos Sistemas de Informação Distribuídos

1

Sistemas Distribuídos

EVOLUÇÃO DOS SIST. DE COMPUTAÇÃO DÉC. DE 50 E 60

Prof. Esp. Lucas Cruz

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA REFLEXÃO 3

GESTÃO DE SISTEMAS OPERACIONAIS II

O que é Grid Computing

IW10. Rev.: 02. Especificações Técnicas

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

Desenvolvimento de um Cluster de Alto Desempenho com PVM

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Introdução ao Modelos de Duas Camadas Cliente Servidor

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

Máquinas Multiníveis

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Organização e Arquitetura de Computadores I. de Computadores

Capítulo 8 Arquitetura de Computadores Paralelos

Computação em cluster

Organização de Computadores 1

Comparativo de desempenho do Pervasive PSQL v11

Introdução aos Computadores

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

1. NÍVEL CONVENCIONAL DE MÁQUINA

Arquitetura de Rede de Computadores

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

Tipos de sistemas operacionais

AUTOMAÇÃO DE ESCRITÓRIOS ADE

MÓDULO 11 ELEMENTOS QUE FAZEM PARTE DO PROJETO DO SISTEMA

Sistemas Operacionais. Prof. André Y. Kusumoto

A consolidação de servidores traz uma séria de vantagens, como por exemplo:

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Sistemas Operacionais

A Evolução dos Clusters frente as demais arquiteturas de Alto Desempenho

Sistema Operacional Correção - Exercício de Revisão

6 - Gerência de Dispositivos

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Tecnologia e Infraestrutura. Conceitos de Redes

Sistemas Operacionais

A Evolução dos Sistemas Operacionais

Administration Kit. Parte de Kaspersky Business Space Security Kaspersky Enterprise Space Security Kaspersky Total Space Security

Everson Scherrer Borges João Paulo de Brito Gonçalves

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Unidade III FUNDAMENTOS DE SISTEMAS. Prof. Victor Halla

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Relatorio do trabalho pratico 2

Introdução a Informática. Prof.: Roberto Franciscatto

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

Dispositivos de Memória

INFORMÁTICA BÁSICA AULA 02. Docente: Éberton da Silva Marinho

Sistemas Operacionais

Transcrição:

- Aula 4 - INTRODUÇÃO A SUPERCOMPUTAÇÃO 1. INTRODUÇÃO Atualmente cientistas brasileiros usam supercomputadores para pesquisar desde petróleo até mudanças climáticas. Um grande exemplo é o supercomputador usado pela Petrobrás nas pesquisas do pré-sal. Para levar à frente toda a pesquisa é necessário simular as condições existentes no oceano. Correntes marítimas, ondas, variações de temperatura e movimentos sísmicos devem ser previstos e levados em conta no projeto dos equipamentos. Por causa da enorme quantidade de variáveis envolvidas, essas simulações exigem cálculos pesadíssimos. Para processá-los, a Petrobras conta com um dos maiores supercomputadores do Brasil, o Galileu, instalado na Universidade Federal do Rio de Janeiro. A máquina faz parte da rede Galileu, formada por várias instituições de pesquisa que têm convênios com a Petrobras. O Galileu é baseado em módulos Sun Blade x6048. Fabricado pela Sun (agora Oracle), ele tem desempenho real de 65 teraflops, ou 65 trilhões de cálculos por segundo. É o número 116 na Top500 (www.top500.org), a lista dos mais poderosos computadores do mundo. A capacidade das supermáquinas de realizar cálculos em grande velocidade é indispensável para determinadas pesquisas. É difícil - ou mesmo inviável - estudar diretamente fenômenos como as explosões nucleares e os efeitos da radioterapia sobre as células. A supercomputação permite simular esses fenômenos por meio de cálculos matemáticos. Pesquisas para o desenvolvimento de armas nucleares e de mísseis e para análise de clima foram as primeiras a se beneficiar da computação de alto desempenho. Em seguida, a medicina e vários ramos da engenharia também passaram a usar esse recurso. Hoje, além dessas áreas tradicionais, a gama de aplicações inclui petróleo, finanças, análise de solo, nanotecnologia e genética. Contudo, a máquina é apenas uma parte, pois antes de chegar a ela, os dados precisam ser modelados. E, depois de processados, eles ainda devem ser transformados em informação inteligível. Seymour Cray, considerado o pai da supercomputação, disse certa vez que "CPUs mais rápidas todos podem fazer. O desafio está em desenvolver os sistemas que rodarão nelas". Tanto a criação de aplicativos quanto a interpretação dos dados são críticas. O investimento por trás dos grandes supercomputadores chega a dezenas de milhões de dólares. A nova máquina do INPE custou 50 milhões de reais. Na Rede Galileu, citada anteriormente, o investimento foi de 14 milhões de reais. A supercomputação nasceu com processadores vetoriais especialmente construídos para esse tipo de máquina. Eles predominaram nas décadas de 80 e 90. À medida que os chips de comerciais foram sendo aprimorados, surgiu a supercomputação com processamento massivamente paralelo (MPP). Setores como financeiro, de varejo e de serviços aderiram primeiro ao processamento paralelo. Mas a área científica manteve-se fiel ao processamento vetorial até poucos anos atrás. No processamento vetorial, a velocidade efetiva chega a 35% da nominal. Já no processamento paralelo, o aproveitamento é de apenas 5%. Dessa forma, para atingir uma mesma velocidade efetiva, precisamos de picos muito mais altos numa máquina paralela que numa vetorial. 1

Outro modelo que tem crescido em popularidade é o de grade. Nele, máquinas distantes entre si funcionam como se fossem um único supercomputador. Essa solução é usada, por exemplo, na Universidade Estadual Paulista (Unesp). O grid, como é mais conhecida, dá versatilidade e permite a interligação com outros supercomputadores. Resumo de artigo publicado em <http://info.abril.com.br/noticias/ti/o-brasil-dosteraflops-21012011-0.shl?5> (21Jan11) 2. SUPERCOMPUTADORES Como vimos nos exemplos acima, o objetivo da supercomputação é suprir as necessidades das aplicações que necessitam de alta capacidade de processamento. Os supercomputadores permitem a execução de tarefas em menor tempo através da execução em paralelo de diversas tarefas. Esse paralelismo pode ser obtido em diversos níveis, com ou sem o uso de linguagens de programação paralelas e normalmente são construídos para um propósito específico. Este termo é geralmente confundido com cluster, um tipo de supercomputador criado a partir da cooperação de vários computadores convencionais. Os primeiros supercomputadores foram criados na década de 1960. São características de um supercomputador: - Uso limitado; - Alto custo; - Mercado restrito; - Necessitam de constante evolução. Nos supercomputadores a velocidade de processamento é o elemento mais importante, normalmente medido em flops (Floating Point Operations), ou seja, o número de operações aritméticas simples por segundo com números reais. Estações de trabalho operam na casa dos megaflops (1 milhão de flops) enquanto supercomputadores acima dos gigaflops. Para alcançar tal nível é necessário o emprego de arquitetura vetorial ou paralela. É comum supercomputadores possuírem mais de 65.000 processadores atingindo velocidades na casa dos teraflops. Observe na figura 1 a evolução dos supercomputadores até o ano de 2009 de acordo com o site www.top500.org. 2.1. Supercomputadores x Mainframes A distinção entre supercomputadores e mainframes não é clara e direta. Os supercomputadores são utilizados na solução de problemas em que o tempo de cálculo é um limite, enquanto os mainframes são utilizados em tarefas que exigem alta disponibilidade e envolvem alta taxa de transferência de dados (internos ou externos ao sistema). Como consequência: 2

Figura 1 - Evolução dos supercomputadores - Os supercomputadores são mais complexos do ponto de vista do programador, devido ao alto grau de paralelismo na execução das instruções e pelo fato de que, ao contrário dos mainframes, não existe uma camada de abstração que esconde estas questões; - Os supercomputadores são otimizados para realização de tarefas complicadas utilizando principalmente a memória, enquanto os mainframes são otimizados para realizar tarefas que acessam grandes quantidades de informação oriunda de bases de dados; - Normalmente os supercomputadores são utilizados em aplicações científicas e militares, enquanto os mainframes são voltados a aplicações civis. - As tarefas executadas pelos supercomputadores toleram interrupções (por exemplo, cálculos de modelos de previsão de aquecimento global ou pesquisa acadêmica). Os mainframes executam tarefas que exigem alta disponibilidade, podendo executar serviços continuamente por anos (por exemplo, sistemas de emissão de passagens aéreas ou processamento de cartões de crédito); - Os supercomputadores são construídos para atender uma finalidade específica. Os mainframes são construídos para realizar uma grande variedade de tarefas de execução diária; - Os mainframes suportam totalmente o software antigo (no caso da IBM, inclusive aplicações escritas na década de 1960) convivendo com novas versões. No caso dos supercomputadores, a tendência é ignorar a compatibilidade retroativa de software no projeto de novos sistemas; - Os mainframes possuem um grande número de processadores que auxiliam os processadores centrais. Eles são utilizados em funções de criptografia, gerenciamento de entrada/saída, monitoração do ambiente, manipulação de memória, e etc. Devido a esta característica o número de processadores dos mainframes é muito maior do que se esperaria. Os projetos de supercomputadores não incluem este grande número de processadores de uso específico já que eles não adicionam poder de processamento de cálculo. 3

2.2. Tipos de Supercomputadores 2.2.1. PROCESSADORES VETORIAIS PARALELOS (PVP) Sistemas compostos de poucos processadores poderosos. A memória é compartilhada, e os sistemas podem ser classificados como multiprocessados. Normalmente não utilizam memória cache, usando para essa função um grande número de registradores vetoriais e um buffer de instrução. Exemplos: Cray C-90 (máximo de 16 processadores), Cray T-90 (máximo de 32 processadores), Fujitsu VPP 700 (máximo de 256 processadores). 2.2.2. MULTIPROCESSADORES SIMÉTRICOS (SMP) São sistemas constituídos de processadores comerciais conectados a uma memória compartilhada, podendo também ser classificados como multiprocessados. Utilizam-se amplamente de memória cache e todos os processadores têm igual acesso ao barramento e à memória compartilhada. São mais fáceis de programar que máquinas que se comunicam por troca de mensagens, já que a forma de programação se aproxima daquela feita em sistemas convencionais, mas tem como desvantagem o uso de um barramento de interconexão (permitindo apenas uma transação por vez). Esta limitação pode reduzir a escalabilidade desta classe de sistemas, fazendo com que sistemas comerciais estejam, geralmente, limitados a 64 processadores. Exemplos: IBM R50 (máximo de 8 processadores), SGI Power Challenge (máximo de 36 processadores), SUN Ultra Enterprise 10000 (máximo de 64 processadores) e HP/Convex Exemplar X-Class (máximo de 32 nós de 16 processadores cada). 2.2.3. MÁQUINAS MACIÇAMENTE PARALELAS (MPP) São multicomputadores construídos com milhares de processadores comerciais conectados por uma rede de alta velocidade. O alto desempenho é obtido com o grande número de processadores. O fato de haver troca de mensagens torna a programação mais difícil que nos casos em que a memória é compartilhada. Exemplos: Intel Paragon (máximo de 4000 processadores), Connection Machine CM-5 (máximo de 2048 processadores), IBM SP2 (máximo de 512 processadores) e Cray T3D (máximo de 2048 processadores). 2.2.4. MÁQUINAS COM MEMÓRIA COMPARTILHADA DISTRIBUÍDA (DSM) Nos sistemas DSM (Distributed Shared Memory), mesmo com a memória sendo distribuída entre os nós, todos os processadores podem acessar todas as memórias. O espaço de endereçamento único, o compartilhamento de dados e o controle de coerência de cache são conseguidos com software. Podem ser sistemas com memória entrelaçada distribuída, ou sistemas NORMA (com memórias locais), onde as memórias podem ser ligadas através de adaptadores de rede a uma rede de interconexão específica, que permite o acesso a memórias remotas. 4

2.4.5. REDES DE ESTAÇÕES DE TRABALHO (NOW) As redes de estações de trabalho (NOW Network of Workstations) são constituídas de várias estações de trabalho interligadas por alguma tecnologia tradicional de rede, como Ethernet e ATM. Na prática são redes locais utilizadas na execução de aplicações paralelas. Podem ser vistas como máquinas de baixo custo, ou sem custo algum caso a rede já exista, ou seja, esta é uma solução significativamente mais barata em relação aos MPPs. A desvantagem clara que se vê em uma rede de estações de trabalho é o fato de que as redes tradicionais costumam ser usadas apenas em tarefas menores (para compartilhar arquivos e acessar impressoras remotas, por exemplo), e geralmente não são otimizadas para operações de comunicação de uma aplicação paralela. O resultado é uma alta latência nessas operações, o que compromete o desempenho da máquina como um todo. São usadas principalmente em instituições de ensino para o estudo de processamento paralelo e distribuído. Exemplo: Estações de trabalho interligadas por tecnologia Ethernet. 3. CLUSTER Dos tipos de supercomputadores apresentados acima, o que mais nos interessa são as Máquinas com Memória Compartilhada Distribuída. Os Clusters são típicos representantes dessa classe de supercomputadores e que podem ser definidos como um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar processamento de determinada tarefa. Nesta arquitetura, os computadores dividem as tarefas de processamento e trabalham como se fossem um único computador. Tudo isso com o intuito de realizar processamentos que até então somente computadores de alto desempenho seriam capazes de fazer. Cada computador de um cluster é denominado nó ou nodo. Os nós devem ser interconectados através de uma rede de computadores, cuja topologia permita o acréscimo ou a remoção de nós. Em caso de falha ou erro a retirada de um nó não deve interromper o funcionamento do cluster. O sistema operacional usado nos computadores deve ser de um mesmo tipo visto que existem particularidades em cada sistema operacional que poderiam impedir o funcionamento do cluster. Independente do sistema operacional é necessário um software de controle do cluster. Esse software vai ser responsável, entre outras coisas, pela distribuição do processamento, gerenciamento da memória, troca de mensagens, etc. Esta camada de software deve detectar erros e defeitos, providenciando a solução dos problemas sem interromper as atividades do cluster. Segundo Marcos Pitanga em seu livro Construindo Supercomputadores com Linux, cluster é um conjunto de computadores autônomos e que interligados comportam-se como um único sistema do ponto de vista do usuário. Ou seja, todos os aspectos relativos à distribuição de tarefas, comunicação, sincronização e organização física do sistema devem ser abstraídos do usuário. 5

Figura 2 - Cluster de computadores 3.1. Princípios de Cluster Tais princípios devem ser seguidos ao projetar e implementar clusters, independentemente de sua aplicação final. 3.1.1. ESCALABILIDADE Uma das características mais práticas que deve ser adicionada à configuração de um cluster. Deve existir a possibilidade de acrescentar componentes no cluster sem interromper a disponibilidade dos serviços ativos, como exemplo: acrescentar nós, periféricos e efetuar interconexões de rede; 3.1.2. TRANSPARÊNCIA Os clusters devem apresentar-se como um sistema único, isto é, a integração do processamento distribuído deve ser clara e eficiente, independente de qual sistema está operando para prover um determinado serviço (alta performance e/ou alta disponibilidade); 3.1.3. CONFIABILIDADE Como uma aplicação oferecida ao usuário, deve ser garantida a realização da tarefa a qual o cluster foi designado, independente do tipo de sistema usado, garantindo assim a disponibilidade do serviço, mesmo com a possibilidade de existirem falhas; 6

3.1.4. GERENCIAMENTO E MANUTENÇÃO Devem existir mecanismos que permitam um fácil gerenciamento, devido à complexidade de configuração e manutenção de clusters; 3.1.5. ABSTRAÇÕES Clusters são formados por uma arquitetura e elementos particulares. Sendo assim, a abstração da combinação entre arquitetura e elementos constituintes fornece um sistema único com o objetivo de oferecer a funcionalidade requisitada, de acordo com o esperado. 3.2. Tipos de Cluster Clusters podem ser implementados de diversas maneiras, contudo são classificados basicamente em três tipos: - Alta disponibilidade - Balanceamento de carga - Alta performance Em termos comerciais, o emprego das duas primeiras soluções são mais comuns, enquanto que o último é mais utilizado para aplicações científicas, cujo objetivo é de obter resultados em um menor tempo possível. 3.2.1. ALTA DISPONIBILIDADE A Alta Disponibilidade está ligada diretamente a nossa crescente dependência pelos computadores. Atualmente, diversas empresas contam com os recursos computacionais para proverem os seus serviços, como e-business, sistemas bancários, sites web, banco de dados, entre outros. Um cluster de Alta Disponibilidade tem como objetivo manter os serviços prestados, por um sistema computacional, disponíveis a todo o momento, mesmo em caso de falhas. Isso é conseguido através da criação de réplicas dos serviços e servidores, onde os computadores agem como um único sistema. Cada um monitora os demais por meio de software e, no caso de ocorrer uma falha, um deles assume os serviços daquele que ficou indisponível. (GARCIA, 2003). 7

Figura 3 - Arquitetura de cluster de alta disponibilidade 3.2.2. BALANCEAMENTO DE CARGA Esta solução tem como objetivo manter o equilíbrio de carga entre diversos servidores, garantindo assim a disponibilidade do serviço em momentos de elevados acessos. A necessidade desta implementação é devido à grande quantidade de tráfego nos servidores que prestam serviço em uma rede, pois, atualmente, um dos maiores problemas enfrentados na Internet são os excessivos acessos quando se tem apenas um servidor. O sistema de cluster baseado em balanceamento de carga consiste em integrar seus computadores para que todas as requisições provenientes dos clientes sejam distribuídas de maneira equilibrada entre os servidores. A tarefa principal é redirecionar essas requisições de entrada por meio de um elemento que fará o balanceamento entre os servidores e os usuários. Portanto, nessa estrutura ter-se-iam múltiplos servidores, mas que parecem ser somente um para o cliente. A figura abaixo exemplifica serviços de comércio eletrônico e provedores de Internet, que necessitam resolver diferenças de carga provenientes de múltiplas requisições de entrada em tempo real. Figura 4 - Arquitetura de cluster para balanceamento de carga 3.2.3. ALTA PERFORMANCE Um dos objetivos dessa solução é a obtenção de desempenho na execução de aplicações paralelas ou seqüenciais. O ambiente computacional é concebido para escalonar uma grande 8

quantidade de tarefas a serem executadas de forma paralela. A finalidade principal é de melhorar a utilização dos computadores que possuem uma carga baixa de processamento, distribuindo as tarefas entre os nós para obter resultados no menor tempo possível. Sua utilização é mais comum para resolução de problemas tipicamente paralelos, ou seja, aplicações desenvolvidas para processarem cálculos de forma paralela. A grande vantagem desse sistema é que ele pode ser visto como uma solução alternativa para universidades e empresas de pequeno a médio porte, pois o custo de aquisição de computadores para construir um cluster são relativamente baixos. 3.2.4. COMBO (Alta disponibilidade e Balanceamento de Carga) Esta solução combinada visa prover uma solução de alto desempenho aliada a possibilidade da não existência de paradas críticas. Este cluster combinado é uma solução perfeita para ISP e aplicações de rede nas quais a continuidade de suas operações é muito crítica. Figura 5 - Arquitetura de Alta disponibilidade e Balanceamento de Carga 9

3.3. Componentes de um Cluster Os principais componentes de um cluster de computadores são: a) Nós são os computadores que farão parte do agregado. Estes podem ser desde computadores pessoais até os computadores multiprocessados. b) Sistema operacional existem diversas alternativas como Windows 2003/8, FreeBSD ou NetBSD, GNU/Linux, dentre outros. O mais utilizado é o GNU/Linux, o qual possui código fonte aberto, permitindo assim realizar ajustes como é o caso do projeto openmosix. c) Rede Local este é um dos componentes que está diretamente ligado a performance do cluster. A placa de rede, o switch e o cabeamento são os responsáveis pela transmissão e recebimento de pacotes entre os nós. Existem tecnologias especialmente voltadas para computação de alto desempenho como Myrinet 1 e SCI. d) Protocolos conjunto de regras e procedimentos para se efetuar uma comunicação de dados rápida e confiável entre os nós do cluster. O protocolo TCP/IP, apesar de não ser otimizado para tarefas deste tipo, é o mais utilizado nesta área, pois oferece menor custo de implantação. e) Sistema de arquivos o mais conhecido, e utilizado, sistema de arquivos é o NFS (Network File System), mas existem diversas bibliotecas de interfaces a sistemas de arquivos paralelos para redes de estações. Um exemplo é o DFSA (Direct File System Access), utilizado pelo sistema openmosix. f) Ferramentas de comunicação é importante um cluster também possuir ambientes de programação que ofereçam meios para desenvolver programas paralelos, como o MPI (Message Passing Interface). g) Ferramentas de gerenciamento um conjunto de programas para realizar tarefas de monitoramento e gerenciamento de clusters, como é o caso do openmosixview. 1 Myrinet: foi desenvolvida para se tornar uma tecnologia de interconexão, baseada em chaveamento e comunicação por pacotes, de baixo custo e de alta performance. Principalmente para a interconexão de clusters de computadores, de diferentes tipos como PCs, estações de trabalho removendo a sobrecarga de comunicação crítica, fornecendo acesso direto ao nível de usuário para interface de rede. 10

3.4. Tendências na Construção de Cluster Alguns modelos físicos que constituem atualmente as principais tendências na construção de clusters de computadores. Cabe ressaltar que, segundo a classificação de Flynn 2, os modelos apresentados, a seguir, pertencem à classe de arquiteturas MIMD 3. 3.4.1. MÁQUINAS MACIÇAMENTE PARALELAS (MPP) São multicomputadores construídos com milhares de processadores comerciais conectados por uma rede proprietária de alta velocidade. A proposta é a obtenção de alto desempenho através da utilização de um grande número de processadores. Devido ao fator custo, esses processadores acabam sendo de poder computacional médio ou pequeno. Nesta arquitetura, cada nó possui sua memória local com um espaço de endereçamento próprio, não sendo possível o acesso à memória de nós vizinhos. Esta característica faz com que essas máquinas sejam altamente escaláveis, suportando inúmeros processadores. Cada nó comunica-se com o outro através da rede de interconexão por meio do adaptador de rede (AR). Figura 6 - MPP 3.4.2. DISTRIBUTED SHARED MEMORY (DSM) É considerado um novo paradigma na computação paralela, onde, apesar da memória encontrar-se fisicamente distribuída através dos nós, todos os processadores conseguem acessar todas as memórias. O objetivo dessa técnica é agrupar a memória local de cada nó do cluster, de forma a obter um único espaço de endereçamento lógico para o sistema. Tal implementação pode ser desenvolvida tanto por hardware como por software, ou ainda, com a combinação dos dois. 2 Flynn: Classificação criada em 1972 por Michael Flynn, onde modelos foram concebidos segundo a relação entre o número de fluxos de dados e de instruções existentes em um dado instante. 3 MIMD: Arquitetura com várias unidades de controle, cada uma com seu respectivo processador com processamento assíncrono. 11

A vantagem nessa arquitetura é quanto à programação, pois não necessita usar o paradigma da troca de mensagens. Assim, os programas têm acesso à memória compartilhada da mesma forma como se estivessem acessando variáveis locais. Figura 7 - DSM 3.4.3. REDES DE ESTAÇÕES DE TRABALHO (NOW) São sistemas constituídos por várias estações de trabalho interligadas por uma rede tradicional, como Ethernet ou ATM. Do ponto de vista de uma arquitetura paralela, a rede local também pode ser uma máquina paralela, onde os vários processadores com suas memórias locais são interligados por uma rede de baixo custo. Figura 8 - NOW 3.4.4. MÁQUINAS AGREGADAS (COW) As máquinas agregadas, ou Cluster of Workstations (COW), assim como as NOW, também são constituídos por várias estações de trabalho interligadas, mas com a diferença de serem dedicadas para executar aplicações paralelas. Como são máquinas otimizadas para esse fim, na 12

maioria dos casos, os nós não possuem monitor, teclado e mouse, sendo denominadas de "estações de trabalho sem cabeça" ou headless workstation. O termo Pile-of-PC's também é utilizado para denominar esta organização de máquinas. Como as estações não são utilizadas de forma local, várias otimizações podem ser realizadas nos softwares que serão instalados nestes computadores. Figura 9 - COW 4. CLUSTER BEOWULF Em 1994, a NASA, agência espacial norte-americana, necessitava de um equipamento com poder de processamento da ordem de um gigaflop. Uma máquina de tecnologia RISC com tal nível de desempenho custava em torno de um milhão de dólares. Diante disso, os pesquisadores Thomas Sterling e Donald J. Becker decidiram então interligar 16 computadores pessoais, cada um com um microprocessador 486, usando Linux e uma rede ethernet. Este conjunto atingiu a marca de 70 megaflops. Para a época, era uma velocidade comparável a de pequenos supercomputadores comerciais. O custo total do sistema foi de quarenta mil dólares, ou seja, dez por cento do preço de uma máquina equivalente para a época. O sistema é dividido em um nodo controlador denominado front-end (particularmente denomino de nó mestre), cuja função é controlar o cluster, monitorando e distribuindo as tarefas, atua como servidor de arquivos e executa o elo entre os usuários e o cluster. Grandes sistemas em cluster podem distribuir diversos servidores de arquivos, nó de gerencia pela rede para não sobrecarregar o sistema. Os demais nós são conhecidos como clientes ou backends (ou ainda nós escravos), e são exclusivamente dedicados para processamento das tarefas enviadas pelo nó controlador, e não existe a necessidade de teclados e monitores, e eventualmente até sem a utilização de discos rígidos (boot remoto), e podem ser acessadas via login remoto (telnet ou ssh). Entre os requisitos para o sistema operacional de um Cluster Beowulf, estão a necessidade de se ter as bibliotecas para Parallel Virtual Machine (PVM) ou para Message Passing Interface (MPI). Ambos os tipos são usados para a troca de mensagens entre os nós do cluster. 13

Figura 10 - Cluster Beowlf 5. OPENMOSIX MOSIX é a sigla para Multicomputer Operating System for UnIX. O OpenMosix é um sistema cujo objetivo é gerenciar clusters provendo uma imagem única do conjunto de computadores. Engloba um conjunto de ferramentas de cluster para Linux, voltado ao tipo Balanceamento de Carga. Uma de suas principais características é a não necessidade de aplicações e recursos de software voltados ao cluster, como acontece com o Beowulf. O OpenMosix é eficiente na tarefa de distribuição dinâmica de processamento entre os computadores do cluster. Esse tipo, assim como o Beowulf, é muito utilizado por universidades em pesquisas e projetos. Por ser baseado em Linux, sua implementação é transparente, além de ser relativamente fácil de instalar. De maneira mais ampla, OpenMosix é uma extensão do kernel do Linux, utilizado para a criação de sistemas simples que utilizam clusters. Faz com que um cluster de computadores se comporte como um grande e único supercomputador através da utilização de Migração Preemptiva de Processos e Balanceamento Dinâmico de Carga. A implementação da Migração Preemptiva de Processos é capaz de migrar qualquer processo do usuário, em qualquer instante e para qualquer nó disponível de maneira transparente, desta forma, se um nó com vários processos (a utilizar um destes dois recursos concorrentemente) detecta que outro nó tem disponibilidade superior, isto é, tem menos carga de processador/ram, então o OpenMosix encarrega-se de transladar/migrar um desses processos para esse nó. Como vantagens desta arquitetura podemos citar: - Escalabilidade: completamente transparente, basta lançar um novo nó na rede sem software ou requisitos adicionais, e será automaticamente adaptado pelo cluster como nó; 14

- Adaptatividade: a arquitetura de cada nó é completamente indiferente, desde que a versão do OpenMosix seja igual entre nós; - Não necessidade de recompilação das aplicações: qualquer aplicação poderá beneficiar deste sistema sem alterações ao código. 6. APLICAÇÕES Os clusters podem ser usados para uma infinidade de aplicações. São freqüentemente empregados para tarefas que exijam processamento pesado, como exemplos de aplicações, temos previsão meteorológica (previsão do tempo e condições climáticas), simulações geotérmicas (ou seja, simulação de eventos no solo), renderização de efeitos especiais (muito usado em filmes), simulações financeiras, etc. É também muito comum o emprego de clusters em aplicações de alta disponibilidade como servidores web e servidores bancários, dentre outros. Aplicações de hospedagem de páginas e comércio eletrônico também comumente utilizam Clusters. Basicamente, qualquer tipo de aplicação crítica, ou seja, aplicações que não podem parar de funcionar ou não podem perder dados (como os sistemas de bancos, por exemplo), podem utilizar as tecnologias de cluster, desde que devidamente configurados para não serem sujeitas a falhas graves. Assim, o cluster deve contar com nobreaks ou geradores que garantam o funcionamento do sistema mesmo nos casos de queda de energia, além de meios de manutenção e detecção de falhas eficientes. 7. REFERÊNCIAS PITANGA, Marcos (2003), Computação em Cluster: O Estado da Arte da Computação, Brasport, 1ª Edição BUYYA, Rajkumar (1999), High Performance Cluster Computing: Architectures and Systems, Prentice Hall, volume 1. AL GEIST, Adam Beguelin, Jack Dongarra, Weicheng Jiang, Robert Mancheck, Vaidi Sunderam (1994) PVM: Parallel Virtual Machine A users` Guide and Tutorial for Networked Parallel Computing, MIT Press. ALECRIM, Emerson (2004) Cluster: Principais conceitos, http://www.infowester.com/cluster.php Beowulf (2007), http://www.beowulf.org/ MOSIX Cluster and Grid Management (2007), http://www.mosix.org/ 15