Programação Distribuída
utilizando Mosix e DIPC
André Mendes
Carla Marchioro
Cristina Machado
2000
Sumário
• Conceitos Básicos
–
–
–
–
–
Memória Virtual
Memória Compartilhada
Sockets
Clusters
Comunicação entre processos
• Motivação para processamento distribuído
• DIPC
• MOSIX
Memória Virtual
Memória Virtual: Separação lógica da
memória do usuário da memória física
(real).
Vantagens:
– Programas podem ser maiores que o tamanho
da memória principal.
– Facilita a programação, não é necessário se
preocupar com a memória disponível.
Representação da memória
virtual
Memória
virtual
Página 1
Página 2
Página n
Mapa de
memória
Memória
física
Disco
Memória Compartilhada
• Utilização de uma memória comum, onde
se pode ler ou escrever.
• A memória compartilhada pode ser a
memória física ou um arquivo em disco.
Tipos de memória compartilhada
Entre processos:
P2 - memória virtual
P1 - memória virtual
Memória real
Tipos de memória compartilhada
Entre CPU’s:
CPU 1
CPU 2
Memória
CPU 4
CPU 3
Tipos de memória compartilhada
Entre Computador:
Sockets
Interface genérica para comunicação que faz
uso de uma porta de comunicação.
• Vantagem: Comunicação entre processos
na mesma máquina ou em rede.
• Desvantagem: Difícil de programar.
Clusters
• São agrupamentos de computadores que
utilizam seus recursos de forma cooperativa
para resolver problemas.
• O cluster é visto como uma única máquina,
na qual faz-se requisições e recebe
resultados.
Clusters
• Os clusters são dividos em dois tipos:
– NoW
• Network of Workstations (heterogêneos)
– CCS
• Cluster of Connected Servers (homogêneo)
Comunicação entre processos (IPC)
• É uma API que implementa a comunicação
entre processos de uma forma padrão.
• Para isto se pode utilizar:
– Memória compartilhada
– Troca de mensagens (send e receive)
– Pipes
– Arquivo...
Comunicação Interprocessos (IPC)
Processo
K I
E P
R C
N
E
L
Processo
I
P
C
Mesma máquina
Motivação para processamento
distribuído
• Aumento do poder de processamento com
baixo custo
• possibilidade de software de prateleira
•
•
•
•
Aplicações são distribuídas por definição
Maior escalabilidade
Tolerância a falhas
Atender simultaneamente um número
elevado de usuários
• Ambiente heterogêneos
• computador
• tecnologia de rede
Alguns problemas...
• Não existe mecanismo de balanceamento de
carga
• Sistemas heterogêneos de diferentes
gerações
• Compartilhamento de partes de processos
• Programação simplificada
• Transparência
DIPC - Comunicação
interprocessos distribuída
• Solução de software para permitir a construção
e programação em múltiplos computadores.
• É uma extensão das funcionalidades nos
mecanismos do IPC do Unix System V para
que o mesmo funcione em rede.
• Possibilita :
– Troca de mensagem
– Memória compartilhada distribuída
DIPC - Comunicação
interprocessos distribuída
K
e
r
n
e
l
Aplicação
Aplicação
...
...
I
P
C
D
I
P
C
Suporte de
rede
I
P
C
D
I
P
C
Suporte de
rede
DIPC - Características
 O sistema é simples. A simplicidade dos
algoritmos é preferível ao desempenho
 Transparente
 Preservar a semântica do UNIX o máximo
possível
 Programador interfere diretamente no
desempenho do sistema.
 Ex. quantidade de dados a ser transferidos.
DIPC - Características
 Executa o código do DIPC no espaço do
usuário
 Portabilidade dos sistemas antigos
 Portabilidade - DIPC trabalha tanto em
Redes Locais (LAN) quanto em Redes de
Longa Distância (WAN);
 DIPC trabalha em um ambiente heterogêneo
DIPC -Implementação
 Kernel
– Aplicar um "patch" no "código fonte" do
kernel.
– Após a aplicação
recompilar o kernel.
do
"patch",
deve-se
DIPC -Implementação
Programador
• Definir um "flag" nos "header file".
– Não é necessário ligar nenhuma biblioteca ao
código fonte.
/* Exemplo do Header file de
uma aplicacao em DIPC */
#include MSG_MODE ( IPC_DIPC
IPC_EXCL 0777)
DIPC - Funcionamento
Processo 1
Processo n
Estrutura de
comunicação
padronização
DIPC - Cluster
JUIZ
Cluster
DIPC - Memória compartilhada
distribuída
Segmento
Copia
Computador 1
Computador 2
Computador n
DIPC - Memória compartilhada
distribuída
Página
Copia
4k
Computador 1 Computador 2
Computador n
DIPC - Próximos passos
 Estudar o uso de DIPC dentro uma WAN, e
