Annexes

Visualisation des jobs en file d'attente

La commande "squeue" permet d'afficher les Jobs en file d'attente.

Documentation officielle : https://slurm.schedmd.com/squeue.html

Afficher l'ensemble des jobs en liste d'attente :

$ squeue

"squeue" affiche les Jobs en attente de tous les utilisateurs par défaut.

Afficher ses propres Jobs uniquement :

$ squeue -u <user>

ou (générique)

$ squeue -u $(whoami)

La commande $(whoami) retournera votre "username" et servira de filtre à la commande squeue.

Affichage des informations d'un Job spécifique en file d'attente :

$ squeue -j1234

Personnalisation des champs affichés :

$ squeue -o "%A %j %a %P %C %D %n %R %V"

L'option "--format" ("-o" en version courte) permet de sélectionner les champs à afficher. Se référer à la documentation de la commande pour une liste complète des champs disponibles. Cet exemple affichera les champs suivants :

JOBID NAME ACCOUNT PARTITION CPUS NODES REQ_NODES NODELIST(REASON)SUBMIT_TIME

Afficher la file d'attente d'une partition spécifique :

$ squeue -p 24CPUNodes

Suivi de l'avancement des Jobs, Job Steps et utilisation des ressources

La commande "sacct" permet d'obtenir un grand nombre d'information sur les Jobs et leurs Steps.

Documentation officielle : https://slurm.schedmd.com/sacct.html

La commande suivante affiche les informations par défaut du Job n°1234 :

$ sacct -j1234

JobID           JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
1234         slurm-job+ 24CPUNodes       test          6    RUNNING      0:0
1234.0       slurm-tas+                  test          6  COMPLETED      0:0
1234.1       slurm-tas+                  test          6  COMPLETED      0:0
1234.2       slurm-tas+                  test          6    RUNNING      0:0

