OpenPBS

O OpenPBS pode ser facilmente ativado num cluster CycleCloud modificando o "run_list" na secção de configuração da definição do seu cluster. Os dois componentes básicos de um cluster PROFISSIONAL PBS são o nó 'master' que fornece um sistema de ficheiros partilhado no qual o software PBS Professional funciona, e os nós de 'executar' que são os anfitriões que montam o sistema de ficheiros partilhado e executam os postos de trabalho submetidos. Por exemplo, um simples corte de modelo de cluster pode parecer:

[cluster my-pbspro]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[configuration]]]
    run_list = role[pbspro_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[configuration]]]
    run_list = role[pbspro_execute_role]

Importar e iniciar um cluster com definição no CycleCloud produzirá um único nó 'master'. Os nós de execução podem ser adicionados ao cluster através do cyclecloud add_node comando. Por exemplo, para adicionar mais 10 nóns de execução:

cyclecloud add_node my-pbspro -t execute -c 10

Autoscaling baseado em recursos PBS

Cyclecloud mantém dois recursos para expandir a capacidade dinâmica de provisionamento. Estes recursos são nodearray e tipo de máquina.

Se submeter um trabalho e especificar um recurso de nodearray até qsub -l nodearray=highmem -- /bin/hostname então o CycleCloud adicionará nós ao nó desafiado 'highmem'. Se não houver tal nodearray, então o trabalho permanecerá inativo.

Da mesma forma, se for especificado um recurso de tipo de máquina que seja uma submissão de trabalho, por exemplo qsub -l machinetype:Standard_L32s_v2 my-job.sh, o CycleCloud escales automaticamente o 'Standard_L32s_v2' no nodearray 'execute' (predefinido). Se este tipo de máquina não estiver disponível no conjunto de nó 'executar', o trabalho permanecerá inativo.

Estes recursos podem ser utilizados em combinação como:

qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh

que só será autoescalada se as máquinas 'Standard_HB60rs' forem especificadas como a matriz do nó 'hpc'.

Adicionar filas adicionais atribuídas a nodearrays

Em clusters com múltiplos nós, é comum criar filas separadas para encaminhar automaticamente os empregos para o tipo VM apropriado. Neste exemplo, assumiremos que o seguinte nodearray "gpu" foi definido no seu modelo de cluster:

    [[nodearray gpu]]
    Extends = execute
    MachineType = Standard_NC24rs

        [[[configuration]]]
        pbspro.slot_type = gpu

Depois de importar o modelo de cluster e iniciar o cluster, os seguintes comandos podem ser funcionadas no nó do servidor para criar a fila "gpu":

/opt/pbs/bin/qmgr -c "create queue gpu"
/opt/pbs/bin/qmgr -c "set queue gpu queue_type = Execution"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.place = scatter"
/opt/pbs/bin/qmgr -c "set queue gpu resources_default.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.ungrouped = false"
/opt/pbs/bin/qmgr -c "set queue gpu default_chunk.slot_type = gpu"
/opt/pbs/bin/qmgr -c "set queue gpu enabled = true"
/opt/pbs/bin/qmgr -c "set queue gpu started = true"

Nota

A definição de fila acima irá embalar todos os VMs na fila numa única escala de VM definida para apoiar os empregos de MPI. Para definir a fila para trabalhos em série e permitir vários conjuntos de escalas VM, definidos ungrouped = true para ambos resources_default e default_chunk. Também pode definir resources_default.place = pack se quiser que o programador embale empregos em VMs em vez de atribuição de empregos. Para obter mais informações sobre a embalagem de trabalho da PBS, consulte a documentação oficial da OSS Profissional pbs.

Referência de configuração profissional pbs

Seguem-se as opções de configuração específicas do PBS Professional que pode alternar para personalizar a funcionalidade:

Opções PBS Pro Description
pbspro.slots O número de slots para um nó dado para reportar ao PBS Pro. O número de slots é o número de postos de trabalho simultâneos que um nó pode executar, este valor desresídeo ao número de CPUs numa determinada máquina. Pode sobrepor-se a este valor em casos em que não gere empregos baseados na CPU, mas na memória, GPUs, etc.
pbspro.slot_type O nome do tipo de 'ranhura' que um nó fornece. O padrão é "executar". Quando um trabalho é marcado com o recurso slot_type=<type>duro, esse trabalho funcionará numa máquina do mesmo tipo de ranhura. Isto permite-lhe criar diferentes configurações de software e hardware por nó e garantir que um trabalho apropriado é sempre programado no tipo correto de nó.
pbspro.versão Predefinição: '18.1.3-0'. Esta é a versão PBS Professional para instalar e executar. Esta é atualmente a opção padrão e única . No futuro, poderão ser suportadas versões adicionais do software PBS Professional.

Conecte o PBS com o CycleCloud

CycleCloud gere clusters OpenPBS através de um agente instalado chamado azpbs. Este agente conecta-se ao CycleCloud para ler configurações de cluster e VM e também se integra com o OpenPBS para processar eficazmente a informação do trabalho e do anfitrião. Todas as azpbs configurações são encontradas no autoscale.json ficheiro, normalmente /opt/cycle/pbspro/autoscale.json.

  "password": "260D39rWX13X",
  "url": "https://cyclecloud1.contoso.com",
  "username": "cyclecloud_api_user",
  "logging": {
    "config_file": "/opt/cycle/pbspro/logging.conf"
  },
  "cluster_name": "mechanical_grid",

