Você está na página 1de 28

COMPUTAÇÃO EM CLUSTER

Por Marcos Pitanga

O que é um Cluster?

Na sua forma mais básica um cluster é um sistema que compreende dois ou


mais computadores ou sistemas (denominados nodos) na qual trabalham em
conjunto para executar aplicações ou realizar outras tarefas, de tal forma para
que os usuários que os utilizam tenham a impressão que somente um único
sistema responde para eles, criando assim uma ilusão de um recurso único
(computador virtual). Este conceito é denominado transparência do sistema.
Como características fundamentais para a construção destas plataformas
inclui-se elevação da: confiança, distribuição de carga e performance.

Tipos de Clusters

Alta Disponibilidade (High Availability (HA) and Failover), estes modelos de


clusters são construídos para prover uma disponibilidade de serviços e
recursos de forma ininterruptas através do uso da redundância implícitas ao
sistema. A idéia geral é que se um nó do cluster vier a falhar (failover),
aplicações ou serviços possam estar disponíveis em outro nó. Estes tipos de
cluster são utilizados para base de dados de missões críticas, correio,
servidores de arquivos e aplicações.

Balanceamento de carga (Load Balancing), este modelo distribui o tráfego


entrante ou requisições de recursos provenientes dos nodos que executam os
mesmos programas entre as máquinas que compõem o cluster. Todos os
nodos estão responsáveis em controlar os pedidos. Se um nó falhar, as
requisições são redistribuídas entre os nós disponíveis no momento. Este tipo
de solução é normalmente utilizado em fazendas de servidores de web (web
farms).

Combinação HA & Load Balancing, como o próprio nome diz combina as


características dos dois tipos de cluster, aumentando assim a disponibilidade e
escalabilidade de serviços e recursos. Este tipo de configuração de cluster é
bastante utilizado em servidores de web, mail, news ou ftp.

Processamento Distribuído ou Processamento Paralelo, este modelo de cluster


aumenta a disponibilidade e performance para as aplicações, particularmente
as grandes tarefas computacionais. Uma grande tarefa computacional pode ser
dividida em pequenas tarefas que são distribuídas ao redor das estações
(nodos), como se fosse um supercomputador massivamente paralelo. É
comum associar este tipo de cluster ao projeto Beowulf da NASA.

Estes clusters são usados para computação cientifica ou análises financeiras,


tarefas típicas para exigência de alto poder de processamento.

1/28
Razões para utilização de um Cluster

Clusters ou combinações de clusters são usados quando os conteúdos são


críticos ou quando os serviços têm que estar disponíveis e/ou processados o
quanto mais rápido possível. Internet Service Providers (provedores de
Internet) ou sites de comércio eletrônico freqüentemente requerem alta
disponibilidade e balanceamento de carga de forma escalável. Os clusters
paralelos têm uma importante participação na indústria cinematográfica para
renderização de gráficos de altíssima qualidade e animações, relembrando que
o Titanic foi renderizado dentro desta plataforma nos laboratórios da Digital
Domain. Os clusters Beowulf são usados na ciência, engenharia e finanças para
atuarem em projetos de desdobramento de proteínas, dinâmica de fluídos,
redes neurais, analise genética, estatística, economia, astrofísica dentre
outras.

Pesquisadores, organizações e empresas estão utilizando os clusters porque


necessitam de incrementar sua escalabilidade, gerenciamento de recursos,
disponibilidade ou processamento a nível supercomputacional a um preço
disponível.

High-Availability (HA) ou Failover Clusters

Figura 1: Cluster de Alta Disponibilidade.

Os computadores possuem uma forte tendência a parar quando menos você


espera, principalmente num momento em que você mais necessita dele.

2/28
É raro não encontrar um administrador que nunca recebeu um telefonema no
meio da madrugada com a triste notícia que o sistema de missão critica ficou
fora ar, ou seja, não tem jeito você tem que ir e resolver o problema. A Alta
Disponibilidade está ligada diretamente a nossa crescente dependência aos
computadores, pois agora eles possuem um papel crítico principalmente em
empresas cuja maior funcionalidade é exatamente a oferta de algum serviço
computacional, como e-business, notícias, sites web, banco de dados, dentre
outros.

Um cluster de Alta Disponibilidade visa manter a disponibilidade dos serviços


prestados por um sistema computacional replicando serviços e servidores,
através da redundância de hardware e reconfiguração de software. Vários
computadores juntos agindo como um só, cada um monitorando os outros e
assumindo seus serviços caso algum deles venham a falhar.

A complexidade do sistema deve estar no software que deve se preocupar em


monitorar outras máquinas de uma rede, saber que serviços estão sendo
executados, quem os está executando, e o que como proceder em caso de
uma falha. Perdas na performance ou na capacidade de processamento são
normalmente aceitáveis; o objetivo principal é não parar. Existem algumas
exceções, como sistemas de tempo real e de missão crítica.

A tolerância a falhas é conseguida através de hardware, como sistemas raid,


fontes e placas redundantes, sistemas rede totalmente ligados para prover
caminhos alternativos na quebra de um link.

Cluster de Balanceamento de Carga

O balanceamento de carga entre servidores faz parte de uma solução


abrangente em uma explosiva e crescente utilização da rede e da Internet.
Provendo um aumento na capacidade da rede, melhorando a performance. Um
consistente balanceamento de carga mostra-se hoje, como parte integrante de
todo o projeto de Web Hosting e comércio eletrônico. Mas não se pode ficar
com as idéias presas de que isso é só para provedores, devemos aproveitar as
suas características e trazermos para dentro das empresas esse modo de usar
a tecnologia para atendermos os clientes internos das empresas.

Os sistemas de cluster baseado em balanceamento de carga integram seus


nodos para que todas as requisições provenientes dos clientes sejam
distribuídas de maneira equilibrada entre os nodos. Os sistemas não trabalham
junto em um único processo, mas redirecionando as requisições de forma
independente assim que chegam baseados em um escalonador e um algoritmo
próprio.

Este tipo de cluster é especialmente utilizado em serviços de comércio


eletrônico e provedores de internet que necessitam de resolver diferenças de
carga provenientes de múltiplas requisições de entrada em tempo real.

3/28
Adicionalmente, para que um cluster seja escalável, tem que assegurar que
cada servidor seja utilizado completamente.

Quando não fazemos o balanceamento de carga entre servidores que possuem


