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.
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 distubio 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
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.
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.
|