Suivi des jobs

Etat du service de la ferme

Pour évaluer l’état d’occupation de la ferme de calcul, vous pouvez vous référer au portail des utilisateurs ou lancer la commande suivante :

% sjstat

Scheduling pool data:
-------------------------------------------------------------
Pool        Memory  Cpus  Total Usable   Free  Other Traits
-------------------------------------------------------------
htc*       144801Mb    48    191    191      0  htc
htc*       192934Mb    64    190    190      0  htc
htc_inter  192934Mb    64      1      1      0  htc_interactive
htc_inter  128361Mb    40      2      2      0  htc_interactive
[..]

Statut de soumission d’un job

La commande squeue permet l’affichage de différentes informations concernant un job. Elle donne, entre autres, le temps d’exécution, l’état courant (colonne ST, avec état possible R pour running et PD pour pending), le nom du job, et la partition dans laquelle le job est exécuté :

% squeue
JOBID PARTITION     NAME     USER      ST       TIME      NODES NODELIST(REASON)
465   multiseq      hello    user      R        0:01      1     ccwtbslurm01

Les principales options de squeue sont :

-t [running|pending]

sélectionne l’état running ou pending pour les jobs à afficher

[[-v] -l] -j

affiche un job donné, avec -l pour un format dit long, et -v pour une sortie plus détaillée, verbeuse.

Attention

La sortie de squeue coupe à 8 caractères certains champs du job. Pour avoir le nom complet utilisez l’option -O. Ci-dessous un exemple pour le nom du job :

% squeue -O JobID,Name

Pour plus d’informations sur cette commande et les codes de sorties, veuillez vous référer à la documentation officielle et la commande en ligne ci-dessous :

% man squeue

Efficacité d’un job

La commande seff affiche les ressources utilisées par un job donné, et calcule son efficacité :

% seff <jobid>
Job ID: <jobid>
Cluster: ccslurmlocal
User/Group: <userid>/<groupid>
State: CANCELLED (exit code 0)
Cores: 1
CPU Utilized: 00:12:50
CPU Efficiency: 98.59% of 00:13:01 core-walltime
Job Wall-clock time: 00:13:01
Memory Utilized: 120.00 KB
Memory Efficiency: 0.00% of 0.00 MB

Suspension et altération d’un job

La commande scontrol permet la gestion des jobs. Avec les options hold, update et release, elle permet respectivement de suspendre un job (le sortir de la queue), de le modifier, puis de le remettre en queue :

% scontrol [hold|update|release] <liste des identifiants des jobs>

Seuls les attributs suivants peuvent être modifiés une fois le job soumis :

  • la durée d’exécution du job, wall clock limit ;

  • le nom du job ;

  • les dépendances du job.

Dans certains cas, ces attributs ne pourront être modifiés que pour les jobs en queue.

Les attributs suivants ne peuvent pas être modifiés lorsque le job est en exécution :

  • le nombre de GPU(s) demandé ;

  • node(s) ;

  • memory.

Pour plus de détails sur cette commande, veuillez vous référer à l’aide de la commande scontrol -h et la doc suivante : https://slurm.schedmd.com/scontrol.html#OPT_update

Annulation d’un job

La commande scancel permet de retirer (annuler) un ou plusieurs jobs :

% scancel <jobid>

ou tous les jobs d’un utilisateur donné :

% scancel -u <userid>

ou encore toute une série de jobs ayant le même nom :

% scancel -n <jobname>

Il sera nécessaire d’avoir le nom complet de la série de jobs : veuillez vous référer à la commande squeue.

Pour plus de détails sur cette commande, veuillez vous référer à l’aide de la commande scancel -h.

Statut de fin de job

La commande sacct vérifie et affiche le statut, la partition et le compte account d’un job :

% sacct
       JobID    JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
1377          stress.sh   multiseq    ccin2p3          8 CANCELLED+      0:0
1381          stress.sh   multiseq    ccin2p3          8  COMPLETED      0:0
1381.batch        batch               ccin2p3          8  COMPLETED      0:0

Il est possible de modifier ponctuellement le formattage via l’option --format :

% sacct --format="Account,JobID,NodeList,CPUTime,MaxRSS"
   Account        JobID        NodeList    CPUTime     MaxRSS
---------- ------------ --------------- ---------- ----------
   ccin2p3 1523            ccwslurm0001   00:10:14
   ccin2p3 1523.batch      ccwslurm0001   00:10:14
   ccin2p3 1524            ccwslurm0001   00:10:14

ou modifiez la variable d’environnement SACCT_FORMAT pour définir une nouveau output :

% export SACCT_FORMAT=Account,JobID,NodeList,CPUTime,MaxRSS
% sacct
   Account        JobID        NodeList    CPUTime     MaxRSS
---------- ------------ --------------- ---------- ----------
       ... ...                      ...        ...        ...

Pour avoir la liste complète des champs disponibles :

% sacct -e

Pour plus de détails sur cette commande, veuillez vous référer à l’aide de la commande sacct -h.

Profilage des jobs

La plateforme de calcul permet de profiler un job, fournissant à l’utilisateur un fichier html, qui peut être ouvert dans un navigateur affichant des informations de profilage et des graphiques, et un fichier xml avec des valeurs de profilage brutes.

Si vous avez besoin de profiler un job, vous devez ajouter au moins une option à votre ligne de soumission :

% sbatch -t 0-01:00 -n 3 --mem 7G --profile=task [--acctg-freq=task=10] job.sh
--profile=task

active l’agent de profilage

--acctg-freq=task=<nombre>

définit la fréquence d’interrogation en secondes (entre 1 et 15 sec.). Par défaut : <nombre>=15

Après avoir lancé votre job de production avec les options ci-dessus, vous pouvez lancer un second job avec la syntaxe suivante :

% sbatch -t 0-01:00 -n 1 --mem 1G -d <jobid> slurm_profiling <jobid>

<jobid> étant l’ID du que vous souhaitez profiler. Les fichiers html et xml seront créés dans votre répertoire de travail.