Partilhar via


OpenPBS

O tipo de cluster OpenPBS no Azure CycleCloud fornece uma solução robusta e escalável para gerenciar cargas de trabalho de computação de alto desempenho (HPC) usando o PBS Professional. Essa integração permite que os usuários implantem e gerenciem clusters baseados em PBS na nuvem com configuração e automação simplificadas. Para obter instruções detalhadas de configuração, recursos suportados e orientação de uso, consulte o arquivo README do projeto CycleCloud Open PBS e PBS Professional Cluster Project

Você pode habilitar o OpenPBS em um cluster CycleCloud alterando a run_list na seção de configuração da sua definição de cluster. Um cluster PBS Professional (PBS Pro) tem duas partes principais: o nó primário , que executa o software em um sistema de arquivos compartilhado, e os nós de execução , que montam esse sistema de arquivos e executam os trabalhos enviados. Por exemplo, um trecho de modelo de cluster simples pode se parecer com:

[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]

Ao importar e iniciar um cluster com essa definição no CycleCloud, obtém-se um único nó primário . Você pode adicionar nós de execução ao cluster usando o cyclecloud add_node comando. Por exemplo, para adicionar 10 nós de execução adicionais, use:

cyclecloud add_node my-pbspro -t execute -c 10

Dimensionamento automático baseado em recursos PBS

O CycleCloud mantém dois recursos para expandir a capacidade de provisionamento dinâmico. Esses recursos são nodearray e machinetype.

Quando se envia um trabalho e se especifica um recurso de array de nós com qsub -l nodearray=highmem -- /bin/hostname, o CycleCloud adiciona nós ao array de nós chamado highmem. Se a matriz de nós não existir, o trabalho permanecerá ocioso.

Quando se especifica um recurso de tipo de máquina num envio de trabalho, como qsub -l machinetype:Standard_L32s_v2 my-job.sh, o CycleCloud autodimensiona as Standard_L32s_v2 máquinas no execute arranjo de nós (padrão). Se o tipo de máquina não estiver disponível na execute matriz de nós, o trabalho permanecerá ocioso.

Você pode usar esses recursos juntos como:

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

Redimensiona automaticamente apenas se especificar as Standard_HB60rs máquinas na matriz de nós hpc.

Adicionando filas extras atribuídas a arrays de nós

Em clusters com várias matrizes de nós, crie filas separadas para rotear automaticamente os trabalhos para o tipo de VM apropriado. Neste exemplo, suponha que a seguinte gpu array de nós esteja definida 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, execute os seguintes comandos no nó do servidor para criar a gpu fila:

/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"

Observação

Como mostrado no exemplo, a definição de fila empacota todas as VMs na fila em um único conjunto de escala de máquina virtual para dar suporte a trabalhos MPI. Para definir a fila para trabalhos seriais e permitir vários conjuntos de dimensionamento de máquina virtual, configure ungrouped = true tanto para resources_default quanto para default_chunk. Defina resources_default.place = pack se você deseja que o agendador agrupe tarefas em VMs em vez do método de alocação round-robin de tarefas. Para obter mais informações sobre o empacotamento de tarefas do PBS, consulte a documentação oficial do PBS Professional OSS.

Referência de configuração do PBS Professional

A tabela a seguir descreve as opções de configuração específicas do PBS Professional (PBS Pro) que você pode alternar para personalizar a funcionalidade:

Opções do PBS Pro Descrição
slots pbspro.slots O número de slots para um determinado nó a ser reportado ao PBS Pro. O número de slots corresponde à quantidade de trabalhos simultâneos que um nó pode executar. O padrão desse valor é o número de CPUs em uma determinada máquina. Você pode substituir esse valor nos casos em que não executa trabalhos com base na CPU, mas na memória, GPUs e outros recursos.
pbspro.slot_type O nome do tipo de 'slot' que um nó fornece. O padrão é 'executar'. Quando você marca um trabalho com o recurso slot_type=<type>físico, o trabalho é executado somente nas máquinas com o mesmo tipo de slot. Essa configuração permite criar diferentes configurações de software e hardware para cada nó e garante que o trabalho certo seja sempre agendado no tipo correto de nó.
pbspro.versão Padrão: '18.1.3-0'. Esta versão é atualmente a opção padrão e única para instalar e executar. No futuro, mais versões do software PBS Pro poderão ser suportadas.

