Gestion de production

Une production regroupe un grand nombre de traitements similaires, typiquement réalisés en batch au Centre de calcul.

Lorsque les traitements portent sur les données Eros, le nombre d'opérations peut devenir très élevé et des outils pour les organiser, suivre leur progression et gérer d'éventuelles reprises en cas d'échec s'avèrent nécessaire.

L'environnement Operations est le prolongement du pilote de soumissions de batchs, Launch, utilisant la base de données Eros pour y enregistrer les traitements à effectuer et l'état de leur réalisation.

Les différentes étapes d'une production sont typiquement:

1) la définition de la production et de ces caractéristiques;

2) l'identification des traitements à réaliser et leur enregistrement dans la base de données;

3) la soumission des batchs chargés de réaliser les traitements;

4) le suivi de la progression des opérations;

5) éventuellement, la reprise des traitements ayant échoués;

6) la fin de la production et l'archivage des différentes traces.

L'environnement Operations gère ces différentes étapes au moyen d'actions autonomes. Ces actions peuvent être étendues sous la forme de classes Java activées via l'environnement.

Les actions supportées par l'environnement sont, dans l'ordre logique de réalisation d'une production:

  • new: initialisation d'une nouvelle production
  • build: définition des traitements à réaliser
  • submit: soumission des jobs définis
  • run: exécution d'un traitement
  • report: rapport sur la progression des traitements
  • reset: réinitialisation de l'état de réalisation des opérations
  • cancel: suppression d'opérations ou de l'ensemble de la production
  • archive: archivage de la production

Les étapes submit et archive ne sont actuellement pas supportées par des actions de l'environnement mais peuvent être gérées grâce aux outils Launch et Archive

Une aide sur les actions supportées est disponible grâce aux actions:

  • help: aide en ligne
  • ?: raccourci pour l'aide en ligne

Les extensions aux actions de l'environnement peuvent être activées au moyen de l'action spéciale:

  • action: exécution d'une action extérieure

Utilisation

L'application Operations est le gestionnaire des étapes d'une production. Ces étapes sont réalisées sous le contrôle d'actions activées par l'environnement. L'action à réaliser est indiquée sur la ligne de commande avec ces arguments et ses options.

Les actions supportées sont indiquées par l'action help. Le raccourci ? est également supporté.

Exemple:

% Operations help
?: liste des actions supportées
action: exécution d'une action extérieure
build: définition des opérations à réaliser
cancel: suppression des opérations
help: liste des actions supportées
new: création d'une nouvelle production
report: rapport sur une production
reset: réinitialise les opérations réalisées
run: exécution des opérations d'un batch

L'aide de chaque action est obtenue par son option -help.

Exemples:

% Operations help -help
liste des actions supportées

with:
  -debug: report debug messages
  -help: application on-line help
  -usage: application usage
  -verbose: report verbose messages

ou encore:

% Operations new -help
création d'une nouvelle production
Usage: new <production>

with:
  -cpu: temps CPU des batchs
  -debug: report debug messages
  -directory: nom du répertoire de travail
  -executer: commande pilotant l'exécution d'une opération
  -help: application on-line help
  -mail: adresse de notification de fin d'exécution
  -memory: mémoire des batchs
  -operation: nom des opérations
  -rate: temps CPU par opération
  -resident: mémoire résidente des batchs
  -resources: ressources d'exécution des batchs
  -setup: script d'initialisation des batchs
  -usage: application usage
  -verbose: report verbose messages

arguments:
  production: nom de la production

new

new crée une nouvelle production et son répertoire de travail ainsi que le fichier des propriétés de la production.

La production est enregistrée dans la base de données. Elle ne doit donc pas déjà existée.

Un répertoire est utilisé pour y regrouper les différents fichiers liés aux opérations. Ce répertoire est créé par défaut dans le répertoire courant et porte le nom de la production. Un répertoire différent peut être explicitement désigné. Ce répertoire ne doit pas existé lorsque l'action new est invoquée.

Les différents paramètres de la production sont enregistrés dans un fichier de configuration conservé dans ce répertoire de travail.

Il n'y a pas de restriction particulière sur le nom de la production mais le nom du répertoire de travail doit être compatible avec le système de fichiers utilisé. En pratique, les caractères autres que les lettres, les chiffres, le 'souligné' et le 'tiret' sont filtrés du nom de la sélection pour construire le nom du répertoire.

Lors de la création de la production, il est possible de définir les ressources par défaut attribuées à l'exécution des batchs. Ces définitions sont faites grâce aux options:

  • operation: nom des opérations
  • cpu: temps CPU des batchs
  • memory: mémoire des batchs
  • resident: mémoire résidente des batchs
  • resources: ressources d'exécution des batchs
  • mail: adresse de notification de fin d'exécution
  • setup: script d'initialisation des batchs
  • executer: commande pilotant l'exécution d'une opération

A l'exception de -operation et -executer, ces options sont similaires aux options du lanceur de batchs, Launch. Mais à la différence de Launch, les valeurs de ces paramètres sont enregistrées dans le fichier de la production, et non pas dans le fichier des batchs. Elles servent de valeurs par défaut pour ces ressources lors de la définition des actions (voir build).

