Curso de Grid Computing
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-2/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-3/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-4/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-5/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-6/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-7/22
Globus Toolkit
• O Globus Toolkit é
– um conjunto de serviços de software destinados à construção de
• Grids computacionais
• e aplicações para Grid
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-8/22
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.
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-9/22
Resumo dos serviços Globus
Serviço Nome Descrição
GRAM
ComunicaçãoNexus
Informação
SegurançaGSI
Gerenciamento de Recursos
Alocação de recursos e gerenciamento de pro-cessos
Serviços de comunicação unicast e multicast
MDS, GRIS, GIIS
Acesso distribuídos a in-formações
Autenticação e serviços relacionados a segurança
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-10/22
Globus: arquitetura (v2/3)
cluster
aplicações paralelas/distribuídas (ex. SF-Express)
Comunicação(Nexus)
Gerênciade recursos
(GRAM - DUROC, RSL)Segurança eautenticação
(GSI)Monitoramento
(HBM)
Acesso remotoa dados
(GASS, GridFTP, RIO)
Gerência de executáveis(GEM)
Globus Metacomputing Toolkit (GMT)
Internet/Rede de comunicação
Informação(MDS,GRIS, GIIS)
GUSTO NASA IPG NPACI Data Grid
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-11/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-12/22
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, ...
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-13/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-14/22
Globus: histórico
• Organizações– Hoje vários chapéus
– Principal• Globus Alliance
– www.globus.org
– “acadêmico”, pesquisa
– Outros• Comerciais, industriais
Resource Specification Language (RSL)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-16/22
Roteiro
● Introdução● Sintaxe RSL● Caracteres Especiais RSL● Semânticas de Substituição RSL● Atributos RSL● Exemplos RSL
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-17/22
IntroduçãoGlobus 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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-18/22
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 <, <=, =, >=, >, !=
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-19/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-20/22
SintaxeRelation:
● 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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-21/22
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")
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-22/22
SintaxeCompound 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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-23/22
SintaxeCompound 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)➔ (...)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-24/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-25/22
SintaxeCompound 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") )
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-26/22
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)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-27/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-28/22
Caracteres Especiais RSL
Conjunto de caracteres especiais que não podem aparecer como parte de um literal não delimitado por aspas:
''+'' (adição)''&'' (''e'' comercial)''|'' (pipe)''('' (parêntese esquerdo)'')'' (parêntese direito)''='' (equaldade)''<'' (menor)
''>'' (maior)''!'' (exclamação)'''''' (aspas duplas)''`'' (apóstrofo)''^'' (circunflexo)''#'' (sustenido)''$'' (dólar)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-29/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-30/22
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)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-31/22
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)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-32/22
Semântica de Substituição RSLOrdem 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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-33/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-34/22
Atributos RSLA seguir, alguns atributos da distribuição padrão do Globus serão apresentados ...
Atributos GRAM
executabledirectoryargumentsstdinstdoutstderrcountenvironmentmaxCpuTimemaxWallTimemaxTimedryRunqueueprojecthostCountmaxMemory
minMemoryjobTypegramMyjobtwo_phasesave_statestdout_positionstderr_positionrestartremote_io_url
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-35/22
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)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-36/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-37/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-38/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-39/22
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_asetenv JOE mamasetenv PI 3.1415
➔ Default: NULL
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-40/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-41/22
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)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-42/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-43/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-44/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-45/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-46/22
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)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-47/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-48/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-49/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-50/22
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
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-51/22
Atributos RSL (DUROC)
● (subjobStartType=value)➔Altera o mecanismo inicial de barreira para os
subjobs➔Os valores são ''strict-barrier'', ''loose-barrier'',
''no-barrier''
● (subjobCommsType=value)➔Valores são ''blocking-join'' e ''independent''➔Se o valor é setado para ''independent'', o subjob
não será visto por outros subjobs quando fizer comunicação inter-subjob
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-52/22
Atributos RSL (DUROC)
● (label=string)➔Identificador para o subjob
● (resourceManagerContact=string) (resourceManagerName=string)➔Resource manager para o qual submeter o subjob
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-53/22
Exemplos RSL
Ex.: 1) Descrições de recursos GRAM típicas contém ao menos algumas relações em conjunto:
(* this is a comment *)&(executable=a.out (* <-- that is an unquoted literal *)) (directory=/home/nobody ) (arguments=arg1 "arg 2") (count=1)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-54/22
Exemplos RSLEx.: 2) Substituições podem ser usadas para utilizar a mesma substring múltiplas vezes em uma descrição de recurso: &(rsl_substitution=(TOPDIR "/home/nobody") (DATADIR $(TOPDIR)"/data") (EXECDIR $(TOPDIR)/bin) ) (executable=$(EXECDIR)/a.out (* <-- implicit concatenation *)) (directory=$(TOPDIR)) (arguments=$(DATADIR)/file1 (* <-- implicit concatenation *) $(DATADIR)#/file2 (* <-- explicit concatenation *) '$(FOO)' (* <-- a quoted literal *)) (environment=(DATADIR $(DATADIR))) (count=1)
LabTeC – II/UFRGS/DELL - Instalação Automatizada – M7-55/22
Exemplos RSL
Ex.: 3) Realizando todas as substituições de variáveis e removendo comentários resulta em uma string RSL equivalente:
&(executable="/home/nobody/bin/a.out") (directory="/home/nobody" ) (arguments="/home/nobody/data/file1" "/home/nobody/data/file2" "$(FOO)") (environment=(DATADIR "/home/nobody/data")) (count=1)
Top Related