Ficheiros Importantes

O azpbs agente analisa a configuração do PBS cada vez que é chamado: empregos, filas, recursos. A informação é fornecida no stderr e no stdout do comando, bem como num ficheiro de registo, ambos a níveis configuráveis. Todos os comandos de gestão pbs (qcmd) com argumentos também são registados para arquivar.

Todos estes ficheiros podem ser encontrados no diretório /opt/cycle/pbspro/ onde o agente está instalado.

Ficheiro Localização Description
Config de autoescala autoscale.json Configuração para autoescalação, mapa de recursos, informações de acesso CycleCloud
Registo de escala automática autoescala.log Registo de fios principal do agente, incluindo gestão do anfitrião CycleCloud
Registo de Procura procura.log Registo detalhado para correspondência de recursos
registo de vestígios qcmd qcmd.log Registar as chamadas do agente qcmd
Config de registo logging.conf Configurações para registar máscaras e localizações de ficheiros

Definição de Recursos OpenPBs

Este projeto permite uma associação geral de recursos OpenPBS com recursos Azure VM através do projeto cyclecloud-pbspro (azpbs). Esta relação de recursos definida em autoscale.json.

Os recursos padrão definidos com o modelo de cluster com que enviamos são

{"default_resources": [
   {
      "select": {},
      "name": "ncpus",
      "value": "node.vcpu_count"
   },
   {
      "select": {},
      "name": "group_id",
      "value": "node.placement_group"
   },
   {
      "select": {},
      "name": "host",
      "value": "node.hostname"
   },
   {
      "select": {},
      "name": "mem",
      "value": "node.memory"
   },
   {
      "select": {},
      "name": "vm_size",
      "value": "node.vm_size"
   },
   {
      "select": {},
      "name": "disk",
      "value": "size::20g"
   }]
}

O recurso OpenPBS nomeado mem é equiparado a um atributo de nó denominado node.memory, que é a memória total de qualquer máquina virtual. Esta configuração permite azpbs processar um pedido de recurso, como -l mem=4gb por exemplo, comparando o valor dos requisitos de recursos de trabalho com os recursos de nó.

Note que o disco está atualmente codificado para size::20g. Aqui está um exemplo de manuseamento do tamanho do disco específico VM Size

   {
      "select": {"node.vm_size": "Standard_F2"},
      "name": "disk",
      "value": "size::20g"
   },
   {
      "select": {"node.vm_size": "Standard_H44rs"},
      "name": "disk",
      "value": "size::2t"
   }

Autoescala e conjuntos de escalas

O CycleCloud trata os trabalhos de abrangeção e série de forma diferente nos clusters OpenPBS. Os trabalhos de abrangamento vão aterrar em nós que fazem parte do mesmo grupo de colocação. O grupo de colocação tem um significado de plataforma particular (VirtualMachineScaleSet com SinglePlacementGroup=true) e CC gerirá um grupo de colocação nomeado para cada conjunto de nós. Utilize o recurso group_id PBS para este nome de grupo de colocação.

A hpc fila anexa o equivalente -l place=scatter:group=group_id a usar predefinições de fila nativa.

Instalação do Agente OpenPBS CycleCloud azpbs

O cluster OpenPBS CycleCloud gerirá a instalação e configuração do agente no nó do servidor. A preparação inclui a definição de recursos DE PBS, filas e ganchos. Uma instalação escrita também pode ser feita fora do CycleCloud.

# Prerequisite: python3, 3.6 or newer, must be installed and in the PATH
wget https://github.com/Azure/cyclecloud-pbspro/releases/download/2.0.5/cyclecloud-pbspro-pkg-2.0.5.tar.gz
tar xzf cyclecloud-pbspro-pkg-2.0.5.tar.gz
cd cyclecloud-pbspro

# Optional, but recommended. Adds relevant resources and enables strict placement
./initialize_pbs.sh

# Optional. Sets up workq as a colocated, MPI focused queue and creates htcq for non-MPI workloads.
./initialize_default_queues.sh

# Creates the azpbs autoscaler
./install.sh  --venv /opt/cycle/pbspro/venv

# Otherwise insert your username, password, url, and cluster name here.
./generate_autoscale_json.sh --install-dir /opt/cycle/pbspro \
                             --username user \
                             --password password \
                             --url https://fqdn:port \
                             --cluster-name cluster_name

azpbs validate

CycleCloud suporta um conjunto padrão de atributos de autostop em todos os agendadores:

Atributo Descrição
cyclecloud.cluster.autoscale.stop_enabled A paragem automática está ativada neste nó? [verdadeiro/falso]
cyclecloud.cluster.autoscale.idle_time_after_jobs A quantidade de tempo (em segundos) para que um nó se sente inativo após completar os trabalhos antes de ser reduzido.
cyclecloud.cluster.autoscale.idle_time_before_jobs A quantidade de tempo (em segundos) para que um nó se sente inativo antes de completar os trabalhos antes de ser reduzido.

Nota

O CycleCloud não suporta a configuração de rebentamento com PBS Aberto.

Nota

Apesar de o Windows ser uma plataforma Open PBS oficialmente suportada, o CycleCloud não suporta o funcionamento de PBS aberto no Windows neste momento.