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


Slurm

A Slurm egy nagy mértékben konfigurálható nyílt forráskód számítási feladatkezelő. Az áttekintésért tekintse meg a Slurm projektwebhelyet .

Megjegyzés

A CycleCloud 8.4.0-s verziójától a Slurm-integráció át lett írva az új funkciók és funkciók támogatásához. További információt a Slurm 3.0 dokumentációjában talál.

A Slurm 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 Slurm-fürtök két alapvető összetevője a "master" (vagy "scheduler") csomópont, amely egy megosztott fájlrendszert biztosít, amelyen a Slurm szoftver fut, valamint a megosztott fájlrendszert csatlakoztató és a beküldött feladatok végrehajtására szolgáló gazdagépek "végrehajtási" csomópontjai. Egy egyszerű fürtsablon-kódrészlet például a következőképpen nézhet ki:

[cluster custom-slurm]

[[node master]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[cluster-init cyclecloud/slurm:default]]]
    [[[cluster-init cyclecloud/slurm:master]]]
    [[[configuration]]]
    run_list = role[slurm_master_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[cluster-init cyclecloud/slurm:default]]]
    [[[cluster-init cyclecloud/slurm:execute]]]
    [[[configuration]]]
    run_list = role[slurm_master_role]
    slurm.autoscale = true
    # Set to true if nodes are used for tightly-coupled multi-node jobs
    slurm.hpc = true
    slurm.default_partition = true

A Slurm 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 Slurm-fürt két alapvető összetevője a "scheduler" csomópont, amely egy megosztott fájlrendszert biztosít, amelyen a Slurm szoftver fut, valamint a megosztott fájlrendszert csatlakoztató és a bekü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 custom-slurm]

