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.

 

Multi Programação  Home  Implemetação