Il est possible de spécifier une QOS (Quality Of Service) pour chaque job soumis dans Slurm, la QOS affectera le job de 3 façons :
- Priorité
- Préemption
- Limites
C’est la commande sacctmgr
permet de gérer la QOS.
Quality Of Service
Pour changer et activer la QOS, il faut activer le plug-in Multifactor Job Priority en changeant l’option PriorityType
à priority/multifactor
dans slurm.conf
Fichier slurm.conf
:
# Activate the Multifactor Job Priority Plugin with decay |
Priorité
Options
Pour activer l’option de priorité des calculs, le paramètre PriorityWeightQOS
doit être défini dans le fichier slurm.conf
avec une valeur entière supérieure à zéro.
L’algorithme FairShare calcule la priorité du job en tenant compte de plusieurs facteurs tels que l’âge, la taille et la partition du job. Voici les pondérations de ces facteurs :
Fichier slurm.conf
:
# This next group determines the weighting of each of the |
Calcul de la priorité
La priorité des jobs est calculée en fonction de tous les facteurs activés dans le fichier slurm.conf
. La priorité du job peut être exprimée comme suit :
Job_priority = |
La priorité des jobs est un nombre entier compris entre 0 et 4294967295. Plus le nombre est élevé, plus le job sera positionné haut dans la file d’attente. La priorité d’un job peut varier dans le temps, exemple : plus un job reste longtemps dans la file d’attente, plus sa priorité augmente si age_weight
est différent de zéro.
Préemption
Slurm offre deux façons de libérer des ressources pour un job afin de préempter un autre job en cours d’exécution.
Extrait de slurm.conf
:
PreemptMode=Suspend,Gang |
PreemptType
Le paramètre PreemptType
spécifie le plug-in utilisé pour identifier les jobs pouvant être préemptées dans slurm.conf
et peut prendre 3 valeurs :
PreemptType | Effet |
---|---|
preempt/none |
préemption désactivée (par défaut) |
preempt/partition_prio |
préemption basée sur la partition |
preempt/qos |
préemption basée sur la QOS |
PreemptMode
Mécanisme utilisé pour préempter les jobs ou activer l’option GANG, utilisée pour activer la planification indépendamment de l’activation ou non de l’option PreemptType
. Le paramètre PreemptMode
dans slurm.conf
peut prendre 3 valeurs :
PreemptMode | Effet |
---|---|
OFF |
valeur par défaut, désactive la préemption et la planification GANG. N’est compatible qu’avec PreemptType=preempt/none |
CANCEL |
la tâche préemptée sera annulée |
GANG |
active la planification GANG dans la même partition et permet la reprise des jobs suspendus |
REQUEUE |
Préempte les jobs en les remettant en file d’attente (si possible) ou en les annulant. L’option sbatch "--requeue" doit être définie ou le paramètre JobRequeue=1 dans slurm.conf |
SUSPEND |
les jobs préemptés seront suspendus et relancés plus tard par GANG |
limites
Les limitations suivent une hiérachie, l’ordre se fait selon :
- Partition QOS limit
- Job QOS limit
- User association
- Account association(s), ascending the hierarchy
- Root/Cluster association
- Partition limit
- None
Si des limitations sont définies à plusieurs endroit, l’odre le plus haut prime.
Exemple, si on défini :
- Partition QOS :
MaxJobs=20
etMaxSubmitJobs
non défini - Association utilisateur :
MaxJobs=4
etMaxSubmitJobs=50
La limitation effective sera de MaxJobs=20
et MaxSubmitJobs=50
Les limitations s’appliquent avec sacctmgr
.
Ajouter des limitations :
# sacctmgr modify user john set GrpTRES=cpu=1500,mem=200,gres/gpu=50 |
Supprimer les limitations, avec la valeur -1 :
# sacctmgr modify user john set GrpTRES=cpu=-1,mem=-1,gres/gpu=-1 |
Documentation
https://slurm.schedmd.com/qos.html
https://slurm.schedmd.com/priority_multifactor.html#intro
https://slurm.schedmd.com/priority_multifactor.html#config
https://slurm.schedmd.com/priority_multifactor.html#general
https://stackoverflow.com/questions/57703305/slurm-qos-preemption
https://www.hpc.iastate.edu/guides/condo-2017/job-accounting
https://slurm.schedmd.com/SLUG19/Priority_and_Fair_Trees.pdf
https://harvardmed.atlassian.net/wiki/spaces/O2/pages/1632567361