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à.
Slurmpianificazione basata sulla memoria
A partire dalla versione 3.2.0, AWS ParallelCluster supporta la pianificazione Slurm basata sulla memoria con il parametro di configurazione/cluster. SlurmSettingsEnableMemoryBasedScheduling
Nota
Per le AWS ParallelCluster versioni da 3.2.0 a 3.6. x
, non EnableMemoryBasedScheduling può essere abilitato se configuri più tipi di istanza in Istanze.
avvertimento
Quando specifichi più tipi di istanze in una risorsa di calcolo della Slurm coda con EnableMemoryBasedScheduling
enabled, il RealMemory
valore è la quantità minima di memoria disponibile per tutti i tipi di istanze. Ciò potrebbe comportare una notevole quantità di memoria inutilizzata se si specificano tipi di istanze con capacità di memoria molto diverse.
ConEnableMemoryBasedScheduling: true
, lo Slurm scheduler tiene traccia della quantità di memoria richiesta da ciascun processo su ciascun nodo. Quindi, lo Slurm scheduler utilizza queste informazioni per pianificare più lavori sullo stesso nodo di elaborazione. La quantità totale di memoria richiesta dai job su un nodo non può essere maggiore della memoria disponibile del nodo. Lo scheduler impedisce a un processo di utilizzare più memoria di quella richiesta al momento dell'invio del lavoro.
ConEnableMemoryBasedScheduling: false
, i job potrebbero competere per la memoria su un nodo condiviso e causare errori ed out-of-memory
eventi.
avvertimento
Slurmutilizza una notazione di potenza 2 per le sue etichette, ad esempio MB o GB. Leggi queste etichette come MiB e GiB, rispettivamente.
Slurmconfigurazione e pianificazione basata sulla memoria
ConEnableMemoryBasedScheduling: true
, Slurm imposta i seguenti parametri di configurazione: Slurm
-
SelectTypeParameters=CR_CPU_Memory
nella slurm.conf
. Questa opzione configura la memoria del nodo come risorsa consumabile in. Slurm -
ConstrainRAMSpace=yes
nel. Slurm cgroup.conf
Con questa opzione, l'accesso di un processo alla memoria è limitato alla quantità di memoria richiesta dal lavoro al momento dell'invio.
Nota
Diversi altri parametri di Slurm configurazione possono influire sul comportamento dello Slurm scheduler e del gestore delle risorse quando queste due opzioni sono impostate. Per ulteriori informazioni, consulta la documentazione di Slurm
Slurmscheduler e pianificazione basata sulla memoria
EnableMemoryBasedScheduling: false
(impostazione predefinita)
Per impostazione predefinita, EnableMemoryBasedScheduling
è impostato su false. Se false, Slurm non include la memoria come risorsa nel suo algoritmo di pianificazione e non tiene traccia della memoria utilizzata dai job. Gli utenti possono specificare l'--mem MEM_PER_NODE
opzione per impostare la quantità minima di memoria per nodo richiesta da un processo. Ciò impone allo scheduler di scegliere nodi con un RealMemory
valore almeno pari a 1 MEM_PER_NODE
durante la pianificazione del lavoro.
Ad esempio, supponiamo che un utente invii due lavori con. --mem=5GB
Se sono disponibili risorse richieste come CPU o GPU, i processi possono essere eseguiti contemporaneamente su un nodo con 8 GiB di memoria. I due processi non sono pianificati su nodi di calcolo con meno di 5 RealMemory
GiB di.
avvertimento
Quando la pianificazione basata sulla memoria è disabilitata, Slurm non tiene traccia della quantità di memoria utilizzata dai processi. I lavori eseguiti sullo stesso nodo potrebbero competere per le risorse di memoria e causare il fallimento dell'altro processo.
Quando la pianificazione basata sulla memoria è disabilitata, consigliamo agli utenti di non specificare le --mem-per-cpu
--mem-per-gpu
EnableMemoryBasedScheduling: true
Quando EnableMemoryBasedScheduling
è impostato su true, Slurm tiene traccia dell'utilizzo della memoria di ogni lavoro e impedisce ai lavori di utilizzare più memoria di quella richiesta con le --mem
opzioni di invio.
Utilizzando l'esempio precedente, un utente invia due lavori con. --mem=5GB
I processi non possono essere eseguiti contemporaneamente su un nodo con 8 GiB di memoria. Questo perché la quantità totale di memoria richiesta è maggiore della memoria disponibile sul nodo.
Con la pianificazione basata sulla memoria abilitata --mem-per-cpu
e --mem-per-gpu
comportati in modo coerente con quanto descritto nella documentazione. Slurm Ad esempio, un lavoro viene inviato con. --ntasks-per-node=2 -c 1 --mem-per-cpu=2GB
In questo caso, Slurm assegna al job un totale di 4 GiB per ogni nodo.
avvertimento
Quando la pianificazione basata sulla memoria è abilitata, consigliamo agli utenti di includere una --mem
specifica quando inviano un lavoro. Con la Slurm configurazione predefinita inclusa in AWS ParallelCluster, se non è inclusa alcuna opzione di memoria (--mem
, o--mem-per-gpu
)--mem-per-cpu
, Slurm assegna l'intera memoria dei nodi allocati al job, anche se richiede solo una parte delle altre risorse, come CPU o GPU. Ciò impedisce efficacemente la condivisione dei nodi fino al termine del lavoro, poiché non è disponibile memoria per altri lavori. Ciò accade perché Slurm imposta la memoria per nodo per il lavoro su DefMemPerNode
Se nella stessa coda sono disponibili più tipi di risorse di calcolo con diverse quantità di memoria, a un lavoro inviato senza opzioni di memoria potrebbero essere assegnate quantità di memoria diverse su nodi diversi. Dipende dai nodi che lo scheduler mette a disposizione del job. Gli utenti possono definire un valore personalizzato per le opzioni, ad esempio DefMemPerNode
or DefMemPerCPU
Slurm RealMemory e AWS ParallelCluster SchedulableMemory
Con la Slurm configurazione fornita AWS ParallelCluster, viene Slurm RealMemoryRealMemory
per impostazione predefinita, è AWS ParallelCluster impostato sul 95 percento della memoria elencata nei tipi di istanza Amazon EC2
Quando la pianificazione basata sulla memoria è disabilitata, lo Slurm scheduler utilizza RealMemory
per filtrare i nodi quando gli utenti inviano un lavoro con specificazioni specifiche. --mem
Quando la pianificazione basata sulla memoria è abilitata, lo Slurm scheduler interpreta come la quantità massima di memoria disponibile RealMemory
per i lavori in esecuzione sul nodo di calcolo.
L'impostazione predefinita potrebbe non essere ottimale per tutti i tipi di istanze:
-
Questa impostazione potrebbe essere superiore alla quantità di memoria a cui i nodi possono effettivamente accedere. Ciò può accadere quando i nodi di calcolo sono tipi di istanze di piccole dimensioni.
-
Questa impostazione potrebbe essere inferiore alla quantità di memoria a cui i nodi possono effettivamente accedere. Ciò può verificarsi quando i nodi di calcolo sono tipi di istanze di grandi dimensioni e può portare a una notevole quantità di memoria inutilizzata.
È possibile utilizzare SlurmQueues/ComputeResources/SchedulableMemoryper ottimizzare il valore di configure by AWS ParallelCluster per i nodi di RealMemory
calcolo. Per sostituire il valore predefinito, definisci un valore personalizzato SchedulableMemory
specifico per la configurazione del cluster.
Per verificare la memoria effettiva disponibile di un nodo di calcolo, esegui il /opt/slurm/sbin/slurmd -C
comando sul nodo. Questo comando restituisce la configurazione hardware del nodo, incluso il RealMemory
slurmd
-C
Assicurati che i processi del sistema operativo del nodo di calcolo dispongano di memoria sufficiente. A tale scopo, limita la memoria disponibile per i job impostando il SchedulableMemory
valore su un RealMemory
valore inferiore a quello restituito dal slurmd -C
comando.