Tecgraf PUC-Rio maio de 2011 O Serviço OpenDreams.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Sistemas Operacionais
Sistemas Operacionais Aula II
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Objetos Implícitos Contextuais
Profa. Priscila Facciolli
Sistemas de Informação Redes de Computadores
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Processos no Unix e Linux
Arquitetura de Sistemas Operacionais
Chapter 4: Threads.
Sistemas Operacionais
Objetos Distribuídos Padrão CORBA
Tutorial Condor Juliano Freitas da Silva
Concorrência em Java Threads em Java.
Monitores.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula R Prof. Naércio Filho Técnico em Informática
Implantação de um Centro de Processamento de Alto Desempenho sobre recursos não-dedicados Andamento das atividades Abmar Barros.
Singleton e Adapter Professor: Nazareno Andrade
Sistemas Operacionais
Sistemas Distribuídos
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Web Services Uninorte Semana de Tecnologia da Informação
CORBA e Desenvolvimento Baseado em Componentes
Classes, Objetos, Atributos e Métodos JAVA
SISTEMAS OPERACIONAIS I
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Sistemas Operacionais
Introdução à Computação em Grade Porto Alegre, Maio/2006 Centro Nacional de Supercomputação CESUP/RS Realização: Projeto GradeUFRGS Material pertencente.
Tecgraf PUC-Rio Setembro de 2013 Introdução ao Openbus.
Escalonamento de Processos e Threads
Processos.
Tecgraf PUC-Rio maio de 2011 Data Service. Motivação Aplicações científicas tem como característica a elevada complexidade de seus dados e dos algoritmos.
SISTEMAS OPERACIONAIS I
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos.
Tecgraf PUC-Rio Setembro de 2013 Data Service. Motivação Aplicações científicas têm como característica a elevada complexidade de seus dados e dos algoritmos.
GESTOR: TIC/TIC-E&P/GIDSEP versão 1 - julho/2013 Tecgraf PUC-Rio Fevereiro de 2014 IDL.
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Aglets.
1 BSP no InteGrade II WorkShop do InteGrade c. 2 Objetivo O principal objetivo é permitir que aplicações BSP sejam executadas no InteGrade sem ou com.
Tecgraf PUC-Rio fevereiro de 2011 Aplicação Java cliente do OpenDreams Openbus.
SISTEMAS OPERACIONAIS
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Condor Services for the Global Grid: Interoperability between Condor and OGSA Clovis Chapman et al Proceedings of the 2004 UK e-Science All Hands.
Objetos Distribuídos Frameworks Orientados a Objetos.
Implementação Distribuída Escalonamento de Tempo-Real Prof. Dr. Norian Marranghello Grupo 8 Daniela Gonçalves Strozi – Sayuri Watanabe
Portal GradeUFRGS Utilizando o Portal Portal GradeUFRGS Utilizando o Portal Porto Alegre, Maio/2006 Centro Nacional de Supercomputação CESUP/RS Realização:
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
Arquitetura de computadores
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 Introdução ao SCS.
Introdução ao SCS Tecgraf PUC-Rio Setembro de 2013.
Tecgraf PUC-Rio maio de 2011 Introdução ao Openbus.
Tutorial sobre licenciamento do Terminal Services no Windows Server área de trabalho remota Acesse remotamente o seu servidor de qualquer lugar.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Introdução ao OpenBus.
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 Mapeamento de IDL para C#
Versão 1 - julho/2013 Tecgraf PUC-Rio Novembro de 2013 IDL.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Sincronização Lip Sync Sincronização cursor-voz Entre outras mídias.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Tecgraf PUC-Rio dezembro de 2010 Orientação a Serviços e Barramento de Software de E&P.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Tecgraf PUC-Rio maio de 2011 O Serviço OpenDreams

Motivação Sistemas da lógistica precisam executar o programa de otimização (Solver) em máquinas diferentes das que executam os servidores desses sistemas. Já possuimos desenvolvido no CSBase uma infra-estrutura para submissão e gerenciamento de execução remota

Decisões Uso do barramento OpenBus para publicação de um serviço CSBase de execução remota Adoção de uma interface padrão DRMAA para ser a API do serviço publicado no OpenBus Mínimo possível de mudanças no código atual do CSBase

