Unimore HPC Wiki

ARIES · QOS

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:

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 di sacctmgr ha 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:

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:

Esempio:

cpu=8,gres/gpu=4,mem=100G

significa che un singolo job soggetto a questa QoS può essere limitato a:


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:

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:

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.


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