segunda-feira, 15 de agosto de 2011

Cluster #1


Um Cluster pode ser definido como um sistema onde dois ou mais computadores trabalham de maneira conjunta para realizar o processamento de grandes quantidades de dados. Esses computadores são interligados através de uma rede (como uma Ethernet por exemplo). Em outras palavras, esses computadores dividem as tarefas de processamento, porém trabalham como se fossem uma única máquina apenas.
Os clusters surgiram devido à necessidade de processamento de uma grande demanda de informações com baixos recursos financeiros. Ele seria um método para possuir o poder de processamento equivalente a de um supercomputador, porém com um custo muito mais acessível.
Clusters não servem para processar dados em tempo real, apenas para processar grandes quantidades de dados, que podem ser quebrados em partes menores e divididos para vários computadores. Eles são muito populares na aplicação de efeitos especiais e na renderização de imagens para filmes de cinema. Muitos filmes de animação atuais (como por exemplo, Shrek e Final Fantasy) foram realizados inteiramente em clusters Beowulf.

Para a implementação de um cluster, é preciso considerar a aplicação que será executada. Se o “problema” a ser resolvido necessitar de uma grande troca de informações com o nó principal (problemas de granulosidade fina), o cluster não será tão eficiente quanto um supercomputador, devido ao alto tráfego de rede. Porém, se a situação for inversa (problemas de granulosidade grossa), e cada máquina receber sua quantidade de informações para processar individualmente, o cluster será tão eficiente quanto um supercomputador.
“Os clusters fornecem desempenho e tolerância a falhas, não encontrados em qualquer sistema com multiprocessamento simétrico.” (PITANGA).
Arquitetura:

– Hardware

Para a existência de um cluster são necessários pelo menos dois computadores. Evidentemente, quanto mais computadores (ou nós como são chamados) existirem no cluster, maiores serão os custos de implementação e manutenção, porém, também será maior seu poder de processamento.

Não existem configurações específicas para os computadores que irão compro um cluster, de forma que até computadores considerados obsoletos podem integrá-lo sem problema algum.


De uma forma geral, nesta parte de Hardware podemos dividir em duas partes principais: execução e transmissão de dados.
Execução ou processamento de dados é realizado pelos computadores que compõem o cluster. Os recursos que influenciam no desempenho desses computadores são: Processador, Memória RAM, Placa mãe, Disco rígido e Memória Virtual (Swap).
A transmissão de dados é fundamental neste tipo de operação. O principal meio de comunicação de dados entre os nós (computadores) é a rede, sendo ela composta por meios físicos e mecanismos de controle para o transporte, além da política de sincronização de dados. Algumas das principais tecnologias de redes utilizadas em clusters são a Ethernet a Myrinet e a cLan.
– Sistemas operacionais
A principal função de um sistema operacional (SO) é controlar o funcionamento de um computador, gerenciar a utilização e o compartilhamento dos seus diversos recursos. Em clusters, o SO é o principal sistema e através dele, deve ser garantido o funcionamento das seguintes funções:
- Controle de recursos: o controle de entrada e saída de cada nó do cluster.
- Monitoração: verificação da disponibilidade de cada nó, assim como carga que cada nó pode receber.
- Contabilidade: medir o desempenho do cluster.
- Consulta: armazenar fila de prioridades das tarefas a executar.
- Planificação: organizar da melhor maneira quais tarefas serão distribuídas entre os nós do cluster.
– Biblioteca de comunicação
As Bibliotecas de comunicação são responsáveis pela comunicação entre os nós do cluster. Cada tipo de biblioteca de comunicação tem suas particularidades, ou seja, possuem maneiras diferentes de solucionar os problemas de comunicação paralela.
Atualmente existem duas bibliotecas que se destacam: a PVM (Parallel Virtual Machine) e a MPI (Message Passing Interface).
1 - PVM

“O PVM é uma biblioteca de comunicação que emula computação concorrente heterogênea de propósitos gerais em computadores interconectados, no qual pode se trabalhar com diversas arquiteturas.” (BACELLAR).
A idéia geral do PVM seria montar uma máquina virtual contendo n processadores e utilizá-los para o envio de tarefas e recebimento de resultados de maneira cooperativa. Utilizando apenas rotinas básicas de envio e recebimento de mensagens.
2 – MPI
O MPI surgiu com o objetivo de padronizar a troca de mensagens em ambientes paralelos de memória distribuída, e devido à necessidade de resolver problemas relacionados à portabilidade existente entre as diferentes plataformas e características exclusivas de algumas arquiteturas paralelas.
Além da padronização nas trocas de mensagem, o MPI busca otimizar a comunicação e aumentar o desempenho de aplicações paralelas ou distribuídas. A eficiência e a generalidade dele são garantidas através da disponibilidade de diversas implementações para a mesma funcionalidade. E essa biblioteca ainda possui a vantagem de suportar programação modular.

Nenhum comentário:

Postar um comentário