Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Slurm Workload Manager (slurm)
Dimensioni e aggiornamento della capacità del cluster
La capacità del cluster è definita dal numero di nodi di calcolo che il cluster può scalare. I nodi di calcolo sono supportati da istanze Amazon EC2 definite all'interno delle risorse di calcolo nella AWS ParallelCluster configurazione (Scheduling/SlurmQueues/ComputeResources) e sono organizzati in code (Scheduling/SlurmQueues) che associano 1:1 alle partizioni. Slurm
All'interno di una risorsa di calcolo è possibile configurare il numero minimo di nodi di calcolo (istanze) che devono essere sempre mantenuti in esecuzione nel cluster () e il numero massimo di istanze a cui la risorsa di calcolo può scalare (3MinCount). MaxCount
Al momento della creazione del cluster o in seguito a un aggiornamento del cluster, AWS ParallelCluster avvia tante istanze Amazon EC2 quante sono configurate MinCount per ogni risorsa di calcolo () definita nel cluster. Scheduling/SlurmQueues/ ComputeResources Le istanze avviate per coprire la quantità minima di nodi per le risorse di calcolo nel cluster sono denominate nodi statici. Una volta avviati, i nodi statici sono pensati per essere persistenti nel cluster e non vengono terminati dal sistema, a meno che non si verifichi un particolare evento o condizione. Tali eventi includono, ad esempio, il fallimento dei controlli di Slurm integrità di Amazon EC2 e il cambio dello stato del Slurm nodo in DRAIN o DOWN.
Le istanze Amazon EC2, nell'intervallo da 0 1 a ‘MaxCount -
MinCount’ (MaxCount meno) MinCount), avviate su richiesta per far fronte all'aumento del carico del cluster, sono denominate nodi dinamici. La loro natura è effimera, vengono avviate per gestire processi in sospeso e vengono terminate una volta che rimangono inattive per un periodo di tempo definito Scheduling/SlurmSettings/ScaledownIdletime nella configurazione del cluster (impostazione predefinita: 10 minuti).
I nodi statici e i nodi dinamici sono conformi al seguente schema di denominazione:
-
Nodi statici dove
<Queue/Name>-st-<ComputeResource/Name>-<num><num> = 1..ComputeResource/MinCount -
Nodi dinamici
<Queue/Name>-dy-<ComputeResource/Name>-<num>dove<num> = 1..(ComputeResource/MaxCount - ComputeResource/MinCount)
Ad esempio, data la seguente AWS ParallelCluster configurazione:
Scheduling: Scheduler: Slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 150
I seguenti nodi verranno definiti in Slurm
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Quando una risorsa di calcolo è disponibileMinCount == MaxCount, tutti i nodi di calcolo corrispondenti saranno statici e tutte le istanze verranno avviate al creation/update momento del cluster e mantenute attive e funzionanti. Ad esempio:
Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 100
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Aggiornamento della capacità del cluster
L'aggiornamento della capacità del cluster include l'aggiunta o la rimozione di code, risorse di calcolo o la modifica MinCount/MaxCount di una risorsa di calcolo. A partire dalla AWS ParallelCluster versione 3.9.0, la riduzione delle dimensioni di una coda richiede l'arresto o l'QueueUpdateStrategyimpostazione del parco di calcolo su TERMINATE prima che venga effettuato l'aggiornamento del cluster. Non è necessario arrestare il parco di elaborazione o impostarlo su TERMINATE quando: QueueUpdateStrategy
-
Aggiungere nuove code a Scheduling/ SlurmQueues
-
Aggiungere nuove risorse di calcolo a una coda
Scheduling/SlurmQueues/ComputeResources -
Aumento del numero di una risorsa
MaxCountdi calcolo -
Aumento MinCount di una risorsa di calcolo e aumento MaxCount della stessa risorsa di calcolo di almeno la stessa quantità
Considerazioni e limitazioni
Questa sezione ha lo scopo di delineare tutti i fattori, i vincoli o le limitazioni importanti da prendere in considerazione quando si ridimensiona la capacità del cluster.
-
Quando si rimuove una coda da
Scheduling/SlurmQueuestutti i nodi di calcolo con nome<Queue/Name>-*, sia statici che dinamici, verrà rimossa dalla Slurm configurazione e le istanze Amazon EC2 corrispondenti verranno terminate. -
Quando si rimuove una risorsa di calcolo
Scheduling/SlurmQueues/ComputeResourcesda una coda, tutti i nodi di calcolo con nome, sia statici che dinamici<Queue/Name>-*-<ComputeResource/Name>-*, verranno rimossi dalla Slurm configurazione e le istanze Amazon EC2 corrispondenti verranno terminate.
Quando si modifica il MinCount parametro di una risorsa di calcolo, possiamo distinguere due diversi scenari, se MaxCount viene mantenuto uguale a MinCount (solo capacità statica) e se MaxCount è maggiore MinCount di (capacità mista statica e dinamica).
La capacità cambia solo con nodi statici
-
Se
MinCount == MaxCount, aumentandoMinCount(eMaxCount), il cluster verrà configurato estendendo il numero di nodi statici al nuovo valore diMinCount<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>e il sistema continuerà a provare ad avviare istanze Amazon EC2 per soddisfare la nuova capacità statica richiesta. -
Se
MinCount == MaxCount, diminuendoMinCount(eMaxCount) la quantità di N, il cluster verrà configurato rimuovendo gli ultimi N nodi statici<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>]e il sistema terminerà le istanze Amazon EC2 corrispondenti.-
Stato iniziale
MinCount = MaxCount = 100 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100] -
Aggiornamento
-30suMinCounteMaxCount: MinCount = MaxCount = 70 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
-
Modifiche della capacità con nodi misti
SeMinCount < MaxCount, aumentando MinCount di una quantità N (supponendo che MaxCount rimanga invariato), il cluster verrà configurato estendendo il numero di nodi statici al nuovo valore di MinCount (old_MinCount + N): <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount +
N> e il sistema continuerà a provare ad avviare istanze Amazon EC2 per soddisfare la nuova capacità statica richiesta. Inoltre, per rispettare la MaxCount capacità della risorsa di calcolo, la configurazione del cluster viene aggiornata rimuovendo gli ultimi N nodi dinamici: <Queue/Name>-dy-<ComputeResource/Name>-[<MaxCount -
old_MinCount - N>...<MaxCount - old_MinCount>] e il sistema terminerà le istanze Amazon EC2 corrispondenti.
-
Stato iniziale:
MinCount = 100; MaxCount = 150 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100] -
Aggiorna +30 a
MinCount : MinCount = 130 (MaxCount = 150) -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]
SeMinCount < MaxCount, a parità MaxCount di valore N, il cluster verrà configurato estendendo il numero di nodi statici al nuovo valore di MinCount (old_MinCount + N): <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount +
N> e il sistema continuerà a provare ad avviare istanze Amazon EC2 per soddisfare la nuova capacità statica richiesta. MinCount Inoltre, non verrà apportata alcuna modifica al numero di nodi dinamici per soddisfare il nuovo
MaxCount value.
-
Stato iniziale:
MinCount = 100; MaxCount = 150 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100] -
Aggiorna +30 a
MinCount : MinCount = 130 (MaxCount = 180) -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]
SeMinCount < MaxCount, diminuendo la quantità MinCount di N (supponendo che MaxCount rimanga invariata), il cluster verrà configurato rimuovendo gli ultimi N nodi statici <Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount -
N>...<old_MinCount> e il sistema terminerà le istanze Amazon EC2 corrispondenti. Inoltre, per rispettare la MaxCount capacità della risorsa di calcolo, la configurazione del cluster viene aggiornata estendendo il numero di nodi dinamici per colmare il divario. MaxCount - new_MinCount:
<Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount -
new_MinCount>] In questo caso, trattandosi di nodi dinamici, non verranno lanciate nuove istanze Amazon EC2 a meno che lo scheduler non abbia lavori in sospeso sui nuovi nodi.
-
Stato iniziale:
MinCount = 100; MaxCount = 150 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100] -
Aggiornamento -30 attivo
MinCount : MinCount = 70 (MaxCount = 120) -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-80] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
SeMinCount < MaxCount, diminuendo MinCount e MaxCount con lo stesso valore N, il cluster verrà configurato rimuovendo gli ultimi N nodi statici <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount -
N>...<oldMinCount>] e il sistema terminerà le istanze Amazon EC2 corrispondenti.
Inoltre, non verrà apportata alcuna modifica al numero di nodi dinamici per rispettare il nuovo valore. MaxCount
-
Stato iniziale:
MinCount = 100; MaxCount = 150 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100] -
Aggiornamento -30 attivo
MinCount : MinCount = 70 (MaxCount = 120) -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
SeMinCount < MaxCount, diminuendo la quantità MaxCount di N (supponendo che MinCount rimangano invariati), il cluster verrà configurato rimuovendo gli ultimi N nodi dinamici <Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount -
N...<oldMaxCount>] e il sistema interromperà le istanze Amazon EC2 corrispondenti nel caso in cui fossero in esecuzione. Non è previsto alcun impatto sui nodi statici.
-
Stato iniziale:
MinCount = 100; MaxCount = 150 -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100] -
Aggiornamento -30 attivo
MaxCount : MinCount = 100 (MaxCount = 120) -
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Impatti sui posti di lavoro
In tutti i casi in cui i nodi vengono rimossi e le istanze Amazon EC2 terminate, un job sbatch in esecuzione sui nodi rimossi verrà nuovamente accodato, a meno che non vi siano altri nodi che soddisfino i requisiti del lavoro. In quest'ultimo caso, il job ha esito negativo con lo stato NODE_FAIL e scompare dalla coda e deve essere inviato nuovamente manualmente.
Se si prevede di eseguire un aggiornamento del ridimensionamento del cluster, è possibile impedire l'esecuzione dei job nei nodi che verranno rimossi durante l'aggiornamento pianificato. Ciò è possibile impostando i nodi da rimuovere durante la manutenzione. Tieni presente che l'impostazione di un nodo in manutenzione non influirebbe sui lavori che alla fine sono già in esecuzione nel nodo.
Supponiamo che con l'aggiornamento di ridimensionamento del cluster pianificato si rimuova il nodoqeueu-st-computeresource-[9-10]. È possibile creare una Slurm prenotazione con il seguente comando
sudo -i scontrol create reservation ReservationName=maint_for_update user=root starttime=now duration=infinite flags=maint,ignore_jobs nodes=qeueu-st-computeresource-[9-10]
Questo creerà una Slurm prenotazione maint_for_update denominata nei nodiqeueu-st-computeresource-[9-10]. Dal momento in cui viene creata la prenotazione, non è più possibile eseguire lavori nei nodiqeueu-st-computeresource-[9-10]. Tieni presente che la prenotazione non impedirà l'eventuale assegnazione dei lavori sui nodiqeueu-st-computeresource-[9-10].
Dopo l'aggiornamento del ridimensionamento del cluster, se la Slurm prenotazione è stata impostata solo sui nodi rimossi durante l'aggiornamento del ridimensionamento, la prenotazione di manutenzione verrà eliminata automaticamente. Se invece hai creato una Slurm prenotazione sui nodi che sono ancora presenti dopo l'aggiornamento del ridimensionamento del cluster, potremmo voler rimuovere la prenotazione di manutenzione sui nodi dopo l'esecuzione dell'aggiornamento di ridimensionamento, utilizzando il seguente comando
sudo -i scontrol delete ReservationName=maint_for_update
Per ulteriori dettagli sulla Slurm prenotazione, consulta il documento ufficiale di SchedMD qui. https://slurm.schedmd.com/reservations.html
Processo di aggiornamento del cluster in caso di modifiche alla capacità
In caso di modifica della configurazione dello scheduler, durante il processo di aggiornamento del cluster vengono eseguiti i seguenti passaggi:
-
Interrompi AWS ParallelCluster
clustermgtd (supervisorctl stop clustermgtd) -
Genera una configurazione aggiornata Slurm delle partizioni dalla AWS ParallelCluster configurazione
-
Riavvio
slurmctld(effettuato tramite la ricetta del servizio Chef) -
Controlla
slurmctldlo stato(systemctl is-active --quiet slurmctld.service) -
Ricarica la configurazione Slurm
(scontrol reconfigure) -
Avvia
clustermgtd (supervisorctl start clustermgtd)
Per informazioni su Slurm, consulta https://slurm.schedmd.com
Versioni cluster e SLURM supportate
La tabella seguente elenca le Slurm versioni AWS ParallelCluster e supportate AWS .
| AWS ParallelCluster versione/i | Versione di Slurm supportata |
|---|---|
|
3.13.0 |
24,005,07 |
|
3.12.0 |
23,11,10 |
|
3.11.0 |
23,11,10 |
|
3.9.2, 3.9.3, 3.10.0 |
23.11.7 |
|
3.9.0, 3.9.1 |
23.11.4 |
|
3.8.0 |
23,02.7 |
|
3.7.2 |
23,02.6 |
|
3.7.1 |
23,02,5 |
|
3.7.0 |
23,02,4 |
|
3.6.0, 3.6.1 |
23.02.2 |
|
3.5.0, 3.5.1 |
22,005,8 |
|
3.4.0, 3.4.1 |
22.05.7 |
|
3.3.0, 3.3.1 |
22.05.5 |
|
3.1.4, 3.1.5, 3.2.0, 3.2.1 |
21,08.8-2 |
|
3.1.2, 3.1.3 |
21,08.6 |
|
3.1.1 |
21,008,5 |
|
3.0.0 |
20,11,8 |