Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.