CycleCloud Slurm 3.0
A Slurm scheduler támogatása át lett írva a CycleCloud 8.4.0 kiadás részeként. A legfontosabb funkciók a következők:
- Dinamikus csomópontok és dinamikus partíciók támogatása dinamikus csomópontokon keresztül, egyetlen és több virtuálisgép-méret támogatásával
- Új slurm-verziók 23.02 és 22.05.8
- Költségjelentés parancssori felülettel
azslurm
azslurm
cli-alapú automatikus skálázó- Ubuntu 20-támogatás
- Megszűnt a topológia beépülő modul iránti igény, ezért a küldési beépülő modul is
Slurm-fürtök a CycleCloud 8.4.0-s verzióiban <
További információ: Váltás 2.7-ről 3.0-ra .
Fürtmódosítások végrehajtása
A CycleCloudban üzembe helyezett Slurm-fürt tartalmaz egy cli-t, azslurm
amely megkönnyíti a fürt módosítását. A fürt módosítása után futtassa a következő parancsot gyökérként a Slurm scheduler csomóponton a azure.conf
fürt csomópontjának újraépítéséhez és frissítéséhez:
$ sudo -i
# azslurm scale
Ennek a megfelelő számú csomóponttal kell létrehoznia a partíciókat, a megfelelőt gres.conf
, és újra kell indítania a következőt slurmctld
: .
A csomópontok létrehozása már nem előz meg végrehajtási csomópontokat
A CycleCloud Slurm projekt 3.0.0-s verziójától már nem hozunk létre előzetesen csomópontokat a CycleCloudban. A csomópontok akkor jönnek létre, amikor azslurm resume
meghívják, vagy manuálisan hozzák létre őket a CycleCloudban a CLI-n keresztül.
További partíciók létrehozása
Az Azure CycleCloudot tartalmazó alapértelmezett sablon három partícióval (hpc
és dynamic
) rendelkezik, htc
és egyéni csomópontarray-ket definiálhat, amelyek közvetlenül Slurm-partíciókhoz vannak leképezve. 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:3.0.1]]]
[[[network-interface eth0]]]
AssociatePublicIpAddress = $ExecuteNodesPublic
Dinamikus partíciók
Mostantól támogatjuk a 3.0.1
dinamikus partíciókat. A dinamikus partíciókra az alábbiak hozzáadásával készíthet nodearray
térképet.
Vegye figyelembe, hogy myfeature
bármilyen kívánt funkcióleírás lehet. Több funkció is lehet, vesszővel elválasztva.
[[[configuration]]]
slurm.autoscale = true
# Set to true if nodes are used for tightly-coupled multi-node jobs
slurm.hpc = false
# This is the minimum, but see slurmd --help and [slurm.conf](https://slurm.schedmd.com/slurm.conf.html) for more information.
slurm.dynamic_config := "-Z --conf \"Feature=myfeature\""
Ez a következőhöz hasonló dinamikus partíciót hoz létre
# Creating dynamic nodeset and partition using slurm.dynamic_config=-Z --conf "Feature=myfeature"
Nodeset=mydynamicns Feature=myfeature
PartitionName=mydynamicpart Nodes=mydynamicns
Dinamikus partíciók használata automatikus skálázáshoz
Alapértelmezés szerint nem definiálunk csomópontokat a dinamikus partícióban. Ehelyett elindíthatja a csomópontokat a CycleCloudon keresztül, vagy manuálisan invokálva azslurm resume
, és bármilyen névvel csatlakoznak a fürthöz. A Slurm azonban nem tud ezekről a csomópontokról, így nem tudja automatikusan felskálázni őket.
Ehelyett előre létrehozhat csomópontrekordokat is, így a Slurm automatikusan felskálázhatja őket.
scontrol create nodename=f4-[1-10] Feature=myfeature State=CLOUD
A dinamikus partíciók másik előnye, hogy több virtuálisgép-méretet is támogathat ugyanabban a partícióban.
Egyszerűen adja hozzá a virtuálisgép-méret nevét szolgáltatásként, majd azslurm
meg tudja különböztetni a használni kívánt virtuálisgép-méretet.
Megjegyzés A virtuális gép mérete implicit módon lesz hozzáadva. Nem kell hozzáadnia a slurm.dynamic_config
scontrol create nodename=f4-[1-10] Feature=myfeature,Standard_F4 State=CLOUD
scontrol create nodename=f8-[1-10] Feature=myfeature,Standard_F8 State=CLOUD
Bármelyik módon is, miután létrehozta ezeket a csomópontokat egy State=Cloud
adott csomóponton, már elérhetőek az automatikus skálázáshoz, mint más csomópontok.
Ha több virtuálisgép-méretet szeretne támogatni egy CycleCloud-csomópontarrayban, módosíthatja a sablont, hogy több virtuálisgép-méretet is engedélyezjen a hozzáadásával Config.Mutiselect = true
.
[[[parameter DynamicMachineType]]]
Label = Dyn VM Type
Description = The VM type for Dynamic nodes
ParameterType = Cloud.MachineType
DefaultValue = Standard_F2s_v2
Config.Multiselect = true
Dinamikus leskálázás
Alapértelmezés szerint a dinamikus partíció összes csomópontja ugyanúgy leskálázódik, mint a többi partíció. Ennek letiltásához lásd: SuspendExcParts.
Manuális skálázás
Ha cyclecloud_slurm észleli, hogy az automatikus skálázás le van tiltva (SuspendTime=-1), a FUTURE állapotot fogja használni a lehajtott csomópontok jelölésére ahelyett, hogy az Slurm energiaállapotára támaszkodik. Vagyis ha az automatikus skálázás engedélyezve van, a kikapcsolva lévő csomópontok sinfo-ként idle~
vannak jelölve. Ha az automatikus skálázás le van tiltva, a kikapcsolva csomópontok egyáltalán nem jelennek meg a sinfo-ban. A definíciójuk továbbra is látható a következővel: scontrol show nodes --future
.
Új csomópontok indításához futtassa a parancsot /opt/azurehpc/slurm/resume_program.sh node_list
(például htc-[1-10]).
A csomópontok leállításához futtassa a parancsot /opt/azurehpc/slurm/suspend_program.sh node_list
(például htc-[1-10]).
Ha ebben a módban szeretne fürtöt indítani, egyszerűen adja hozzá SuspendTime=-1
a sablon további slurm konfigurációját.
Ha egy fürtöt erre a módra szeretne váltani, adja hozzá SuspendTime=-1
az slurm.conf fájlhoz, és futtassa a parancsot scontrol reconfigure
. Ez után futtassa a azslurm remove_nodes && azslurm scale
parancsot.
Hibaelhárítás
Váltás 2.7-ről 3.0-ra
A telepítési mappa megváltozott
/opt/cycle/slurm
->/opt/azurehpc/slurm
Az automatikus skálázási naplók mostantól a helyett
/var/log/slurmctld
a -ben/opt/azurehpc/slurm/logs
vannak. Megjegyzés:slurmctld.log
a mappa továbbra is ebben a mappában lesz.cyclecloud_slurm.sh
Létezik. Ehelyett van egy újazslurm
parancssori felület, amely gyökérként futtatható.azslurm
támogatja az automatikus kiegészítést.[root@scheduler ~]# azslurm usage: accounting_info - buckets - Prints out autoscale bucket information, like limits etc config - Writes the effective autoscale config, after any preprocessing, to stdout connect - Tests connection to CycleCloud cost - Cost analysis and reporting tool that maps Azure costs to Slurm Job Accounting data. This is an experimental feature. default_output_columns - Output what are the default output columns for an optional command. generate_topology - Generates topology plugin configuration initconfig - Creates an initial autoscale config. Writes to stdout keep_alive - Add, remove or set which nodes should be prevented from being shutdown. limits - nodes - Query nodes partitions - Generates partition configuration refresh_autocomplete - Refreshes local autocomplete information for cluster specific resources and nodes. remove_nodes - Removes the node from the scheduler without terminating the actual instance. resume - Equivalent to ResumeProgram, starts and waits for a set of nodes. resume_fail - Equivalent to SuspendFailProgram, shuts down nodes retry_failed_nodes - Retries all nodes in a failed state. scale - shell - Interactive python shell with relevant objects in local scope. Use --script to run python scripts suspend - Equivalent to SuspendProgram, shuts down nodes wait_for_resume - Wait for a set of nodes to converge.
A csomópontok már nem lesznek előre feltöltve a CycleCloudban. Ezek csak akkor jönnek létre, ha szükséges.
Az összes slurm bináris fájl a fájlban található, a
azure-slurm-install-pkg*.tar.gz
alattslurm-pkgs
. A rendszer egy adott bináris kiadásból kéri le őket. A jelenlegi bináris releaes 2023-03-13MPI-feladatok esetén alapértelmezés szerint az egyetlen hálózati határ a partíció. Partíciónként nincs több "elhelyezési csoport", például 2.x. Így partíciónként csak egy megosztott VMSS-et használhat. A topológia beépülő modul nem is használható, ami szükségessé tette a feladatbeküldési beépülő modul használatát, amelyre már nincs szükség. Ehelyett a több partícióra való küldés az ajánlott lehetőség olyan használati esetekhez, amelyek több elhelyezési csoportnak való feladatküldést igényelnek.
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. |