Cluster IO : diagnostiquer et faire des statistiques
A) DIAGNOSTIQUER :
Diagnostiquer un job lent
|
Diagnostic |
Commandes |
| CPU saturé ? | seff JOBID |
| Mémoire insuffisante ? | sacct -j JOBID – -format=MaxRSS |
| I/O lent ? | vmstat 5 |
| Mauvaise partition ? | scontrol show job JOBID |
| Mauvais nombre de cores ? | sacct -j JOBID –format=Elapsed,CPUTime |
Précisions sur les résultats affichés avec la commande “vmstat 5” :
| Colonne | Signification | Commentaires |
| r | processus en attente CPU | élevé = CPU saturé |
| free | mémoire libre | proche 0 = pression mémoire |
| si/so | swap in/out | > 0 = swap actif (mauvais) |
| wa | I/O wait | élevé = disque saturé |
| us | CPU user | charge calcul |
| sy | CPU system | charge noyau |
| i | CPU idle | CPU libre |
Job bloqué en queue
squeue -j JOBID -o "%.18i %.10P %.8T %.10M %.9l %.6D %R"
“-o” permet de personnaliser l’affichage
| Champ | Signification | Description |
| %.18i | JobID | Identifiant du job |
| %.10P | Partition | Partition utilisée |
| %.8T | State | État du job (RUNNING, PENDING, etc.) |
| %.10M | Time used | Temps écoulé depuis le démarrage |
| %.9l | Time limit | Temps maximum autorisé |
| %.6D | Nodes | Nombre de nœuds alloués |
| %R | Reason / Node list | Nœud utilisé (si RUNNING) ou raison d’attente (si PENDING) |
Faire des vérifications :
sprio -j JOBID
scontrol show job JOBID
scontrol show jobid ID
sinfo
sinfo -s
A quels groupes, l’utilisateur $USER appartient :
groups $USER
Combien de cœurs sont utilisés sur un nœud avec : sinfo -o "%n %e %m %a %c %C"
( voir pour plus de détail : https://slurm.schedmd.com/sinfo.html)
Pour savoir à quel account et à quelle QoS un utilisateur est associé :
sacctmgr show user name=$USER withassoc format=User%30,Account%30,DefaultAccount%30,maxwall,grptres,maxcpus,qos
maxcpus) peut être illimité pour l’account dédié. Dans ce cas, la colonne apparaît vide.Problèmes fréquemment rencontrés :
-
partition pleine
-
priorité faible
-
dépendances du job
-
demande de mémoire trop élevée
-
Job qui crash :
|
Problème |
Commandes pour vérifier |
| Out of Memory | sacct -j JOBID –format=MaxRSS,ReqMem |
| Timeout | sacct -j JOBID –format=Elapsed,Timelimit |
| Segfault | tail slurm-*.out |
| Module incorrect | module list |
MaxRSS = Maximum Resident Set Size (quantité maximale de mémoire RAM réellement utilisée par le job)
ReqMem = Requested Memory (quantité de mémoire demandée dans le script SLURM)
B) FAIRE DES STATISTIQUES
Exemple d’une commande pour connaître l’utilisation des ressources par utilisateur en fonction de votre partition your_partition (remplacer par le bon nom de partition) depuis le 01/02/2026 :
sreport user TopUsage accounts=dedicated-cpu@your_partition Group Start="2026-02-01"
Pour analyser l’utilisation mémoire d’un job en cours :
sstat -j JOBID
Pour afficher CPU et mémoire utilisée :
sstat -j 123456 --format=JobID,AveCPU,MaxRSS
Pour analyser les ressources utilisées après exécution :
sacct -j JOBID
Liste des 10 utilisateurs les plus importants :
sreport user top
squeue -o "%.10u %.18i %.10g %.5C %.35a %.30m"
squeue -o "%.10u %.18i %.10g %.5C %.35a %.30m" | grep nom_du_groupe
sinfo -n nom_du_noeud --format="%n %.15C"
sacctmgr list account --associations format=account%30,grptres%35,defaultqos%30,User%30 | grep dedicated-cpu@nom_account | head -n 1
squeue -o "%.10u %.18i %.10g %.5C %.35a %.30m" | grep nom_du_groupe
slurm-quota stats --all | grep nom_du_groupe