a mesma capacidade de resposta a um cliente, começamos a ter problemas,
pois um ou mais servidores podem responder a requisição feita e a
comunicação fica prejudicada. Por isso devemos colocar o elemento que fará o
balanceamento entre os servidores e os usuários e configurá-lo para isso,
entretanto podemos colocar múltiplos servidores de um lado que, para os
clientes, eles parecerão ser somente um endereço. Um exemplo clássico seria
o Linux Virtual Server, ou simplesmente preparar um load balancer de DNS. O
elemento de balanceamento terá um endereço, por onde os clientes tentarão
fazer contato, chamado de Virtual Server (VS), que redirecionará o tráfego
para um servidor do pool de servidores.

Esse elemento deverá ser um software dedicado a fazer todo esse


gerenciamento, ou poderá ser um equipamento de rede que combine
performance do hardware e software para fazer a passagem dos pacotes e o
balanceamento de carga em um só equipamento.

Devemos salientar alguns pontos principais para que uma implementação em


um ambiente de sucesso com balanceamento de carga nos servidores:

O algoritmo usado para o balanceamento de carga, levando-se em


consideração como é feito o balanceamento entre os servidores e quando um
cliente fizer uma requisição para o endereço virtual (VS), todo o processo de
escolha do servidor e resposta do servidor deve ocorrer de modo transparente
e imperceptível para o usuário como se não existisse o balanceamento.

Criar um método usado para checar se os servidores estão vivos e


funcionando, vital para que a comunicação não seja redirecionada para um
servidor que acabou de ter uma falha (keepalive).

Um método usado para se ter certeza que um cliente acessar o mesmo


servidor quando quiser.

Balanceamento de carga é mais que um simples redirecionamento do tráfego


dos clientes para outros servidores. Para implementação correta, o
equipamento que fará o balanceamento precisa ter características como
verificação permanente da comunicação, checagem dos servidores e
redundância. Todos esses itens são necessários para que suporte a
escalabilidade do volume de tráfego das redes sem vir a se tornar um gargalo
ou um ponto único de falha.

Os algoritmos para balanceamento são um dos fatores de maior importância


neste contexto, vamos então explanar três métodos básicos:

4/28
Least Connections

Esta técnica redireciona as requisições para o servidor baseado no menor


número de requisições/conexões. Por exemplo, se o servidor 1 está
controlando atualmente 50 requisições/conexões, e o servidor 2 controla 25
requisições/conexões, a próxima requisição/conexão será automaticamente
direcionado para o servidor 2, desde que atualmente o servidor tenha um
número menor de requisições/conexões ativas.

Round Robin

Este método usa a técnica de sempre direcionar as requisições para o próximo


servidor disponível de uma forma circular. Por exemplo, as conexões de
entrada são dirigidas para o servidor 1, depois servidor 2 e finalmente servidor
3 e depois retorna ao servidor 1.

Weighted Fair

Esta técnica dirige os pedidos para os servidores baseados na carga de


requisições de cada um e na capacidade de resposta dos mesmos
(performance) Por exemplo, se o servidor 1 é quatro vezes mais rápido no
atendimento aos pedidos do que o servidor 2, o administrador coloca um peso
maior de trabalho para o servidor 1 do que o servidor 2

Cluster Combinado Alta Disponibilidade e Balanceamento de Carga

Esta solução combinada visa prover uma solução de alta performance 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. Algumas características desta plataforma:

 Redirecionamento dos pedidos aos nós falhas para os nós reservas;


 Melhoria na qualidade dos níveis de serviço para as aplicações típicas de
rede;
 Transparente integração para as aplicações stand-alone e não-cluster
juntos em uma única rede virtual;
 Disponibilizar uma arquitetura de framework altamente escalável.

5/28
Figura 2: Solução HA + LB.

Beowulf Cluster

O que é um Beowulf Cluster?

Um dos mais notáveis avanços tecnológicos dos dias atuais, tem sido o
crescimento da performance computacional dos PCs (Computadores Pessoais).

A verdade é que o mercado de PCs é maior que o mercado de workstations,


permitindo que o preço de um PC decresça, enquanto sua performance
aumenta substancialmente, sobrepondo, em muitos casos, a performance de
estações de trabalho dedicadas.

6/28
O cluster Beowulf foi idealizado pelos seus desenvolvedores com o objetivo de
suprir a crescente e elevada capacidade de processamento em diversas áreas
cientificas com o objetivo de construírem sistemas computacionais poderosos e
economicamente viáveis.

Claro que a evolução constante do desempenho dos processadores tem


colaborado e muito na aproximação entre PCs e Workstations, a diminuição do
custos das tecnologias de rede e dos próprios processadores e o sistema
operacional aberto e gratuito, como o GNU/Linux em muito influenciam as
pesquisas para melhoria desta nova filosofia de processamento de alto
desempenho em clusters.

Uma característica chave de um cluster Beowulf, é o software utilizado, que é


de elevado desempenho e gratuito na maioria de suas ferramentas, como
exemplo podemos citar os sistemas operacionais GNU/Linux e FreeBSD sobre
os quais estão instaladas as diversas ferramentas que viabilizam o
processamento paralelo, como é o caso das API’s MPI e PVM. Isto se permitiu
fazer alterações no sistema operacional Linux para dotá-lo de novas
características que facilitaram a implementação para aplicações paralelas.

Como o Beowulf trabalha?

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 (bem eu denomino 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).

7/28
Figura 3: Cluster Beowulf.

O Beowulf é um projeto bem sucedido. A opção feita por seus criadores de


usar hardware popular e software aberto tornou-o fácil de se replicar e
modificar, a prova disso é a grande quantidade de sistemas construídos à
moda Beowulf em diversas universidades, empresas americanas e européias e
até residenciais. Mais do que um experimento foi obtido um sistema de uso
prático que continua sendo aperfeiçoado constantemente.

* Marcos Pitanga é especialista em Linux, autor dos livros Construindo


Supercomputadores com Linux, Computação em Cluster e Honeypots - A Arte
de Iludir Hackers. É pós-graduado em Segurança de Redes de Computadores e
professor da UniABEU em Sistemas Operacionais, Sistemas Operacionais
Distribuídos, Segurança de Redes e Redes de Computadores. Certificado Linux
LPI I, II e III e CCNA / CCAI - CISCO e colaborador do Clube do Hardware. Seu
site pode ser acessado em http://www.multipinguim.underlinux.com.br.

8/28
Supercomputadores Caseiros: Construindo Clusters com o Linux

O nosso colaborador Marcos Pitanga construiu uma rede com vários


