OpenPBS
Az OpenPBS egyszerűen engedélyezhető CycleCloud-fürtökön a fürtdefiníció konfigurációs szakaszában található "run_list" módosításával. A PBS Professional-fürt két alapvető összetevője a fő csomópont, amely egy megosztott fájlrendszert biztosít, amelyen a PBS Professional szoftver fut, valamint a megosztott fájlrendszert csatlakoztató és az elküldött feladatokat végrehajtó "végrehajtási" csomópontok. Egy egyszerű fürtsablon-kódrészlet például a következőképpen nézhet ki:
[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]
A CycleCloudban definícióval rendelkező fürtök importálása és elindítása egyetlen fő csomópontot eredményez. A végrehajtási csomópontok a paranccsal adhatók hozzá a cyclecloud add_node
fürthöz. Például további 10 végrehajtási csomópont hozzáadásához:
cyclecloud add_node my-pbspro -t execute -c 10
PBS erőforrás-alapú automatikus skálázás
A Cyclecloud két erőforrást tart fenn a dinamikus kiépítési képesség bővítéséhez. Ezek az erőforrások nodearray és machinetype típusúak.
Ha elküld egy feladatot, és megad egy csomópontarray-erőforrást, qsub -l nodearray=highmem -- /bin/hostname
akkor a CycleCloud csomópontokat ad hozzá a "highmem" nevű csomóponthoz. Ha nincs ilyen csomópont, akkor a feladat tétlen marad.
Hasonlóképpen, ha meg van adva egy géptípus-erőforrás, amely egy feladatküldést végez, például qsub -l machinetype:Standard_L32s_v2 my-job.sh
a CycleCloud automatikusan skálázja a "Standard_L32s_v2" az "execute" (alapértelmezett) csomópontban. Ha ez a géptípus nem érhető el a "végrehajtás" csomóponttömbben, a feladat tétlen marad.
Ezek az erőforrások a következő módon használhatók:
qsub -l nodes=8:ppn=16:nodearray=hpc:machinetype=Standard_HB60rs my-simulation.sh
amely csak akkor skáláz automatikusan, ha a "Standard_HB60rs" gépeknél a "hpc" csomóponttömb van megadva.
Nodearrayshoz rendelt további üzenetsorok hozzáadása
A több csomópontos csomópontokkal rendelkező fürtökön gyakran hozunk létre külön üzenetsorokat, hogy a feladatokat automatikusan a megfelelő virtuálisgép-típusra irányítsuk. Ebben a példában feltételezzük, hogy a fürtsablonban a következő "gpu" nodearray van definiálva:
[[nodearray gpu]]
Extends = execute
MachineType = Standard_NC24rs
[[[configuration]]]
pbspro.slot_type = gpu
A fürtsablon importálása és a fürt elindítása után a következő parancsok futtathatók a kiszolgálócsomóponton a "gpu" üzenetsor létrehozásához:
/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"
Megjegyzés
A fenti üzenetsor-definíció az üzenetsor összes virtuális gépét egyetlen virtuálisgép-méretezési csoportba csomagolja az MPI-feladatok támogatásához. A soros feladatok várólistájának meghatározásához és több virtuálisgép-méretezési csoport engedélyezéséhez állítsa be ungrouped = true
mindkettőt resources_default
és default_chunk
. Azt is beállíthatja resources_default.place = pack
, hogy az ütemező a feladatok ciklikus időszeleteléses lefoglalása helyett virtuális gépekre csomagolja a feladatokat. A PBS-feladatok csomagolásával kapcsolatos további információkért tekintse meg a PBS Professional OSS hivatalos dokumentációját.
PBS professional konfigurációs referencia
Az alábbiakban a PBS Professional-specifikus konfigurációs beállításokat találja, amelyekkel testre szabhatja a funkciókat:
PBS Pro-beállítások | Description |
---|---|
pbspro.slots | Egy adott csomópont tárolóhelyeinek száma, amelyet a PBS Pro-nak kell jelentenie. A tárolóhelyek száma az egy csomópont által futtatható egyidejű feladatok száma. Ez az érték alapértelmezés szerint az adott gépen lévő cpu-k száma. Ezt az értéket felülbírálhatja olyan esetekben, amikor nem cpu-alapú feladatokat futtat, hanem memórián, GPU-kon stb. alapul. |
pbspro.slot_type | A csomópont által megadott "pont" típusának neve. Az alapértelmezett érték a "execute". Ha egy feladat meg van címkézve a rögzített erőforrással slot_type=<type> , a feladat csak azonos típusú gépen fog futni. Így csomópontonként különböző szoftver- és hardverkonfigurációkat hozhat létre, és gondoskodhat arról, hogy a megfelelő feladat mindig a megfelelő csomóponttípuson legyen ütemezve. |
pbspro.version | Alapértelmezett: '18.1.3-0'. Ez a pbs professional verzió, amelyet telepíteni és futtatni kell. Jelenleg ez az alapértelmezett és egyetlen lehetőség. A jövőben a PBS Professional szoftver további verziói is támogatottak lesznek. |
A PBS csatlakoztatása a CycleClouddal
A CycleCloud az OpenPBS-fürtöket egy telepíthető, úgynevezett azpbs
. Ez az ügynök a CycleCloudhoz csatlakozik a fürt- és virtuálisgép-konfigurációk olvasásához, valamint integrálható az OpenPBS-sel a feladat és a gazdagép adatainak hatékony feldolgozása érdekében. Általában minden azpbs
konfiguráció megtalálható a autoscale.json
fájlban /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",
Fontos fájlok
Az azpbs
ügynök minden híváskor elemzi a PBS-konfigurációt – feladatok, üzenetsorok, erőforrások.
Az információkat a parancs stderr- és stdout-fájljában, valamint egy naplófájlban lehet megadni, mindkettő konfigurálható szinten. A rendszer az összes argumentumot tartalmazó PBS-felügyeleti parancsot (qcmd
) is naplózza a fájlba.
Ezek a fájlok az /opt/cycle/pbspro/ könyvtárban találhatók, ahol az ügynök telepítve van.
Fájl | Hely | Description |
---|---|---|
Automatikus skálázási konfiguráció | autoscale.json | Az automatikus skálázás, az erőforrástérkép és a CycleCloud hozzáférési adatainak konfigurálása |
Automatikus méretezési napló | autoscale.log | Ügynök fő szálnaplózása, beleértve a CycleCloud-gazdagépek kezelését |
Igénynapló | demand.log | Az erőforrás-egyeztetés részletes naplója |
qcmd nyomkövetési napló | qcmd.log | Az ügynökhívások qcmd naplózása |
Naplózási konfiguráció | logging.conf | Konfigurációk naplózási maszkokhoz és fájlhelyekhez |
OpenPBS-erőforrások definiálása
Ez a projekt lehetővé teszi az OpenPBS-erőforrások és az Azure-beli virtuálisgép-erőforrások társítását a cyclecloud-pbspro (azpbs) projekten keresztül. Ez az erőforrás-kapcsolat a következőben van definiálva autoscale.json
: .
Az általunk szállított fürtsablonnal definiált alapértelmezett erőforrások a következők:
{"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"
}]
}
A megnevezett mem
OpenPBS-erőforrás egy csomópontattribútumnak node.memory
felel meg, amely a virtuális gépek teljes memóriája. Ez a konfiguráció lehetővé teszi azpbs
egy erőforrás-kérés feldolgozását, például -l mem=4gb
a feladat erőforrás-követelményeinek és a csomópont-erőforrások értékének összehasonlításával.
Vegye figyelembe, hogy a lemez jelenleg a merevlemezére size::20g
van kódolva.
Íme egy példa a virtuális gép méretéhez tartozó lemezméret kezelésére
{
"select": {"node.vm_size": "Standard_F2"},
"name": "disk",
"value": "size::20g"
},
{
"select": {"node.vm_size": "Standard_H44rs"},
"name": "disk",
"value": "size::2t"
}
Automatikus skálázás és méretezési csoport
A CycleCloud az OpenPBS-fürtökben eltérően kezeli a spanning és a soros feladatokat.
Az átfedésben lévő feladatok olyan csomópontokra kerülnek, amelyek ugyanahhoz az elhelyezési csoporthoz tartoznak. Az elhelyezési csoportnak van egy adott platform jelentése (VirtualMachineScaleSet with SinglePlacementGroup=true), és a MÁSOLATOT egy elnevezett elhelyezési csoportot kezel minden egyes átnyúlt csomópontkészlethez. Ehhez az elhelyezési csoportnévhez használja a PBS-erőforrást group_id
.
Az hpc
üzenetsor a natív üzenetsor alapértelmezett értékeinek használatával fűzi hozzá a megfelelőt -l place=scatter:group=group_id
.
A CycleCloud OpenPBS-ügynök telepítése azpbs
Az OpenPBS CycleCloud-fürt kezeli az ügynök telepítését és konfigurációját a kiszolgálócsomóponton. Az előkészítés magában foglalja a PBS-erőforrások, üzenetsorok és horgok beállítását. A szkriptelt telepítés a CycleCloudon kívül is elvégezhető.
# 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
A CycleCloud támogatja az autostop attribútumok szabványos készletét az ütemezők között:
Attribútum | Leírás |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Engedélyezve van az automatikus beállítás ezen a csomóponton? [igaz/hamis] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Az az idő (másodpercben), a amíg egy csomópont tétlenül ül a feladatok elvégzése után, mielőtt leskálázható lenne. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Az az idő (másodpercben), a amíg egy csomópont tétlenül ül a feladatok elvégzése előtt, mielőtt leskálázódik. |
Megjegyzés
A CycleCloud nem támogatja az open PBS-sel történő teljesítményfokozási konfigurációt.
Megjegyzés
Annak ellenére, hogy a Windows hivatalosan támogatott Open PBS platform, a CycleCloud jelenleg nem támogatja az Open PBS windowsos futtatását.