L'option -operation permet de donner un nom unique aux opérations à réaliser. C'est utile pour des productions comportants plusieurs ensembles distincts de traitements. Il n'y a pas de valeur par défaut, la définition de ce paramètre n'est contrôlé que lors de la définition des traitements à réaliser.

L'option -executer donne un nom au pilote invoqué lors de l'exécution d'un traitement par la commande run. La valeur par défaut est ./operation.sh. Un modèle de script est créé lors de l'initialisation de la production.

Les propriétés de la nouvelle production sont enregistrées dans le fichier production.properties, conservé dans le répertoire de travail. Le format de ce fichier est présenté dans la section Fichier de configuration.

Utilisation

L'action new est exécutée pour initialiser une nouvelle production, donc en dehors du répertoire de travail de cette future production. C'est l'exécution de cette action qui crée ce répertoire et le fichier des propriétés de la production.

Usage:

new production

Options:

  • -cpu: temps CPU des batchs
  • -directory: nom du répertoire de travail
  • -executer: commande pilotant l'exécution d'une opération
  • -mail: adresse de notification de fin d'exécution
  • -memory: mémoire des batchs
  • -operation: nom des opérations
  • -resident: mémoire résidente des batchs
  • -resources: ressources d'exécution des batchs
  • -setup: script d'initialisation des batchs

Argument:

  • production: nom de la production

Exemple

% cd productions/
% Operations new -verbose TestProd 
09-Oct-2021 12:31 (INFO) Creating production <TestProd>
09-Oct-2021 12:31 (INFO) Accessing database
09-Oct-2021 12:31 (INFO) Creating production directory <TestProd>
09-Oct-2021 12:31 (INFO) Saving production properties TestProd\production.properties
09-Oct-2021 12:31 (INFO) Production created <TestProd>

% ls
TestProd

% cd TestProd/
% ls
production.properties

Le fichier de configuration

#++
# Production TestProd
#    Creation Sat Oct 09 15:28:11 CEST 2021
#--

# nom de la production
production = TestProd

# nom des operations
# operation =

# temps CPU des batchs
# cpu =

# memoire des batchs
# memory =

# memoire residente des batchs
# resident =

# resources d'execution des batchs
# resources =

# adresse de notification de fin d'execution
# mail =

# script d'initialisation des batchs
# setup =

# commande d'execution d'une operation
executer = ./operation.sh

Les différents paramètres de la production sont indiqués dans le fichier de configuration. Les paramètres non définis sont commentés.

Ceci permet d'éditer directement le fichier pour définir les paramètres manquants.

Par exemple ici, il serait utile de définir le script d'initialisation du contexte ErosDb par:

setup = /sps/eros/softs/ErosDbIII/setup.sh

build

build enregistre dans la base de données les paramètres des traitements à réaliser. Ces paramètres sont indiqués sous la forme de fichiers de texte, à raison d'une ligne par opération. Chaque opération peut être associée jusqu'à 8 paramètres.

Lors de l'enregistrement des opérations, chaque fichier est assimilé à un lot, qui sera exécuté sous la forme d'un batch. Seul les noms de base des fichiers sont associés aux lots de traitement. L'extension du fichier est ignorée.

Le processus de définition des opérations de la production consiste donc à collecter les paramètres de l'ensemble des opérations puis à décomposer ces opérations en lots dans autant de fichiers que nécessaire et à charger ces différentes listes grâce à build.

build construit ou actualise le fichier des propriétés des batchs, batches.properties (voir Launch) et y enregistre la liste des lots de traitement chargés.

Les différentes ressources d'exécution des batchs peuvent être redéfinies.

Exemple

Par exemple, pour réaliser l'extraction des entêtes FITS des images Eros 1 CCD, la première étape est de récupérer la liste des fichiers représentant ces images. Il est possible d'invoquer la base de données. Pour les besoins de l'exemple, seuls les premières images sont sélectionnées:

% GetImages -max 10 -noheader naming=EROS1_CCD -format fullname
irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01
irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183c.fitsr02
irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183c.fitsr03
irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
irods:/eros/data/eros1-ccd/fits/LMC9192/08/xb1l183c.fitsr08
irods:/eros/data/eros1-ccd/fits/LMC9192/09/xb1l183c.fitsr09
irods:/eros/data/eros1-ccd/fits/LMC9192/10/xb1l183c.fitsr10
irods:/eros/data/eros1-ccd/fits/LMC9192/11/xb1l183c.fitsr11

Si bien sûr l'ensemble des images était sélectionnées, soit plus de 340 mille fichiers, il faudrait décomposer la liste par exemple grâce à split.

% GetImages -max 100 -noheader naming=EROS1_CCD -format fullname > eros1ccd.list
% split -l 10 eros1ccd.list eros1ccd-

%ls
eros1ccd.list  eros1ccd-ab  eros1ccd-ad  eros1ccd-af  eros1ccd-ah  eros1ccd-aj
eros1ccd-aa    eros1ccd-ac  eros1ccd-ae  eros1ccd-ag  eros1ccd-ai  production.properties

Les listes d'opérations peuvent alors être chargées:

