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 só 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.