400 likes | 491 Views
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.
E N D
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 Disco Memória física Memória virtual Mapa de memória Página 1 Página 2 Página n
Memória Compartilhada • Utilização de uma memória comum, onde se pode ler ou escrever. • A memória compartilhadapode 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 CPU 2 Entre CPU’s: CPU 1 Memória CPU 3 CPU 4
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 Processo I I P P C C K E R N E L 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
K e r n e l DIPC - Comunicação interprocessos distribuída Aplicação Aplicação D I P C D I P C ... I P C ... I P C Suporte de rede 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 do "patch", deve-se recompilar o kernel.
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 Estrutura de comunicação padronização Processo 1 Processo n
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 4 k 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
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 P1 Migração Preempitiva P2 P3 Normal P1 Pn P2 Computador 2 Computador 3 Computador 1 P3 Ocup.25% Ocup.30% Ocup.33% Pn Computador 1 P1 P4 P2 Algorítmos P3 Saturação Pn Computador 2 Computador 3 Computador 1 Ocup.25% Ocup.80% Ocup.33%
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.
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. Modern Operating System. Prentice-Hall 1992. • [TANENBAUM95] Tanenbaum, Andrew. Distributed Operating System. Prentice-Hall 1995.
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