% Operations build -verb eros1ccd-?? -operation Test
09-Oct-2021 15:29 (INFO) Accessing database
09-Oct-2021 15:29 (INFO) Getting production TestProd
09-Oct-2021 15:29 (INFO) Processing eros1ccd-aa
09-Oct-2021 15:29 (INFO) Saving operations as lot eros1ccd-aa
09-Oct-2021 15:29 (INFO) Operations eros1ccd-aa defined as job eros1ccd-aa
09-Oct-2021 15:29 (INFO) Processing eros1ccd-ab
09-Oct-2021 15:29 (INFO) Saving operations as lot eros1ccd-ab
09-Oct-2021 15:29 (INFO) Operations eros1ccd-ab defined as job eros1ccd-ab
    ...
09-Oct-2021 15:29 (INFO) Processing eros1ccd-aj
09-Oct-2021 15:29 (INFO) Saving operations as lot eros1ccd-aj
09-Oct-2021 15:29 (INFO) Operations eros1ccd-aj defined as job eros1ccd-aj
09-Oct-2021 15:29 (INFO) Saving batches properties batches.properties
09-Oct-2021 15:29 (INFO) Creating operation executer script ./operation.sh

% ls
batches.properties  eros1ccd-ab  eros1ccd-ad  eros1ccd-af  eros1ccd-ah  eros1ccd-aj    operation.sh
eros1ccd-aa         eros1ccd-ac  eros1ccd-ae  eros1ccd-ag  eros1ccd-ai  eros1ccd.list  production.properties

% cat batches.properties
#++
# Properties des batchs de la production TestProd
# Creation Sat Oct 09 15:29:39 CEST 2021
#--

# separateur des arguments
# args.separator =

# arguments des jobs
args = eros1ccd-aa eros1ccd-ab eros1ccd-ac eros1ccd-ad eros1ccd-ae eros1ccd-af eros1ccd-ag eros1ccd-ah eros1ccd-ai eros1ccd-aj

# commande a executer
command = Operations run $ARG

# temps CPU
# cpu =

# pattern de definition du nom des jobs
# jobname =

# mail de notification des fins de job
# mail =

# taille memoire
# memory =

# memoire residente
# resident =

# liste des ressources demandees
# resources =

# script d'initialisation du job
setup = /sps/eros/softs/ErosDbIII/setup.sh dev

On voit dans cet exemple que les propriétés indispensables jobname et cpu ne sont pas définies. De même les autres paramètres importants memory, resident et resources n'ont pas de valeur.

Il faudra les définir avant de pouvoir lancer les batchs.

Utilisation

Usage:

build [-operation operation] lists...

Options:

  • -cpu: temps CPU des batchs
  • -executer: commande pilotant l'exécution d'une opération
  • -mail: adresse de notification de fin d'exécution
  • -memory: mémoire des batchs
  • -operation: l'opération à initialiser
  • -resident: mémoire résidente des batchs
  • -resources: ressources d'exécution des batchs
  • -setup: script d'initialisation des batchs

Arguments:

  • lists: listes des opérations à définir

run

run pilote l'exécution des opérations confiées à un job. La commande reçoit en argument le descripteur du lot correspondant au batch, sélectionne depuis la base de données les opérations non exécutée pour ce lot et active pour chacune de ces opérations la commande définie par la propriété executer de la production (voir configuration) en lui transmettant les paramètres de l'action.

La commande associée aux batchs dans le fichier des propriétés des batchs grâce au paramètre command est donc typiquement:

command = Operations run -verb $ARG

La commande exécutée pour traiter chaque opération (via executer) doit retourner un code numérique indiquant le succès ou l'échec de l'opération selon la convention UNIX: 0 indique le succès, une valeur autre que 0 un échec.

run enregistre dans la base de données le code de retour de la commande executer ainsi que la date et l'heure de fin d'exécution.

L'action peut également être utilisée en interactif afin de vérifier que l'ensemble de la chaîne de traitement fonctionne correctement. Ceci permet également d'estimer les ressources utilisées, en particulier en ce qui concerne le temps CPU.

Exemples

Le fichier des propriétés des batchs donne la liste des arguments des jobs. A partir de cette liste, on peut lancer en interactif l'exécution du premier job:

% head batches.properties
#++
# Properties des batchs de la production TestProd
# Creation Sat Oct 09 15:29:39 CEST 2021
#--

# separateur des arguments
# args.separator =

# arguments des jobs
args = eros1ccd-aa eros1ccd-ab eros1ccd-ac eros1ccd-ad eros1ccd-ae eros1ccd-af eros1ccd-ag eros1ccd-ah eros1ccd-ai eros1ccd-aj

Le premier lot est traité grâce à la commande:

% Operations run -verb eros1ccd-aa
10-Oct-2021 11:12 (INFO) Staring job eros1ccd-aa execution
10-Oct-2021 11:12 (INFO) Accessing database
10-Oct-2021 11:12 (INFO) Getting production TestProd
10-Oct-2021 11:12 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01
10-Oct-2021 11:12 (ERROR) Executer script 'operation.sh' invalid
10-Oct-2021 11:12 (ERROR) Command failed, status: 1
10-Oct-2021 11:12 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183c.fitsr02
10-Oct-2021 11:12 (ERROR) Executer script 'operation.sh' invalid
10-Oct-2021 11:12 (ERROR) Command failed, status: 1
10-Oct-2021 11:12 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183c.fitsr03
^C