Conecte o PBS ao CycleCloud

O CycleCloud gerencia clusters OpenPBS por meio de um agente instalável chamado azpbs. Esse agente se conecta ao CycleCloud para ler configurações de cluster e VM. Ele também se integra com OpenPBS para processar o trabalho e hospedar informações. Você pode encontrar todas as azpbs configurações no autoscale.json arquivo, geralmente localizado em /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 é invocado - tarefas, filas, recursos. O agente fornece estas informações no stderr e no stdout do comando e num ficheiro de registo, ambos em níveis configuráveis. O agente também registra todos os comandos de gerenciamento do PBS (qcmd) com argumentos em um arquivo.

Você pode encontrar todos esses arquivos no diretório /opt/cycle/pbspro/ onde você instala o agente.

Ficheiro Localização Descrição
Configuração de dimensionamento automático autoscale.json Configuração para Autoscale, Mapa de Recursos, informações de acesso ao CycleCloud
Registro de dimensionamento automático autoscale.log Log de thread principal do agente, incluindo gerenciamento de host CycleCloud
Registo de Pedidos demand.log Registo detalhado para correspondência de recursos
Registo de rastreamento qcmd qcmd.log Registrando as chamadas do agente qcmd
Configuração de registo de log logging.conf Configurações para registrar máscaras e locais de arquivos

Definindo recursos OpenPBS

Este projeto permite associar recursos OpenPBS a recursos de VM do Azure por meio do projeto cyclecloud-pbspro (azpbs). Você define essa relação de recurso em autoscale.json. O modelo de cluster inclui os seguintes recursos padrã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 corresponde a um atributo de nó chamado node.memory, que representa a memória total de qualquer máquina virtual. Essa configuração permite que azpbs lide com uma solicitação de recursos, como -l mem=4gb, comparando os requisitos dos recursos do trabalho com os recursos do nó.

Atualmente, o tamanho do disco está definido como size::20g. Veja um exemplo de como lidar com o tamanho específico do disco da VM:

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

Dimensionamento automático e conjuntos de escalonamento

O CycleCloud trata trabalhos de abrangência e seriais de forma diferente em clusters OpenPBS. Os trabalhos de abrangência pousam em nós que fazem parte do mesmo grupo de posicionamento. O grupo de colocação tem um significado específico na plataforma (VirtualMachineScaleSet com SinglePlacementGroup=true), e o CycleCloud gere um grupo de colocação nomeado para cada conjunto de nós abrangidos. Utilize o recurso group_id PBS para o nome deste grupo de posicionamento.

A fila hpc adiciona o equivalente de -l place=scatter:group=group_id usando os padrões nativos da fila.

Instalando o Agente CycleCloud OpenPBS azpbs

O cluster OpenPBS CycleCloud gerencia a instalação e a configuração do agente no nó do servidor. As etapas de preparação incluem a definição de recursos PBS, filas e ganchos. Você também pode executar uma instalação com script 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

O CycleCloud suporta um conjunto padrão de atributos de parada automática entre agendadores:

Atributo Descrição
cyclecloud.cluster.autoscale.parar_ativado Habilita a parada automática neste nó. [verdadeiro/falso]
cyclecloud.cluster.autoscale.tempo_inativo_após_tarefas O período de tempo (em segundos) durante o qual um nó permanece ocioso após concluir trabalhos, antes de parar automaticamente.
cyclecloud.cluster.autoscale.idle_time_before_jobs (tempo de inatividade antes dos trabalhos) A quantidade de tempo (em segundos) que um nó permanece ocioso após concluir os trabalhos, antes de parar automaticamente.

Observação

O CycleCloud não suporta a configuração de explosão com o Open PBS.

Observação

Embora o Windows seja uma plataforma Open PBS oficialmente suportada, o CycleCloud não suporta a execução do Open PBS no Windows no momento.