computadores e distribuiu o processamento de um programa entre eles,
aumentando o desempenho de processamento. Maluquice? Cena de ficção
científica? Também achamos até vermos as fotos enviadas. É real. É possível.
Leia nesse artigo como Pitanga construiu esse projeto, chamado Multipingüim,
usando PCs comuns e o sistema operacional Linux.

Figura 1: Projeto Multipingüim.

A constante demanda de poder computacional vem gerando a necessidade de


processadores cada vez mais rápidos. Na computação de alto desempenho,
utilizada para programação científica, multimídia, gerenciamento de grandes
volumes de dados etc., a solução passa por máquinas com múltiplos
processadores ou ainda clusters proprietários fornecidos por grandes
empresas. Ambas soluções são custosas e de pouca escalabilidade. O projeto
Multipingüim viabiliza a computação de alto desempenho e a criação de novos
cursos, como os de programação paralela, utilizando microcomputadores
ligados em rede, e sistema operacional Linux, que possui distribuição gratuita.
As bibliotecas de programação também são distribuídas sem ônus e são
perfeitamente compatíveis com as de solução proprietária.

Metodologia

O primeiro passo consiste em buscar uma plataforma que tornassem viável o


uso de ambientes distribuídos, permitindo programação paralela, utilizando
apenas produtos de distribuição gratuita. Com base nos estudos da NASA,
optei pela plataforma Linux, distribuição RedHat 7.1 e Conectiva 7.0 com a
biblioteca MPI para troca de mensagens.

Para os testes de implementação foi utilizado um laboratório montado para


esta finalidade contendo 3 microcomputadores ligados em rede de 100 mbits.

9/28
A melhor solução seria utilizar a própria estrutura de uma rede de
computadores, um sistema operacional de distribuição gratuita e um conjunto
enorme de ferramentas de programas gratuitos disponíveis que transforma
esta rede de computadores em um supercomputador de baixo custo, para
execução de programação paralela.

Várias vantagens podem ser colocadas neste tipo de filosofia de alto


desempenho de computação, são elas:

 Quanto mais computadores na rede mais rápido fica sua estrutura;


 Componentes de fácil disponibilidade;
 Fácil manutenção;
 Independência de fornecedores de hardware;
 Custos muito baixo;
 Disponibilidade para criação de cursos de computação paralela;
 Se um computador do sistema parar não precisa esperar seu conserto
para recomeçar seu trabalho;

Você pode construir um na sua própria casa para colocar em prática seus
estudos em programação paralela sem gastar muito dinheiro ou perder seu
precioso tempo deslocando-se para instituições de ensino (normalmente
universidades federais) para testar seus programas.

Custo zero para o sistema operacional e ferramentas de apoio (podem ser


retirados da internet gratuitamente);

Este tipo de serviço é conhecido como clustering de alto desempenho, um tipo


de solução de alta performance de computação de baixo custo, com altos
índices de aproveitamento. Como referência a podemos citar a produção do
filme Titanic, onde 105 computadores montados em uma rede local de alta
velocidade, equipados com sistema operacional gratuito (Linux),
microcomputadores tradicionais da Digital Corporation foram utilizados para
realizar os cálculos de renderização das imagens, 40% a menos do que se
tivesse adquirido um supercomputador para realização desta mesma tarefa, e
que no decorrer do tempo poderia ficar obsoleto.

Neste tipo de filosofia entra o projeto Multipingüim, que vem a demonstrar nos
laboratórios da UNESA este tipo de implementação com todas as suas
vantagens e a possibilidade de abertura de cursos inéditos em uma
universidade particular em computação paralela.

Construindo o Multipingüim

As versões utilizadas no Multipingüim foram Conectiva Linux 7.0 (kernel


2.2.19cl) e o Red Hat 7.1 (Kernel 2.4.2). Foi utilizada uma arquitetura de
cluster denominada Beowulf, que vemos na Figura 2.

10/28
Figura 2: Cluster Beowulf típico.

O computador principal (front-end) denominado pinguim.mestre, é o


equipamento na qual está instalado:

A distribuição do sistemas de arquivos via NFS (Network File System);

Configuração do relacionamento de confiança entre os computadores escravos


hosts.equiv, evitando assim a implementação de um servidor de autenticação
NIS (Network Information Service);

Servidor RARP;

Distribuição de ip’s dinâmicos via protocolo DHCP;

Resolução de nomes via arquivo hosts - evita latência não utilizando assim o
serviço de DNS;

Serviço de boot remoto (TFTP);

Acesso remoto aos nós através de rlogin, ssh, ftp, rsh, rwho, rwall;

Gerência dos nós através de duas aplicações: bWatch, SCMS (Smile Cluster
Management System);

Bibliotecas paralelas: MPICH 1.2.2, PVM 3.4.4;

Bibliotecas matemáticas: ATLAS, BLAS, SCALAPACK, FFTW;

Aplicações de renderização de imagens com o PVMPOV e patch para MPI;

11/28
Escalonadores de tarefas: SQMS, MAUI;

Analisadores de Performance - NetPipe, NetPerf, UnixBench, LMbench,


Stream, Bonnie;

Sincronização através de rsync;

E uma futura implementação ainda não testada é a colocação de um


distribuidor de processos dinâmicos no cluster como o Bproc (patch ao kernel
do Linux desenvolvido pela NASA) e o KSIX (processo daemon da Kasetstat
University da Tailândia);

Observe que é interessante que exista uma alta disponibilidade e redundância


de hardware no controlador mestre ou que separe alguns serviços para outros
servidores tais como distribuição do sistemas de arquivos e gerenciamento do
cluster.

Computador Mestre
Dual Pentium III 550 MHz
512 KB de memória cachê
384MB de SDRAM PC-133
Gravador de CD HP 9100c
Placa Mãe com chipset Intel810
2 (duas) placas de rede 3Com 3c509
Host SCSI on-board Adaptec
Disco rígido de 9,1 GB SCSI Ultra Wide
2 (dois) Discos rígidos de 4,3 GB SCSI
Monitor de 17” SVGA Hansol
Mouse Microsoft PS/2
Teclado de 102 teclas

Computadores Escravos
Quantidade: 02 (dois)
Processador Pentium III 600 EB
Placa de Rede 3Com 3C509 PCI
Placa de Rede on-board SIS900 (utilizado para monitoramento remoto)
Floppy Disk de 1,44 MB
Placa mãe Pcchips modelo M756+

Estrutura da Rede Local


Fast Ethernet 100 Mbps
Switch TrendNet 10/100 8 portas - store and forward
Cabos CAT5 padrão EIA 568A
Rack de construção sob medida
Chave Comutadora 4 x 4 x 4 para teclado, mouse e monitor
Teclado, mouse e monitor para gerenciamento dos nós

