OpenPBS
OpenPBS je možné v clusteru CycleCloud snadno povolit úpravou run_list v části konfigurace definice clusteru. Dvě základní komponenty clusteru PBS Professional jsou hlavním uzlem, který poskytuje sdílený systém souborů, na kterém běží software PBS Professional, a uzly "execute", které jsou hostiteli, kteří připojují sdílený systém souborů a spouští odeslané úlohy. Například jednoduchý fragment šablony clusteru může vypadat takto:
[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]
Import a spuštění clusteru s definicí v CycleCloudu zajistí jeden hlavní uzel. Spuštění uzlů je možné přidat do clusteru cyclecloud add_node
pomocí příkazu. Pokud chcete například přidat 10 dalších spuštěných uzlů:
cyclecloud add_node my-pbspro -t execute -c 10
Automatické škálování založené na prostředcích PBS
Cyclecloud udržuje dva prostředky, které rozšiřují možnosti dynamického zřizování. Tyto prostředky jsou nodearray a machinetype.
Pokud odešlete úlohu a zadáte prostředek nodearray, qsub -l nodearray=highmem -- /bin/hostname
pak CycleCloud přidá uzly do uzlu s názvem highmem. Pokud takový uzel neexistuje, zůstane úloha nečinná.
Podobně pokud je zadán prostředek typu machinetype, který odeslání úlohy, např. qsub -l machinetype:Standard_L32s_v2 my-job.sh
, pak CycleCloud automaticky škáluje "Standard_L32s_v2" v uzlu execute (výchozí) nodearray. Pokud tento typ počítače není v poli uzlu execute dostupný, zůstane úloha nečinná.
Tyto prostředky lze použít v kombinaci jako:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
které se automaticky škáluje pouze v případě, že jsou počítače Standard_HB60rs zadány pole uzlů hpc.
Přidání dalších front přiřazených k nodearrays
V clusterech s více uzly je běžné vytvářet samostatné fronty pro automatické směrování úloh do příslušného typu virtuálního počítače. V tomto příkladu předpokládáme, že v šabloně clusteru je definován následující nodearray gpu:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
Po importu šablony clusteru a spuštění clusteru je možné na uzlu serveru spustit následující příkazy, které vytvoří frontu 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"
Poznámka
Výše uvedená definice fronty zabalí všechny virtuální počítače ve frontě do jedné škálovací sady virtuálních počítačů pro podporu úloh MPI. Chcete-li definovat frontu pro sériové úlohy a povolit více škálovacích sad virtuálních počítačů, nastavte ungrouped = true
pro obě resources_default
a default_chunk
. Můžete také nastavit resources_default.place = pack
, pokud chcete, aby plánovač zabalil úlohy na virtuální počítače místo přidělení úloh kruhovým dotazem. Další informace o balení pracovních úloh PBS najdete v oficiální dokumentaci k operačnímu systému PBS Professional.
Referenční informace o konfiguraci PBS Professional
Níže jsou uvedené možnosti konfigurace specifické pro PBS Professional, které můžete přepnout a přizpůsobit funkce:
Možnosti PBS Pro | Description |
---|---|
pbspro.sloty | Početslotch Počet slotů je počet souběžných úloh, které může uzel spustit. Tato hodnota se ve výchozím nastavení nastaví na počet procesorů na daném počítači. Tuto hodnotu můžete přepsat v případech, kdy nespouštíte úlohy na základě procesoru, ale na paměti, GPU atd. |
pbspro.slot_type | Název typu slotu, který uzel poskytuje. Výchozí hodnota je "execute". Pokud je úloha označena pevným prostředkem slot_type=<type> , tato úloha se spustí pouze na počítači se stejným typem slotu. To vám umožní vytvořit různé konfigurace softwaru a hardwaru na jeden uzel a zajistit, aby byla odpovídající úloha vždy naplánována na správný typ uzlu. |
pbspro.version | Výchozí hodnota: 18.1.3-0. Toto je verze PBS Professional pro instalaci a spuštění. Toto je aktuálně výchozí a jediná možnost. V budoucnu se můžou podporovat další verze softwaru PBS Professional. |
Připojení PBS pomocí CycleCloudu
CycleCloud spravuje clustery OpenPBS prostřednictvím instalovatelného agenta, kterému se říká azpbs
. Tento agent se připojí ke službě CycleCloud ke čtení konfigurací clusteru a virtuálních počítačů a také se integruje s OpenPBS, aby efektivně zpracovával informace o úloze a hostiteli. Všechny azpbs
konfigurace jsou nalezeny v autoscale.json
souboru, obvykle /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",
Důležité soubory
Agent azpbs
analyzuje konfiguraci PBS při každém volání – úlohy, fronty, prostředky.
Informace jsou k dispozici ve stderru a stdout příkazu i v souboru protokolu, a to jak na konfigurovatelných úrovních. Všechny příkazy pro správu PBS (qcmd
) s argumenty se protokolují také do souboru.
Všechny tyto soubory najdete v adresáři /opt/cycle/pbspro/, kde je agent nainstalovaný.
Soubor | Umístění | Popis |
---|---|---|
Konfigurace automatického škálování | autoscale.json | Konfigurace pro informace o přístupu k automatickému škálování, mapě prostředků, cycleCloudu |
Protokol automatického škálování | autoscale.log | Protokolování hlavního vlákna agenta včetně správy hostitelů CycleCloud |
Protokol poptávky | demand.log | Podrobný protokol pro porovnávání prostředků |
protokol trasování qcmd | qcmd.log | Protokolování volání agenta qcmd |
Konfigurace protokolování | logging.conf | Konfigurace pro masky protokolování a umístění souborů |
Definování prostředků OpenPBS
Tento projekt umožňuje obecně přidružovat prostředky OpenPBS k prostředkům virtuálních počítačů Azure prostřednictvím projektu cyclecloud-pbspro (azpbs). Tento vztah prostředku definovaný v .autoscale.json
Výchozí prostředky definované šablonou clusteru, se kterými se dodáváme, jsou
{"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"
}]
}
Prostředek OpenPBS s názvem mem
se rovná atributu uzlu s názvem node.memory
, což je celková paměť libovolného virtuálního počítače. Tato konfigurace umožňuje azpbs
zpracovat požadavek na prostředek, například -l mem=4gb
porovnáním hodnoty požadavků na prostředky úlohy s prostředky uzlu.
Všimněte si, že disk je nyní pevně zakódován na size::20g
.
Tady je příklad zpracování velikosti konkrétního disku velikosti virtuálního počítače.
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Automatické škálování a škálovací sady
CycleCloud zpracovává spanning a sériové úlohy v clusterech OpenPBS odlišně.
Úlohy, které jsou součástí stejné skupiny umístění, budou přistály na uzlech. Skupina umístění má konkrétní význam platformy (VirtualMachineScaleSet s SinglePlacementGroup=true) a kopie bude spravovat pojmenovanou skupinu umístění pro každou rozloženou sadu uzlů. Pro tento název skupiny umístění použijte prostředek group_id
PBS.
Fronta hpc
připojí ekvivalent -l place=scatter:group=group_id
pomocí výchozích hodnot nativní fronty.
Instalace agenta CycleCloud OpenPBS azpbs
Cluster OpenPBS CycleCloud bude spravovat instalaci a konfiguraci agenta na uzlu serveru. Příprava zahrnuje nastavení prostředků, front a háků PBS. Skriptovanou instalaci je možné provést i mimo 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 podporuje standardní sadu atributů automatickéhotopu napříč plánovači:
Atribut | Popis |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Je na tomto uzlu povolené automatické dokončování? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Doba (v sekundách) pro uzel, který se po dokončení úloh po dokončení úloh nastaví jako nečinný, než se škáluje. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Doba (v sekundách) pro uzel, která má být nečinná před dokončením úloh před vertikálním snížením kapacity. |
Poznámka
CycleCloud nepodporuje konfiguraci roztrhání pomocí Open PBS.
Poznámka
I když je Windows oficiálně podporovanou platformou Open PBS, CycleCloud v tuto chvíli nepodporuje spuštění Open PBS ve Windows.