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