12/28
Testes de Desempenho

Para testarmos s distribuição de processamento, usamos o programa Povray


para renderizar uma imagem padrão (skyvase.pov). Usando apenas o micro
mestre, essa renderização foi distribuída somente entre seus dois
processadores (já que ele era um Dual Pentium III). Essa renderização levou
70 segundos.

processamento entre seus dois processadores (70 segundos).

Distribuindo o processamento entre o computador mestre e um escravo


(pinguim_01), o tempo de renderização caiu para 56 segundos.

Distribuindo o processamento entre o computador mestre e os dois escravos, o


tempo de renderização caiu para 30 segundos.

Por último, distribuímos o processamento entre os três micros (um mestre e


dois escravos) e ainda, no micro mestre, configuramos para ele distribuir o
processamento entre seus dois processadores (já que, como vimos
anteriormente, ele era um Dual Pentium III). Com isso, o tempo de
renderização caiu para 21 segundos.

Conclusão

Vimos que a execução sendo executada somente no micro mestre, mesmo


dividindo o processamento entre seus dois processadores, o tempo de
renderização foi de 70 segundos. Distribuindo esse processamento com mais
duas máquinas, esse tempo caiu para incríveis 21 segundos. Isso demonstra
como é válido a construção de supercomputadores classe Beowulf com PCs
convencionais, a um custo que não é alto.

13/28
O QUE É UM CLUSTER ?

A primeira questão a ser definida diz respeito ao conceito de cluster ou como


classificá-lo junto às demais arquiteturas paralelas e distribuídas.

Um cluster pode ser definido como um conjunto de nós processadores (PCs ou


estações) autônomos e que interligados comportam-se como um sistema de
imagem única. O conceito de imagem única dita que um sistema paralelo ou
distribuído, independente de ser composto por vários processadores ou
recursos geograficamente distribuídos, deve comportar-se com um sistema
centralizado do ponto de vista do usuário. Dessa forma, todos os aspectos
relativos à distribuição de dados e de tarefas, comunicação e sincronização
entre tarefas e a organização física do sistema devem ser abstraídos do
usuário, ou seja, devem ser transparentes a ele.

Os nós de uma rede tendem a ser menos complexos do que os nós de um


cluster, uma vez que em sua maioria correspondem a PCs ou estações
monoprocessadas.

Os nós de um cluster podem conter dois ou quatro processadores, sendo de


igual ou maior complexidade do que máquinas MPP (máquinas proprietárias de
processamento massivo), se considerarmos a presença de discos e sistemas
operacionais completos no primeiro em comparação com a ausência de discos
e sistemas operacionais baseados em microkernel no segundo. Máquinas SMP
(máquinas multiprocessadas) geralmente são mais complexas, pois podem
conter um número maior de processadores.

O fornecimento de imagem única ou transparência é maior em máquinas SMP,


que o suportam em praticamente todos os níveis da arquitetura. Máquinas MPP
suportam esse conceito em apenas alguns níveis (por exemplo, aplicação). Os
clusters provêem transparência em um nível comparável ao de máquinas MPP
- o sistema operacional encarrega-se da gerência dos vários processadores e
as ferramentas mais recentes de gerenciamento permitem uma visão
centralizada de todos os nós do cluster. As redes de estações não suportam
esse conceito, visto que a autonomia dos nós impõe múltiplas imagens.

Essas arquiteturas ainda podem ser comparadas em relação ao tipo de sistema


operacional que utilizam (monolítico ou modular e heterogêneo ou
homogêneo), em relação ao modelo de comunicação empregado (memória
compartilhada ou troca de mensagens) ou ainda ao protocolo e tecnologia de
rede utilizada.

14/28
Figura 1: Um sistema em Cluster.

As redes de comunicação podem ser baseadas em switches de alta velocidade,


permitindo a transmissão simultânea de pacotes pertencentes a diferentes
pares de comunicação a altas taxas. Como o caso do fast ethernet e gigabit
ethernet. A camada de middleware (intermediária) é responsável pela
implementação de serviços que forneçam o conceito de imagem única ao
sistema, permitindo que todos os nós trabalhem como um único recurso para a
solução de aplicações.

Essa camada não é obrigatória, sendo que em algumas plataformas existentes


ela não aparece. Existe uma grande discussão entre diversos grupos de
trabalho sobre quais serviços devem compor essa camada, de forma que ela
possa prover eficiência, disponibilidade, transparência e a ilusão de uma única
máquina paralela. Entretanto, esse conjunto de serviços não é facilmente
atingível, visto que cada classe de aplicações possui necessidades diferentes e,
conseqüentemente, serviços básicos diferentes. Este conceito será muito
explorado no decorrer deste livro nos sistemas operacionais distribuídos.

Aplicações paralelas e até mesmo seqüenciais podem executar em plataformas


baseadas em clusters, mesmo que no segundo caso a maioria dos recursos
disponíveis seja subtilizada. Para o caso de aplicações paralelas, diferentes
ambientes de programação podem ser utilizados. Esses ambientes
correspondem a bibliotecas, depuradores, monitores e linguagens de
programação capazes de interagir com o software de comunicação utilizado
pela rede e prover alto desempenho para as aplicações.

15/28
O Cluster OpenMosix

O projeto Mosix - Multicomputer Operating System unIX - é um sistema


operacional distribuído, desenvolvido originalmente pelos estudantes do
professor Amnom Barak, na Universidade Hebrew em Jerusalém, Israel. Foi
utilizado nos anos 80 pela força área americana para a construção de um
cluster de computadores PDP11/45. O projeto foi desenvolvido sete fases, para
diferentes versões de UNIX e arquiteturas de computadores. A primeira versão
para PC foi desenvolvida para o BSD/OS. A última versão foi para o sistema
operacional Linux em plataforma Intel

O OpenMosix é uma extensão do projeto Mosix, baseado no GPLv2, iniciado


em 10 de fevereiro de 2002, coordenado pelo Ph.D Moshe Bar, para manter os
privilégios desta solução Linux para cluster disponível com software de código
aberto.

Este agrupamento de máquinas Linux é o que poderíamos classificar de


