QoS disponibili sul cluster ARIES
Panoramica
Sul cluster ARIES, le Quality of Service (QoS) configurate in Slurm definiscono priorità e limiti applicabili ai job. Le QoS attualmente presenti sono:
normalhighlownolimitsgpusserialunsafe_qos
I dati riportati in questa pagina derivano dall'output di:
sacctmgr show qos
Nota importante: nell'output fornito alcuni valori TRES risultano abbreviati con il carattere
+. Questo indica che la visualizzazione disacctmgrha troncato il contenuto della colonna. Per evitare interpretazioni errate, i valori sono riportati esattamente come visualizzati.
Riepilogo delle QoS
| QOS | Preempt | PreemptMode | Flags | MaxTRES | MaxWall | MaxTRESPU | MaxJobsPU | MaxSubmitPU | MaxJobsPA | MaxSubmitPA |
|---|---|---|---|---|---|---|---|---|---|---|
normal |
DenyOnLimit |
gres/gpu=3,node=10 |
8 | 24 | ||||||
high |
DenyOnLimit |
node=12 |
6 | 24 | ||||||
low |
DenyOnLimit |
node=8 |
5 | 24 | ||||||
nolimits |
unsafe_qos |
cancel |
DenyOnLimit |
|||||||
gpus |
DenyOnLimit |
cpu=8,gres/gpu=4,mem=100G |
cpu=24,gres/gpu=4,mem=303G,node=1 |
4 | ||||||
serial |
DenyOnLimit |
cpu=104,mem=10G |
12-12:00:00 |
cpu=104,mem=2000G |
104 | 104 | 104 | 104 | ||
unsafe_qos |
Significato dei parametri delle QoS
Le Quality of Service (QoS) di Slurm permettono di definire priorità, limiti sulle risorse, numero massimo di job e politiche di preemption.
Di seguito sono descritti i principali parametri utilizzati nelle QoS del cluster.
Preempt
Indica quali QoS possono essere sottoposte a preemption dalla QoS corrente.
La preemption permette a un job appartenente a una QoS con priorità o privilegi superiori di intervenire sui job appartenenti alle QoS indicate in questo campo.
Se il campo è vuoto, non è configurata una QoS da preemptare tramite questo parametro.
Esempio:
Preempt = unsafe_qos
indica che la QoS corrente può applicare la politica di preemption ai job appartenenti alla QoS unsafe_qos.
PreemptMode
Definisce come viene effettuata la preemption dei job.
Alcuni valori possibili sono:
CANCEL: il job viene terminato.REQUEUE: il job viene terminato e reinserito nella coda, se può essere riaccodato.SUSPEND: il job viene sospeso.OFF: disabilita la preemption per la QoS.
Il comportamento effettivo dipende anche dalla configurazione globale di Slurm e dal PreemptType configurato sul cluster.
Flags
Contiene eventuali opzioni aggiuntive associate alla QoS.
Nel cluster ARIES viene utilizzato, tra gli altri, il flag:
DenyOnLimit
DenyOnLimit fa sì che un job che viola determinati limiti della QoS venga rifiutato, invece di rimanere semplicemente in attesa fino a quando le risorse o i limiti diventano disponibili.
Questo permette di segnalare immediatamente all'utente che la richiesta effettuata non è compatibile con i limiti della QoS selezionata.
MaxTRES
Definisce il limite massimo delle Trackable RESources (TRES) utilizzabili da un singolo job appartenente alla QoS.
I TRES rappresentano le risorse che Slurm può contabilizzare e limitare, ad esempio:
cpu: numero di CPU;mem: memoria;node: numero di nodi;gres/gpu: numero di GPU.
Esempio:
cpu=8,gres/gpu=4,mem=100G
significa che un singolo job soggetto a questa QoS può essere limitato a:
- 8 CPU;
- 4 GPU;
- 100 GB di memoria.
MaxWall
Definisce il tempo massimo di esecuzione (walltime) consentito per un job appartenente alla QoS.
Esempio:
12-12:00:00
utilizza il formato:
giorni-ore:minuti:secondi
e corrisponde quindi a:
12 giorni e 12 ore
Un job che utilizza questa QoS non può richiedere un --time superiore al valore configurato.
MaxTRESPU
MaxTRESPU significa:
Maximum TRES Per User
Definisce il numero massimo complessivo di risorse TRES che un singolo utente può utilizzare contemporaneamente attraverso i job appartenenti alla QoS.
A differenza di MaxTRES, che limita le risorse del singolo job, MaxTRESPU applica il limite all'insieme dei job dell'utente.
Esempio:
gres/gpu=3,node=10
indica un limite per utente relativo a:
- 3 GPU;
- 10 nodi.
Il limite è quindi riferito all'utilizzo aggregato dell'utente nella QoS e non necessariamente a un singolo job.
MaxJobsPU
MaxJobsPU significa:
Maximum Jobs Per User
Definisce il numero massimo di job contemporaneamente in esecuzione per singolo utente nella QoS.
Esempio:
MaxJobsPU = 8
significa che ciascun utente può avere al massimo 8 job contemporaneamente in esecuzione utilizzando quella QoS.
Gli eventuali altri job già inviati rimangono in attesa, purché non venga superato anche MaxSubmitPU.
MaxSubmitPU
MaxSubmitPU significa:
Maximum Submit Jobs Per User
Definisce il numero massimo di job che un singolo utente può avere contemporaneamente sottoposti a Slurm nella QoS.
Il conteggio comprende quindi i job ancora presenti nel sistema soggetti alla QoS, non solamente quelli in esecuzione.
Esempio:
MaxJobsPU = 8
MaxSubmitPU = 24
significa che un utente può avere:
- al massimo 8 job in esecuzione contemporaneamente;
- al massimo 24 job complessivamente sottoposti alla QoS.
MaxSubmitPU permette quindi di evitare che un singolo utente inserisca un numero eccessivo di job nella coda.
MaxJobsPA
MaxJobsPA significa:
Maximum Jobs Per Account
Definisce il numero massimo di job contemporaneamente in esecuzione per account Slurm nella QoS.
A differenza di MaxJobsPU, il limite non è applicato al singolo utente ma all'intero account.
Esempio:
MaxJobsPA = 104
significa che tutti gli utenti appartenenti allo stesso account condividono un limite complessivo di 104 job contemporaneamente in esecuzione per quella QoS.
MaxSubmitPA
MaxSubmitPA significa:
Maximum Submit Jobs Per Account
Definisce il numero massimo di job che possono essere contemporaneamente sottoposti a Slurm da un account, considerando tutti gli utenti appartenenti a quell'account.
Esempio:
MaxSubmitPA = 104
indica che l'account può avere complessivamente fino a 104 job sottoposti utilizzando quella QoS.
Il limite è condiviso tra tutti gli utenti dell'account.
Differenza tra limiti PU e PA
I suffissi utilizzati nei parametri Slurm permettono di identificare immediatamente l'ambito del limite:
| Suffisso | Significato | Ambito |
|---|---|---|
PU |
Per User | Limite applicato a ciascun singolo utente |
PA |
Per Account | Limite condiviso da tutti gli utenti appartenenti allo stesso account |
Ad esempio:
MaxJobsPU = 8
limita ogni utente a 8 job in esecuzione, mentre:
MaxJobsPA = 104
limita l'intero account a 104 job in esecuzione, indipendentemente da come questi siano distribuiti tra gli utenti.
Differenza tra MaxTRES e MaxTRESPU
È importante distinguere i due parametri:
| Parametro | Ambito del limite |
|---|---|
MaxTRES |
Risorse massime utilizzabili da un singolo job |
MaxTRESPU |
Risorse massime utilizzabili complessivamente da un singolo utente |
Ad esempio, se una QoS presenta:
MaxTRES = gres/gpu=4
MaxTRESPU = gres/gpu=4
un singolo job non può utilizzare più di 4 GPU e, contemporaneamente, l'insieme dei job dello stesso utente soggetti alla QoS non può superare il limite complessivo di 4 GPU.
Riepilogo
| Parametro | Descrizione |
|---|---|
Preempt |
QoS che possono essere sottoposte a preemption |
PreemptMode |
Modalità con cui viene effettuata la preemption |
Flags |
Opzioni aggiuntive associate alla QoS |
MaxTRES |
Risorse TRES massime per singolo job |
MaxWall |
Tempo massimo di esecuzione di un job |
MaxTRESPU |
Risorse TRES massime complessive per utente |
MaxJobsPU |
Numero massimo di job in esecuzione per utente |
MaxSubmitPU |
Numero massimo di job sottoposti per utente |
MaxJobsPA |
Numero massimo di job in esecuzione per account |
MaxSubmitPA |
Numero massimo di job sottoposti per account |
Utilizzo in uno script Slurm
Per richiedere una QoS in un job Slurm, utilizzare la direttiva:
#SBATCH --qos=<nome_qos>
Esempio:
#!/bin/bash
#SBATCH --job-name=esempio
#SBATCH --qos=normal
#SBATCH --time=01:00:00
#SBATCH --nodes=1
srun ./programma
La QoS richiesta deve essere consentita per l'associazione Slurm dell'utente e dell'account utilizzato dal job.
Verifica completa dei valori
Per visualizzare i campi senza le abbreviazioni introdotte dalla larghezza delle colonne, è consigliabile usare l'output parsable:
sacctmgr show qos -P
Per limitare l'output ai campi principali:
sacctmgr show qos format=Name,Priority,Preempt,PreemptMode,Flags,UsageFactor,GrpTRES,MaxTRES,MaxTRESPU,MaxJobsPU,MaxSubmitPU,MaxWall -P