OpenPBS
O OpenPBS pode ser habilitado facilmente em um cluster do CycleCloud modificando o "run_list" na seção de configuração da definição do cluster. Os dois componentes básicos de um cluster PBS Professional são o nó 'mestre', que fornece um sistema de arquivos compartilhado no qual o software PBS Professional é executado e os nós 'execute', que são os hosts que montam o sistema de arquivos compartilhado e executam os trabalhos enviados. Por exemplo, um snippet de modelo de cluster 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]
Importar e iniciar um cluster com definição no CycleCloud produzirá um único nó 'mestre'. Os nós de execução podem ser adicionados ao cluster por meio do cyclecloud add_node
comando. Por exemplo, para adicionar mais 10 nós de execução:
cyclecloud add_node my-pbspro -t execute -c 10
Dimensionamento automático baseado em recursos da PBS
O Cyclecloud mantém dois recursos para expandir a capacidade de provisionamento dinâmico. Esses recursos são nodearray e machinetype.
Se você enviar um trabalho e especificar um recurso de nodearray até qsub -l nodearray=highmem -- /bin/hostname
lá, o CycleCloud adicionará nós à nodearray chamada 'highmem'. Se não houver tal nodearray, o trabalho permanecerá ocioso.
Da mesma forma, se um recurso de tipo de máquina for especificado, qual envio de trabalho, por exemplo qsub -l machinetype:Standard_L32s_v2 my-job.sh
, o CycleCloud dimensiona automaticamente o 'Standard_L32s_v2' na nodearray 'execute' (padrão). Se esse tipo de computador não estiver disponível na matriz de nós 'execute', o trabalho permanecerá ocioso.
Esses recursos podem ser usados em combinação como:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
que será dimensionado automaticamente somente se os computadores 'Standard_HB60rs' forem especificados como uma matriz de nó 'hpc'.
Adicionando filas adicionais atribuídas a nodearrays
Em clusters com várias nodearrays, é comum criar filas separadas para rotear trabalhos automaticamente para o tipo de VM apropriado. Neste exemplo, vamos supor que a seguinte nodearray "gpu" foi definida em 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 executados 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
A definição de fila acima empacotará todas as VMs na fila em um único conjunto de dimensionamento de VM para dar suporte a trabalhos de MPI. Para definir a fila para trabalhos serial e permitir vários conjuntos de dimensionamento de VM, defina ungrouped = true
para ambos resources_default
e default_chunk
. Você também pode definir resources_default.place = pack
se quiser que o agendador empacote trabalhos em VMs em vez da alocação round robin de trabalhos. Para obter mais informações sobre o empacotamento de trabalhos da PBS, consulte a documentação oficial do PBS Professional OSS.
Referência de configuração profissional da PBS
Veja a seguir as opções de configuração específicas do PBS Professional que você pode alternar para personalizar a funcionalidade:
Opções do PBS Pro | Descrição |
---|---|
pbspro.slots | O número de slots para um determinado nó relatar ao PBS Pro. O número de slots é o número de trabalhos simultâneos que um nó pode executar, esse valor é padrão para 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 etc. |
pbspro.slot_type | O nome do tipo de 'slot' que um nó fornece. O padrão é 'execute'. Quando um trabalho é marcado com o recurso slot_type=<type> rígido, esse trabalho só será executado em um computador do mesmo tipo de slot. Isso permite criar diferentes configurações de software e hardware por nó e garantir que um trabalho apropriado esteja sempre agendado no tipo correto de nó. |
pbspro.version | Padrão: '18.1.3-0'. Esta é a versão do PBS Professional a ser instalada e executada. Atualmente, essa é a opção padrão e única . Nas versões adicionais futuras do software PBS Professional podem 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 e também se integra ao OpenPBS para processar efetivamente as informações do trabalho e do host. Todas as azpbs
configurações são encontradas no autoscale.json
arquivo, 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",
Arquivos importantes
O azpbs
agente analisa a configuração da PBS sempre que é chamada – trabalhos, filas, recursos.
As informações são fornecidas no stderr e stdout do comando, bem como em um arquivo de log, ambos em níveis configuráveis. Todos os comandos de gerenciamento pbs (qcmd
) com argumentos também são registrados no arquivo.
Todos esses arquivos podem ser encontrados no diretório /opt/cycle/pbspro/ em que o agente está instalado.
Arquivo | Location | 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 | Log de thread principal do agente, incluindo o gerenciamento de host do CycleCloud |
Log de Demanda | demand.log | Log detalhado para correspondência de recursos |
Log de Rastreamento qcmd | qcmd.log | Registrar em log as chamadas do agente qcmd |
Configuração de log | log.conf | Configurações para máscaras de log e locais de arquivo |
Definindo recursos do OpenPBS
Esse projeto permite uma associação geral de recursos OpenPBS com recursos de VM do Azure por meio do projeto cyclecloud-pbspro (azpbs). Essa relação de recursos definida em autoscale.json
.
Os recursos padrão definidos com o modelo de cluster com o qual 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
é equivalente a um atributo de nó nomeado node.memory
, que é a memória total de qualquer máquina virtual. Essa configuração permite processar uma solicitação de recurso, como -l mem=4gb
comparando o valor dos requisitos azpbs
do recurso de trabalho com os recursos do nó.
Observe que o disco está atualmente codificado para size::20g
.
Aqui está um exemplo de manipulação do 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 dimensionamento
O CycleCloud trata trabalhos serial e de abrangência de forma diferente em clusters OpenPBS.
Os trabalhos de abrangência cairão 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 CC gerencia um grupo de posicionamento nomeado para cada conjunto de nós estendido. Use o recurso group_id
PBS para esse nome de grupo de posicionamento.
A hpc
fila acrescenta o equivalente usando padrões de -l place=scatter:group=group_id
fila nativa.
Instalando o Agente OpenPBS do CycleCloud azpbs
O cluster Do OpenPBS CycleCloud gerenciará a instalação e a configuração do agente no nó do servidor. A preparação inclui a configuração de recursos da PBS, filas e ganchos. Uma instalação com script 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
O CycleCloud dá suporte a um conjunto padrão de atributos de preenchimento automático entre agendadores:
Atributo | Descrição |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | O autostop está habilitado neste nó? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | A quantidade de tempo (em segundos) para um nó ficar ocioso após concluir trabalhos antes de ser reduzido. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | A quantidade de tempo (em segundos) para um nó ficar ocioso antes de concluir trabalhos antes de ser reduzido. |
Observação
O CycleCloud não dá suporte à configuração de intermitência com o 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.