L'erreur la plus courante ! Le script operation.sh, créé par défaut ne fait rien d'autre que de signaler qu'il n'est pas valide... Il faut donc éditer ce script et programmer le traitement de l'opération...

Comme le montre l'exemple, le script reçoit 1) le nom de l'opération exécutée; 2) l'identifiant du lot; 3) le ou les arguments associés à l'opération: ici, le nom de l'image à traiter.

Soit par exemple:

operation=$1
lot=$2
image=$3

submit

Actuellement, il n'y a pas d'action pour la soumission des batchs. Cette soumission doit donc se faire grâce à l'utilitaire Launch.

Par exemple, pour vérifier la configuration et connaitre la liste des batchs déclarés:

% Launch -verb -check
Application aborted
Reason: IllegalStateException: Mandatory property not set: cpu

Cette situation est typique de la mise en place d'une production: le fichier de configuration créé durant la définition des opérations (build) est incomplet. Il faut corriger les paramètres impératifs: temps CPU et nom des batchs, ainsi que les ressources indispensables à l'exécution des batchs: ressources d'exécution, mémoire, ...

% cat batches.properties
# arguments des jobs
args = eros1ccd-aa eros1ccd-ab eros1ccd-ac eros1ccd-ad eros1ccd-ae eros1ccd-af eros1ccd-ag eros1ccd-ah eros1ccd-ai eros1ccd-aj

# commande a executer
command = Operations run -verb $ARG

# temps CPU
cpu = 1000

# pattern de definition du nom des jobs
jobname = Test_${ARG}

# taille memoire
memory = 12 G

# memoire residente
resident = 4 G

# liste des ressources demandees
resources = irods sps oracle

# script d'initialisation du job
setup = /sps/eros/softs/ErosDbIII/setup.sh dev

Et donc:

% Launch -verb -check
Jobname          Command                          Cpu  Memory Resident Resources            Mail
---------------- -------------------------------- ---- ------ -------- -------------------- ----
Test_eros1ccd-aa Operations run -verb eros1ccd-aa 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ab Operations run -verb eros1ccd-ab 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ac Operations run -verb eros1ccd-ac 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ad Operations run -verb eros1ccd-ad 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ae Operations run -verb eros1ccd-ae 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-af Operations run -verb eros1ccd-af 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ag Operations run -verb eros1ccd-ag 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ah Operations run -verb eros1ccd-ah 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-ai Operations run -verb eros1ccd-ai 1000  12288     4096 [irods, sps, oracle]
Test_eros1ccd-aj Operations run -verb eros1ccd-aj 1000  12288     4096 [irods, sps, oracle]

Le lancement d'un premier batch, jouant le rôle de batch 'pilote', permet de s'assurer que l'ensemble de la chaîne de traitement est correcte.

% Launch -verb eros1ccd-aa
10-Oct-2021 13:14 (INFO) qsub -P P_eros -N Test_eros1ccd-aa -l s_cpu=1000 -l s_vmem=12288M -l s_rss=4096M -l irods=1 -l sps=1 -l oracle=1 -j Yes -o /pbs/home/e/erosprod/migrations/tests/TestProd/Test_eros1ccd-aa.log /pbs/home/e/erosprod/migrations/tests/TestProd/Test_eros1ccd-aa.sub
Your job 19645507 ("Test_eros1ccd-aa") has been submitted
Jobname          Command                          Cpu  Memory Resident Resources            Mail
---------------- -------------------------------- ---- ------ -------- -------------------- ----
Test_eros1ccd-aa Operations run -verb eros1ccd-aa 1000  12288     4096 [irods, sps, oracle]

L'utilitaire ReportBatches montre que le job a été interrompu par le gestionnaire des batchs (GE):

% ReportBatches
Jobname          JobID    End Date Elapse  Cpu CPU Rq.Cpu Memory Rq.Mem Resid Rq.Res Information
---------------- -------- -------- ------- --- --- ------ ------ ------ ----- ------ -----------
Test_eros1ccd-aa 19645507          0:04:06           1000         12288         4096 Cancelled

Statistics  Value
----------- -----
Batch count     1
Request      1000
Elapse        246

Status    Number
--------- ------
Cancelled      1

Et de fait, le fichier log est incomplet :

% tail Test_eros1ccd-aa.log
'work/xb1l183c.fitsr03.header' -> 'headers/xb1l183c.fitsr03.header'
10-Oct-2021 13:14 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
10-Oct-2021 13:14 (INFO) Getting header for irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
10-Oct-2021 13:14 (INFO) Reading from file: /eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
'work/xb1l183c.fitsr04.header' -> 'headers/xb1l183c.fitsr04.header'
10-Oct-2021 13:14 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
10-Oct-2021 13:14 (INFO) Getting header for irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
10-Oct-2021 13:14 (INFO) Reading from file: /eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
'work/xb1l183c.fitsr07.header' -> 'headers/xb1l183c.fitsr07.header'
10-Oct-2021 13:14 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/08/xb1l183c.fitsr08

L'utilitaire qacct montre la cause de l'échec: mémoire vive insuffisante.

