Ada : commandes de contrôle des travaux batch

Les travaux sont gérés sur l'ensemble des noeuds par le logiciel IBM LoadLeveler. Les principales commandes utiles pour contrôler vos travaux sont présentées ci-dessous.

Pour soumettre un travail : llsubmit

La commande llsubmit est utilisée pour soumettre un travail en batch :

$ llsubmit mon_job.ll
llsubmit: Processed command file through Submit Filter: ''/local/loadl/Fidris/llsubmit_exit''.
llsubmit: The job ''ada338.idris.fr.1942'' has been submitted.

Toute autre sortie implique une erreur dans le job; parfois un message succinct mis en place par l'IDRIS vous indiquera quel paramètre de soumission a été omis ou pose problème.

Note : à l'IDRIS, la commande llsubmit n'admet aucune option.

Pour afficher les travaux dans les files d'attente : llq

La commande llq [-u login] affiche des informations sur l'évolution et la consommation de tous les travaux batch sur la machine. L'option -u restreint l'affichage aux travaux appartenant au login spécifié; le vôtre par exemple.

$ llq -u rlab432
Id                       Owner      Submitted   ST PRI Class        Running On
------------------------ ---------- ----------- -- --- ------------ -----------
ada338.2630.0            rlab432     1/4  11:44 R  100 mt8t1        ada072
1 job step(s) in query, 0 waiting, 0 pending, 1 running, 0 held, 0 preempted

La colonne ST (Status) indique si votre job est R (Running) ou I (Idle) en attente d'être lancé. Les autres états possibles sont NQ (Not Queued) en dehors des files d'attente, H (Hold), C (Completed) quand une étape d'un travail multi-step est terminée mais que les autres étapes sont encore en cours, CS (Changing State) quand un travail est terminé mais en train de sortir des files d'attente.

