1 / 55

Curso de Grid Computing

Curso de Grid Computing. Sumário. Introdução ao Globus Objetivos e links Globus Toolkit Serviços Arquitetura Versões RSL Introdução Sintaxe RSL Caracteres Especiais RSL Semânticas de Substituição RSL Atributos RSL Exemplos RSL. Autoria. Autores

luke
Download Presentation

Curso de Grid Computing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso de Grid Computing

  2. Sumário • Introdução ao Globus • Objetivos e links • Globus Toolkit • Serviços • Arquitetura • Versões • RSL • Introdução • Sintaxe RSL • Caracteres Especiais RSL • Semânticas de Substituição RSL • Atributos RSL • Exemplos RSL

  3. Autoria • Autores • Rodrigo Real, Luciano Cavalheiro, Alberto Egon (RSL) • Local • Instituto de Informática, UFRGS • 1a versão • 2003, curso projeto Dell • Revisões • v2 • Novembro de 2005 • C. Geyer

  4. Globus: o que é? Objetivos Modelo, arquitetura, protocolos, API, ... Protótipo: Globus (Metacomputing) Toolkit Avaliação de aplicações reais GUSTO (testbed) Locais Argonne, DOE, Chicago Caltech e USC (Los Angeles, CA) Ian Foster e Carl Kesselman Um dos mais usados e referenciados Confunde-se com Grid (arquitetura) Projetos europeus: uso do Globus

  5. Globus: o que é? • Alguns princípios • Objetivos de 1998 • Desenvolver um toolkit para grades • Instalar com o toolkit uma grade (“grande”) para testes • GUSTO • Desenvolver, instalar e testar (o principal) aplicações reais na grade de teste • Palavras chaves (1998) • Acesso pervasivo • Adaptação aos aspectos dinâmicos da grade • Pelo mw e/ou pela aplicação • APIs não opacas (não transparentes): translúcidas • Diferenças entre local e remoto

  6. Globus: links • Links do Globus • www.globus.org • Geral • http://www.globus.org/toolkit/docs/4.0/ • Globus Toolkit 4.0 Release Manuals • http://www.globus.org/toolkit/presentations/ • Apresentações • Classificadas por tema, com resumo • http://www.globus.org/toolkit/docs/4.0/migration_guide_gt3.html • Dicas para migração do GT 3 para GT 4

  7. Globus Toolkit O Globus Toolkit é um conjunto de serviços de software destinados à construção de Grids computacionais e aplicações para Grid

  8. Globus Toolkit O toolkit trabalha com questões de segurança, descoberta de informações, gerenciamento de recursos, gerenciamento de dados, comunicações, detecção de falhas e portabilidade.

  9. Resumo dos serviços Globus

  10. Globus: arquitetura (v2/3) aplicações paralelas/distribuídas (ex. SF-Express) Globus Metacomputing Toolkit (GMT) Gerência de recursos (GRAM - DUROC, RSL) Acesso remoto a dados (GASS, GridFTP, RIO) Gerência de executáveis (GEM) Segurança e autenticação (GSI) Comunicação (Nexus) Informação (MDS,GRIS, GIIS) Monitoramento (HBM) Internet/Rede de comunicação cluster GUSTO NASA IPG NPACI Data Grid

  11. Globus: Serviços Localização e alocação de recursos Autenticação Serviço de Informações Acesso a Dados Comunicação Criação de Processos Monitoramento de Processos

  12. Globus: Serviços Principais grupos de serviços Conforme GT4_Primer Versão de maio de 2005 Em andamento (draft) Grupos de serviços Gerência de execução: GRAM e relacionados Gerência de dados: GridFTP, ... Monitoramento e descoberta: MDS4 Segurança: GSI, ...

  13. Globus: histórico Versões v1 v2: muito citada e usada v3: introduz Web Services v4: recomendada no lugar da v3 Relacionamentos com outros mw Muitos trabalhos em andamento Muitos trabalhos de 3os Documentação com “buracos” Muitas siglas

  14. Globus: histórico Organizações Hoje vários chapéus Principal Globus Alliance www.globus.org “acadêmico”, pesquisa Outros Comerciais, industriais

  15. Resource Specification Language (RSL)

  16. Roteiro • Introdução • Sintaxe RSL • Caracteres Especiais RSL • Semânticas de Substituição RSL • Atributos RSL • Exemplos RSL

  17. Introdução Globus Resource Specification Language (RSL): • Linguagem para descrever jobs e os recursos utilizados para executá-los • Usada por vários componentes do Globus Resource Allocation and Management (GRAM) e do Dynamically Updated Request Online Co-allocator (DUROC) • GRAM é o componente para submissão de um único job para um jobmanager específico

  18. Introdução Globus Resource Specification Language (RSL): • Fornece uma sintaxe genérica (''esqueleto'') para compor descrições de recursos • Sintaxe similar à do MDS/LDAP • Cada atributo na descrição serve como um parâmetro para controlar o comportamento dos recursos • Operadores suportados <, <=, =, >=, >, !=

  19. Sintaxe Em relação à sintaxe da linguagem, existem 3 estruturas diferentes: • Relation: associa o nome de um atributo a um valor • Compound Requests: conjunto de relações simples compostas em um único comando • Value Sequences: seqüência de valores

  20. Sintaxe Relation: • Principal (e também o mais simples) componente da sintaxe RSL • Associa o nome de um atributo a um valor: • Ex.: ''executable=a.out'' • Informa o nome do programa a ser utilizado quando o job for executado • Apesar de sintaticamente correta, expressões RSL geralmente combinam mais de uma relação

  21. Sintaxe Compound Requests (1/4): • conjunct-request (&): • Expressa um conjunto de relações simples, associadas através de um AND booleano • Permite, por ex.: combinação de relações como o nome de um executável, nº de nodos, argumentos do executável e arquivos de saída • Exemplo: &(contactHostName="tci18.dl.ac.uk") (executable=/bin/echo) (directory=/home2/rja/Globus/Examples/rsl) (stdout="stdout.txt") (arguments="hello from tci18")

  22. Sintaxe Compound Requests (2/4): • disjunct-request (|): • Expressa um conjunto de relações simples, associadas através de um OR booleano • Atualmente nenhum componente gerenciador de recursos utiliza esse formato • Exemplo: &(executable=myProg) (|(&(count=5)(memory>=64)) (&(count=10)(memory>=32))) • Cria 5 instâncias de myProg em máquina com pelo menos 64MB de memória, ou 10 instâncias em máquina com pelo menos 32MB de memória

  23. Sintaxe Compound Requests (3/4): • multi-request (+): • Usadas pelo DUROC (componente de co-alocação de recursos) • Como o DUROC não mais existe -> ...? • Permite especificar múltiplos recursos • Formato: +(GRAM script) (GRAM script) • (...)

  24. Compound Requests (3/4): multi-request (+): Uma conjunct-request pode ser vista como "constraints" sobre um determinado recurso Sub-cláusulas de uma multi-request são vistas como descrições individuais de recursos distintos

  25. Sintaxe Compound Requests (4/4): • Exemplo multi-request: +(&(contactHostName="tci18.dl.ac.uk") (count=1) (executable=test) (directory=/home2/rja/Globus/test) (stdout="stdout.txt") ) (&(contactHostName="beowulf1.dl.ac.uk") (count=1) (executable=test) (directory=/home/rja/Globus/test) (stdout="stdout.txt") )

  26. Sintaxe Value Sequences (1/2): • A forma mais simples de expressar um valor em RSL é através de um literal string • Delimitados por um par de aspas ou não (desde que não contenham caracteres especiais) • Valores podem ser também referências a variáveis (que serão substituídas pelo valor correspondente)

  27. Sintaxe Value Sequences (2/2): • Expressões podem incluir concatenações de strings (para a construção de longas strings) • Além das formas simples apresentadas, a rsl permite o uso de value sequences para expressar um conjunto ordenado de valores: • Usada principalmente para definir variáveis ou fornecer a lista de argumentos para um programa

  28. Caracteres Especiais RSL Conjunto de caracteres especiais que não podem aparecer como parte de um literal não delimitado por aspas: ''>'' (maior) ''!'' (exclamação) '''''' (aspas duplas) ''`'' (apóstrofo) ''^'' (circunflexo) ''#'' (sustenido) ''$'' (dólar) ''+'' (adição) ''&'' (''e'' comercial) ''|'' (pipe) ''('' (parêntese esquerdo) '')'' (parêntese direito) ''='' (equaldade) ''<'' (menor)

  29. Caracteres Especiais RSL • Delimitação de literais: aspas duplas ou simples • Comentários em comandos RSL: usam notação similar àquela empregada na linguagem de programação C: • iniciam com o prefixo ''(*'', e continuam até o próximo ''*)'' • não podem ser aninhados

  30. Semântica de Substituição RSL RSL suporta substituição de variáveis: • A substituição de variáveis é definida por uma relação especial, utilizando o atributo ''rsl_substitution'' • Declaração: • substituições são declaradas usando uma lista de pares • rsl_substitution=(SUB1 val1)(SUB2 val2) • Invocação: • uma substituição é invocada através de $(SUB)

  31. Semântica de Substituição RSL Exemplo de uso: • Isso: &(rsl_substitution=(URLBASE ''ftp://host:1234'')) (rsl_substitution=(URLDIR $(URLBASE)/dir)) (executable=$(URLDIR)/myfile) • é equivalente a isso: &(executable=ftp://host:1234/dir/myfile)

  32. Semântica de Substituição RSL Ordem de processamento: • Escopos internos são processados após os externos • Definições em escopos internos incrementam as definições herdadas com atualizações ou novas variáveis • Dentro de qualquer escopo, as definições de variáveis são processadas da esquerda para a direita na descrição do recurso • Definições de variáveis podem referenciar variáveis previamente definidas

  33. Atributos RSL • Cada componente gerenciador de recursos do Globus introduz atributos adicionais ao conjunto • Sintaxe extensível • Difícil fornecer uma lista completa de atributos que podem aparecer na descrição de um recurso • Componentes que gerenciam recursos são projetados para utilizar os atributos por eles conhecidos e ignorar os demais

  34. Atributos RSL A seguir, alguns atributos da distribuição padrão do Globus serão apresentados ... Atributos GRAM executable directory arguments stdin stdout stderr count environment maxCpuTime maxWallTime maxTime dryRun queue project hostCount maxMemory minMemory jobType gramMyjob two_phase save_state stdout_position stderr_position restart remote_io_url

  35. Atributos RSL (GRAM) • (executable=string) • Informa o programa a ser executado na máquina remota • Caminho do arquivo (absoluto ou relativo) ou URL (nesse caso o arquivo será transferido para a máquina remota e removido após o término) • (directory=string) • Especifica o caminho do diretório que o jobmanager vai para executar o job • Default: diretório de trabalho ($HOME)

  36. Atributos RSL (GRAM) • (arguments=arg1 arg2 arg3...) • Lista de parâmetros (string) para o executável • Devem ser usadas aspas ('' '') se espaços em branco são necessários em algum argumento • Ex.: (arguments="a and b" ccc d ) argv[1]=''a and b'' argv[2]=''ccc'' argv[3]=''d'' • Default: NULL

  37. Atributos RSL (GRAM) • (stdin=string) • Nome do arquivo a ser usado como standard input para o executável • Caminho do arquivo (absoluto ou relativo) ou URL (transferido para / removido da máquina remota) • Default: /dev/null • (stdout=string) • Nome do arquivo remoto para armazenar o standard output da execução • Caminho do arquivo (absoluto ou relativo) ou URL (saída é transferida durante execução) • Default: /dev/null

  38. Atributos RSL (GRAM) • (stderr=string) • Nome do arquivo remoto para armazenar o standard error da execução • Caminho do arquivo (absoluto ou relativo) ou URL (saída é transferida durante execução) • Default: /dev/null • (count=value) • Número de processos que deverão ser executados • Default: 1

  39. Atributos RSL (GRAM) • (environment=(var value) [(var value)] ...) • Variáveis de ambiente que serão definidas para o executável além do conjunto default • Representadas como pares nome/valor • Ex.: (environment=(VAR_A value_a) (JOE mama)(PI 3.1415)) • Equivalente em C-shell: setenv VAR_A value_a setenv JOE mama setenv PI 3.1415 • Default: NULL

  40. Atributos RSL (GRAM) • (maxCpuTime=integer) • Máximo cputime para uma execução do programa • Medido em minutos • Default: nenhum, mas aceita default de um escalonador local • (maxWallTime=integer) • Máximo walltime para uma execução do programa • Medido em minutos • Default: nenhum, mas aceita default de um escalonador local

  41. Atributos RSL (GRAM) • (maxTime=integer) • Máximo entre walltime ou cpu runtime (escolha do escalonador) para uma execução do programa • Medido em minutos • Default: nenhum, mas aceita default de um escalonador local • (dryRun=yes|no) • Se dryRun = yes, então o jobmanager não vai submeter o job para execução, e retornará sucesso • Default: no • Obs: removido na v4 do Globus (GT4)

  42. Atributos RSL (GRAM) • (queue=string) • Nome da fila na qual o job deve ser submetido • (project=string) • Direciona o job para um project account específico • (hostCount=integer) • Somente aplicável em multi-computadores SMP • Define o número de nodos usados para distribuir os ''count'' processos

  43. Atributos RSL (GRAM) • (maxMemory=integer) • Especifica a quantidade máxima de memória requisitada para o job • Medido em megabytes • Default: nenhum • (minMemory=integer) • Especifica a quantidade mínima de memória requisitada para o job • Medido em megabytes • Default: nenhum

  44. Atributos RSL (GRAM) • (jobType=value) • Value pode assumir um dos valores abaixo: • single: mesmo que <count> > 1, roda somente um único processo • multiple: inicia <count> instâncias do programa • mpi: roda programa escrito em mpi usando um método apropriado (mpirun em SGI Origin ou POE em IBM SP). Programa é iniciado em <count> nodos • condor: inicia <count> processos Condor rodando em ''standard universe'' • Default: multiple

  45. Atributos RSL (GRAM) • (gramMyjob=value) • Define como a biblioteca globus_gram_myjob irá se comportar em relação aos <count> processos • Value pode assumir um dos valores abaixo: • collective: trata todos os <count> processos como parte de um único job • independent: trata cada um dos <count> processos como um job independente uniprocessado • Default: collective

  46. Atributos RSL (GRAM) • (two_phase=<int>) • Implementa protocolo do tipo two-phase commit para submissão e término de jobs • Parâmetro <int> determina o valor do timeout a ser utilizado pelo jobmanager • Na submissão: • Jobmanager aguarda confirmação após receber requisição do cliente durante <int> segundos • No término: • Após notificar o cliente do término, aguarda por confirmação durante <int> segundos • Se não receber, pode sair sem limpar o estado do job (para que o job sofra um restart posterior)

  47. Atributos RSL (GRAM) • (save_state=yes|no) • Faz com que o jobmanager salve estado/informações do job de forma persistente em disco ou fita • Se o jobmanager falhar, o cliente pode inicializar outro jobmanager que irá assumir a responsabilidade sobre o job • Default: no

  48. Atributos RSL (GRAM) • (stdout_position=<int>) • (stderr_position=<int>) • Utilizados na reinicialização de jobs • Especificam a posição do arquivo que deve ser utilizada para recomeçar a escrever o fluxo de saída do job • Default: nenhum

  49. Atributos RSL (GRAM) • (restart=<old JM contact>) • Inicia um novo jobmanager, que passará a cuidar de jobs já existentes • Jobmanager irá procurar os arquivos de estado criados (através da opção save_state) pelo jobmanager informado como parâmetro • Caso encontre algum job (e o seu timestamp seja antigo) • Novo jobmanager passará a ser o novo "guardião" dos jobs encontrados • Senão • Retorna com erro

  50. Atributos RSL (GRAM) • (remote_io_url=<url base>) • Salva a URL informada em um arquivo e coloca a variável GLOBUS_REMOTE_IO_URL=<path to file> no ambiente do job • Se especificado na reinicialização do job (restart), atualiza o conteúdo do arquivo • Utilizando a variável, o job pode ler o conteúdo do arquivo para obter a URL, que pode variar entre diferentes reinicializações do job • Default: nenhum

More Related