CycleCloud Slurm 3.0
Podpora plánovače slurm byla přepsána jako součást verze CycleCloud 8.4.0. Mezi klíčové přínosy patří:
- Podpora dynamických uzlů a dynamických oddílů prostřednictvím dynamických uzlů, podpora jedné i více velikostí virtuálních počítačů
- Nové verze 23.02 a 22.05.8
- Generování sestav nákladů prostřednictvím
azslurm
rozhraní příkazového řádku -
azslurm
Automatické škálování na základě rozhraní příkazového řádku - Podpora Ubuntu 20
- Odstraněna potřeba modulu plug-in topologie, a proto také jakýkoli odeslat plugin
Slurm Clusters in CycleCloud verze < 8.4.0
Další informace najdete v tématu Přechod z verze 2.7 na verzi 3.0 .
Provádění změn clusteru
Cluster Slurm nasazený v CycleCloudu obsahuje rozhraní příkazového řádku s názvem azslurm
, které usnadňuje provádění změn v clusteru. Po provedení jakýchkoli změn v clusteru spusťte následující příkaz jako root na uzlu Plánovač slurm, který znovu sestaví azure.conf
uzly v clusteru a aktualizuje je:
$ sudo -i
# azslurm scale
Tím by se měly vytvořit oddíly se správným počtem uzlů a gres.conf
restartovat slurmctld
.
Už se nevytvářely uzly spouštěné předem.
Od verze 3.0.0 projektu CycleCloud Slurm už nevytváříme uzly v CycleCloudu předem. Uzly se vytvoří při azslurm resume
vyvolání nebo ručním vytvořením v CycleCloudu prostřednictvím rozhraní příkazového řádku.
Vytváření dalších oddílů
Výchozí šablona, která se dodává s Azure CycleCloudem, má tři oddíly (hpc
a htc
dynamic
) a můžete definovat vlastní uzly, které se mapují přímo na oddíly Slurm. Pokud chcete například vytvořit oddíl GPU, přidejte do šablony clusteru následující část:
[[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
Dynamické oddíly
Od verze 3.0.1
podporujeme dynamické oddíly. Mapování na dynamický oddíl můžete vytvořit nodearray
přidáním následujícího příkazu.
Všimněte si, že myfeature
popis funkce může být libovolný. Může to být také více než jedna funkce oddělená čárkou.
[[[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\""
Tím se vygeneruje dynamický oddíl podobný následujícímu.
# Creating dynamic nodeset and partition using slurm.dynamic_config=-Z --conf "Feature=myfeature"
Nodeset=mydynamicns Feature=myfeature
PartitionName=mydynamicpart Nodes=mydynamicns
Automatické škálování pomocí dynamických oddílů
Ve výchozím nastavení v dynamickém oddílu nedefinujeme žádné uzly. Místo toho můžete spustit uzly přes CycleCloud nebo ručním vyvoláním azslurm resume
a připojí se ke clusteru s libovolným názvem, který jste vybrali. Služba Slurm ale o těchto uzlech neví, takže je nemůže automaticky škálovat.
Místo toho můžete záznamy uzlů vytvořit předem předem, což umožňuje, aby je služba Slurm automaticky škálovala.
scontrol create nodename=f4-[1-10] Feature=myfeature State=CLOUD
Další výhodou dynamických oddílů je, že ve stejném oddílu můžete podporovat více velikostí virtuálních počítačů.
Jednoduše přidejte název velikosti virtuálního počítače jako funkci a pak azslurm
můžete rozlišit, kterou velikost virtuálního počítače chcete použít.
Poznámka Velikost virtuálního počítače se přidá implicitně. Nemusíte ho přidávat do 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
Ať tak či onak, jakmile tyto uzly vytvoříte v objektu, State=Cloud
budou teď k dispozici pro automatické škálování jako jiné uzly.
Pokud chcete v uzlu CycleCloud podporovat více velikostí virtuálních počítačů, můžete šablonu upravit tak, aby umožňovala více velikostí virtuálních počítačů, a to přidáním 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
Dynamické vertikální snížení kapacity
Ve výchozím nastavení budou všechny uzly v dynamickém oddílu vertikálně snížit kapacitu stejně jako ostatní oddíly. Pokud chcete tuto možnost zakázat, přečtěte si téma SuspendExcParts.
Ruční škálování
Pokud cyclecloud_slurm zjistí, že automatické škálování je zakázané (SuspendTime=-1), použije stav FUTURE k označení uzlů, které jsou vypnuté, místo toho, aby se spoléhala na stav napájení ve službě Slurm. Tj. Pokud je povolené automatické škálování, uzly mimo uzly se označí jako idle~
ve sinfo. Pokud je automatické škálování zakázané, mimo uzly se ve sinfo nezobrazí vůbec. Jejich definici stále uvidíte pomocí scontrol show nodes --future
příkazu .
Pokud chcete spustit nové uzly, spusťte příkaz /opt/azurehpc/slurm/resume_program.sh node_list
(např. htc-[1-10]).
Pokud chcete vypnout uzly, spusťte příkaz /opt/azurehpc/slurm/suspend_program.sh node_list
(např. htc-[1-10]).
Pokud chcete spustit cluster v tomto režimu, jednoduše přidejte SuspendTime=-1
do další konfigurace slurm v šabloně.
Pokud chcete přepnout cluster do tohoto režimu, přidejte SuspendTime=-1
do souboru slurm.conf a spusťte scontrol reconfigure
příkaz . Potom spusťte azslurm remove_nodes && azslurm scale
.
Řešení potíží
Přechod z verze 2.7 na verzi 3.0
Instalační složka se změnila.
/opt/cycle/slurm
->/opt/azurehpc/slurm
Protokoly automatického
/var/log/slurmctld
škálování jsou teď místo v/opt/azurehpc/slurm/logs
. Poznámka:slurmctld.log
Bude stále v této složce.cyclecloud_slurm.sh
již neexistuje. Místo toho je k dispozici novéazslurm
rozhraní příkazového řádku, které je možné spustit jako root.azslurm
podporuje automatické dokončování.[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.
Uzly se už v CycleCloudu předem nevyplní. Vytvoří se jenom v případě potřeby.
Všechny binární soubory služby jsou v
azure-slurm-install-pkg*.tar.gz
souboru v částislurm-pkgs
. Přebíjí se z konkrétní binární verze. Aktuální binární verze je 2023-03-13U úloh MPI je ve výchozím nastavení jedinou hranicí sítě oddíl. Neexistuje více skupin umístění na oddíl jako 2.x. Takže na každý oddíl máte pouze jednu společně přidělenou škálovací sadu virtuálních počítačů. Neexistuje také použití modulu plug-in topologie, což vyžadovalo použití modulu plug-in pro odeslání úlohy, který už také není potřeba. Místo toho se teď doporučuje odesílání do více oddílů pro případy použití, které vyžadují odesílání úloh do více skupin umístění.
CycleCloud podporuje standardní sadu atributů automatického plánování napříč plánovači:
Atribut | Popis |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | Je na tomto uzlu povolené automatické řešení? [true/false] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Doba (v sekundách) nečinnosti uzlu po dokončení úloh před vertikálním snížením kapacity. |
cyclecloud.cluster.autoscale.idle_time_before_jobs | Doba (v sekundách), po kterou má uzel před dokončením úloh sedět v nečinnosti, než dojde k vertikálnímu snížení kapacity. |