Skip to main content

Monitoring et gestion de jobs

squeue

Montre l'état de vos jobs dans la file d'attente.

$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
... ... ...

Cette commande vous permet d'obtenir des informations telles que l'ID du job, son état, les nœuds affactés, le temps écoulé, etc.

La colonne ST indique l'état du job : parmi le grand nombre d'états possibles les plus fréquents sont: R (Running), PD (Pending - en attente), F (Failed - échec).

Pour des jobs en attente (PD), la colonne (REASON) donne la raison pour laquelle le job est en attente - la liste est longue.

Les raisons les plus attendues sont Priority (vous n'avez pas la priorité) et Resources (en attente de disponibilité de ressources). Si d'autres raisons s'affichent, il peut être utile de vérifier si les resources demandés sont compatibles!

info

Attention, sur Zeus cette commande ne montre que vos propres jobs !

scancel

Permet d'annuler un ou plusieurs job(s).

  • scancel JOBID permet d'annuler le job JOBID.
  • scancel -n toto annule tous vos jobs nommés toto.
  • scancel -n toto -t PENDING annule les jobs nommés toto en attente.
  • scancel -u user.login annule tous les jobs de l'utilisateur

sinfo

Donne des informations sur l'état du cluster, les nœuds disponibles et leur configuration.

Il est possible de formater la sortie de sinfo pour obtenir des informations plus détaillés.

Par exemple

  • sinfo -s donne un resumé de l'état du cluster
  • sinfo -N --long donne plus l'état du cluster nœud par nœud avec plus de détails

sacct

Donne de l'informations sur des jobs passés. Par exemple,

  • sacct -S MMDD

permet d'obtenir la liste des jobs soumis depuis une date précise où MM correspond au mois et DD au jour de l'année courante.

Par exemple, pour obtenir l'historique depuis le 15 juillet :

  • sacct -S 0715

Vous pouvez également définir une date de fin avec l'option -E en utilisant la même syntaxe :

  • sacct -S MMDD -E MMDD

Régulation des ressources demandées

Slurm contrôle en permanence les ressources consommées en nombre de cœurs et en quantité de mémoire pendant l'exécution des jobs. Il arrête automatiquement les jobs qui utilisent plus de ressources que demandées.

Dans le cas ou un job dépasse la quantité mémoire demandée, le message d'erreur suivant sera indiqué dans le fichier de sortie et d'erreur de Slurm :

slurmstepd: error: Exceeded step memory limit at some point.

Il est parfois difficile d'estimer au mieux la quantité de mémoire qui sera utilisée par les calculs. Cependant, SLURM permet de connaitre la mémoire utilisée par un job après son exécution.

Après l'exécution d'un cas test similaire à vos calculs habituels vous pouvez exécuter la commande suivante :

sacct -o jobid,jobname,reqnodes,reqcpus,reqmem,maxrss,averss,elapsed -j JOBID

en remplaçant JOBID par le numéro de votre job (donné par la commande sbatch). Vous obtiendrez alors une sortie de ce type :

    ReqMem     MaxRSS     AveRSS    Elapsed
---------- ---------- ---------- ----------
55000Mn 16? 00:08:33
55000Mn 17413256K 16269776K 00:08:33
55000Mn 17440808K 16246408K 00:08:32

ou ReqMem est la quantité de mémoire par nœud demandé avec l'option

#SBATCH --mem=55000M

MaxRss est la quantité maximale de mémoire utilisée pendant le job sur 1 nœud et AveRSS est la quantité moyenne de mémoire utilisée sur 1 nœud.

On voit ici que ce job a utilisé au maximum environ 18 Go de mémoire par nœud. Lors de jobs similaires on pourra donc ajuster la demande mémoire en changeant l'option dans le script de soumission :

#SBATCH --mem=20G

On demande ici environ 20Go par nœud.

La commande suivante vous permet de voir ces informations pour tous les jobs qui se sont terminés depuis une date donnée sous la forme année-mois-jour :

sacct -o jobid,jobname,reqnodes,reqcpus,reqmem,maxrss,averss,elapsed -S YYYY-MM-DD

Attention, lorsque vous obtenez le message d'erreur indiquant que la limite mémoire a été dépassée, la valeur de MaxRss ne sera pas forcément supérieure à la valeur demandée car votre application aura été arrêté avant de pouvoir dépasser la limite.

Le cluster comprend 2 types de nœuds principaux (hors gpu) :

  • nœud à 24 cœurs avec 128Go ou 192Go de mémoire
  • nœud à 32 cœurs avec 192Go de mémoire

Les jobs sont automatiquement placés en fonction des ressources demandées sur les différents types de nœuds.