verdadeiro sistema de imagem simples (SSI - Single System Image), pois já é
clara que a idéia de que não se têm um cluster verdadeiro enquanto não existir
um SSI. Podemos ter como referencia os primeiros clusters SSI como o IBM
SysPlex e o cluster DEC. Em um cluster DEC você dá um telnet para um
endereço no cluster e essa chamada será atendida por qualquer nó do cluster,
e o usuário não precisa se preocupar com qual nó que irá atender esta
chamada, e qualquer programa iniciado pelo usuário será executado no nó que
possuir maior disponibilidade de recursos para atender ao programa.

O OpenMosix é uma extensão do núcleo do sistema operacional Linux, que 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. Para atingir um melhor desempenho esteé
controlado por Algoritmos de Balanceamento Dinâmico de Carga e de
prevenção contra falta de memória. Estes algoritmos são projetados para
responder dinamicamente as variações da utilização dos recursos nos diversos
nós. Isto garante que o cluster se comporte muito bem, seja numa
configuração com poucas ou com muitas máquinas, propiciando uma maior
escalabilidade.

Ou seja, se o programa que estamos rodando em uma máquina consumir


muitos recursos dela, o sistema varre toda e rede e procura uma máquina
mais "disponível no momento" em termos de memória e CPU, e desloca seu
"programa" ou parte dele para ser executado remotamente. Com isso, o
sistema ganha desempenho.

16/28
Estes algoritmos são descentralizados, ou seja, não existe a existe a
configuração de Controlador Mestre e nós escravos como ocorre no Cluster
Beowulf para computação paralela. Cada nó é um mestre para os processos
que são criados localmente, e um servidor para processos remotos, migrados
de outros nós do cluster.

Isto significa que podemos acrescentar ou remover as máquinas do cluster em


qualquer momento, com um mínimo de distúrbio no sistema. Este cluster
possui também algoritmos de monitoramento que identificam a velocidade de
cada nó, a carga da CPU e a memória livre disponível, como também como
está a comunicação interprocessos IPC e a velocidade de acesso de cada
processo.

Como o OpenMosix opera de forma silenciosa e as operações são


transparentes para as aplicações, ou seja, pode-se executar aplicações
seqüenciais e paralelas como se fosse um único computador SMP (Symmetric
Multi-Processor - Multiprocessamento simétrico). Você não precisa conhecer
onde seus processos estão sendo executados, nem se preocupar com que os
outros usuários estão fazendo na rede por isso ele usa o acrônimo "fork and
forget". O que ele faz é, pouco tempo depois de iniciar os processos, o
OpenMosix envia-os para um melhor computador da rede, o OpenMosix
continua a monitorar os novos processos e os demais, e poderá movimentá-los
pelos computadores com pouca carga de trabalho maximizando o trabalho e
melhorando a performance.

Aplicações que se beneficiam com o OpenMosix

Processos CPU-bound: processos com longos tempos de execução e baixo


volume de comunicação entre processos, ex: aplicações científicas, engenharia
e outras aplicações que demandam alta performance de computação.

Grandes compilações.

Para processos que misturam longos e rápidos tempos de execução ou com


moderadas quantias de comunicação interprocessos, é recomendado o uso das
bibliotecas MPI/PVM amplamente utilizadas em computação paralela.

Processos I/O bound misturados com processos da CPU: executados através


do servidor de arquivos, usando o sistema de arquivos distribuídos do
OpenMosix, o MFS (Mosix File System) e o DFSA (Distributed File System
Architeture).

Banco de dados que não usem memória compartilhada.

Processos que podem ser migrados manualmente.

As desvantagens do OpenMosix

17/28
Processos com baixa computação, como aplicativos com alta comunicação
interprocessos.

Aplicações com memória compartilhada.

Aplicações dependentes do hardware que necessitam de acesso a um


periférico de um nó em especial.

Aplicações com muitas threads não ganham desempenho.

Não se ganha desempenho quando se roda um único processo, tal como seu
browser.

Alicações testadas que não migraram sobre OpenMosix:

Programas em Java usando threads nativas não migram desde que eles
utilizem memória compartilhada. Green Threads JVMs, entretanto, podem ser
migradas porque cada thread Java é um processo separado.

Aplicações que usam pthreads.

MySQL, Apache, Oracle, Postgres, SAP, Baan, usam memória compartilhada.

Python com threading habilitada.

VMware, este ao rodar o Win98, algumas vezes travou e em outras o emulador


do SO parou. Você deverá ter muito cuidado quando usar o VMware com o
OpenMosix.

A característica de não migrar é uma situação normal para programas que


falhariam ao serem movimentados pelo OpenMosix. Estes programas devem
rodar como planejado no nó onde foram iniciados.

Portanto será bem interessante ao leitor executar testes com uma infinidade
de aplicações que se beneficiariam ou não com este cluster, para criarmos um
banco de dados sobre este assunto. Por isso aguardem minha nova publicação.

OpenMOSIXVIEW

O OpenMosixview é um gerenciador gráfico (GUI - Graphic User Interface), ele


é um front-end para os comandos "mosctl". Com esta aplicação é possível
gerenciar e ajustar os principais parâmetros deste cluster tais como: visualizar
a carga de todos os nós do cluster, visualização de processos remotos em
outors nós, bem como executar ou transferir processos para outros
computadores que compõem o cluster.

18/28
O OpenMosixview é um conjunto de cinco ferramentas utilizadas para
administração e monitoramento do Cluster OpenMosix. São eles:

OpenMosixview: a aplicação principal de administração/monitoramento.

OpenMosixprocs: um box para gerenciamento de processos.

OpenMosixcollector: coleta informações dos nós do cluster através de um


processo daemons para geração de logs do sistema.

OpenMosixanalyzer: utilizado para a análise dos dados coletados pelo


OpenMosixcollector.

OpenMosixhistory: histórico dos processos no nosso cluster.

19/28
Computação em Grade - Uma Visão Introdutória

Por Marcos Pitanga

Os altos custos que envolvem a aquisição de supercomputadores dedicados e a


constante melhoria nos projetos de computadores pessoais e na estrutura das
redes locais levou a idéia de se utilizar computadores pessoais independentes
interconectados em rede como plataforma para executar aplicações paralelas e
distribuídas. Todo o dia uma grande quantidade de usuários estão insaciáveis
por utilizar uma rede mundial de computadores, constituída por diversos
dispositivos heterogêneos tanto ao nível de arquitetura quanto ao nível de
sistemas, de maneira a utilizar e compartilhar esses recursos computacionais
de uma forma transparente e eficiente.

Governos, empresas e organizações de pesquisa estão trabalhando em