O que são Sistemas DRM Distributed Resource Management (DRM) são sistemas responsáveis por gerenciar a execução de tarefas (jobs) em uma grade de computadores. O uso desses sistemas torna transparente a infra-estrutura de grade na execução das tarefas dos usuários. Exemplos: Sun Grid Engine, GridWay e Condor e Sistemas CSBase.

O que é o DRMAA O DRMAA (Distributed Resource Management Application API) é um padrão de interface para sistemas DRM Objetivo de garantir a compatibilidade e uniformidade entre esses sistemas É um padrão GGF (Global Grid Forum) Implementado em vários sistemas DRM, como GridWay, Grid Engine, PBS/Torque

O que é o OpenDreams Serviço OpenBus para submissão, monitoração e controle de execução remota de comandos É implementado como um Serviço CSBase que oferece uma fachada para os outros serviços internos (ex: SchedulerService, o AlgorithmService e o SGAService) É baseado no padrão DRMAA OpenDreams = OpenBus Distributed Resource and Algorithms Management Service

Arquitetura

Submissão de Jobs no CSBase Execução de algoritmos cadastrados no repositório Execução de um único algoritmo ou de um fluxo de algoritmos Fila de execução, permitindo prioridades na submissão do comandos Possível selecionar as máquinas para execução ou deixar a seleção automática

Submissão de Jobs no CSBase Modos de execução definidos na configuração do algoritmo: Simples, Distribuída, Paralela e Múltipla Persistência automática de comandos Uso da área de um projeto previamente selecionado

Escopo do DRMAA O DRMAA define um conjunto de operações que permitem acesso programático a funcionalidades comuns a diversos sistemas DRM. definição e configuração de jobs submissão, monitoramento e controle de jobs sincronização e informações no término de jobs

Sessão DRMAA Uma sessão é usada para gerenciar os jobs submetidos para execução A maioria das interações ocorre no contexto de uma sessão A interface Session é o principal ponto de acesso de uma implementação DRMAA.

IOpenDreams /** * \brief Interface principal de acesso ao serviço OpenDreams. * A interface IOpenDreams cria uma sessão para o usuário * dono de um projeto. * Essa sessão implementa uma sessão DRMAA e oferece * métodos para submissão, * controle e monitoração de jobs para execução remota. */ interface IOpenDreams{ DRMAA::Session getSession(in string projectId) raises ( DRMAA::AuthorizationException, DRMAA::InternalException); };

DRMAA::Session /** * Representa uma sessão DRMAA. */ interface Session{ const long long TIMEOUT_WAIT_FOREVER = -1; const long long TIMEOUT_NO_WAIT = 0; const string JOB_IDS_SESSION_ANY = "DRMAA_JOB_IDS_SESSION_ANY"; const string JOB_IDS_SESSION_ALL = "DRMAA_JOB_IDS_SESSION_ALL"; … };

Inicialização de Sessão O método init() faz a inicialização de uma sessão e precisa ser obrigatoriamente chamado antes de qualquer submissão de jobs. O parâmetro contactString especifica qual sistema DRMS deve ser usado. Quando não especificado, o default é usado.

Finalização de Sessão O método exit() é chamado para finalizar a conexão com o sistema DRM A execução desse método não afeta os jobs submetidos

Job Template Todo job é submetido para execução no DRMAA usando um Job Template. Um job template é criado a partir de uma instância de sessão Após ser configurado, o template é submetido para execução O JobTemplate pode ser estendido para permitir atributos específicos de um DRMS. Isso é o que fazemos no OpenDreams para incluir atributos adicionais específicos do CSBase.

Job Template /** * \brief Um Job Template define os atributos * necessários a submissão de um job para execução. * * As instâncias de um job template são criadas pela sessão ativa, * através do método Session::createJobTemplate(). * Uma aplicação DRMAA obtém um job template, altera os valores * dos atributos desse job template e o retorna para o serviço na * requisição de execução de jobs. * Após usar um job template, a aplicação deve chamar o método * Session::deleteJobTemplate(). */ valuetype JobTemplate{ … };