% qacct -j Test_eros1ccd-aa
==============================================================
qname        long
hostname     ccwsge0839.in2p3.fr
group        eros
owner        erosprod
project      P_eros
department   defaultdepartment
jobname      Test_eros1ccd-aa
jobnumber    19645507
( ... )
submit_cmd   qsub -P P_eros -N Test_eros1ccd-aa -l s_cpu=1000 -l s_vmem=12288M -l s_rss=4096M -l irods=1 -l sps=1 -l oracle=1 -j Yes -o /pbs/home/e/erosprod/migrations/tests/TestProd/Test_eros1ccd-aa.log /pbs/home/e/erosprod/migrations/tests/TestProd/Test_eros1ccd-aa.sub
( ... )
failed       100 : assumedly after job
deleted_by   NONE
exit_status  152
( ... )
wallclock    16.995
cpu          190.986
mem          95.992
io           0.059
iow          0.100
ioops        44020
maxvmem      20.778G
maxrss       319.254M
maxpss       294.204M
( ... )

Le job a utilisé plus de 20 Go de mémoire vive: GE n'aime pas beaucoup Java et a du mal avec les applications multi-threads... Il faut relancer le pilote en augmentant la taille mémoire:

% Launch -verb eros1ccd-aa -memory 30G
10-Oct-2021 13:24 (INFO) qsub -P P_eros -N Test_eros1ccd-aa -l s_cpu=1000 -l s_vmem=30720M -l s_rss=4096M -l irods=1 -l sps=1 -l oracle=1 -j Yes -o /pbs/home/e/erosprod/migrations/tests/TestProd/Test_eros1ccd-aa.log /pbs/home/e/erosprod/migrations/tests/TestProd/Test_eros1ccd-aa.sub
Your job 19646567 ("Test_eros1ccd-aa") has been submitted
Jobname          Command                          Cpu  Memory Resident Resources            Mail
---------------- -------------------------------- ---- ------ -------- -------------------- ----
Test_eros1ccd-aa Operations run -verb eros1ccd-aa 1000  30720     4096 [irods, sps, oracle]

% qstat
job-ID     prior   name       user         state submit/start at     queue                          jclass                         slots ja-task-ID
------------------------------------------------------------------------------------------------------------------------------------------------
  19646567 0.05348 Test_eros1 erosprod     r     10/10/2021 13:24:41 long@ccwsge0836.in2p3.fr                                          1

Durant l'exécution du batch, Operations report (voir report) permet de suivre la progression des opérations:

% Operations report
State  Count Progress
------ ----- --------
     0     9   9.00 %
<wait>    91  91.00 %

Une fois le job terminé:

% ReportBatches
Jobname          JobID    End Date        Elapse  Cpu CPU     Rq.Cpu Memory Rq.Mem Resid Rq.Res Information
---------------- -------- --------------- ------- --- ------- ------ ------ ------ ----- ------ ---------------
Test_eros1ccd-aa 19646567 10-Oct 13:26:11 0:01:14   0 0:00:00   1000  12288  30720    29   4096 Warning: no CPU

Statistics  Value
----------- -----
Batch count     1
CPU             0
Request      1000
Elapse         74
Memory      12288
Resident       29

Status          Number
--------------- ------
Warning: no CPU      1

Le batch a consommé très peu de CPU - c'est normal, après tout, ce n'est qu'un exemple...

La fin du fichier log le confirme:

% tail -40 Test_eros1ccd-aa.log
10-Oct-2021 13:25 (INFO) Operation execution: ./operation.sh Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
10-Oct-2021 13:25 (INFO) Getting header for irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
10-Oct-2021 13:26 (INFO) Reading from file: /eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
'work/xb1l183c.fitsr00.header' -> 'headers/xb1l183c.fitsr00.header'
10-Oct-2021 13:26 (INFO) Job eros1ccd-aa completed

Time:: Elapse: 1:12.33, System CPU: 0, User CPU: 26.61, CPU Rate: 40%
Memory:: Resident: 277748, Total average: 0, Unshared: 0, Shared: 0

real    1m12.336s
user    0m26.613s
sys     0m2.922s

Completion date: 10-Oct-2021 13:26:09

**********************************************************************
* Submitted on:                   Sun Oct 10 13:24:33 CEST 2021      *
* Started on:                     Sun Oct 10 13:24:57 CEST 2021      *
* Ended on:                       Sun Oct 10 13:26:11 CEST 2021      *
* Exit status:                    0                                  *
**********************************************************************
* Requested                                                          *
*   CPU cores:                    1 core(s)                          *
*   CPU time:                     00:16:40 (1000 seconds) (1)        *
**********************************************************************
* Consumed                                                           *
*   wallclock:                    00:01:14 (74 seconds)              *
*   CPU time:                     00:00:00 (0 seconds)               *
*   CPU scaling factor:           10.87                              *
*   normalized CPU time:          00:00:01 (1 HS06 seconds)          *
*   CPU efficiency:               00 % (2)                           *
*   vmem:                         12.369 GB (3)                      *
*   maxvmem:                      12.369 GB (3)                      *
*   maxrss:                       29.273 MB (3)                      *
**********************************************************************
Notes:
(1) Formula: requested CPU time * requested CPU cores
(2) Formula: CPU time / ( wallclock * requested CPU cores )
(3) See man sge_accounting
For more information: qacct -j 19646567

