Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il supporto dell'utilità di pianificazione Slurm è stato riscritto come parte della versione CycleCloud 8.4.0. Le funzionalità principali includono:
- Supporto per nodi dinamici e partizioni dinamiche tramite nodearay dinamici, che supportano dimensioni singole e multiple di macchine virtuali
- Nuove versioni Slurm 23.02 e 22.05.8
- Creazione di report sui costi tramite l'interfaccia della riga di comando di
azslurm
- autoscaler basato sull'interfaccia a riga di comando
azslurm
- Supporto di Ubuntu 20
- Rimuovere la necessità del plug-in di topologia e quindi anche dei plug-in di invio
Cluster Slurm nelle versioni CycleCloud < 8.4.0
Per altre informazioni, vedere Transizione dalla versione 2.7 alla 3.0.
Apportare modifiche al cluster
Il cluster Slurm distribuito in CycleCloud contiene una CLI chiamata azslurm
per facilitare le modifiche al cluster. Dopo aver apportato modifiche al cluster, eseguire il comando seguente come root nel nodo del gestore Slurm per ricompilare il azure.conf
e aggiornare i nodi nel cluster:
$ sudo -i
# azslurm scale
Il comando crea le partizioni con il numero corretto di nodi, il corretto gres.conf
e riavvia .slurmctld
Non più la creazione preliminare dei nodi di esecuzione
A partire dalla versione 3.0.0 di Slurm per il progetto CycleCloud, i nodi non vengono creati in anticipo. I nodi vengono creati quando azslurm resume
vengono richiamati o creandoli manualmente in CycleCloud tramite l'interfaccia della riga di comando.
Creazione di partizioni aggiuntive
Il modello predefinito fornito con Azure CycleCloud include tre partizioni (hpc
, htc
e dynamic
) ed è possibile definire oggetti nodearray personalizzati mappati direttamente alle partizioni Slurm. Ad esempio, per creare una partizione GPU, aggiungere la sezione seguente al modello di cluster:
[[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
Partizioni dinamiche
A partire da CycleCloud versione 3.0.1, sono supportate partizioni dinamiche. È possibile creare una mappa nodearray
a una partizione dinamica aggiungendo quanto segue. Può myfeature
essere una descrizione della funzionalità desiderata o più funzionalità, separate da una virgola.
[[[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\""
L'snip del codice condiviso genera una partizione dinamica simile alla seguente
# Creating dynamic nodeset and partition using slurm.dynamic_config=-Z --conf "Feature=myfeature"
Nodeset=mydynamicns Feature=myfeature
PartitionName=mydynamicpart Nodes=mydynamicns
Uso di partizioni dinamiche per la scalabilità automatica
Per impostazione predefinita, la partizione dinamica non include nodi. È possibile avviare i nodi tramite CycleCloud o eseguendo azslurm resume
manualmente, si uniscono al cluster usando il nome scelto. Tuttavia, poiché Slurm non è a conoscenza di questi nodi in anticipo, non può ridimensionarli automaticamente.
In alternativa, è anche possibile precreare record di nodo come in questo modo, che consente a Slurm di ridimensionarli automaticamente.
scontrol create nodename=f4-[1-10] Feature=myfeature State=CLOUD
Un altro vantaggio delle partizioni dinamiche è che è possibile supportare più dimensioni di vm nella stessa partizione.
È sufficiente aggiungere il nome della dimensione della VM come attributo e quindi azslurm
può distinguere quale dimensione della VM si desidera utilizzare.
Nota Le dimensioni della macchina virtuale verranno aggiunte in modo implicito. Non è necessario aggiungerlo 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
In entrambi i casi, dopo aver creato questi nodi in un oggetto State=Cloud
diventano disponibili per la scalabilità automatica come altri nodi.
Per supportare più dimensioni di vm in un nodearray CycleCloud, è possibile modificare il modello per consentire più dimensioni di vm aggiungendo 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
Scala dinamica verso il basso
Per impostazione predefinita, tutti i nodi della partizione dinamica vengono ridimensionati esattamente come le altre partizioni. Per disabilitare la partizione dinamica, vedere SuspendExcParts.
Ridimensionamento manuale
Se cyclecloud_slurm rileva che la scalabilità automatica è disabilitata (SuspendTime=-1), usa lo stato FUTURE per indicare i nodi spenti anziché basarsi sullo stato di alimentazione in Slurm. Ovvero, quando la scalabilità automatica è abilitata, i nodi vengono indicati come idle~
nel sinfo. Quando la scalabilità automatica è disattivata, i nodi inattivi non vengono visualizzati in sinfo. È comunque possibile visualizzare la definizione con scontrol show nodes --future
.
Per avviare nuovi nodi, eseguire /opt/azurehpc/slurm/resume_program.sh node_list
(ad esempio, htc-[1-10]).
Per arrestare i nodi, eseguire /opt/azurehpc/slurm/suspend_program.sh node_list
(ad esempio, htc-[1-10]).
Per avviare un cluster in questa modalità, è sufficiente aggiungere SuspendTime=-1
alla configurazione slurm supplementare nel modello.
Per passare da un cluster a questa modalità, aggiungere SuspendTime=-1
al file slurm.conf ed eseguire scontrol reconfigure
. Quindi eseguire azslurm remove_nodes && azslurm scale
.
Risoluzione dei problemi
Transizione dalla versione 2.7 alla versione 3.0
La cartella di installazione è cambiata
/opt/cycle/slurm
->/opt/azurehpc/slurm
I log di scalabilità automatica sono ora in
/opt/azurehpc/slurm/logs
anziché/var/log/slurmctld
. Si noti cheslurmctld.log
si trova in questa cartella.Lo
cyclecloud_slurm.sh
script non è più disponibile. Un nuovo strumento dell'interfaccia della riga di comando denominatoazslurm
ha sostituitocyclecloud_slurm.sh
e può essere eseguito come utente root.azslurm
supporta anche il completamento automatico.[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 the --script to run python scripts suspend - Equivalent to SuspendProgram, shuts down nodes wait_for_resume - Wait for a set of nodes to converge.
CycleCloud non crea più nodi in anticipo. Li crea solo quando sono necessari.
Tutti i file binari Slurm si trovano all'interno del
azure-slurm-install-pkg*.tar.gz
file, inslurm-pkgs
. Vengono estratti da una versione binaria specifica. La versione binaria corrente è 4.0.0Per i processi MPI, l'unico limite di rete predefinito è la partizione. A differenza della versione 2.x, ogni partizione non include "gruppi di posizionamento". Quindi, hai solo un set di scalabilità di macchine virtuali collocato per partizione. Non c'è più bisogno del plug-in della topologia, quindi anche il plug-in per l'invio dei lavori non è necessario. L'invio a più partizioni è invece l'opzione consigliata per i casi d'uso che richiedono l'invio di processi a più gruppi di posizionamento.
CycleCloud supporta un set standard di attributi di autostop tra utilità di pianificazione:
Attributo | Descrizione |
---|---|
cyclecloud.cluster.autoscale.stop_enabled | L'arresto automatico è abilitato su questo nodo? [vero/falso] |
cyclecloud.cluster.autoscale.idle_time_after_jobs | Il tempo (in secondi) in cui un nodo rimane inattivo dopo aver completato i processi prima di essere ridotto. |
cyclecloud.cluster.autoscale.tempo_inattivo_prima_delle_attività | Quantità di tempo (in secondi) per un nodo inattivo prima di completare i processi prima che venga ridotta. |