OpenDreams Job Template /** * \brief O JobTemplate estendido para o OpenDreams. * O job template do OpenDreams possui alguns atributos adicionais * que são específicos para a execução de algoritmos e de fluxo de * algoritmos cadastrados. */ valuetype OpenDreamsJobTemplate : DRMAA::JobTemplate { private long long id; public DRMAA::Dictionary jobParameters; public string jobDescription; public short jobPriority; public long numberOfProcesses; };

Criação de um Job Template O método createJobTemplate() da interface Session faz a criação de um job template No OpenDreams esse método retornará uma instância de OpenDreamsJobTemplate

Remoção do Job Template O método deleteJobTemplate() da interface Session destrói um job template, liberando os recursos usados por esse objeto

Submissão de Jobs no DRMAA O DRMAA especifica dois tipos de submissão de jobs: simples e paramétrico. –runJob: submete a execução de um único job. –runBulkJob: submete uma série de execuções simultâneas referentes a um mesmo job template.

Submissão simples: runJob A interface Session define o método runJob, onde o parâmetro de entrada é um JobTemplate e a saída é um identificador do job criado string runJob(in DRMAA::JobTemplate jobTemplate) raises ( TryLaterException, DeniedByDrmException, DrmCommunicationException, AuthorizationException, InvalidJobTemplateException, NoActiveSessionException, OutOfMemoryException, InvalidArgumentException, InternalException);

Submissão paramétrica: runBulkJob A interface Session define o método runBulkJob, onde o beginIndex é o valor inicial do índice, o endIndex é o valor final e o step é o incremento do índice em cada iteração. A saída é a lista com os identificadores dos jobs. StringList runBulkJobs( in DRMAA::JobTemplate jobTemplate, in long beginIndex, in long endIndex, in long step) raises ( TryLaterException, DeniedByDrmException, DrmCommunicationException, AuthorizationException, InvalidJobTemplateException, NoActiveSessionException, OutOfMemoryException, InvalidArgumentException, InternalException);

Sincronização de término de execução O DRMAA especifica dois métodos, na sessão, para aguardar a finalização de jobs : synchronize e wait –O método wait aguarda um único job completar sua execução e retorna o status do job com a condição de término e as informações de uso de recursos pelo job. –O método synchronize aguarda uma série de jobs completarem suas execuções, mas não retona as informações de término de cada um deles que, podem ser posteriormente recuperadas com método wait.

synchronize do DRMAA Os parâmetros de entrada são: –os identificadores de jobs ou JOB_IDS_SESSION_ALL que representa todos os jobs da sessão –o tempo máximo (em segundos) a ser esperado pela finalização dos job ou TIMEOUT_WAIT_FOREVER ou TIMEOUT_NO_WAIT –um indicador sobre a manutenção das informações de término de cada job void synchronize( in StringList jobList, in long long timeout, in boolean dispose) raises ( DrmCommunicationException, AuthorizationException, ExitTimeoutException, InvalidJobException, NoActiveSessionException, OutOfMemoryException, InvalidArgumentException, InternalException);

wait do DRMAA Os parâmetros de entrada são: –o identificador do job ou JOB_IDS_SESSION_ANY que representa qualquer job da sessão ativa –o tempo máximo (em segundos) a ser esperado pela finalização dos job ou TIMEOUT_WAIT_FOREVER ou TIMEOUT_NO_WAIT O retorno é um JobInfo, que encapsula o estado de finalização do job e as informações sobre o uso de recursos durante sua execução. JobInfo wait( in string jobName, in long long timeout) raises ( DrmCommunicationException, AuthorizationException, ExitTimeoutException, InvalidJobException, NoActiveSessionException, OutOfMemoryException, InvalidArgumentException, InternalException);

Consulta ao Estado de Jobs Para recuperar o estado de qualquer job, a interface Session do DRMAA oferece o método jobStatus O parâmetro de entrada é o identificador do job cujo estado se deseja consultar. JobState jobStatus(in string jobName) raises ( DrmCommunicationException, AuthorizationException, InvalidJobException, NoActiveSessionException, OutOfMemoryException, InvalidArgumentException, InternalException);