Nombre de CPUs utilisables

Y a-t-il une commande qui permet de savoir le nombre maximum de coeurs qu'on peut utiliser simultanément pour une queue donnée ? Ce serait utile pour préparer l'exécution de grosses tâches.

Merci

Jacques

Bonjour Jacques,

La commande sinfo de Slurm renvoie une mine d'information sur le cluster.

Usuellement, j'utilise sinfo -Nel pour connaître l'état des nœuds/partition et d'autres infos (comme le nombre de "CPUs" max utilisable sur ces nœuds).

Sortie de la commande (sinfo -Nel)
$ sinfo -Nel
Sat Aug  8 17:15:13 2020
NODELIST     NODES PARTITION       STATE CPUS    S:C:T MEMORY TMP_DISK WEIGHT AVAIL_FE REASON              
cpu-node-1       1  training        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-2       1  training        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-3       1  training        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-4       1  training        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-5       1  training        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-6       1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-7       1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-8       1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-9       1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-10      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-10      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-11      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-11      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-12      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-12      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-13      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-13      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-14      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-14      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-15      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-15      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-16      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-16      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-17      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-17      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-18      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-18      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-19      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-19      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-20      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-20      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-21      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-21      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-22      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-22      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-23      1     fast*   allocated   54   2:27:1 257671        0      1   (null) none                
cpu-node-23      1      long   allocated   54   2:27:1 257671        0      1   (null) none                
cpu-node-24      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-24      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-25      1     fast*   allocated   54   2:27:1 257671        0      1   (null) none                
cpu-node-25      1      long   allocated   54   2:27:1 257671        0      1   (null) none                
cpu-node-26      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-26      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-27      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-27      1      long        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-28      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-28      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-29      1     fast*   allocated   54   2:27:1 257671        0      1   (null) none                
cpu-node-29      1      long   allocated   54   2:27:1 257671        0      1   (null) none                
cpu-node-30      1     fast*       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-30      1      long       mixed   54   2:27:1 257671        0      1   (null) none                
cpu-node-31      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-32      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-33      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-34      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-35      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-36      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-37      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-38      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-39      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-40      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-41      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-42      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-43      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-44      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-45      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-46      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-47      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-48      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-49      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-50      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-51      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-52      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-53      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-54      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-55      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-56      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-57      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-58      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-59      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-60      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-61      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-62      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-63      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-64      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-65      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-67      1     fast*        idle   54   2:27:1 257671        0      1   (null) none                
cpu-node-69      1    bigmem        idle  124   4:31:1 309601        0     10   (null) none                
cpu-node-70      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-71      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-72      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-73      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-74      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-75      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-76      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-77      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-78      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-79      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-80      1     fast*        idle   38   2:19:1 257693        0      1   (null) none                
cpu-node-81      1     fast*        idle   38   2:19:1 257693        0      1   (null) none                
cpu-node-82      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                
cpu-node-83      1     fast*        idle   30   2:15:1 128677        0      1   (null) none                

Mais on peut aussi demander explicitement le nombre de CPU max par nœuds pour chaque partition en indiquant le format de sortie souhaité comme suit: sinfo -e --Format=Partition,CPUs.

$ sinfo -e --Format=Partition,CPUs
PARTITION           CPUS                
fast*               54                  
fast*               30                  
fast*               38                  
long                54                  
bigmem              124                 
training            54 

Note: L'option -e (exact) permet d'afficher le détail quand il y a plusieurs types de noeuds (par exemple pour la partition "fast").

Si on veut le nombre de CPU total (et non par nœud), on peut demander CPUsState (avec "A/I/O/T" = "Allocated / Idle / Other / Total")

$ sinfo --Format=Partition,CPUsState
PARTITION           CPUS(A/I/O/T)       
fast*               408/3322/0/3730     
long                408/726/0/1134      
bigmem              0/124/0/124         
training            0/270/0/270   

A bientôt

Merci pour la réponse, David.

Je n'avais pas encore exploré ces options de sinfo, qui sont très utiles pour avoir une vision globale du cluster.

Cependant ma question était un peu différente: n'y a-t-il pas un quota qui restreint le nombre de CPUs qu'un usager peut utiliser simultanément ? Si je lance un gros jobarray, est-ce que je peux mobiliser simultanément les 3322 CPUs oisifs ("idle") de la partition fast ? Dans le cas contraire, y a-t-il un moyen de connaître le nombre max de CPUs que je peux utiliser ?

Merci

Jacques

En effet, il y a des limitations qui peuvent être à plusieurs niveaux (cluster, partition, QoS, etc).

Côté calcul (Slurm), on se base principalement sur la QoS (Qualité de Service) pour définir des règles d'usage.
On peut voir ces paramètres avec la commande sacctmgr show qos.

$ sacctmgr -p show qos format=Name,MaxTRESPerUser
Name|MaxTRESPU|
normal|cpu=400,mem=2T|
bigmem|mem=4000G|

Ainsi, à l’heure actuelle un utilisateur ne peut utiliser simultanément que 400 CPU et 2To RAM (qos « normal »).

Mais on peut très bien lancer 2000 jobs utilisant chacun 1 CPU.
Il n’y aura alors que 400 de ses jobs « RUNNING » (1600 « PENDING ») et dès qu’un job sera terminé, un nouveau sera lancé automatiquement.

Je crois que ce sont les seuls limitations (en plus des quota sur le stockage) en place sur le cluster mais ça pourrait évoluer.
On va essayer de rajouter ces infos dans la documentation.

A bientôt