CycleCloud GridEngine-fürt
Az Open Grid Scheduler (Grid Engine) egyszerűen engedélyezhető egy Azure CycleCloud-fürtön a fürtdefiníció "run_list" módosításával. A Rácsmotor-fürt két alapvető összetevője a fő csomópont, amely egy megosztott fájlrendszert biztosít, amelyen a Grid Engine szoftver fut, valamint a megosztott fájlrendszert csatlakoztató és az elküldött feladatokat végrehajtó "végrehajtási" csomópontok. Egy egyszerű Rácsmotor-fürtsablon-kódrészlet például a következőképpen nézhet ki:
[cluster grid-engine]
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[sge_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A1 # 1 core
[[[configuration]]]
run_list = role[sge_execute_role]
Megjegyzés
A szerepkörnevek régi okokból tartalmazzák a "sge" nevet: a Grid Engine a Sun Microsystems terméke volt.
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 grid-engine -t execute -c 10
Rácsmotor automatikus skálázása
Az Azure CycleCloud támogatja a rácsmotor automatikus skálázását, ami azt jelenti, hogy a szoftver figyeli az üzenetsor állapotát, és szükség szerint be- és kikapcsolja a csomópontokat a munka optimális idő/költség arányban történő elvégzéséhez. A rácsmotor automatikus skálázásának engedélyezéséhez adja hozzá Autoscale = true
a fürtdefiníciót:
[cluster grid-engine]
Autoscale = True
Alapértelmezés szerint a Rácsmotor-üzenetsorba beküldött összes feladat "execute" típusú gépeken fog futni, ezek a "execute" nevű csomóponttömb által meghatározott gépek. A "execute" névre nem korlátozódik, és nem korlátozódik egyetlen gépkonfigurációra a feladatok futtatásához és az automatikus skálázáshoz.
Gyakori eset például, hogy két különböző csomópontdefinícióval rendelkező fürttel rendelkezik, az egyik a normál processzort használó "normál" feladatok futtatására szolgál, míg más típusú feladatok GPU-gépeket használhatnak. Ebben az esetben a várólistát a normál feladatok és a GPU-feladatok egymástól függetlenül skálázásával is meg szeretné győződni arról, hogy minden gép megfelelő mennyiségű géppel rendelkezik a munkavárólista felhasználásához. Egy példadefiníció a következőhöz hasonló:
[cluster grid-engine]
Autoscale = True
[[node master]]
ImageName = cycle.image.centos7
MachineType = Standard_A3 # 4 cores
[[[configuration]]]
run_list = role[sge_master_role]
[[nodearray execute]]
ImageName = cycle.image.centos7
MachineType = Standard_A4 # 8 cores
[[[configuration]]]
run_list = role[sge_execute_role]
[[nodearray gpu]]
MachineType = Standard_NV12 # 2 GPUs
ImageName = cycle.image.centos7
# Set the number of cores to the number of GPUs for autoscaling purposes
CoreCount = 2
[[[configuration]]]
run_list = role[sge_execute_role]
gridengine.slot_type = gpu
gridengine.slots = 2
A fenti példában most két csomóponttömb van: az egyik egy "standard" végrehajtási csomóponttömb, a második neve "gpu", amely egy Olyan MachineType-t biztosít, amely két Nvidia GPU-val rendelkezik (Standard_NV12 az Azure-ban). Azt is vegye figyelembe, hogy a "csge:sgeexec" recept mellett most két új elem is szerepel a konfigurációs szakaszban. Az összeadás gridengine.slot_type = gpu
azt jelzi a rácsmotor ütemezőjének, hogy ezeknek a csomópontoknak "gpu" csomópontoknak kell lenniük, ezért csak gpu-feladatokat kell futtatniuk. A "gpu" név tetszőleges, de a csomópontot leíró név a leginkább hasznos. Állítsa be gridengine.slots = 2
a beállítást, amely arra utasítja a szoftvert, hogy győződjön meg arról, hogy ez a csomóponttípus egyszerre csak két feladatot tud futtatni (Standard_NV12 csak 2 GPU-val rendelkezik). Alapértelmezés szerint a rácsmotor csomópontonkénti tárolóhelyeinek száma a rendszeren lévő cpu-k száma lesz, amely ebben az esetben túl sok feladat egyidejű végrehajtását okozná a csomóponton. A fenti példában a csomópontarray úgy van beállítva, CoreCount=2
hogy megfeleljen a MachineType-on elérhető GPU-k számának, így a CycleCloud megfelelően skálázhatja a tömböt GPU-n és CPU-számon.
Az parancs futtatásával ellenőrizheti a tárolóhelyek számát és slot_type a gépeken:
-bash-4.1# qstat -F slot_type
queuename qtype resv/used/tot. load_avg arch states
---------------------------------------------------------------------------------
all.q@ip-0A000404 BIP 0/0/4 0.17 linux-x64
hf:slot_type=execute
---------------------------------------------------------------------------------
all.q@ip-0A000405 BIP 0/0/2 2.18 linux-x64
hf:slot_type=gpu
---------------------------------------------------------------------------------
all.q@ip-0A000406 BIP 0/0/4 0.25 linux-x64
Figyelje meg, hogy a megadott "slot_type" közül egy van (végrehajtás és gpu), és a "végrehajtási" ponthoz tartozó tárolóhelyek száma 4, ami a gépen lévő CPU-k száma. A "GPU" típusú tárolóhelyek száma 2, amelyet a fürtkonfigurációs sablonban határoztunk meg. A harmadik gép a fő csomópont, amely nem futtat feladatokat.
Rácsmotor – speciális használat
A fenti konfigurációs beállítások lehetővé teszik a csomópontok és csomóponttömbök speciális testreszabását. Ha például a feladatok adott mennyiségű memóriát igényelnek , például egyenként 10 GB-ot, megadhat egy csomópontarrayt, amely 60 GB memóriával indítja el a gépeket, majd adja hozzá a konfigurációs beállításokat gridengine.slots = 6
, hogy csak 6 feladat fusson egyidejűleg ezen a csomóponttípuson (biztosítva, hogy minden feladat legalább 10 GB memóriával működjön).
Csoportosított csomópontok a rácsmotorban
Amikor egy párhuzamos feladatot elküld a rácsmotornak, a CycleCloud által használt alapértelmezett automatikus skálázási viselkedés az, hogy az egyes MPI-feladatokat csoportosított csomópont-kérésként kezeli. A csoportosított csomópontok szorosan kapcsolódnak egymáshoz, és ideálisak MPI-munkafolyamatokhoz.
Amikor csoportosított csomópontok halmaza csatlakozik egy rácsmotor-fürthöz, a rendszer az egyes csomópontok csoportazonosítóját használja a komplex érték affinity_group
értékeként. Azáltal, hogy meg kell adni a affinity_group
feladatokat, lehetővé teszi a Rácsmotor-ütemező számára, hogy a feladatok csak az azonos csoportba tartozó gépekre kerülhessenek.
A CycleCloud automatizálása automatikusan kéri a csoportosított csomópontokat, és hozzárendeli őket az elérhető affinitási csoportokhoz párhuzamos feladatok esetén.
Feladatok elküldése a rácsmotorba
A feladatok rácsmotor-ütemezőbe való küldésének leggyakoribb módja a következő parancs:
qsub my_job.sh
Ez a parancs elküld egy feladatot, amely egy "execute" típusú csomóponton fog futni, amely egy csomópont, amelyet a nodearray "execute" határoz meg. Ha egy feladatot egy másik típusú csomóponton szeretne futtatni, például a fenti "gpu" csomóponttípust, módosítjuk a beküldést:
qsub -l slot_type=gpu my_gpu_job.sh
Ez a parancs biztosítja, hogy a feladat csak "gpu" slot_type futjon.
Ha slot_type nincs megadva, a rendszer automatikusan hozzárendeli a "execute" parancsot a feladathoz. A felhasználó módosíthatja azt a mechanizmust, amely automatikusan hozzárendeli slot_type feladatait. Létrehozhat egy python-szkriptet, amely az /opt/cycle/jetpack/config/autoscale.py helyen található, és egyetlen "sge_job_handler" függvényt kell definiálnia. Ez a függvény a parancs kimenetéhez qstat -j JOB_ID
hasonló szótári reprezentációt kap a feladathoz, és a feladathoz frissíteni kívánt nehéz erőforrások szótárát kell visszaadnia. Az alábbi példa egy szkript, amely hozzárendel egy feladatot a "gpu" slot_type, ha a feladatok neve tartalmazza a "gpu" betűket. Ez lehetővé tenné a felhasználó számára, hogy a feladatparaméterek módosítása nélkül küldje el a feladatokat egy automatizált rendszerből, és továbbra is futtassa a feladatokat, és automatikusan skálázhassa a megfelelő csomópontokat:
#!/usr/env python
#
# File: /opt/cycle/jetpack/config/autoscale.py
#
def sge_job_handler(job):
# The 'job' parameter is a dictionary containing the data present in a 'qstat -j JOB_ID':
hard_resources = {'slot_type': 'execute', 'affinity_group' : 'default' }
# Don't modify anything if the job already has a slot type
# You could modify the slot type at runtime by not checking this
if 'hard_resources' in job and 'slot_type' in job['hard_resources']:
return hard_resources
# If the job's script name contains the string 'gpu' then it's assumed to be a GPU job.
# Return a dictionary containing the new job_slot requirement to be updated.
# For example: 'big_data_gpu.sh' would be run on a 'gpu' node.
if job['job_name'].find('gpu') != -1:
hard_resources {'slot_type': 'gpu'}
else:
return hard_resources
Az átadott "feladat" paraméter egy szótár, amely a qstat -j JOB_ID
hívásban szereplő adatokat tartalmazza:
{
"job_number": 5,
"job_name": "test.sh",
"script_file": "test.sh",
"account": "sge",
"owner": "cluster.user",
"uid": 100,
"group": "cluster.user",
"gid": 200,
"submission_time": "2013-10-09T09:09:09",
"job_args": ['arg1', 'arg2', 'arg3'],
"hard_resources": {
'mem_free': '15G',
'slot_type': 'execute'
}
}
Ezzel a szkriptelési funkcióval automatikusan hozzárendelheti slot_type a feladatban meghatározott paraméterek alapján, például argumentumok, egyéb erőforrás-követelmények, például memória, felhasználó elküldése stb. alapján.
Ha minden egyes "slot_type" 5 feladatát szeretné elküldeni:
qsub -t 1:5 gpu_job.sh
qsub -t 1:5 normal_job.sh
Most már 10 feladat lenne az üzenetsorban. A fent definiált szkript miatt a névben szereplő "gpu" nevű öt feladat automatikusan úgy lett konfigurálva, hogy csak a "slot_type=gpu" csomópontokon fusson. A CycleCloud automatikus skálázási mechanizmusa azt észleli, hogy 5 "gpu" és 5 "végrehajtási" feladat van. Mivel a "gpu" csomópontarray úgy van definiálva, hogy csomópontonként 2 tárolóhellyel rendelkezik, a CycleCloud ezen csomópontok közül 3-at indít el (5/2=2,5 felfelé kerekítve 3-ra). 5 normál feladat van, mivel az "execute" csomópontarray géptípusa 4 CPU-val rendelkezik, a CycleCloud ezen csomópontok közül 2-t indít el a feladatok kezeléséhez (5/4=1,25 felfelé kerekítve 2-re). Rövid idő elteltével, amíg az újonnan elindított csomópontok elindulnak és konfigurálódnak, mind a 10 feladat befejeződik, majd az 5 csomópont automatikusan leáll, mielőtt a felhőszolgáltató újra kiszámlázná.
A feladatok időtartama egy óra. Ha a feladat futtatókörnyezete ismert, az automatikus skálázási algoritmus kihasználhatja ezeket az információkat. A feladatkörnyezethez való hozzáadással tájékoztassa az automatikus skálázást a feladat várható futási idejéről. Az alábbi példa azt mutatja be az automatikus skálázásban, hogy a feladat futtatókörnyezete átlagosan 10 percet jelent:
qsub -ac average_runtime=10 job_with_duration_of_10m.sh
Rácsmotor konfigurációs referenciája
Az alábbiakban a Grid Engine-specifikus konfigurációs beállításokat adhatja meg, amelyekkel testre szabhatja a funkciókat:
SGE-Specific konfigurációs beállításai | Description |
---|---|
gridengine.slots | Egy adott csomópont rácsmotornak jelenteni kívánt tárolóhelyeinek száma. A tárolóhelyek száma az egy csomópont által végrehajtható egyidejű feladatok száma. Ez az érték alapértelmezés szerint az adott gépen lévő PROCESSZORok 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. |
gridengine.slot_type | A csomópont által megadott "pont" típusának neve. Az alapértelmezett érték a "végrehajtás". Ha egy feladat meg van címkézve a "slot_type=" kemény erőforrással, a feladat csak egy azonos tárolóhelytípusú gépen fog futni. Ez lehetővé teszi, hogy csomópontonként különböző szoftver- és hardverkonfigurációkat hozzon létre, és biztosítsa, hogy a megfelelő feladat mindig a megfelelő csomóponttípusra legyen ütemezve. |
gridengine.ignore_fqdn | Alapértelmezett érték: true (igaz). Állítsa false (hamis) értékre, ha a fürt összes csomópontja nem része egyetlen DNS-tartománynak. |
gridengine.version | Alapértelmezett: '2011.11'. Ez a telepíteni és futtatni kívánt Grid Engine-verzió. Jelenleg ez az alapértelmezett és egyetlen lehetőség. A jövőben a Grid Engine szoftver további verziói is támogatottak lesznek. |
gridengine.root | Alapértelmezett: '/sched/sge/sge-2011.11' Itt lesz telepítve és csatlakoztatva a rácsmotor a rendszer minden csomópontjára. Javasoljuk, hogy ezt az értéket ne módosítsa, de ha igen, akkor a fürt minden csomópontján ugyanarra az értékre kell állítani. |
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), amíg egy csomópont tétlenül ül a feladatok befejezése után a leskálázás előtt. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Az az idő (másodpercben), amíg egy csomópont tétlenül ül, mielőtt befejezi a feladatokat a vertikális leskálázás előtt. |
Ismert problémák
-
qsh
az interaktív munkamenet parancsa nem működik. Használjaqrsh
alternatívaként. - Az
exclusive=1
automatikus skálázás nem tartja tiszteletben az komplexumot. Ennek eredményeként a vártnál kevesebb csomópont indulhat el.
Megjegyzés
Annak ellenére, hogy a Windows hivatalosan támogatott GridEngine platform, a CycleCloud jelenleg nem támogatja a GridEngine windowsos futtatását.
Ez az oldal az (Altair) GridEngine CycleClouddal való használatának képességeit és konfigurációját érinti.
Erőforrások konfigurálása
A cyclecloud-gridengine alkalmazás az azure-felhőbeli erőforrásokhoz illeszkedő sge-erőforrásokat biztosít gazdag automatikus skálázási és fürtkonfigurációs eszközök biztosításához. Az alkalmazás automatikusan üzembe lesz helyezve a CycleCloud felhasználói felületén létrehozott fürtökre, vagy bármely hálózati rendszergazdai gazdagépre telepíthető egy meglévő fürtön.
Cyclecloud-gridengine telepítése vagy frissítése
A cyclecloud-gridengine csomag kiadási összetevőként érhető el a GitHubon . A telepítés és a frissítés ugyanaz a folyamat lesz. Az alkalmazáshoz python3 és virtualenv szükséges.
tar xzf cyclecloud-gridengine-pkg-*.tar.gz
cd cyclecloud-gridengine
./install.sh
Fontos fájlok
Az alkalmazás minden híváskor elemzi az sge-konfigurációt – feladatokat, üzenetsorokat, összetetteket. Az információkat a parancs stderr- és stdout-fájljában, valamint egy naplófájlban adták meg, mindkettő konfigurálható szinten. A rendszer az argumentumokat tartalmazó összes rácsengine felügyeleti parancsot is naplózza a fájlba.
Description | Hely |
---|---|
Automatikus skálázási konfiguráció | /opt/cycle/gridengine/autoscale.json |
Automatikus skálázási napló | /opt/cycle/jetpack/logs/autoscale.log |
qconf nyomkövetési napló | /opt/cycle/jetpack/logs/qcmd.log |
SGE-üzenetsorok, gazdagépcsoportok és párhuzamos környezetek
A cyclecloud-gridengine automatikus skálázási segédprogram () azge
a fürt konfigurációjának megfelelően ad hozzá gazdagépeket a fürthöz. Az automatikus skálázási műveletek a következő műveleteket hajtják végre.
- Olvassa el a feladat erőforrás-kérelmét, és keresse meg a megfelelő virtuális gépet az indításhoz
- Indítsa el a virtuális gépet, és várja meg, amíg készen áll
- Az üzenetsor és a párhuzamos környezet beolvasása a feladatból
- A queue/pe alapján rendelje hozzá a gazdagépet egy megfelelő gazdagépcsoporthoz
- Adja hozzá a gazdagépet a fürthöz, valamint a gazdagépcsoportot tartalmazó többi üzenetsorhoz
Fontolja meg a következő üzenetsor-definíciót egy short.q nevű üzenetsorhoz
hostlist @allhosts @mpihg01 @mpihg02 @lowprio
...
seq_no 10000,[@lowprio=10],[@mpihg01=100],[@mpihg02=200]
pe_list NONE,[@mpihg01=mpi01], \
[@mpihg02=mpi02]
A feladat qsub -q short.q -pe mpi02 12 my-script.sh
elküldése egy virtuális gép bérletével kezdődik, és amikor hozzáadja a fürthöz, csatlakozik a gazdagépcsoporthoz @mpihg02 , mivel ez az a gazdagépcsoport, amely az üzenetsor és a párhuzamos környezet számára is elérhető. A @allhosts is hozzá lesz adva, amely egy speciális gazdagépcsoport.
Pe qsub -q short.q my-script.sh
megadása nélkül a rendszer hozzáadja az eredményül kapott virtuális gépet a @allhosts , és @lowpriority ezek az üzenetsorban lévő gazdagépcsoportok, amelyek nincsenek pes-hez rendelve.
Végül a következővel qsub -q short.q -pe mpi0* 12 my-script.sh
elküldött feladat egy virtuális gépet ad hozzá @mpihg01 vagy @mpihg02 a CycleCloud foglalási előrejelzéseitől függően.
A párhuzamos környezetek implicit módon egyenértékűek a cyclecloud elhelyezési csoporttal. A PE-ben lévő virtuális gépek ugyanazon a hálózaton belülre vannak korlátozva. Ha olyan PE-t szeretne használni, amely nem tart meg elhelyezési csoportot, akkor az autoscale.json fájl használatával tiltsa le a beállítást.
Itt kikapcsoljuk az elhelyezési csoportokat a make pe esetében :
"gridengine": {
"pes": {
"make": {
"requires_placement_groups": false
}
},
CycleCloud elhelyezési csoportok
A CycleCloud-elhelyezési csoportok egy-az-egyhez rendelhetők az Azure VMSS-hez a SinglePlacementGroup használatával – Az elhelyezési csoport virtuális gépei infiniband hálót osztanak meg, és csak az elhelyezési csoportban lévő virtuális gépekkel osztanak meg. A silók intuitív megőrzése érdekében az elhelyezési csoportok az 1:1-et rácsengine párhuzamos környezettel is leképezik.
Ha egy feladathoz párhuzamos környezetet ad meg, az intelligens gazdagépcsoport-hozzárendelési logikával korlátozza a feladat futtatását egy elhelyezési csoportban. Ezt a viselkedést az autoscale.json fájl fent említett konfigurációjával tilthatja le: "required_placement_groups" : false
.
Automatikus skálázási konfiguráció
Ez a beépülő modul automatikusan skálázza a rácsot a számítási feladat igényeinek megfelelően. Az autoscale.json konfigurációs fájl határozza meg a rácsmotor automatikus skálázási eszközének viselkedését.
- A cyclecloud kapcsolat részleteinek beállítása
- Üresjárati csomópontok leállítási időzítőjének beállítása
- Többdimenziós automatikus skálázás is lehetséges, megadhatja, hogy mely attribútumokat használja a feladat csomagolásához, például tárolóhelyek, memória
- A felügyelni kívánt üzenetsorok, párhuzamos környezetek és gazdagépcsoportok regisztrálása
Konfiguráció | Típus | Description |
---|---|---|
url | Sztring | MÁSOLATOT KAP URL-cím |
felhasználónév/jelszó | Sztring | Másolatot kap kapcsolat részletei |
cluster_name | Sztring | CC-fürt neve |
default_resources | Térkép | Csomóponterőforrás összekapcsolása hálózati motor gazdagép-erőforrásával az automatikus skálázáshoz |
idle_timeout | Int | Várakozási idő a tétlen csomópontok (csomópontok) megszüntetése előtt |
boot_timeout | Int | Várakozási idő a csomópontok hosszú konfigurációs fázisok (ok) során történő leállításához |
gridengine.relevant_complexes | Lista (sztring) | Az automatikus skálázás során figyelembe veendő rácsmotor-komplexumok, például tárolóhelyek, mem_free |
gridengine.logging | Fájl | A naplózási konfigurációs fájl helye |
gridengine.pes | Struktúra | A számítógépek viselkedésének megadása, például requires_placement_group = hamis |
Az automatikus skálázási program csak a releváns erőforrást veszi figyelembe
További automatikus skálázási erőforrás
Alapértelmezés szerint a feladatok által kért tárolóhelyek száma alapján skálázható fürt. Az automatikus skálázáshoz hozzáadhatunk egy másik dimenziót.
Tegyük fel, hogy a feladat erőforrás-kérelme alapján szeretnénk automatikusan skálázni.m_mem_free
- Hozzáadás
m_mem_free
azgridengine.relevant_resources
autoscale.json fájlhoz - Hivatkozás
m_mem_free
a csomópontszintű memóriaerőforrásra az autoscale.json fájlban
Ezek az attribútumok lehetnek a _default/erőforrásokban szereplő értékeknode.*
.
Csomópont | Típus | Description |
---|---|---|
csomópontarray | Sztring | A cyclecloud nodearray neve |
placement_group | Sztring | A cyclecloud elhelyezési csoport neve csomóponton belül |
vm_size | Sztring | Virtuális gép termékneve, például "Standard_F2s_v2" |
vcpu_count | Int | A csomóponton elérhető virtuális CPU-k az egyes termékoldalakon látható módon |
pcpu_count | Int | A csomóponton elérhető fizikai CPU-k |
memória | Sztring | A virtuális gépen rendelkezésre álló hozzávetőleges fizikai memória egységjelzővel, például "8,0g" |
További attribútumok találhatók a node.resources.*
névtérben, például :node.resources.
Csomópont | Típus | Description |
---|---|---|
ncpus | Sztring | A virtuális gépen elérhető CPU-k száma |
pcpus | Sztring | A virtuális gépen elérhető fizikai CPU-k száma |
ngpus | Egész szám | A virtuális gépen elérhető GPU-k száma |
memb | Sztring | A virtuális gépen elérhető hozzávetőleges fizikai memória egységjelzővel, például "8,0b" |
memkb | Sztring | A virtuális gépen elérhető hozzávetőleges fizikai memória egységjelzővel, például "8,0k" |
memmb | Sztring | A virtuális gépen elérhető hozzávetőleges fizikai memória egységjelzővel, például "8,0m" |
memgb | Sztring | A virtuális gépen rendelkezésre álló hozzávetőleges fizikai memória egységjelzővel, például "8,0g" |
memtb | Sztring | A virtuális gépen elérhető hozzávetőleges fizikai memória egységjelzővel, például "8,0t" |
Bővítőhely | Egész szám | Ugyanaz, mint az ncpus |
slot_type | Sztring | Bővítmények összeadási címkéje. Általánosan nem használatos. |
m_mem_free | Sztring | A végrehajtási gazdagépen a várt szabad memória, például "3,0g" |
mfree | Sztring | Ugyanaz, mint a _m/_mem/free |
Erőforrás-leképezés
A default_resources matematikai adatok is elérhetők : csökkentse az egyes csomóponttömbök tárolóhelyeit kettővel, és adja hozzá a Docker-erőforrást az összes csomóponthoz:
"default_resources": [
{
"select": {"node.nodearray": "beegfs"},
"name": "slots",
"value": "node.vcpu_count",
"subtract": 2
},
{
"select": {},
"name": "docker",
"value": true
},
A csomópont vCPU-jának leképezése az összetett tárolóhelyekhez, és memmb
a mem_free
gyakran használt alapértelmezett értékekhez.
Az első társítás szükséges.
"default_resources": [
{
"select": {},
"name": "slots",
"value": "node.vcpu_count"
},
{
"select": {},
"name": "mem_free",
"value": "node.resources.memmb"
}
],
Vegye figyelembe, hogy ha egy komplexum parancsikonja nem egyenlő a teljes értékkel, akkor mindkettőt default_resources adja meg, ahol physical_cpu
a komplex neve:
"default_resources": [
{
"select": {},
"name": "physical_cpu",
"value": "node.pcpu_count"
},
{
"select": {},
"name": "pcpu",
"value": "node.resources.physical_cpu"
}
]
A rendezés akkor fontos, ha egy adott attribútumhoz egy adott viselkedést szeretne. Ha egyetlen pontot szeretne lefoglalni egy adott csomópontarrayhoz, miközben megtartja az összes többi csomópontarray alapértelmezett pontszámát:
"default_resources": [
{
"select": {"node.nodearray": "FPGA"},
"name": "slots",
"value": "1",
},
{
"select": {},
"name": "slots",
"value": "node.vcpu_count"
},
]
Gazdagépcsoportok
A CycleCloud automatikus skálázási eszköz a feladatkövetelményeknek való megfelelés érdekében leképezi a csomópontokat a megfelelő gazdagépcsoportra. Az üzenetsorok, a párhuzamos környezetek és az összetettek mind figyelembe vannak véve. A logika nagy része megfelel a megfelelő cyclecloud-gyűjtőnek (és csomópontmennyiségnek) a megfelelő sge gazdagépcsoporttal.
A következőként elküldött feladat esetén: qsub -q "cloud.q" -l "m_mem_free=4g" -pe "mpi*" 48 ./myjob.sh
A CycleCloud megtalálja a gazdagépcsoportok metszetét, amelyek:
- A cloud.qpe_list tartalmazza, és megegyezik a pe nevével, például:
pe_list [@allhosts=mpislots],[@hpc1=mpi]
. - Megfelelő erőforrásokkal és előfizetési kvótával rendelkezik az összes feladat-erőforrás biztosításához.
- A gazdagépcsoport kényszerkonfigurációja nem szűri őket.
Előfordulhat, hogy több gazdagépcsoport is megfelel ezeknek a követelményeknek, ebben az esetben a logikának választania kell. A gazdagépcsoport-tagság kétértelműségeit háromféleképpen oldhatja meg:
- Konfigurálja az üzenetsorokat úgy, hogy ne legyenek kétértelműek.
- Adjon hozzá korlátozásokat az autoscale.json fájlhoz.
- Hagyja, hogy a CycleCloud névsorrendbe rendezve válassza ki az egyező gazdagépcsoportokat az ütemező konfigurációjának módosításával
weight_queue_host_sort < weight_queue_seqno
. - Állítsa be
seq_no 10000,[@hostgroup1=100],[@hostgroup2=200]
az üzenetsor konfigurációjában a gazdagépcsoport-beállítások megadásához.
Gazdagépcsoport-korlátozások
Ha egy üzenetsor vagy xproject több gazdagépcsoportot határoz meg, akkor az összes gazdagépcsoporthoz hozzá lehet adni a gazdagépeket. A gazdagépcsoport-korlátozások beállításával korlátozhatja, hogy milyen típusú gazdagépek adhatók hozzá az üzenetsorokhoz. Állítson be egy korlátozást a csomópont tulajdonságai alapján.
"gridengine": {
"hostgroups": {
"@mpi": {
"constraints": {
"node.vm_size": "Standard_H44rs"
}
},
"@amd-mem": {
"constraints" : {
"node.vm_size": "Standard_D2_v3",
"node.nodearray": "hpc"
}
},
}
}
TIPP: Vizsgálja meg az összes elérhető csomóponttulajdonságt a használatával
azge buckets
.
azge
Ez a csomag tartalmaz egy parancssort, azge-t. Ezt a programot az automatikus skálázás végrehajtására kell használni, és az automatikus skálázás alatt lévő összes alfolyamatot szétbontotta.
Ezek a parancsok a beállítandó gridengine környezeti változókra támaszkodnak – ugyanabból a profilból kell meghívnia qconf
a és qsub
a parancsot, ahol azge
a rendszer meghívja.
azge parancsok | Description |
---|---|
érvényesítés | Az automatikus skálázási vagy rácshálózati ismert konfigurációs hibák ellenőrzése |
Munkahelyek | Az üzenetsor összes feladatának megjelenítése |
Vödör | Az automatikus skálázáshoz elérhető erőforráskészletek megjelenítése |
Csomópontok | Fürt gazdagépeinek és tulajdonságainak megjelenítése |
Kereslet | Megfelel a feladatkövetelményeknek a cyclecloud gyűjtőknek, és automatikus skálázási eredményt ad |
automatikus skálázás | Teljes automatikus skálázás, csomópontok indítása és eltávolítása a konfigurációknak megfelelően |
Az ütemező konfigurációinak (qconf) vagy az automatikus skálázási konfigurációk (autoscale.json) módosításakor, vagy akár az első beállításkor az azge használatával ellenőrizheti, hogy az automatikus skálázás viselkedése megfelel-e az elvárásoknak. Gyökérként a következő műveleteket futtathatja. Az automatikus skálázási viselkedés megértéséhez célszerű megismerkedni ezekkel.
- Futtassa a parancsot
azge validate
az ismert problémák konfigurációinak ellenőrzéséhez. - Futtassa a parancsot
azge buckets
annak vizsgálatához, hogy milyen erőforrásokat kínál a CycleCloud-fürt. - Futtassa a parancsot
azge jobs
az üzenetsorba helyezett feladat részleteinek vizsgálatához. - Futtassa
azge demand
a feladatot a gyűjtőegyeztetés végrehajtásához, és vizsgálja meg, hogy mely feladatok lesznek megfeleltetve a gyűjtőknek és a gazdagépcsoportoknak. - Futtassa a parancsot
azge autoscale
a csomópontfoglalási folyamat elindításához, vagy vegyen fel olyan csomópontokat, amelyek készen állnak a csatlakozásra.
Ezután, amikor ezek a parancsok a várt módon viselkednek, engedélyezze a folyamatos automatikus skálázást úgy, hogy hozzáadja a azge autoscale
parancsot a gyökér crontabhoz. (A gridengine környezeti változók souce)
* * * * * . $SGE_ROOT/common/settings.sh && /usr/local/bin/azge autoscale -c /opt/cycle/gridengine/autoscale.json
Hibrid fürt létrehozása
A CycleCloud támogatja a felhőbe való felszakadás forgatókönyvét. Az alapkonfiguráció feltételezi, hogy a $SGE_ROOT
címtár elérhető a felhőcsomópontok számára. Ez a feltételezés enyhíthető a Beállítás beállításával gridengine.shared.spool = false
gridengine.shared.bin = false
és a GridEngine helyi telepítésével.
Egyszerű esetben meg kell adnia egy fájlrendszert, amelyet a címtárat tartalmazó $SGE_ROOT
végrehajtási csomópontok csatlakoztathatnak, és konfigurálhatja a csatlakoztatást az opcionális beállítások között. Az sched és a megosztott könyvtárak függőségének kiadásakor alapértelmezés szerint leállíthatja a fürt részét képező ütemezőcsomópontot, és használhatja a külső fájlrendszer konfigurációit.
- Hozzon létre egy új rácshálózati fürtöt.
- A visszatérési proxy letiltása.
- Cserélje le a /sched és a /shared parancsot külső fájlrendszerekre.
- Mentse a fürtöt.
- Távolítsa el az ütemező csomópontot műveletként a felhasználói felületen.
- Indítsa el a fürtöt, kezdetben nem indulnak el csomópontok.
- Konfigurálás
cyclecloud-gridengine
az autoscale.json használatával az új fürt használatára
Az Univa Grid Engine használata a CycleCloudban
A GridEngine-hez készült CycleCloud-projekt alapértelmezés szerint az sge-2011.11-et használja. Az Altair-licencszerződésnek megfelelően használhatja saját Altair GridEngine-telepítőit .
Ez a szakasz bemutatja, hogyan használható az Altair GridEngine a CycleCloud GridEngine projekttel.
Előfeltételek
Ez a példa a 8.6.1-es demo verziót fogja használni, de a 8.4.0-s ge-verziók > támogatottak.
- A felhasználóknak meg kell adniuk az UGE bináris fájljait
- ge-8.6.x-bin-lx-amd64.tar.gz
- ge-8.6.x-common.tar.gz
- A CycleCloud CLI-t konfigurálni kell. A dokumentáció itt érhető el
A bináris fájlok másolása a felhőtárolóba
Az AGE (8.6.7-demo) kiegészítő verzióját a CycleCloud terjeszti. Egy másik verzió használatához töltse fel a bináris fájlokat a CycleCloud által használt tárfiókba.
$ azcopy cp ge-8.6.12-bin-lx-amd64.tar.gz https://<storage-account-name>.blob.core.windows.net/cyclecloud/gridengine/blobs/
$ azcopy cp ge-8.6.12-common.tar.gz https://<storage-account-name>.blob.core.windows.net/cyclecloud/gridengine/blobs/
Konfigurációk módosítása a fürtsablonra
Készítsen helyi másolatot a gridengine sablonról, és módosítsa úgy, hogy az alapértelmezett helyett az UGE-telepítőket használja.
wget https://raw.githubusercontent.com/Azure/cyclecloud-gridengine/master/templates/gridengine.txt
A gridengine.txt fájlban keresse meg a fájl első előfordulását [[[configuration]]]
, és szúrjon be olyan szöveget, amely megfelel az alábbi kódrészletnek. Ez a fájl nem érzékeny a behúzásra.
MEGJEGYZÉS: A konfiguráció részleteinek, különösen a verziónak meg kell egyeznie a telepítő fájlnevével.
[[[configuration gridengine]]]
make = ge
version = 8.6.12-demo
root = /sched/ge/ge-8.6.12-demo
cell = "default"
sge_qmaster_port = "537"
sge_execd_port = "538"
sge_cluster_name = "grid1"
gid_range = "20000-20100"
qmaster_spool_dir = "/sched/ge/ge-8.6.12-demo/default/spool/qmaster"
execd_spool_dir = "/sched/ge/ge-8.6.12-demo/default/spool"
spooling_method = "berkeleydb"
shadow_host = ""
admin_mail = ""
idle_timeout = 300
managed_fs = true
shared.bin = true
ignore_fqdn = true
group.name = "sgeadmin"
group.gid = 536
user.name = "sgeadmin"
user.uid = 536
user.gid = 536
user.description = "SGE admin user"
user.home = "/shared/home/sgeadmin"
user.shell = "/bin/bash"
Ezek a konfigurációk felülbírálják az alapértelmezett rácsverziót és telepítési helyet a fürt indításakor.
Nem biztonságos a fürtről való letérés /sched
, mivel ez egy kifejezetten megosztott nfs-hely a fürtben.