La première ligne correspond au Job entier et les lignes suivantes (JobID suivi d\'un point '.') indiquent les différents Steps du Job. Le Step "763.2" (3ème Step du Job 763) est ici en cours d'exécution (State : RUNNING).

L'option "--format" (ou "-o", version courte) permet de choisir les champs à afficher et leur taille à l'écran (en utilisant '%'). De nombreux attributs sont disponibles ; consultez la documentation pour la liste complète et leur signification.

$ sacct -j1234 -o JobID,JobName%-20,State,ReqCPUS,Elapsed,Start,ExitCode

       JobID              JobName      State  ReqCPUS    Elapsed               Start ExitCode
------------ -------------------- ---------- -------- ---------- ------------------- --------
1234         slurm-job-test-%j       RUNNING        6   00:05:49 2017-02-15T14:55:43      0:0
1234.0       slurm-task.sh         COMPLETED        6   00:01:34 2017-02-15T14:55:43      0:0
1234.1       slurm-task.sh         COMPLETED        6   00:01:31 2017-02-15T14:57:17      0:0
1234.2       slurm-task.sh           RUNNING        6   00:01:02 2017-02-15T14:58:48      0:0

Les informations affichées sont ici choisies et le champ JobName affiche désormais le nom complet du Job et des Steps.

Affichage des statistiques d'utilisation des ressources (CPU/RAM/Disque...) :

$ sacct -j1234 -o JobID,JobName%-20,State,ReqCPUS,Elapsed,UserCPU,CPUTime,MaxRSS,Start

       JobID              JobName      State  ReqCPUS    Elapsed    UserCPU    CPUTime     MaxRSS               Start
------------ -------------------- ---------- -------- ---------- ---------- ---------- ---------- -------------------
1234         slurm-job-test-%j       RUNNING        6   00:06:16  35:55.461   00:37:36            15/02/2017 14:55:43
1234.0       slurm-task.sh         COMPLETED        6   00:01:34  09:02.638   00:09:24     36304K 15/02/2017 14:55:43
1234.1       slurm-task.sh         COMPLETED        6   00:01:31  08:55.011   00:09:06     33128K 15/02/2017 14:57:17
1234.2       slurm-task.sh           RUNNING        6   00:01:02  06:02.144   00:06:18     35128K 15/02/2017 14:58:48

Note : Certains attributs ne sont disponibles qu'une fois le Step terminé.

Note 2 : Il est possible de modifier le format d'affichage des dates en modifiant la variable d'environnement SLURM_TIME_FORMAT. Le format de date utilisé par Slurm est celui de la fonction C "strftime" (http://man7.org/linux/man-pages/man3/strftime.3.html).

L'exemple ci-dessus utilise le format de date français (JJ/MM/AAAA hh:mm:ss). Pour définir le format des dates, le plus simple est d'ajouter la ligne suivante au fichier ".bashrc" de votre HOME utilisateur :

export SLURM_TIME_FORMAT='%d/%m/%Y %T' # Définit le format d'affichage date/heure des commandes SLURM:JJ/MM/AAAA hh:mm:ss

Affichage pour un Job exécutant des Steps en parallèle :

$ sacct -j1234 -o JobID,JobName%-20,State,ReqCPUS,Elapsed,Start,ExitCode

       JobID              JobName      State  ReqCPUS    Elapsed               Start ExitCode
------------ -------------------- ---------- -------- ---------- ------------------- --------
1234         slurm-job-test-%j       RUNNING       18   00:00:43 15/02/2017 15:03:38      0:0
1234.0       slurm-task.sh           RUNNING        6   00:00:43 15/02/2017 15:03:38      0:0
1234.1       slurm-task.sh           RUNNING        6   00:00:43 15/02/2017 15:03:38      0:0
1234.2       slurm-task.sh           RUNNING        6   00:00:43 15/02/2017 15:03:38      0:0

Note : L'allocation est ici de 18 CPUs au lieu des 6 précédents (3 Tasks de 6 CPUs sont exécutées en parallèle).

Pour ceux qui souhaiteraient récupérer ces informations pour les traiter dans un script (et/ou les formater dans un autre langage), sacct dispose des options "--parsable" et "--parsable2" qui retournent les même informations mais dont les champs sont séparées par un "pipe" ("|"). En mode "parsable", les tailles de champs ("%..") sont inutiles, les valeurs non tronquées étant toujours retournées. La différence entre ces deux options est que "--parsable" ajoute un "|" en fin de ligne alors que "--parsable2", non.

$ sacct -j1234 -o JobID,JobName,State,ReqCPUS,Elapsed,Start,ExitCode --parsable2

JobID|JobName|State|ReqCPUS|Elapsed|Start|ExitCode
1234|slurm-job-test-%j|RUNNING|6|00:05:49|15/02/2017 14:55:43|0:0
1234.0|slurm-task.sh|COMPLETED|6|00:01:34|15/02/2017 14:55:43|0:0
1234.1|slurm-task.sh|COMPLETED|6|00:01:31|15/02/2017 14:57:17|0:0
1234.2|slurm-task.sh|RUNNING|6|00:01:02|15/02/2017 14:58:48|0:0

Note : L'option "--noheader" permet par ailleurs de ne pas afficher les en-têtes dans le résultat.

Options SBATCH courantes

La commande "sbatch" reçoit ses paramètres en ligne de commande mais autorise également leur définition via des "directives" SBATCH sous forme de commentaire en en-tête du fichier. Les deux méthodes produisent le même résultat mais ceux déclarés en ligne de commande auront la priorité en cas de conflit. Dans les deux cas, ces options existent (pour la plupart) en version courte et longue (exemple : -n ou --ntasks).

Pour plus d'information sur "sbatch", voir la documentation officielle à l'adresse :

https://slurm.schedmd.com/sbatch.html

#SBATCH --partition= part

Choix de la partition SLURM à utiliser pour le job. Voir la section : Partitions.

#SBATCH --job-name= name

Définit le nom du job tel qu'il sera affiché dans les différentes commandes Slurm (squeue, sstat, sacct)

#SBATCH --output= stdOutFile

#SBATCH --error= stdErrFile

#SBATCH --input= stdInFile

#SBATCH --open-mode= append|truncate

Ces options définissent les redirections d'entrée/sorties du job (entrée/sortie/erreur standards).

La sortie standard (stdOut) sera redirigée vers le fichier défini par "--output" ou, si non définie, un fichier par défaut "slurm-%j.out" (Slurm remplacera "%j" par le JobID).

La sortie d'erreur (stdErr) sera redirigée vers le fichier défini par "--error" ou, si non définie, vers la sortie standard.

L'entrée standard peut aussi être redirigée avec "--input". Par défaut, "/dev/null" est utilisé (aucune/vide).

L'option "--open-mode" définit le mode d'ouverture (écriture) des fichiers et se comporte comme un open/fopen de la plupart des langages de programmation (2 possibilités : "append" pour écrire à la suite du fichier (s'il existe) et "truncate" pour écraser le fichier à chaque exécution du batch (valeur par défaut)).

#SBATCH --mail-user= e-mail

#SBATCH --mail-type=BEGIN|END|FAIL|TIME_LIMIT|TIME_LIMIT_50|...

Permet d'être notifié par e-mail d'un évènement particulier dans la vie du job : début de l'exécution (BEGIN), fin d'exécution (END, FAIL et TIME_LIMIT)... Consulter la documentation Slurm pour la liste complète des évènements pris en charge.

#SBATCH --cpus-per-task= n

Définit le nombre de CPUs à allouer par Task. L'utilisation effective de ces CPUs est à la charge de chaque Task (création de processus et/ou threads).

#SBATCH --ntasks= n

Definit le nombre maximum de Tasks exécutées en parallèle.

#SBATCH --mem-per-cpu= n

Définit la RAM en Mo allouée à chaque CPU. La valeur par défaut et la valeur maximale dépendent de la partition utilisée :

  • 24CPUNodes : 7500 Mo par défaut, 7500 Mo max
  • 48CPUNodes : 8000 Mo par défaut, 10000 Mo max
  • GPUNodes : 9000 Mo par défaut, 9000 Mo max

#SBATCH --nodes= minnodes[-maxnodes]

Nombre minimum[-maximum] de nœuds sur lesquels distribuer les Tasks.

#SBATCH --ntasks-per-node= n

Utilisée conjointement avec --nodes, cette option est une alternative à --ntasks qui permet de contrôler la distribution des Tasks sur les différents noeuds.

Valeurs par défaut et/ou déduites par Slurm :

Sans déclaration explicite de Job Step(s), une seule Task sera créée et les paramètres "--ntasks", "--nodes", "--nodelist" ... seront ignorés.

De manière générale, lorsque "--nodes" n\'est pas définie, Slurm détermine automatiquement le nombre de nœuds nécessaires (en fonction de l'utilisation des nœuds, du nombre de CPUs-par-Nœuds/Tasks-par-Nœud/CPUs-par-Task/Tasks, etc.).

Si "--ntasks" n'est pas définie, une Task par nœud sera allouée.

A noter que le nombre de Tasks d'un Job peut être défini soit explicitement avec "--ntasks" ou implicitement en définissant "--nodes" et "--ntasks-per-node".

Si les options "--ntasks", "--nodes" et "--ntasks-per-node" sont toutes définies, "--ntasks-per-node" indiquera alors le nombre maximum de Tasks par noeud.