Megosztás a következőn keresztül:


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 = 2a 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álja qrsh 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 () azgea 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.

  1. Olvassa el a feladat erőforrás-kérelmét, és keresse meg a megfelelő virtuális gépet az indításhoz
  2. Indítsa el a virtuális gépet, és várja meg, amíg készen áll
  3. Az üzenetsor és a párhuzamos környezet beolvasása a feladatból
  4. A queue/pe alapján rendelje hozzá a gazdagépet egy megfelelő gazdagépcsoporthoz
  5. 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

  1. Hozzáadás m_mem_free az gridengine.relevant_resourcesautoscale.json fájlhoz
  2. 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:

  1. A cloud.qpe_list tartalmazza, és megegyezik a pe nevével, például: pe_list [@allhosts=mpislots],[@hpc1=mpi].
  2. Megfelelő erőforrásokkal és előfizetési kvótával rendelkezik az összes feladat-erőforrás biztosításához.
  3. 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:

  1. Konfigurálja az üzenetsorokat úgy, hogy ne legyenek kétértelműek.
  2. Adjon hozzá korlátozásokat az autoscale.json fájlhoz.
  3. 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 .
  4. Á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.

  1. Futtassa a parancsot azge validate az ismert problémák konfigurációinak ellenőrzéséhez.
  2. Futtassa a parancsot azge buckets annak vizsgálatához, hogy milyen erőforrásokat kínál a CycleCloud-fürt.
  3. Futtassa a parancsot azge jobs az üzenetsorba helyezett feladat részleteinek vizsgálatához.
  4. 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.
  5. 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 = falsegridengine.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.

  1. Hozzon létre egy új rácshálózati fürtöt.
  2. A visszatérési proxy letiltása.
  3. Cserélje le a /sched és a /shared parancsot külső fájlrendszerekre.
  4. Mentse a fürtöt.
  5. Távolítsa el az ütemező csomópontot műveletként a felhasználói felületen.
  6. Indítsa el a fürtöt, kezdetben nem indulnak el csomópontok.
  7. Konfigurálás cyclecloud-gridengineaz 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.

  1. 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
  1. 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.