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 Página 1 Página 2 Página n Mapa de memória Memória virtual 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 3 CPU 2 CPU 4 CPU 1 Memória
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 KERNELKERNEL Mesma máquina
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
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 KernelKernel Aplicação DIPCDIPC... IPCIPC Suporte de rede Aplicação D I P C... IPCIPC Suporte de rede
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 - Características
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.
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
DIPC - Funcionamento Estrutura de comunicação padronização Processo 1 Processo n
DIPC - Cluster Cluster JUIZ
DIPC - Memória compartilhada distribuída Segmento Computador 1Computador 2Computador n Copia
DIPC - Memória compartilhada distribuída Página Computador 1Computador 2Computador n 4 k Copia
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
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
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 Pn P3 P2 Computador 1 P1 Computador 1 P2 Computador 2 Pn P3 Computador 3 Ocup.33% Ocup.30%Ocup.25% P1 Computador 1 P2 Computador 2 Pn P3 Computador 3 Ocup.33% Ocup.80%Ocup.25% P4 Migração Preempitiva Saturação Algorítmos Normal
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 [KARIMI99] Karimi, Kamran, Wellcome to DIPC,,,. [KARIMI99] Karimi, Kamran, DIPC,, 19/09/1999, 13:21. [BING] Matt, DIPC, [SILBERCHATZ94] Silberchatz, Abraham e Galvin, Peter. Operating System Concepts. Addison Wesley, [TANENBAUM92] Tanenbaum, Andrew. Modern Operating System. Prentice-Hall [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