[[node scheduler]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A4 # 8 cores

    [[[cluster-init cyclecloud/slurm:default]]]
    [[[cluster-init cyclecloud/slurm:scheduler]]]
    [[[configuration]]]
    run_list = role[slurm_scheduler_role]

[[nodearray execute]]
    ImageName = cycle.image.centos7
    MachineType = Standard_A1  # 1 core

    [[[cluster-init cyclecloud/slurm:default]]]
    [[[cluster-init cyclecloud/slurm:execute]]]
    [[[configuration]]]
    run_list = role[slurm_scheduler_role]
    slurm.autoscale = true
    # Set to true if nodes are used for tightly-coupled multi-node jobs
    slurm.hpc = true
    slurm.default_partition = true

Meglévő Slurm-fürtök szerkesztése

A CycleCloud 7.8-es és újabb verzióiban futó Slurm-fürtök az automatikus skálázási API-k frissített verzióját implementálják, amely lehetővé teszi, hogy a fürtök több csomópontarrayt és partíciót használjanak. Ennek a funkciónak a Slurmban való megkönnyítése érdekében a CycleCloud előre feltölti a fürt végrehajtási csomópontjait. Emiatt egy parancsot kell futtatnia a Slurm scheduler csomóponton a fürt módosításainak elvégzése után, például az automatikus skálázási korlátokat vagy a virtuálisgép-típusokat.

Fürtmódosítások végrehajtása

A CycleCloudban üzembe helyezett Slurm-fürt tartalmaz egy szkriptet, amely ezt megkönnyíti. A fürt módosítása után futtassa a következőt gyökérként (például futtatva sudo -i) a Slurm scheduler csomóponton a slurm.conf fürt csomópontjának újraépítéséhez és frissítéséhez:

/opt/cycle/slurm/cyclecloud_slurm.sh remove_nodes
/opt/cycle/slurm/cyclecloud_slurm.sh scale

Megjegyzés

A CycleCloud 7.9.10-s verziói < esetében a szkript az cyclecloud_slurm.sh/opt/cycle/jetpack/system/bootstrap/slurm helyen található.

Fontos

Ha olyan módosításokat hajt végre, amelyek befolyásolják az MPI-partíción lévő csomópontok virtuális gépeit (például a virtuális gép méretét, a lemezképet vagy a cloud-initet), először az összes csomópontot le kell állítani. A remove_nodes parancs ebben az esetben figyelmeztetést jelenít meg, de nem lép ki hibával. Ha vannak futó csomópontok, hibaüzenet jelenik meg This node does not match existing scaleset attribute arról, hogy mikor indulnak el az új csomópontok.

/opt/cycle/slurm/cyclecloud_slurm.sh apply_changes

Megjegyzés

A CycleCloud 8.2-s verziói < esetében a szkript az cyclecloud_slurm.sh/opt/cycle/jetpack/system/bootstrap/slurm helyen található.

Ha olyan módosításokat hajt végre, amelyek befolyásolják egy MPI-partíció csomópontjainak virtuális gépeit (például a virtuális gép méretét, a lemezképet vagy a cloud-initet), és a csomópontok futnak, hibaüzenet This node does not match existing scaleset attribute jelenik meg az új csomópontok indításakor. Ezért a apply_changes parancs gondoskodik arról, hogy a csomópontok leállnak, és ha nem, a következő hibaüzenettel meghiúsuljon: A módosítások alkalmazása előtt a következő csomópontokat teljesen le kell állítani.

Ha olyan módosítást végez, amely NEM befolyásolja az MPI-csomópontok virtuálisgép-tulajdonságait, nem kell először leállítja a futó csomópontokat. Ebben az esetben a következő két parancs használatával végezheti el a módosításokat:

/opt/cycle/slurm/cyclecloud_slurm.sh remove_nodes
/opt/cycle/slurm/cyclecloud_slurm.sh scale

Megjegyzés

A apply_changes parancs csak a CycleCloud 8.3+-ban létezik, így a korábbi verziókban csak a fenti remove_nodes + scale parancsokkal lehet módosításokat végezni. Győződjön meg arról, hogy a remove_nodes parancs nem jelenít meg figyelmeztetést a leállítandó csomópontokról.

További partíciók létrehozása

Az Azure CycleCloudot futtató alapértelmezett sablon két partícióval (hpc és htc) rendelkezik, és egyéni csomópontarray-ket definiálhat, amelyek közvetlenül Slurm-partíciókhoz vannak leképezett állapotban. GPU-partíció létrehozásához például adja hozzá a következő szakaszt a fürtsablonhoz:

    [[nodearray gpu]]
    MachineType = $GPUMachineType
    ImageName = $GPUImageName
    MaxCoreCount = $MaxGPUExecuteCoreCount
    Interruptible = $GPUUseLowPrio
    AdditionalClusterInitSpecs = $ExecuteClusterInitSpecs

        [[[configuration]]]
        slurm.autoscale = true
        # Set to true if nodes are used for tightly-coupled multi-node jobs
        slurm.hpc = false

        [[[cluster-init cyclecloud/slurm:execute:2.0.1]]]
        [[[network-interface eth0]]]
        AssociatePublicIpAddress = $ExecuteNodesPublic

Memóriabeállítások

A CycleCloud automatikusan beállítja az Slurm számára rendelkezésre álló memória mennyiségét ütemezési célokra. Mivel a rendelkezésre álló memória mennyisége némileg változhat a Linux kernelbeállításai miatt, és az operációs rendszer és a virtuális gép kis mennyiségű memóriát használhat fel, amely egyébként elérhető lenne a feladatokhoz, a CycleCloud automatikusan csökkenti a memória mennyiségét a Slurm-konfigurációban. Alapértelmezés szerint a CycleCloud a jelentett rendelkezésre álló memória 5%-át visszatartja egy virtuális gépen, de ezt az értéket felül lehet bírálni a fürtsablonban a visszatartáshoz használandó memória százalékos arányának beállításával slurm.dampen_memory . Ha például egy virtuális gép memóriájának 20%-át szeretné visszatartani:

    slurm.dampen_memory=20

Adott csomópontok vagy partíciók automatikus skálázásának letiltása

Bár a beépített CycleCloud "KeepAlive" funkció jelenleg nem működik az Slurm-fürtök esetében, a futó Slurm-fürtök automatikus skálázását letilthatja közvetlenül az slurm.conf fájl szerkesztésével. Kizárhatja az egyes csomópontokat vagy a teljes partíciókat az automatikus skálázásból.

Csomópont kizárása

Ha ki szeretne zárni egy csomópontot vagy több csomópontot az automatikus skálázásból, adja hozzá SuspendExcNodes=<listofnodes> az Slurm konfigurációs fájlját. Ha például ki szeretné zárni az 1. és a 2. csomópontot a hpc partícióból, adja hozzá a következőt a következőhöz /sched/slurm.conf:

SuspendExcNodes=hpc-pg0-[1-2]

Ezután indítsa újra a slurmctld szolgáltatást az új konfiguráció érvénybe lépéséhez.

Partíció kizárása

A teljes partíciók automatikus skálázásból való kizárása hasonló a csomópontok kizárásához. A teljes hpc partíció kizárásához adja hozzá a következőt a következőhöz: /sched/slurm.conf

SuspendExcParts=hpc

Ezután indítsa újra a slurmctld szolgáltatást.

Hibaelhárítás

UID-ütközések Slurm- és Munge-felhasználók esetén

Ez a projekt alapértelmezés szerint 11100-as UID-t és GID-t használ a Slurm-felhasználóhoz, a Munge-felhasználó pedig 11101-et. Ha ez ütközést okoz egy másik felhasználóval vagy csoporttal, ezek az alapértelmezett értékek felül lesznek bírálva.

Az UID és a GID felülbírálásához kattintson a csomópont szerkesztési scheduler gombjára:

Ütemező szerkesztése

Ütemező szerkesztése

És a execute nodearray: Edit Nodearray

és adja hozzá a következő attribútumokat a Configuration szakaszhoz:

Konfiguráció szerkesztése Konfiguráció

    slurm.user.name = slurm
    slurm.user.uid = 11100
    slurm.user.gid = 11100
    munge.user.name = munge
    munge.user.uid = 11101
    munge.user.gid = 11101

Automatikus méretezés

A CycleCloud a Slurm Elastic Computing funkcióját használja. Az automatikus skálázási problémák elhárításához az ütemezőcsomóponton van néhány napló, amelyeket ellenőrizhet. Az első az, hogy meggyőződjön arról, hogy az energiatakarékos folytatási hívásokat a következő ellenőrzéssel /var/log/slurmctld/slurmctld.logvégzi el: . A következőhöz hasonló sorokat kell látnia:

[2019-12-09T21:19:03.400] power_save: pid 8629 waking nodes htc-1

A másik ellenőrizendő napló a következő /var/log/slurmctld/resume.log: . Ha az önéletrajzi lépés sikertelen, a következő is lesz /var/log/slurmctld/resume_fail.log: . Ha ismeretlen vagy érvénytelen csomópontnevekről vannak üzenetek, győződjön meg arról, hogy nem adott hozzá csomópontokat a fürthöz a fenti "Fürtmódosítások végrehajtása" szakasz lépéseinek végrehajtása nélkül.

Slurm konfigurációs referencia

A következő Slurm-specifikus konfigurációs beállításokat használhatja a funkciók testreszabásához:

Slurm-specifikus konfigurációs beállítások Description
slurm.version Alapértelmezett: "18.08.7-1". Ez a telepíteni és futtatni kívánt Slurm-verzió. Jelenleg ez az alapértelmezett és egyetlen lehetőség. A jövőben a Slurm szoftver további verziói is támogatottak lehetnek.
slurm.autoscale Alapértelmezett: "false". Ez egy csomópontonkénti beállítás, amely azt szabályozza, hogy a Slurmnak automatikusan le kell-e állítania és el kell indítania a csomópontokat ebben a csomópontarrayban.
slurm.hpc Alapértelmezett: "igaz". Ez egy csomópontonkénti beállítás, amely azt szabályozza, hogy a csomópontarray csomópontjai ugyanabban az elhelyezési csoportban legyenek-e elhelyezve. Elsősorban az InfiniBand virtuálisgép-családokat használó csomópontokra használható. Csak akkor érvényes, ha az slurm.autoscale értéke "true".
slurm.default_partition Alapértelmezett: "false". Ez egy csomópontonkénti beállítás, amely azt szabályozza, hogy a csomópontarray legyen-e az alapértelmezett partíció azokhoz a feladatokhoz, amelyek nem kérnek explicit módon partíciót.
slurm.dampen_memory Alapértelmezett: '5'. Az operációs rendszer/virtuális gép többletterheléséhez visszatartáshoz szükséges memória százalékos aránya.
slurm.suspend_timeout Alapértelmezett: '600'. A felfüggesztési hívás és a csomópont újbóli használata közötti idő (másodpercben).
slurm.resume_timeout Alapértelmezett: '1800'. Az az idő (másodpercben), amíg egy csomópont sikeresen elindul.
slurm.install Alapértelmezett: "igaz". Meghatározza, hogy az Slurm telepítve van-e a csomópont rendszerindításánál ('true'). Ha az Slurm egyéni rendszerképbe van telepítve, akkor ezt "false" (hamis) értékre kell állítani. (proj 2.5.0+)
slurm.use_pcpu Alapértelmezett: "igaz". Ez egy csomópontonkénti beállítás, amellyel szabályozható az ütemezés hyperthreaded vcpusokkal. Állítsa a "false" értéket a CPUs=vcpus értékre a cyclecloud.conf fájlban.
slurm.user.name Alapértelmezett: 'slurm'. Ez a Slurm szolgáltatáshoz használandó felhasználónév.
slurm.user.uid Alapértelmezett: '11100'. A Slurm-felhasználóhoz használandó felhasználói azonosító.
slurm.user.gid Alapértelmezett: '11100'. A Slurm-felhasználóhoz használandó csoportazonosító.
munge.user.name Alapértelmezett: "munge". Ez a munge hitelesítési szolgáltatáshoz használandó felhasználónév.
munge.user.uid Alapértelmezett: '11101'. A MUNGE-felhasználóhoz használandó felhasználói azonosító.
munge.user.gid Alapértelmezett: '11101'. A MUNGE-felhasználóhoz használandó csoportazonosító.

A CycleCloud támogatja az ütemezést ütemezők közötti automatikus attribútumok szabványos készletét:

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), amikor 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), amikor egy csomópont tétlenül ül, mielőtt befejezi a feladatokat a leskálázás előtt.