Et le rapport sur la situation des jobs de la production montre que le premier job a été entièrement réalisé et que les suivants sont près à être lancés:

% Operations report -jobs
Job         Waiting Errors Success Total Wait %  Errs % Succ %  Prog %
----------- ------- ------ ------- ----- ------- ------ ------- -------
eros1ccd-aa       0      0      10    10   0.000  0.000 100.000 100.000
eros1ccd-ab      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-ac      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-ad      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-ae      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-af      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-ag      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-ah      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-ai      10      0       0    10 100.000  0.000   0.000   0.000
eros1ccd-aj      10      0       0    10 100.000  0.000   0.000   0.000

Mais attention à ne pas oublier d'actualiser la demande en mémoire vive dans le fichier de configuration. D'après le log, 15 Go devrait suffire.

La suite des traitements peut être lancée par:

% Launch -verb -ignore eros1ccd-aa

ce qui va soumettre tous les batchs, sauf le premier.

report

L'action report présente l'état d'avancement de la production.

A l'issue de la création des opérations (build) et avant les premières exécution, le rapport donne le nombre d'opérations définies, toutes en attente:

%  Operations report
State  Count Progress
------ ----- --------
<wait>   100 100.00 %

Le rapport donne également la liste des lots déclarés, en attente donc:

% Operations report -jobs
Job         Waiting Errors Success Total Wait %  Errs % Succ % Prog %
----------- ------- ------ ------- ----- ------- ------ ------ ------
eros1ccd-aa      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ab      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ac      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ad      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ae      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-af      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ag      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ah      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ai      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-aj      10      0       0    10 100.000  0.000  0.000  0.000

Après les premières exécutions de mise au point (run), le rapport indique combien d'opérations sont en erreur et combien ont correctement été réalisées:

% Operations report
State  Count Progress
------ ----- --------
     0     4   4.00 %
     1    10  10.00 %
<wait>    86  86.00 %

% Operations report -job
Job         Waiting Errors Success Total Wait %  Errs %  Succ % Prog %
----------- ------- ------ ------- ----- ------- ------- ------ -------
eros1ccd-aa       0     10       0    10   0.000 100.000  0.000 100.000
eros1ccd-ab       6      0       4    10  60.000   0.000 40.000  40.000
eros1ccd-ac      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-ad      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-ae      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-af      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-ag      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-ah      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-ai      10      0       0    10 100.000   0.000  0.000   0.000
eros1ccd-aj      10      0       0    10 100.000   0.000  0.000   0.000

L'option -error ne retient que les opérations dont le code de traitement est différent de "0".

Sans autre indication, l'option -error présente le détail des opérations ayant échouées:

% Operations report -error
Nom  Lot         Arg1                                                        Arg2 Execution         Etat
---- ----------- ----------------------------------------------------------- ---- ----------------- ----
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00      10-Oct-2021 11:36    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183c.fitsr02      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183c.fitsr03      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/08/xb1l183c.fitsr08      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/09/xb1l183c.fitsr09      10-Oct-2021 11:12    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/10/xb1l183c.fitsr10      10-Oct-2021 11:20    1
Test eros1ccd-aa irods:/eros/data/eros1-ccd/fits/LMC9192/11/xb1l183c.fitsr11      10-Oct-2021 11:20    1

Associée à l'option -jobs, le rapport présente les jobs pour lesquels des opérations sont en erreur:

% Operations report -error -job
Job         Waiting Errors Success Total Wait % Errs %  Succ % Prog %
----------- ------- ------ ------- ----- ------ ------- ------ -------
eros1ccd-aa       0     10       0    10  0.000 100.000  0.000 100.000

L'option -waiting fonctionne de la même manière, mais pour les opérations en attente d'exécution:

% Operations report -waiting -jobs
Job         Waiting Errors Success Total Wait %  Errs % Succ % Prog %
----------- ------- ------ ------- ----- ------- ------ ------ ------
eros1ccd-ab       6      0       4    10  60.000  0.000 40.000 40.000
eros1ccd-ac      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ad      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ae      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-af      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ag      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ah      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-ai      10      0       0    10 100.000  0.000  0.000  0.000
eros1ccd-aj      10      0       0    10 100.000  0.000  0.000  0.000

Le premier job, eros1ccd-ab, regroupe 6 opérations en attente et 4 terminées avec succès et fait donc partie du rapport.

Utilisation

Usage:

report [-jobs|-waiting|-errors|-code stt|-all|-production]

Options:

  • -all: toutes les opérations
  • -code: opérations du code indiqué
  • -errors: opérations en erreur
  • -jobs: sommaire par job
  • -production: sommaire de la production
  • -waiting: opérations en attente

Contraintes:

  • les options -errors, -code, -all, et -production sont mutuellement exclusives
  • les options jobs et production sont mutuellement exclusives

reset

Après la phase de mise au point (run) ou en cas d'incidents durant l'exécution des traitements (saturation Irods, CPU insuffisant, mémoire, ...), les opérations ayant échouées sont signalées par un code autre que "0".