associação para criar redes de supercomputação, e que disponibilizarão estes
recursos computacionais agregados de um grupo para qualquer computador
conectado. As empresas e universidades que investiram nos últimos anos em
clusters de alta performance de computação, estão dando o próximo passo
para a futura computação em grades computacionais (grid computing), e os
pesquisadores estão trabalhando para criar uma interface padronizada de Web
para que diversas pessoas em várias áreas distintas possam utilizar a
supercomputação em grade como um serviço público tradicional, semelhantes
aos sistemas elétricos e/ou água/esgoto, sem se preocupar em como os
recursos estarão disponibilizados para o mesmo.

John MacCarty do MIT em 1961 já previa o que hoje temos como grid. “Se os
computadores do tipo que eu imagino, se tornarem os computadores do
futuro, então a computação poderá algum dia ser organizada como um serviço
público, assim como a telefonia o é... Esse serviço poderá se tornar a base da
nova e importante indústria”.

Figura 1: A evolução da computação de alto desempenho.

A Internet é formada por sistemas totalmente heterogêneos, fracamente


acoplados e geograficamente distribuído. Pense na quantidade de máquinas
que estão ociosas nesse momento.

20/28
Os sistemas em cluster são caracterizados em uma interligação física
localizada, construídos para resolver os problemas de uma forma mais rápida
possível por meio de aplicações paralelas e distribuídas. E isso já foram
explicados em artigos posteriores.

Já começam a ser consideradas que algumas aplicações já não podem ser mais
resolvidas dentro de um ambiente de cluster e podem necessitar o uso de
recursos em localidades remotas. O uso dos ciclos fracamente acoplado de
computadores dispersos em uma Wan pode representar um ambiente muito
interessante para processamento de alto desempenho. Com isso um usuário
acessaria via estação de trabalho uma aplicação dentre um conjunto de
aplicações disponíveis e submeter suas tarefas para serem executados nesse
ambiente. Seria de responsabilidade do próprio sistema cuidar de questões
como sincronização de tarefas, disponibilidade de recursos (processadores,
armazenamento, compartilhamento de dados), transferências de informações,
protocolos de comunicação, troca de mensagens e segurança, fossem
resolvidos de forma transparente ao usuário.

O sistema seria visto pelo usuário como um supercomputador virtual, capaz de


executar inclusive tarefas concorrentemente. Esses recursos poderiam ser
utilizados para prover muito mais do que simples serviços de comunicação, e-
mail eletrônico ou transferência de arquivos; eles teriam o potencial de
fornecer um ambiente computacional simples no qual ciclos de processamento,
comunicação e até mesmos dados seriam compartilhados através de estações
de trabalhos espalhados em prédios, estados e até mesmo entre continentes.

Uma experiência de integração de processamento distribuído é o projeto