fazer as mudanças necessárias para que ele
funcione.
 Portar o DIPC para arquiteturas não Intel
que são suportadas pelo Linux, inclusive
PowerPC, SPARC, ALFA, MIPS e ARM.
 Portar o DIPC para outros sistemas
operacionais UNIX que suportam o system
V.
 Tornar o DIPC tolerante a falhas.
MOSIX
Extensão para os sistemas operacionais
baseados no UNIX que faz com que um
cluster de computadores se comportem
como um grande e único supercomputador
através da utilização de Migração
Preemptiva de Processos e Balanceamento
de Memória.
Motivação para o MOSIX
• Balanceamento dinâmico e inteligente de
carga
• Clusters heterogênios
• Transparência
• Escalabilidade
• Descentralização
• Autonomia dos nós
Característica do MOSIX
• Algorítmos probabilísticos para
disseminação das informações
• Migração preemptiva de processos
• Balanceamento dinâmico de carga
• Anunciador de memória
• Comunicação entre núcleos eficiente
• Controle descentralizado e autonomia
• Escalonamento
Funcionamento do MOSIX
• Implementado no núcleo do sistema usando
a tecnologia de módulos, o que resulta que a
interface entre o núcleo do sistema e as
aplicações não é modificada, assim isto tudo
é transparente para as aplicações.
• Construção do cluster de forma simples,
com componentes padrões e progressiva.
Funcionamento do MOSIX
• Composto de duas partes:
– Migração Preemptiva de Processos
– Algoritmos adaptativos para realizar o
compartilhamento de recursos.
MOSIX - Cluster
Cluster
Migração Preemptiva de Processos
Máquina #1
Máquina N
Modo Usuário
Modo Usuário
Representado
Processo
Local
Camada de
Adaptação
Representante
Modo Supervisor
Modo Supervisor
Algorítmos de compartilhamento
de recursos
• Entram em ação em situações de escassez
de recursos para:
– maximizar a ocupação de memória global do
cluster
– diminuir a sobrecarga individual de cada
processador
Algorítmos de compartilhamento
de recursos
Migração
Preempitiva
Normal
P1
P2
P3
Pn
Computador 1
P1
P2
P3
Pn
Computador 1 Computador 2 Computador 3
Ocup.25%
Ocup.30%
Ocup.33%
P1
Algorítmos
P4
P2
P3
Saturação
Pn
Computador 1 Computador 2 Computador 3
Ocup.25%
Ocup.80%
Ocup.33%
MOSIX -Implementação
 Kernel
– Aplicar um "patch" no "código fonte" do
kernel.
– Após a aplicação
recompilar o kernel.
do
"patch",
deve-se
– Configurar estaticamente quais máquinas faz
parte do cluster MOSIX.
MOSIX - Próximos passos
• Migração de Sockets
• redução da sobrecarga na comunicação
interprocessos
• Migração de arquivos temporários
• melhorar o desempenho de programas como
compiladores
• Pesquisa de algorítmos para NetworkRAM
• permitir que processos grandes utilizem toda a
memória disponível nos diversos nós
Conclusão
• Utilização de máquinas mais baratas para
resolver problema que demandem enorme
poder de processamento
• Melhor utilização das diversas máquinas
que compõem um rede local
• Melhorar a escalabilidade das soluções em
cluster que existem hoje
• Facilitar a vida dos programadores
• Utilização dos programas existentes
Referências
• [KARIMI2000] Karimi, Kamran e Sharifi, Mohsen, DIPC:
The linux Way of Distributed Programming. Linux
Journal, 75:10-17, January 1999.
• [KARIMI99] Karimi, Kamran, Wellcome to DIPC, , ,.
• [KARIMI99] Karimi, Kamran, DIPC, , 19/09/1999, 13:21.
• [BING] Matt, DIPC, http:// , , .
• [SILBERCHATZ94] Silberchatz, Abraham e Galvin, Peter.
Operating System Concepts. Addison Wesley, 1994.
• [TANENBAUM92] Tanenbaum, Andrew.
Operating System. Prentice-Hall 1992.
• [TANENBAUM95] Tanenbaum, Andrew.
Operating System. Prentice-Hall 1995.
Modern
Distributed
Referências
• [BARAK99] Barak, Amnon; La’adan, Oren; Shiloh,
Amnon; Scalable Cluster Computing with MOSIX for
Linux,1999,The Hebrew University of Jerusalem.
• [BARAK95] Barak,A.; Laden,O.;Yarom,Y., The NoW
MOSIX and its Preemptive Process Migration Scheme.
Bulletin of the IEEE Technical Committee on Operating
Systems and Application Environments, Summer 1995
• [BARAK97] Barak,Amnon; Braverman, Avner; Memory
Ushering in a Scalable Computing Cluster. 1997, The
Hebrew University - Institute of Computer Science.
Jerusalem
Download

Programação Distribuída utilizando Mosix e DIPC