Dans de nombreux cas, il suffit d'annuler l'erreur et de relancer les opérations pour que les traitements soient finalement exécutés avec succès.

L'action reset permet de réinitialiser les opérations d'un type donné, ayant un code particulier, dont l'un des arguments à une valeur indiquée ou ceux appartenant à un job.

Les différentes options peuvent être combinées sous la forme d'un ET logique. Par exemple, il est possible de réinitialiser les opérations d'un job particulier ayant le code d'erreur indiqué.

Exemples

A l'issue de la phase de mise au point du script d'exécution des traitements, 10 opérations sont en erreur et 4 ont correctement été exécutées.

Pour relancer l'ensemble de la production en batch, et disposer ainsi des traces afin de pouvoir les archiver, il faut réinitialiser les opérations en erreur mais aussi les opérations réalisées avec succès.

Il faut effectuer deux réinitialisations: une pour les opérations en erreur et l'autre pour celles correctement réalisée.

A titre d'exemple, on peut aussi réinitialiser les opérations en indiquant le nom du lot.

Réinitialisation des erreurs:

% Operations reset -verb -error
10-Oct-2021 12:45 (INFO) Accessing database
10-Oct-2021 12:45 (INFO) Getting production TestProd
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183c.fitsr02
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183c.fitsr03
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/08/xb1l183c.fitsr08
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/09/xb1l183c.fitsr09
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/10/xb1l183c.fitsr10
10-Oct-2021 12:45 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/11/xb1l183c.fitsr11
10-Oct-2021 12:45 (INFO) 10 operation(s) reseted

Réinitialisation du second job, pour lequel les opérations ont réussi:

% Operations reset -verb -job eros1ccd-ab
10-Oct-2021 12:44 (INFO) Accessing database
10-Oct-2021 12:44 (INFO) Getting production TestProd
10-Oct-2021 12:44 (INFO) Reseting operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183e.fitsr00
10-Oct-2021 12:44 (INFO) Reseting operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183e.fitsr01
10-Oct-2021 12:44 (INFO) Reseting operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183e.fitsr02
10-Oct-2021 12:44 (INFO) Reseting operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/12/xb1l183c.fitsr12
10-Oct-2021 12:44 (INFO) 4 operation(s) reseted

Au final, la production est prête à être lancée:

% Operations report
State  Count Progress
------ ----- --------
<wait>   100 100.00 %

Utilisation

Usage:

