Condividi tramite


OpenPBS

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.