programação distribuída utilizando mosix e dipc andré mendes carla marchioro cristina machado...

40
Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Upload: internet

Post on 21-Apr-2015

108 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Programação Distribuída utilizando Mosix e DIPC

André Mendes

Carla Marchioro

Cristina Machado

2000

Page 2: 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

Page 3: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Memória VirtualMemó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.

Page 4: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Representação da memória virtual

Página 1

Página 2

Página n

Mapa de memória

Memóriavirtual

Memóriafísica

Disco

Page 5: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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.

Page 6: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Tipos de memória compartilhada

Entre processos:P2 - memória virtual

P1 - memória virtual

Memória real

Page 7: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Tipos de memória compartilhada

Entre CPU’s:

CPU 3

CPU 2

CPU 4

CPU 1 Memória

Page 8: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Tipos de memória compartilhada

Entre Computador:

Page 9: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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.

Page 10: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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.

Page 11: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Clusters

• Os clusters são dividos em dois tipos:

– NoW• Network of Workstations (heterogêneos)

– CCS• Cluster of Connected Servers (homogêneo)

Page 12: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 13: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Comunicação Interprocessos (IPC)

Processo Processo I I P P C C

KERNEL

Mesma máquina

Page 14: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

• 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

Motivação para processamento distribuído

Page 15: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 16: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 17: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

DIPC - Comunicação interprocessos distribuída

K e r n e lAplicação

D I P C

... I P C

Suporte de rede

AplicaçãoD I

P C... I P C

Suporte de rede

Page 18: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 19: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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 - Características

Page 20: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

DIPC -Implementação

Kernel

– Aplicar um "patch" no "código fonte" do kernel.

– Após a aplicação do "patch", deve-se recompilar o kernel.

Page 21: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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 -Implementação

Page 22: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

DIPC - Funcionamento

Estrutura de comunicação padronização

Processo 1Processo 1

Processo nProcesso n

Page 23: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

DIPC - Cluster

Cluster

JUIZ

Page 24: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

DIPC - Memória compartilhada distribuída

Segmento

Computador 1 Computador 2 Computador n

Copia

Page 25: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

DIPC - Memória compartilhada distribuída

Página

Computador 1 Computador 2 Computador n

4 k

Copia

Page 26: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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.

Page 27: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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.

Page 28: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Motivação para o MOSIX

• Balanceamento dinâmico e inteligente de carga

• Clusters heterogênios

• Transparência

• Escalabilidade

• Descentralização

• Autonomia dos nós

Page 29: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 30: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

• 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

Page 31: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Funcionamento do MOSIX

• Composto de duas partes:

– Migração Preemptiva de Processos

– Algoritmos adaptativos para realizar o compartilhamento de recursos.

Page 32: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

MOSIX - Cluster

Cluster

Page 33: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Migração Preemptiva de Processos

ProcessoLocal

Representante

Modo Usuário

Modo Supervisor

Máquina #1

Camada deAdaptação

Representado

Modo Supervisor

Modo Usuário

Máquina N

Page 34: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

• 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

Page 35: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

Algorítmos de compartilhamento de recursos

P1

PnP3P2

Computador 1

P1

Computador 1

P2

Computador 2PnP3

Computador 3Ocup.33% Ocup.30%Ocup.25%

P1

Computador 1

P2

Computador 2PnP3

Computador 3Ocup.33% Ocup.80%Ocup.25%

P4

MigraçãoPreempitiva

Saturação

Algorítmos

Normal

Page 36: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

MOSIX -Implementação

Kernel

– Aplicar um "patch" no "código fonte" do kernel.

– Após a aplicação do "patch", deve-se recompilar o kernel.

– Configurar estaticamente quais máquinas faz parte do cluster MOSIX.

Page 37: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 38: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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

Page 39: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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. Modern Operating System. Prentice-Hall 1992.

• [TANENBAUM95] Tanenbaum, Andrew. Distributed Operating System. Prentice-Hall 1995.

Page 40: Programação Distribuída utilizando Mosix e DIPC André Mendes Carla Marchioro Cristina Machado 2000

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