Attention : si vous ne trouvez pas le retour d'un travail terminé, c'est très probablement que vous n'êtes pas dans le répertoire de soumission. Il est aussi possible que vous soyez en dépassement de quota sur Ada, ou encore que vous ayez omis de spécifier les fichiers de sortie et d'erreur dans votre script de soumission (lignes # @ output et # @ error). Dans ce dernier cas, votre retour de job est perdu.

Pour supprimer un travail : llcancel

La commande llcancel permet de supprimer un travail. Par exemple, pour supprimer le travail ada338.1942.0 s'exécutant sur l'un des nœuds de la machine :

$ llq -u rlab432
Id                       Owner      Submitted   ST PRI Class        Running On
------------------------ ---------- ----------- -- --- ------------ -----------
ada338.1942.0            rlab432     1/4  11:42 R  100 c8t1         ada012

$ llcancel ada338.1942
llcancel: Cancel command has been sent to the central manager.

Pour contrôler la consommation (et les performances) de vos travaux : idrjar

La commande IDRIS idrjar affiche les informations concernant la consommation de vos travaux batch. Ces informations ne sont disponibles que le lendemain de la fin du travail, après traitement des données comptables dans la nuit. Par contre, vous pouvez accéder à tous vos travaux depuis le début de l'année en cours (option -e). La commande idrjar permet notamment l'affichage :

  • du temps Elapsed facturé (et du temps Cpu, pour information) ;
  • de la mémoire demandée et utilisée ;
  • des dates de soumission, de démarrage et de fin d'exécution ;
  • de l'efficacité (intéressant pour les travaux parallèles).

Pour plus d'informations lancez idrjar -h sur Ada. Voici quelques exemples d'utilisation :

$ idrjar -d02
|-----------------------------------------------|
|--- IDRIS/CNRS. Version du 17 decembre 2013 ---|
|-----------------------------------------------|
Sorties concernant l'identifiant rlab432 pour la periode du
        ==> 01 fevrier 2013 au 28 fevrier 2013
 Owner      Job Name           JobId       Queue tEse tCpu  #T    (%)   S
------- ---------------- ----------------- ----- ---- ----- --- ------- -
rlab432 TEST_200_ssmodul ada338.74526.0 batch  371    32  16    0.54 R
rlab432 TEST_200_ssmodul ada338.74535.0 batch 1397  2370  16   10.60 C
rlab432 TEST_200_ssmodul ada338.74589.0 batch 3736 20125  16   33.67 R
-------------------------------------------------------------------------
        CONSOMMATION TOTALE DES TRAVAUX CI-DESSUS ==> 88064s, soit 24.46h
---------------------------------- LEGENDE ------------------------------
tEse  : temps ''Elapsed'' consomme en secondes.
tCpu  : temps CPU consomme en secondes.
#T    : nombre de taches ou de processeurs utilises.
(%)   : taux d'efficacite du travail ==> tCpu*100/(tEse*#T).
S     : C (completed) ==> travail termine normalement.
        R (removed)   ==> travail detruit en cours d'execution à l'aide
                          de la commande ''llcancel'' par exemple.

Autre exemple, pour le même mois mais avec cette fois-ci le maximum d'informations (format long) :

$ idrjar -d02 -l
|-----------------------------------------------|
|--- IDRIS/CNRS. Version du 17 decembre 2013 ---|
|-----------------------------------------------|
Sorties concernant l'identifiant rlab432 pour la periode du
        ==> 01 fevrier 2013 au 28 fevrier 2013
      JobId       Queue Qdate Bdate Edate   tEse       tCpu     Data+Stack MAXRSS #T    (%)   S
----------------- ----- ----- ----- ----- -------- ------------ ---------- ------ --- ------- -
ada338.74526.0 batch 13/02 13/02 13/02      371           32       9663     80  16    0.54 R
                        15:38 15:38 15:44 00:06:11 000+00:00:32
ada338.74535.0 batch 13/02 13/02 13/02     1397         2370       9663     91  16   10.60 C
                        15:45 15:45 16:08 00:23:17 000+00:39:30
ada338.74589.0 batch 13/02 13/02 13/02     3736        20125       9663     23  16   33.67 R
                        16:09 16:09 17:11 01:02:16 000+05:35:25
-----------------------------------------------------------------------------------------------
        CONSOMMATION TOTALE DES TRAVAUX CI-DESSUS ==> 88064s, soit 24.46h
---------------------------------- LEGENDE ----------------------------------------------------
Qdate      : date et heure d'entree du travail dans la queue LoadLeveler.
Bdate      : date et heure de debut d'exécution du travail.
Edate      : date et heure de fin d'exécution du travail.
tEse       : temps ''Elapsed'' consomme en secondes et en ''heures, minutes,
             secondes'' (format ==> hh:mm:ss).
tCpu       : temps CPU consomme en secondes et en ''jours, heures, minutes,
             secondes'' (format ==> jjj+hh:mm:ss).
Data+Stack : memoire ''Data+Stack'' demandee (en MégaBytes).
MAXRSS     : memoire maximum utilisee par le travail (en MégaBytes).
#T         : nombre de taches ou de processeurs utilises.
(%)        : taux d'efficacite du travail ==> tCpu*100/(tEse*#T).
S          : C (completed) ==> travail termine normalement.
             R (removed)   ==> travail detruit en cours d'execution a l'aide
                               de la commande ''llcancel'' par exemple.

Pour lister l'ensemble des paramètres LoadLeveler de vos travaux : idrllsummary

La commande IDRIS idrllsummary permet de lister l'intégralité des paramètres de vos travaux dès qu'ils sont terminés.

  • c'est la seule commande qui vous donne accès aux informations des travaux terminés dans la journée en cours : les statistiques comptables des travaux sont accessibles par la commande idrjar (c.f. ci-dessus) le lendemain seulement ;
  • si aucun travail ne répond aux critères de sélection par défaut, ou aux options spécifiées (en cas de faute de frappe dans le numéro du job par exemple), alors la commande ne répond rien : il n'y a pas de message d'erreur;
  • si un ou plusieurs travaux répondent aux critères de sélection par défaut ou aux critères spécifés par des options, la commande est très bavarde : il est nécessaire d'en rediriger la sortie dans un fichier (pour édition ultérieure) ou de la filtrer pour en restreindre le volume.

Quelques exemples :
je n'ai pas soumis de job ce jour. La commande ne répond donc rien à ma demande (par défaut, la date est celle du jour) :

$ idrllsummary

Par contre, j'ai soumis des travaux le 13 février (voir la sortie du idrjar -d02 ci-dessus).
Pour avoir les informations que LoadLeveler a enregistré à la fin de l'exécution du premier des travaux, je lance :

$ idrllsummary -j 74526 -d 13/02/2013
------------------ Step ada338.idris.fr.74526.0 ------------------
      Job Step Id: ada337.idris.fr.74526.0
        Step Name: 0
 [..]
 

soit environ 150 lignes.
Pour en extraire les informations pertinentes, vous pouvez utiliser le filtre suivant :

$ idrllsummary -j 74526 -d 13/02/2013 | grep Time
   Eligibility Time: Wed 29 Jan 2014 11:17:05 AM CET
      Dispatch Time: Thu 30 Jan 2014 07:37:28 AM CET
         Start Time: Thu 30 Jan 2014 07:37:28 AM CET
    Ckpt Accum Time: 0
  Starter User Time: 00:00:00.050992
Starter System Time: 00:00:00.029995
 Starter Total Time: 00:00:00.080987
     Step User Time: 00:34:03.568323
   Step System Time: 00:25:40.308831
    Step Total Time: 00:59:43.877154

Négligez les lignes parlant de Starter, non significatives. Le temps système (CPU) est donné à titre indicatif; le temps facturé est le temps 'Elapsed' (temps de restitution) multiplié par le nombre de cœurs demandés.
Vous pouvez aussi ajuster le filtrage pour obtenir les informations sur l'utilisation de la mémoire :

$ idrllsummary -j 74526 -d 13/02/2013 | grep Mem
 Memlock Hard Limit: undefined
 Memlock Soft Limit: undefined
Step Virtual Memory: 0.000 mb
   Step Real Memory: 0.000 mb

ou tout autre paramètre qui vous intéresse.
Dans le cas d'un job multi-steps, les informations sont répétées autant de fois qu'il y avait d'étapes dans votre travail.