Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O tipo de cluster OpenPBS no Azure CycleCloud fornece uma solução robusta e escalonável para gerenciar cargas de trabalho de HPC (computação de alto desempenho) 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 instalação, recursos com suporte e diretrizes de uso, consulte o CYCLECloud Open PBS e o PBS Professional Cluster Project README
Você pode habilitar o OpenPBS em um cluster CycleCloud alterando a seção de configuração run_list da definição do 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 agrupamento simples pode ser semelhante a:
[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, você obterá um único nó primário. Você pode adicionar nós de execução ao cluster usando o comando cyclecloud add_node. Por exemplo, para adicionar 10 nós execute a mais, use:
cyclecloud add_node my-pbspro -t execute -c 10
Dimensionamento automático baseado em recursos do PBS
O CycleCloud mantém dois recursos para expandir a funcionalidade de provisionamento dinâmico. Esses recursos são nodearray e machinetype.
Quando você envia um trabalho e especifica um recurso de matriz de nós com qsub -l nodearray=highmem -- /bin/hostname, o CycleCloud adiciona nós à matriz de nós chamada highmem. Se a matriz de nós não existir, o trabalho permanecerá ocioso.
Quando você especifica um recurso de tipo de máquina em um envio de trabalho, como qsub -l machinetype:Standard_L32s_v2 my-job.sh, o CycleCloud dimensiona automaticamente as máquinas Standard_L32s_v2 na matriz de nós padrão execute. Se o tipo de computador não estiver disponível na matriz de nós execute, 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
Dimensiona automaticamente somente se você especificar os computadores Standard_HB60rs na matriz de nós hpc.
Adicionando filas extras atribuídas a matrizes de nós
Em clusters com várias matrizes de nós, crie filas separadas para rotear automaticamente trabalhos para o tipo de VM apropriado. Neste exemplo, suponha que a seguinte gpu matriz de nós seja definida em seu modelo de cluster:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Depois de importar o template de cluster e iniciar o cluster, execute os seguintes comandos 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"
Observação
Conforme mostrado no exemplo, a definição de fila empacota todas as VMs na fila em um único conjunto de dimensionamento de máquinas virtuais para dar suporte a trabalhos de MPI. Para definir a fila para trabalhos seriais e permitir vários conjuntos de dimensionamento de máquinas virtuais, defina ungrouped = true para resources_default e default_chunk. Defina resources_default.place = pack se quiser que o agendador empacote trabalhos em VMs em vez de alocar trabalhos em round-robin. Para mais informações sobre a organização de trabalhos no 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 |
|---|---|
| pbspro.slots | O número de slots de um determinado nó a ser reportado ao PBS Pro. O número de slots é o número de trabalhos simultâneos que um nó pode executar. Esse valor usa como padrão o número de CPUs em um determinado computador. Você pode substituir esse valor em 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'' fornecido por um nó. O padrão é 'execute'. Quando você marca um trabalho com o recurso fixo slot_type=<type>, o trabalho é executado somente nos computadores com o mesmo tipo de slot. Essa configuração permite que você crie diferentes configurações de software e hardware para cada nó e garante que o trabalho certo esteja sempre agendado no tipo correto de nó. |
| pbspro.version | Padrão: '18.1.3-0'. Atualmente, essa versão é a opção padrão e única para instalar e executar. No futuro, mais versões do software PBS Pro poderão ter suporte. |
Conectar 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 ao OpenPBS para processar as informações de trabalho e host. Você pode encontrar todas as azpbs configurações no autoscale.json arquivo, geralmente localizadas 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",
Arquivos importantes
O agente azpbs analisa a configuração do PBS sempre que é chamado: tarefas, filas, recursos. O agente fornece essas informações no stderr e stdout do comando e em um arquivo de log, ambos em níveis configuráveis. O agente também registra todos os comandos de gerenciamento PBS (qcmd) com argumentos em um arquivo.
Você pode encontrar todos esses arquivos no diretório /opt/cycle/pbspro/, no qual instala o agente.
| Arquivo | Localização | Descrição |
|---|---|---|
| Configuração de Dimensionamento Automático | autoscale.json | Configuração para dimensionamento automático, mapa de recursos, informações de acesso do CycleCloud |
| Log de Dimensionamento Automático | autoscale.log | Registro de log do thread principal do agente, incluindo o gerenciamento do host do CycleCloud |
| Log de Demanda | demand.log | Log detalhado para a correspondência de recursos |
| Log de Rastreamento qcmd | qcmd.log | Registrar em log as chamadas do agente qcmd |
| Configuração de Log | logging.conf | Configurações para máscaras de log e locais de arquivos |
Definindo recursos do OpenPBS
Este projeto permite que você associe recursos openpbs a recursos de VM do Azure por meio do projeto cyclecloud-pbspro (azpbs). Você define essa relação de recursos 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 o azpbs processe uma solicitação de recurso, como -l mem=4gb, comparando o valor dos requisitos do recurso de trabalho com os recursos do nó.
Atualmente, o tamanho do disco está definido como size::20g. Aqui está um exemplo de como lidar com o tamanho do disco específico do tamanho 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 maneira diferente em clusters OpenPBS. Os trabalhos de abrangência são alocados em nós que fazem parte do mesmo grupo de posicionamento. O grupo de posicionamento tem um significado de plataforma específico (VirtualMachineScaleSet com SinglePlacementGroup=true) e o CycleCloud gerencia um grupo de posicionamento nomeado para cada conjunto de nós abrangido. Use o recurso PBS group_id para esse nome de grupo de posicionamento.
A fila hpc acrescenta o equivalente a -l place=scatter:group=group_id utilizando padrões nativos de fila.
Instalando o Agente OpenPBS do CycleCloud 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, filas e ganchos de PBS. 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 oferece suporte a um conjunto padrão de atributos de parada automática entre os agendadores.
| Atributo | Descrição |
|---|---|
| cyclecloud.cluster.autoscale.stop_enabled | Habilita a parada automática neste nó. [verdadeiro/falso] |
| cyclecloud.cluster.autoscale.idle_time_after_jobs | A quantidade de tempo (em segundos) para um nó ficar ocioso depois de concluir os trabalhos antes de parar automaticamente. |
| cyclecloud.cluster.autoscale.idle_time_before_jobs | A quantidade de tempo (em segundos) para um nó ficar ocioso antes de concluir os trabalhos antes de parar automaticamente. |
Observação
O CycleCloud não dá suporte à configuração de bursting com Open PBS.
Observação
Embora o Windows seja uma plataforma Open PBS com suporte oficial, o CycleCloud não dá suporte à execução do Open PBS no Windows no momento.