Alocação Dinâmica e Transparente de Computadores Ociosos em Java Márcia Cristina Cera, Rodrigo Righi e Marcelo Pasin {cera, rodrigor, pasin}@inf.ufsm.br Universidade Federal de Santa Maria - UFSM Laboratório de Sistemas de Computação - LSC VI Workshop em Sistemas Computacionais de Alto Desempenho
2/25 Roteiro 1 2 3 4
3/25 Programar paralelo de forma intuitiva Arquiteturas paralelas com memória distribuída Sistemas distribuídos Modelos paralelos - programador controla paralelismo Java RMI Assíncrono
4/25 Nossa Proposta Cadeo - Controle e alocação dinâmica de estações ociosas Objetivos Possibilitar a utilização de computadores disponíveis em arquiteturas paralelas Desenvolver aplicações de forma simples e intuitiva Oferecer transparência de localização e dinamicidade
5/25 1 2 3 4
6/25 Rede Aglomerado
6/25 Rede Aglomerado
6/25 Rede Aglomerado
6/25 Rede Aglomerado
7/25 Rede Aglomerado
7/25 Rede Aglomerado A s= {...}
7/25 Rede Aglomerado E A s= {...} E
8/25 Decisões de Projeto Linguagem de Programação: Java Linguagem orientada a objetos Write once, run anywhere Modelo de Programação Necessidade de invocação assíncrona de métodos remotos Assincronismo oferecido pelo ProActive Objetos Ativos Migração Comportamento na Perda de Computadores As tarefas em execução serão migradas para computadores disponíveis
8/25 Decisões de Projeto Linguagem de Programação: Java Linguagem orientada a objetos Write once, run anywhere Modelo de Programação Necessidade de invocação assíncrona de métodos remotos Assincronismo oferecido pelo ProActive Objetos Ativos Migração Comportamento na Perda de Computadores As tarefas em execução serão migradas para computadores disponíveis
8/25 Decisões de Projeto Linguagem de Programação: Java Linguagem orientada a objetos Write once, run anywhere Modelo de Programação Necessidade de invocação assíncrona de métodos remotos Assincronismo oferecido pelo ProActive Objetos Ativos Migração Comportamento na Perda de Computadores As tarefas em execução serão migradas para computadores disponíveis
9/25 Decisões de Projeto Modelo das Aplicações Paralelas Tarefas são implementadas em objetos remotos Tarefas podem ser representadas por: Chamadas a métodos: dependentes da execução das chamadas remotas - modelo dividir para conquistar Objetos ativos: chamadas representam interações entre tarefas - modelo sacola de tarefas
9/25 Decisões de Projeto Modelo das Aplicações Paralelas Tarefas são implementadas em objetos remotos Tarefas podem ser representadas por: Chamadas a métodos: dependentes da execução das chamadas remotas - modelo dividir para conquistar Objetos ativos: chamadas representam interações entre tarefas - modelo sacola de tarefas
9/25 Decisões de Projeto Modelo das Aplicações Paralelas Tarefas são implementadas em objetos remotos Tarefas podem ser representadas por: Chamadas a métodos: dependentes da execução das chamadas remotas - modelo dividir para conquistar Objetos ativos: chamadas representam interações entre tarefas - modelo sacola de tarefas
10/25 Decisões de Projeto Foco Principal do Trabalho Estruturação e criação de uma base funcional para o sistema Esta base deve facilmente poder receber adaptações Oferecer transparência de localização e dinamicidade Emprego de políticas de decisão ad hoc
11/25 Interação entre Cadeo e Aplicação Paralela Interface proporciona a interação, de forma transparente, entre aplicação e Cadeo Interação acontece através de um objeto da classe Cadeo Métodos da classe: fork() - instancia tarefas remotamente size() - informa tamanho do aglomerado dinâmico em um determinado momento stop() - indica o final da execução da aplicação
12/25 Exemplo de Aplicação Paralela - Tarefa 1. public class Tarefa implements Serializable{ 2. String mensagem; 3. public Tarefa() { 4. /* Construtor da Classe */ 5. } 6. public trabalho(parâmetros) { 7. /* Realiza algum processamento */ 8. retorna Resultado; 9. } 10. }
13/25 Exemplo de Aplicação Paralela - Principal 1. public class Principal { 2. public static void main(string[] args) { 3. Cadeo c = new Cadeo(endereço_alocador); 4. Tarefa t[] = new Tarefa[num_tarefas]; 5. Resultado res[] = new Resultado[num_tarefas]; 6. for(int i = 0; i < num_tarefas; i++){ 7. t[i]=(tarefa)c.fork(tarefa.class.getname(), new Object[]{}); 8. res[i] = t[i].trabalho(parâmetros); 9. } 10. c.stop(); 11. } 12. }
14/25 Metas da Aplicação Desenvolvida Resultados 1 2 3 Metas da Aplicação Desenvolvida Resultados 4
15/25 Metas da Metas da Aplicação Desenvolvida Resultados Sobre uma determinada aplicação Escolha do tamanho do grão estática dinâmica
16/25 Funcionamento da Aplicação Metas da Aplicação Desenvolvida Resultados Escravo Mestre Escravo Escravo
16/25 Funcionamento da Aplicação Metas da Aplicação Desenvolvida Resultados Escravo Mestre Escravo Escravo
16/25 Funcionamento da Aplicação Metas da Aplicação Desenvolvida Resultados Escravo Mestre Escravo Escravo
17/25 Granularidade das tarefas Metas da Aplicação Desenvolvida Resultados Escolha arbitrária de granularidades Execução entre dois computadores Pentium III duais Tempos (em segundos) das granularidades das tarefas granularidade Computação Comunicação 1 27.0 27.0 10 270.1 27.0 100 2971.0 30.0
18/25 Influência da utilização do Cadeo Metas da Aplicação Desenvolvida Resultados ProActive X Cadeo Ambiente estático de execução com 7 computadores Pentium III duais Distribuição: 1 computador executa o mestre e os demais os escravos
19/25 Influência da utilização do Cadeo Metas da Aplicação Desenvolvida Resultados Tempos (em segundos) obtidos em ambiente estático granularidade ProActive Cadeo 1 23.08 23.33 10 43.04 43.05 100 267.84 272.09
20/25 Testes com Ambiente Dinâmico Metas da Aplicação Desenvolvida Resultados Quanto custa a migração num ambiente dinâmico? Dinamicidade do sistema é simulada Freqüência de dinamicidade formaliza a simulação
21/25 Metas da Aplicação Desenvolvida Resultados Testes com Ambiente Dinâmico 600 "medias" 500 tempo (segundos) 400 300 200 100 0 0 2 4 6 8 10 12 14 16 18 Frequencia
22/25 Considerações Finais Trabalhos Futuros 1 2 3 4 Considerações Finais Trabalhos Futuros
23/25 Considerações Finais Considerações Finais Trabalhos Futuros Cadeo administra computadores disponíveis em sistemas distribuídos Diferencial: transparência Provê escalonamento em dois níveis Pequena sobrecarga
24/25 Trabalhos Futuros Considerações Finais Trabalhos Futuros Possibilitar a implementação de aplicações no modelo dividir para conquistar; Pesquisar políticas de escalonamento e balanceamento de cargas que melhor se enquadram no contexto do sistema; Investigar alternativas ao uso da migração de objetos.
Alocação Dinâmica e Transparente de Computadores Ociosos em Java Márcia Cristina Cera, Rodrigo Righi e Marcelo Pasin {cera, rodrigor, pasin}@inf.ufsm.br Universidade Federal de Santa Maria - UFSM Laboratório de Sistemas de Computação - LSC VI Workshop em Sistemas Computacionais de Alto Desempenho