Aula 4 - Supercomputação

Сomentários

Transcrição

Aula 4 - Supercomputação
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- 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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
<http://info.abril.com.br/noticias/ti/o-brasil-dosteraflops-21012011-0.shl?5> (21Jan11)
em
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
supercomputadores são utilizados na solução de problemas em
limite, enquanto os mainframes são utilizados em tarefas que
envolvem alta taxa de transferência de dados (internos ou
consequência:
2
não é clara e direta. Os
que o tempo de cálculo é um
exigem alta disponibilidade e
externos ao sistema). Como
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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 Myrinet1 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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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 Flynn2, os modelos
apresentados, a seguir, pertencem à classe de arquiteturas MIMD3.
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
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
SISTEMAS DISTRIBUÍDOS
Prof. Ricardo Rodrigues Barcelar
http://www.ricardobarcelar.com.br
- 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

Documentos relacionados

Cluster HPC – High Performance Computing.

Cluster HPC – High Performance Computing. cluster foi desenvolvida na década de 1960 pela IBM como uma forma de interligar grandes mainframes, visando obter uma solução comercialmente viável de paralelismo. Na prática o Cluster HPC é utili...

Leia mais