Alocação Dinâmica e Transparente de Computadores Ociosos em Java



Documentos relacionados
Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha

Sistemas Distribuídos

Sistemas Distribuídos

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

FBV - Linguagem de Programação II. Um pouco sobre Java

Implementando uma Classe e Criando Objetos a partir dela

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

THREADS EM JAVA. George Gomes Cabral

Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Sistemas Distribuídos

Computação Paralela. Uma framework para aplicações concorrentes João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Técnicas de Programação II

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

SISTEMAS DISTRIBUÍDOS

Invocação de Métodos Remotos

Introdução a Java. Hélder Nunes

Invocação de Métodos Remotos RMI (Remote Method Invocation)

ESTUDO PRELIMINAR SOBRE A ESCALABILIDADE DE UM ALGORITMO GENÉTICO PARALELIZADO COM OPENMP. Mateus Fontoura Gomes da Rosa Márcia C.

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Invocação Remota MC704

Java TM e o Modelo de Objetos

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Avaliação do Desempenho da Migração de Máquinas Virtuais em Xen

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Programação Orientada a Objetos em Java

Orientação a Objetos com Java

Serviços Web: Introdução

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

SISTEMAS DISTRIBUÍDOS

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

UNIVERSIDADE. Sistemas Distribuídos

SISTEMA DISTRIBUÍDO DE MONITORAMENTO/DETERMINAÇÃO DE SERVIÇOS E RECURSOS DIPONÍVEIS DE UM AMBIENTE DE GRID COMPUTACIONAL

Avaliação do Uso de Xen em Ambientes de Computação de Alto Desempenho

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Adriano Reine Bueno Rafael Barros Silva

Categorias de Padrões

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

SOA Introdução. SOA Visão Departamental das Organizações

2 Orientação a objetos na prática

Classes Abstratas e Interfaces

Um pouco do Java. Prof. Eduardo

Middleware de Aplicações Paralelas/Distribuídas

Threads e Concorrência em Java (Material de Apoio)

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

5 Caso de estudo O cartão fidelidade

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Sistemas de Informação para Apoio à Decisão Gerencial

Programação Concorrente em java - Exercícios Práticos Abril 2004

INE Sistemas Distribuídos

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

ADMINISTRAÇÃO DE SISTEMA OPERACIONAL DE REDE (AULA 1)

Projeto de Software Orientado a Objeto

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

SUMÁRIO CAPÍTULO 1 - INTRODUÇÃO 19 CAPÍTULO 2 - CONCEITOS 25

Java. Marcio de Carvalho Victorino

Java 2 Standard Edition Como criar classes e objetos

Enterprise Java Beans

Sistemas Distribuídos. Introdução

Programação Orientada a Objetos

SISTEMAS OPERACIONAIS. Apostila 01 Assunto: Tipos de Sistemas Operacionais UNIBAN

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Sistemas Distribuídos

Capítulo 2. Charm++ 16

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

1

Sistemas Distribuídos

Exemplos práticos do uso de RMI em sistemas distribuídos

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

SISTEMAS DISTRIBUIDOS

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Análise e Projeto Orientados por Objetos

Programação por Objectos. Java

Estrutura em Camadas. Estrutura em Camadas. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Introdução a Threads Java

05/08/2013. Sistemas Distribuídos Cluster. Sistemas Distribuídos Cluster. Agenda. Introdução

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Orientação a Objetos

Universidade Federal de Uberlândia Disciplina: POO2 Prof. Fabiano Dorça. Padrões de Projeto. Padrão Command

Objetivos: Entender o funcionamento dos programas Java via linha de comando

DEFINIÇÃO DE MÉTODOS

Orientação a Objetos com Java

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Professor: Douglas Sousa Cursos de Computação

Transcrição:

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