reset [-error|-success|-code stt|-job jobid|-arg# value]

Options:

  • -arg1: operations dont l'argument 1 à la valeur indiquée
  • -arg2: operations dont l'argument 2 à la valeur indiquée
  • -arg3: operations dont l'argument 3 à la valeur indiquée
  • -arg4: operations dont l'argument 4 à la valeur indiquée
  • -arg5: operations dont l'argument 5 à la valeur indiquée
  • -arg6: operations dont l'argument 6 à la valeur indiquée
  • -arg7: operations dont l'argument 7 à la valeur indiquée
  • -arg8: operations dont l'argument 8 à la valeur indiquée
  • -code: operations dont le code d'exécutaion à la valeur indiquée
  • -error: operations en erreur
  • -job: operations du job indiqué
  • -success: operations avec succès

cancel

A l'invers de l'action de réinitialisation (reset), la suppression d'actions est définitive. L'action reset permet également de supprimer la production elle-même. Celle-ci est effacée de la base de données, mais son répertoire de travail et les fichiers qu'il contient ne sont pas touchés.

Cependant, la suppression de la production n'est possible que si, et seulement si, toutes les opérations associées ont préallablement été effacées. Cette précaution évite des fausses manoeuvres dans l'administration des opérations. La contrainte est directement implémentée au niveau de la base de données.

En outre, toujours à titre de garde-fou, les opérations réalisées avec succès ne peuvent pas non plus être effacées.

Si toutefois une production partiellement réalisée doit belle et bien être effacée de la base de données, le responsable des opérations devra commencé par réinitialiser (reset) les opérations puis les supprimer avec cancel et enfin effacer la production, toujours avec cancel.

Exemple

Comme il ne s'agissait que d'une démonstration, il n'est pas utile de conserver les traces de cette production et on peut donc tout effacer.

% Operations report
State  Count Progress
------ ----- --------
     0    10  10.00 %
<wait>    90  90.00 %

Comme il n'y a pas d'erreur, la première étape est d'effacer les opérations non réalisées:

$ Operations cancel -verb -waiting
10-Oct-2021 13:41 (INFO) Accessing database
10-Oct-2021 13:41 (INFO) Getting production TestProd
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183e.fitsr00
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183e.fitsr01
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183e.fitsr02
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183e.fitsr03
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-ab Test irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183e.fitsr04
( . . . )
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-aj Test irods:/eros/data/eros1-ccd/fits/LMC9192/11/xb1l184d.fitsr11
10-Oct-2021 13:41 (INFO) Removing operation eros1ccd-aj Test irods:/eros/data/eros1-ccd/fits/LMC9192/12/xb1l184d.fitsr12
10-Oct-2021 13:41 (INFO) Saving batches properties batches.properties
10-Oct-2021 13:41 (INFO) 90 operation(s) removed

A l'issue de cette première étape:

%  Operations report
State Count Progress
----- ----- --------
    0    10 100.00 %

Pour pouvoir effacer les 10 opérations déjà réalisées avec succès, il faut commencer par les réinitialiser:

% Operations reset -verb -success
10-Oct-2021 13:43 (INFO) Accessing database
10-Oct-2021 13:43 (INFO) Getting production TestProd
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183c.fitsr02
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183c.fitsr03
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/08/xb1l183c.fitsr08
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/09/xb1l183c.fitr09
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/10/xb1l183c.fitr10
10-Oct-2021 13:43 (INFO) Reseting operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/11/xb1l183c.fitsr11
10-Oct-2021 13:43 (INFO) 10 operation(s) reseted

% Operations report
State  Count Progress
------ ----- --------
<wait>    10 100.00 %

On peut désormais supprimer ces opérations et la production elle-même:

% Operations cancel -verb -waiting -production
10-Oct-2021 13:46 (INFO) Accessing database
10-Oct-2021 13:46 (INFO) Getting production TestProd
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/00/xb1l183c.fitsr00
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/01/xb1l183c.fitsr01
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/02/xb1l183c.fitsr02
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/03/xb1l183c.fitsr03
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/04/xb1l183c.fitsr04
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/07/xb1l183c.fitsr07
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/08/xb1l183c.fitsr08
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/09/xb1l183c.fitsr09
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/10/xb1l183c.fitsr10
10-Oct-2021 13:46 (INFO) Removing operation eros1ccd-aa Test irods:/eros/data/eros1-ccd/fits/LMC9192/11/xb1l183c.fitsr11
10-Oct-2021 13:46 (INFO) Saving batches properties batches.properties
10-Oct-2021 13:46 (INFO) Removing production TestProd
10-Oct-2021 13:46 (INFO) 10 operation(s) removed

Confirmation:

% Operations report
10-Oct-2021 13:48 (FATAL) No such production TestProd

On peut désormais effacer le répertoire de travail...

Utilisation

Usage:

cancel [-waiting|-error|-all|-code stt:...|-production]

Options:

  • -all: operations en attente et en erreur
  • -code: operations dont le code est indiqué
  • -error: operations en erreur
  • -production: suppression de la production
  • -waiting: operations non réalisées

action

L'action action est un relai vers une action extérieure. Le nom de l'action à activer et ces arguments sont indiqués en argument. La classe de l'action extérieure doit être soit dans le même package que les actions, soit être entièrement déclarée.

Exemples

Description de l'action action

% Operations action -help
exécution d'une action extérieure
Usage: action <action> <args>...

with:
  -debug: report debug messages
  -help: application on-line help
  -usage: application usage
  -verbose: report verbose messages

arguments:
  action: l'action à exécuter
  args: les arguments de l'action

Simulation de l'invocation d'une action extérieure:

% Operations action ReportAction -help
rapport sur une production
Usage: report [-jobs|-waiting|-errors|-code <stt>|-all|-production]

with:
  -all: toutes les opérations
  -code: opérations du code indiqué
  -debug: report debug messages
  -errors: opérations en erreur
  -help: application on-line help
  -jobs: sommaire par job
  -production: sommaire de la production
  -usage: application usage
  -verbose: report verbose messages
  -waiting: opérations en attente

Dans cet exemple, l'action report, supportée par la classe ReportAction, est activée via l'action action et son aide en ligne est présentée.

Un cas typique où la mise en place d'une action dédiée s'est révélée efficace a été l'extraction des entêtes FITS des images Eros 1 CCD.

Une première campagne a été réalisée selon l'approche standard d'un script lançant une application de traitement. Chaque image à traiter était transmise à ce script qui lançait l'application ErosDb FitsHeader pour extraire l'entête et sauver le fichier sur un disque local avant de le recopier dans Irods grâce à la i-command iput.

Les opérations étaient segmentées en lot de 500 images, soit plus de 75O batchs, nécessitant 1500 secondes CPU pour un temps effectif de traitement d'environ 1 heure 15.

La réécriture de l'action sous la forme d'une classe Java réalisant tous les traitements du batch en une opération a fait tomber le temps CPU à quelques secondes et le temps effectif à moins de 5 minutes.

La classe doit implémenter l'interface Action, proposer un constructeur par défaut accessible à l'environnement Operations et initialiser l'aide en ligne, les arguments et options de l'action et éventuellement les contraintes définies sur ces arguments. La classe BaseOperation propose différentes facilités qui facilitent la mise en place d'actions extérieures.

Fichier de configuration

Les propriétés de la production sont sauvées dans un fichier nommé production.properties conservé dans le répertoire de la production. Ce fichier est chargé par les différentes actions (à l'exception de new). Son absence entraine une erreur et l'arrêt de l'action.

Les paramètres de la production pouvant être définis dans le fichier de configuration:

  • production: nom de la production

  • operation: nom des operations

  • executer: commande d'execution d'une operation

Les paramètres utilisés pour construire le fichier des propriétés des batchs:

  • cpu: temps CPU des batchs

  • memory: memoire des batchs

  • resident: memoire residente des batchs

  • resources: resources d'execution des batchs

  • mail: adresse de notification de fin d'execution

  • setup: script d'initialisation des batchs