SETI@home (http://setiathome.ssl.berkeley.edu), uma continuação do projeto
da NASA de busca de inteligência extraterrestre. Usando um software que
pode ser baixado pela Internet, um microcomputador pode analisar sinais do
rádio telescópio de Arecibo. Atualmente, existem 4 milhões de assinantes em
224 países, criando um computador virtual com uma performance de 20
Tflops.

Um outro exemplo são as famosas redes peer-to-peer, como Emule (Edonkey),


Kazaa, Gnutella, em que se compartilham arquivos por exemplo, mas sem
nenhum controle de acesso e não interoperam entre si. Com a evolução dessas
aplicações elas acabaram por inter-operar e haverá uma convergência de
interesses entre computação ponto a ponto, Internet e computação em Grade.

A Computação em Grade é próxima geração da Internet – são protocolos


adicionais construídos sobre a tecnologia da Internet. Qualquer recurso que
esteja na Grade, também está na Rede.

21/28
O Grid Computing é um novo conceito que explora as potencialidades das
redes de computadores, com o objetivo específico de disponibilizar camadas
virtuais que permitem a um usuário ter acesso a aplicações altamente
exigentes, bem como aderir a comunidades virtuais de grande escala, com
uma grande diversidade de recursos de computação e de repositórios de
informações. A diferença existente entre a computação distribuída e
computação em grade de dá pelo fato de que a computação distribuída é um
conceito que vem dos anos 80 e 90, e consiste na possibilidade de resolver um
determinado problema computacional através da utilização de diferentes
recursos distribuídos geograficamente.

A computação distribuída passa a ser uma “Computação em Grade” no


momento em que existe uma infra-estrutura física e uma infra-estrutura lógica
(software) que permita coordenar os trabalhos que vão ser processados e
garantir a sua qualidade de serviço. O Grid é um caso particular da
computação distribuída, uma vez que os Grids são orientados essencialmente
para aplicações que precisam de uma grande capacidade de cálculos, ou
enormes quantidades de dados transmitidos de um lado para o outro, ou as
duas.

O nome Grid foi idealizado baseado nas malhas de interligação dos sistemas de
energia elétrica (power-grids), em que um usuário utiliza a eletricidade sem ao
menos saber em que local ele foi gerada, sendo totalmente transparente aos
seus usuários.

O surgimento das Grids Computacionais nasceu da comunidade de


Processamento de Alto Desempenho (PAD). O conceito foi apresentado pelos
pesquisadores Ian Foster e Carl Kesselman, sendo composto por uma infra-
estrutura de hardware e software que permite-nos acesso a grandes
capacidades computacionais geograficamente distribuídas, de forma confiável,
consistente, econômica e persistente.

Na verdade o conceito é antigo, mas com uma nova dinâmica, em que se pode
utilizar a capacidade de computação (ex. Storage/CPU) sem ter que se
preocupar de onde vem, como é mantida, fazendo uma metáfora às redes
elétricas.

Chamamos de Organização Virtual (VO) quando temos participantes que


desejam compartilhar recursos para poder concluir uma tarefa. Além disso, o
compartilhamento esta além de apenas troca de documentos, isto pode
envolver acesso direto a software remoto, computadores, dados, sensores e
outros recursos. Ian Forster traduz os conceitos de Grid de duas formas
clássicas: “Compartilhamento de recursos coordenados e resolução de
problemas em organizações virtuais multi-institucionais dinâmicas” e “Grids
Computing são sistemas de suporte à execução de aplicações paralelas que
acoplam recursos heterogêneos distribuídos, oferecendo acesso consistente e
barato aos recursos, independente de sua posição física.

22/28
A tecnologia de Grids Computing possibilita agregar recursos computacionais
variados e dispersos em um único supercomputador virtual, acelerando a
execução de várias aplicações paralelas. Grids se tornaram possíveis nos
últimos anos, devido a grande melhoria em desempenho e redução de custo,
tanto de redes de computadores quanto de microprocessadores”.

A computação em grade está gerando especulações não somente na área


científica, mas também na empresarial (IBM, HP/Compaq, Oracle, Sun e
Fujitsu), pois irá permitir a redução de custos e tempo, aumento de
produtividade, compartilhamento de recursos e informações, dentre outras
possibilidades.

Com sua expansão, pode-se chegar, no final, em algo como a formação de um


Grid Global, uma rede distribuída global de colaborações entre seus
participantes, capaz de prover recursos talvez inatingíveis por um cluster
isolado. E isto já está sendo feito em diversos países do mundo, inclusive no
Brasil.

Grids são construídos como um grupamento de serviços básicos


independentes. Um aspecto essencial dos serviços de Grid é que esses estão
disponíveis uniformemente através dos ambientes distribuídos na Grid. Os
serviços são agrupados em um sistema integrado, também chamado de
middleware. Exemplos de ferramentas atuais de Grid incluem Globus, Legion,
OpenGrid, AppLeS.

O Grid permite também o uso de técnicas de programação paralela por


passagem de mensagens. O ambiente MPI (“Message Passing Interface”) está
disponível no Grid através da versão MPICH-G2 (versão portátil do MPI para o
Globus). O padrão MPI define uma biblioteca de rotinas que implementam uma
comunicação ponto a ponto, em que a operação “send” é usada para iniciar
uma transferência de dados entre dois programas concorrentes e a operação
“receive” é usada para obter dados do sistema no espaço de memória da
aplicação; existem ainda operações coletivas envolvendo múltiplos processos.

Mas que devido a alta latência provocada na comunicação entre processos, as


aplicações devem ser construídas com uma granularidade bem projetada de tal
forma que se comuniquem o mínimo possível. Então, as aplicações mais
adequadas ao Grid são as que possuem tarefas independentes (bag of tasks),
pois as tarefas não dependem da execução de outras e podem ser executadas
em qualquer ordem.

O Grid Computing é um desafio bem maior do que formas mais simples de


computação paralela e distribuída. Hoje, a maioria dos projetos de Grid
permanecem localizados nos centros de supercomputação e laboratórios
universitários.

23/28
Os centros de pesquisa são ligados a conexões em rede cerca de 20 vezes
mais rápidas do que as conexões de banda largas normais, são equipadas com
sistemas de armazenamento capazes de lidar com vastos arquivos de dados e
com computadores de alta performance. O Grid Computing é um conceito
sobre o qual existe ainda uma grande expectativa e que poderá evoluir em
diferentes direções, mas que é já hoje entendido como a próxima geração da
Web para a comunidade científica.

Internet x Grid x Cluster

A internet nasceu no início da década de 70, e somente a partir de 1995, como


aparecimento dos serviços www, foi que se tornou tão popular, saindo dos
meios militares e acadêmicos. Seu objetivo era a interligação de diferentes
ambientes computacionais e geograficamente dispersos. Os web sites
desenvolvidos pela indústria sempre foram interoperáveis em relação usuário-
site, por meio de aplicações criadas neste contexto, em que o usuário dispõe
de um menu de serviços fechados.

O que ocorre em um ambiente de Grid é o inverso, onde o usuário tem de


submeter suas aplicações para serem resolvidas dentro do ambiente por ele
montado. Um ambiente de cluster constitui em um sistema formado por
hardware e software conectados em um local apenas, servindo a usuários que
estão trabalho somente em um projeto, usado exclusivamente para resolver os
problemas computacionais de uma determinada organização. Por outro lado,
um Grid presta serviços de uma forma geograficamente distribuída. Em um
cluster, os recursos são gerenciados por uma entidade central, e os
computadores agem como se fosse um único dispositivo. Nas configurações em
Grid, cada “organização virtual” faz o gerenciamento de seus recursos não
tendo a visão de uma imagem única do sistema. Ou seja, o usuário tem
consciência dos diversos serviços disponíveis e que deverá requisitá-los para
sua utilização. Portanto, os Grids são mais heterogêneos, complexos e
distribuídos.

Para o Grid Computing, as aplicações leves são as ideais pois estas requisitam
relativamente menos das redes. Mesmo tendo máquinas com uma alta
conexão, estas redes com baixo fluxo de dados constitui uma espécie de
gargalo ao requisito fundamental para aplicações pesadas. A multiplicidade das
velocidades das diversas redes implica em alguns pontos de gargalo, e que
compromete a performance do nosso supercomputador virtual. Para
sacramentarmos Grid x Cluster, utilizaremos a referência do Prof Buyya. “Se
acontece o compartilhamento de recursos gerenciado por um único sistema
global sincronizado e centralizado, então é um cluster. Em um cluster, todos os
nós trabalham cooperativamente em um objetivo comum e o objetivo é a
alocação de recursos executada por um gerente centralizado e global. Em Grid,
cada nó, possuí seu próprio gerente recursos e política de alocação".

24/28
Benefícios de um Grid
1. Organizações podem agregar recursos - a computação em Grid permite que
as organizações possam agregar recursos com toda a infra-estrutura dos ITs,
não importando localização global. Isso elimina situações onde um site esteja
sendo executado com sua capacidade máxima, enquanto outros tenham ciclos
disponíveis.

2. Poderosa plataforma de suporte a Organizações Virtuais - organizações


podem melhorar dramaticamente sua qualidade e velocidade de produtos e
serviços disponibilizados, enquanto os custos de IT são reduzidos por habilitar
a colaboração transparente dos recursos compartilhados.

3. Acesso distribuído a diversos tipos de recursos - permite que empresas


acessem e compartilhem bases de dados de forma remota. Isto é
essencialmente benéfico para as ciências da saúde ou comunidades de
pesquisa, onde volumes grandiosos de dados são gerados e analisados durante
todo dia.

4. Colaboração entre centro de pesquisas - possibilita a larga dispersão das


organizações para que facilmente possam colaborar em projetos pela criação
da habilidade do compartilhamento de tudo, desde aplicações a dados, até
projetos de engenharia, etc.
5. Melhor utilização de largura de banda - pode-se criar a mais robusta e
resistente infra-estrutura de informações.

6. Aproveitamento de recursos ociosos – pode-se aproveitar os ciclos de


processamento idle disponíveis dos PCs desktops que se encontram em várias
localidades pelo planeta. Por exemplo, os computadores que se encontram
tipicamente ociosos durante a noite de uma empresa em Tókio pode ser
utilizado durante o dia para operações na América do Sul.

Desafios operacionais e de pesquisa a serem vencidos:


 Localização dos recursos;
 Reserva de recursos;
 Capacidade para adaptar-se a mudanças no ambiente;
 Criação e escalonamento das tarefas;
 Autonomia de cada grupo participante para definir suas próprias políticas
de segurança;
 Recursos requisitados podem estar em diferentes localidades;
 Qualidade de serviço exigida por cada aplicação.

Para se utilizar um sistema em Grid são necessários diversos protocolos,


padrões e ferramentas de software. Para desenvolver padrões comuns de
processamento a Universidade do Sul da Califórnia, o Laboratório Nacional de
Argonne e a Universidade de Chicago através do Projeto Globus
(http://www.globus.org) estão desenvolvendo um conjunto de especificações
técnicas e ferramentas de software para Grid Computing, comandados pelo
pesquisador Ian Forster.

25/28
A padronização da tecnologia de Grid já vem ocorrendo a bastante tempo,
sendo que, devido ao uso de diversas empresas, os esforços passaram a ter
uma prioridade muito maior nesses últimos três anos. Principais Projetos de
Grid

Globus
O projeto Globus foi iniciado em 1997, e é considerado o padrão de fato para a
computação em Grid. Seus objetivos de baseiam no desenvolvimento e
promoção de protocolos padrões para permitir interoperabilidade entre infra-
estruturas. Obteve uma grande atenção por parte da mídia, inclusive atraindoa
atenção de empresas (exemplo: IBM). O Globus Toolkit é um conjunto de
ferramentas de código aberto baseados por bibliotecas escritas em C e que
atualmente só rodam sobre plataforma Unix, desenvolvidos por Ian Forster,
cientista sênior do Laboratório Nacional Argonne, Carl Kesselman, diretor do
Centro para Tecnologias de Grade do Instituto de Ciências da Informação, da
Universidade do Sul da Califórnia e Steve Tuecke da U. of Chicago, financiados
principalmente pelo governo americano, com subvenção do Departamento de
Energia, da Fundação Nacional de Ciência, da Nasa e da Agência de Projetos de
Pesquisa Avançada da Defesa, e tem como objetivo facilitar a computação em
grade por meio de APIs e SDKs.

Atualmente na versão 3.x, o que aproximadamente representa a terceira


geração do sistema e incluem serviços e bibliotecas para monitoração,
descobrimento e gerenciamento de recursos, tais como segurança e
gerenciamento de arquivos. Tendo sido a solução de maior impacto na
comunidade da computação de alto desempenho. O Globus e os protocolos
definidos em sua arquitetura tornaram-se um padrão de fato como infra-
estrutura para computação em grid. Os ramos de pesquisa atuais são:
Gerenciamento de Recursos, Gerenciamento e Acesso a Dados, Ambientes de
Desenvolvimento de Aplicações, Serviços de Informação e Segurança.

Inicialmente, pode-se usar Globus apenas para agendar a execução em


múltiplas máquinas. – Posteriormente, pode-se adicionar uma biblioteca para
detecção e correção de falhas e finalmente, pode-se utilizar os serviços Globus
de distribuição de arquivos.

Legion
Legion é um sistema de grade computacional que foi desenvolvido pela
Universidade de Virginia. Um dos pioneiros em computação em grade, o
desenvolvimento do Legion começou em 1993. Em 2001, seus idealizadores
fundaram a Avaki, uma empresa que atualmente desenvolve e comercializa
sistemas que utilizam a tecnologia do Legion.

O Legion foi desenvolvido utilizando-se o paradigma de orientação a objetos.


Em Legion, todos os elementos da Grade são representados por objetos, sejam
eles dados ou objetos reais, tais como microscópios, telescópios e outros
equipamentos.

26/28
Objetos comunicam-se por chamadas de métodos assíncronas, e as interfaces
são definidas por um tipo de IDL. As classes possuem responsabilidades de
sistema como: criação de objetos, ativação/desativação e agendamento da
execução.

Legion se destaca pela sua preocupação com o suporte à aplicações paralelas.


O Legion possui uma implementação das bibliotecas MPI (Message Passing
Interface) e PVM (Parallel Virtual Machine). Para utilizar um programa escrito
em MPI ou PVM no Legion basta recompilá-lo utilizando as bibliotecas
fornecidas pelo Legion. Isso permite que a migração da infra-estrutura antiga
para a infra-estrutura do Legion seja praticamente instantânea.

Além das bibliotecas, Legion fornece suporte nativo a algumas linguagens de


programação paralela. É possível utilizar as linguagens MPL (Mentat
Programming Language, uma extensão de C++ para programação paralela),
BFS (Basic Fortran Support) e Java.

Por fim, aplicações legadas que não utilizem nenhuma das bibliotecas ou
linguagens acima podem ser encapsuladas dentro de objetos Legion. Basta o
usuário registrar o programa legado com o comando legion_register_program
e o sistema constrói um objeto Legion que encapsula o programa legado e,
automaticamente, ele se torna elegível para ser executado pelo sistema.

Isso garante que qualquer programa possa ser executado no ambiente do


Legion. Se o programa realizar algum tipo de comunicação, basta que o
programador escreva um adaptador para o programa legado que converta as
chamadas a biblioteca de comunicação à chamadas a métodos de comunicação
do Legion.

Conclusão

Podemos traduzir então que, um Grid Computacional resume-se em:

Computadores em diferentes localidades;


Rede de grande área;
Apropriados para computação intensiva, alto-desempenho;
Ambiente colaborativo;
Grande quantidade de dados;
Diferentes organizações;
Permitem compartilhar, agregar e escolher recursos computacionais dos mais
variados tipos:
• supercomputadores
• dispositivos especiais - telescópios, radares, etc.
• sistemas de armazenamento
• bancos de dados
• computadores comuns

27/28
As dificuldades encontradas são muitas, e os estudos são incessantes nessas
áreas, destacando-se:

• Localização dos recursos;


• Reserva de recursos;
• Capacidade para adaptar-se a mudanças no ambiente;
• Criação e escalonamento das tarefas;
• Autonomia de cada grupo participante para definir suas próprias políticas
de segurança;
• Recursos requisitados podem estar em diferentes localidades;
• Qualidade de serviço exigida por cada aplicação.

No futuro bem próximo as aplicações baseadas na web vão usufruir os


benefícios das grades computacionais, teremos então uma evolução natural
dos sistemas localizados sendo acessíveis mundialmente e o aluguel de
recursos computacionais ociosos, principalmente aqueles relacionados a
processamento massivo.

28/28

Você também pode gostar