Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
OpenPBS può essere facilmente abilitato in un cluster CycleCloud modificando "run_list", nella sezione di configurazione della definizione del cluster. Un cluster PBS Professional (PBS Pro) include due parti principali: il nodo "master", che esegue il software in un file system condiviso e i nodi "execute", che montano il file system ed eseguono i processi inviati. Ad esempio, un semplice frammento di modello di cluster può essere simile al seguente:
[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]
L'importazione e l'avvio di un cluster con definizione in CycleCloud genera un singolo nodo "master". È possibile aggiungere nodi di esecuzione al cluster tramite il cyclecloud add_node
comando . Ad esempio, per aggiungere altri 10 nodi di esecuzione:
cyclecloud add_node my-pbspro -t execute -c 10
Scalabilità automatica basata sulle risorse PBS
Cyclecloud gestisce due risorse per espandere la funzionalità di provisioning dinamico. Queste risorse sono nodearray e machinetype.
Se si invia un processo e si specifica una risorsa nodearray usando qsub -l nodearray=highmem -- /bin/hostname
, allora CycleCloud aggiunge nodi al nodearray chiamato "highmem". Se non esiste un nodearray di questo tipo, il compito rimane inattivo.
Analogamente, se viene specificata una risorsa tipo macchina con l'invio di un processo di lavoro, ad esempio qsub -l machinetype:Standard_L32s_v2 my-job.sh
, CycleCloud ridimensiona automaticamente il 'Standard_L32s_v2' nel nodearray 'execute' (impostazione predefinita). Se il tipo di macchina non è disponibile nella matrice di nodi 'execute', il processo rimane inattivo.
Queste risorse possono essere usate in combinazione come:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
La scalabilità automatica avviene solo se i computer "Standard_HB60rs" sono specificati nella matrice di nodi "hpc".
Aggiunta di code extra assegnate a gruppi di nodi
Nei cluster con più nodearray è comune creare code separate per instradare automaticamente i processi al tipo di VM appropriato. In questo esempio si presuppone che il nodearray "gpu" seguente sia definito nel modello di cluster:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Dopo aver importato il modello di cluster e avviato il cluster, è possibile eseguire i comandi seguenti nel nodo del server per creare la coda "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"
Annotazioni
Come illustrato nell'esempio, la definizione della coda comprime tutte le macchine virtuali nella coda in un singolo set di scalabilità di macchine virtuali per supportare i processi MPI. Per definire la coda per i processi seriali e consentire più set di scalabilità di macchine virtuali, impostare ungrouped = true
sia per resources_default
che per default_chunk
. È anche possibile configurare resources_default.place = pack
se si vuole che lo scheduler ottimizzi i processi sulle macchine virtuali anziché l'allocazione round robin dei processi. Per altre informazioni sulla compressione dei processi PBS, vedere la documentazione ufficiale di PBS Professional OSS.
Informazioni di riferimento sulla configurazione di PBS Professional
Di seguito sono riportate le opzioni di configurazione specifiche di PBS Professional(PBS Pro) che è possibile attivare/disattivare per personalizzare le funzionalità:
Opzioni PBS Pro | Descrizione |
---|---|
pbspro.slots | Numero di slot per un determinato nodo da segnalare a PBS Pro. Il numero di slot è il numero di processi simultanei che un nodo può eseguire, il valore predefinito è il numero di CPU in un determinato computer. È possibile eseguire l'override di questo valore nei casi in cui non si eseguono processi basati sulla CPU, ma su memoria, GPU e così via. |
pbspro.slot_type | Nome del tipo di "slot" fornito da un nodo. Il valore predefinito è 'execute'. Quando un processo viene contrassegnato con la risorsa slot_type=<type> hard , tale processo viene eseguito solo nel computer dello stesso tipo di slot. Consente di creare configurazioni software e hardware diverse per nodo e assicurarsi che un processo appropriato sia sempre pianificato nel tipo di nodo corretto. |
pbspro.version | Impostazione predefinita: '18.1.3-0'. Questa è attualmente la versione predefinita e solo l'opzione per installare ed eseguire. Questa è attualmente la versione predefinita e l'unica opzione. In futuro potrebbero essere supportate altre versioni del software PBS Pro. |
Connettere PBS con CycleCloud
CycleCloud gestisce i cluster OpenPBS tramite un agente installabile denominato azpbs
. Questo agente si connette a CycleCloud per leggere le configurazioni di cluster e vm e si integra anche con OpenPBS per elaborare in modo efficace le informazioni sul processo e sull'host. Tutte le azpbs
configurazioni si trovano nel autoscale.json
file, in genere /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",
File importanti
L'agente azpbs
analizza la configurazione PBS ogni volta che viene chiamato - processi, code, risorse. Le informazioni vengono fornite in stderr e stdout del comando e in un file di log, entrambi a livelli configurabili. Tutti i comandi di gestione PBS (qcmd
) con argomenti vengono registrati anche nel file.
Tutti questi file sono disponibili nella directory /opt/cycle/pbspro/ in cui è installato l'agente.
Documento | Posizione | Descrizione |
---|---|---|
Configurazione della scalabilità automatica | autoscale.json | Configurazione per la scalabilità automatica, la mappa delle risorse, le informazioni di accesso a CycleCloud |
Log di scalabilità automatica | autoscale.log | Registrazione del thread principale dell'agente, comprensiva della gestione degli host di CycleCloud |
Registro delle richieste | demand.log | Log dettagliato per la corrispondenza delle risorse |
Log di traccia qcmd | qcmd.log | Registrazione delle chiamate dell'agente qcmd |
Configurazione registrazione | logging.conf | Configurazioni per le maschere di registrazione e i percorsi dei file |
Definizione delle risorse OpenPBS
Questo progetto consente l'associazione generale delle risorse OpenPBS con le risorse di macchine virtuali di Azure tramite il progetto cyclecloud-pbspro (azpbs). Relazione di risorsa definita in autoscale.json
.
Le risorse predefinite definite con il modello di cluster fornito sono
{"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"
}]
}
La risorsa OpenPBS denominata mem
è equivalente a un attributo del nodo denominato node.memory
, ovvero la memoria totale di qualsiasi macchina virtuale. Questa configurazione consente a azpbs
di elaborare una richiesta di risorsa come -l mem=4gb
, confrontando il valore dei requisiti delle risorse lavorative con le risorse del nodo.
Attualmente, le dimensioni del disco sono codificate in modo fisso in size::20g
. Di seguito è riportato un esempio di gestione delle dimensioni specifiche del disco delle macchine virtuali
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Scalabilità automatica e set di scalabilità
CycleCloud gestisce i processi seriali e di spanning in modo diverso nei cluster OpenPBS. I lavori che si estendono sono distribuiti sui nodi che fanno parte dello stesso gruppo di collocamento. Il gruppo di posizionamento ha una particolare piattaforma, ovvero VirtualMachineScaleSet con SinglePlacementGroup=true, e CycleCloud gestisce un gruppo di posizionamento denominato per ogni set di nodi esteso. Usa la risorsa PBS group_id
per questo nome del gruppo di posizionamento.
La hpc
coda aggiunge l'equivalente di -l place=scatter:group=group_id
usando le impostazioni predefinite della coda nativa.
Installazione dell'agente CycleCloud OpenPBS azpbs
Il cluster OpenPBS CycleCloud gestisce l'installazione e la configurazione dell'agente nel nodo del server. La preparazione include l'impostazione delle risorse, delle code e dei ganci PBS. Un'installazione con script può essere eseguita anche all'esterno di 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 supporta un set standard di attributi di autostop tra utilità di pianificazione:
Attributo | Descrizione |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | L'arresto automatico è abilitato su questo nodo? [vero/falso] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Il tempo (in secondi) in cui un nodo rimane inattivo dopo aver completato i processi prima di essere ridotto. |
cyclecloud.cluster.autoscale.tempo_inattivo_prima_delle_attività | Quantità di tempo (in secondi) per un nodo inattivo prima di completare i processi prima che venga ridotta. |
Annotazioni
CycleCloud non supporta la configurazione di bursting con Open PBS.
Annotazioni
Anche se Windows è una piattaforma Open PBS supportata ufficialmente, CycleCloud non supporta attualmente l'esecuzione di Open PBS in Windows.