Project

General

Profile

Utilisation avancée de la ligne de commandes EMI

Utilisation d'un proxy longue durée

Les proxys standards ne durent que 12h. Si un job n'est pas terminé au bout de ces 12h, alors il échoue.

Il existe un moyen de demander au proxy de se renouveler automatiquement pour permettre à un job de durer jusqu'à 7 jours, en utilisant un service MyProxy (dans l'exemple suivant celui de GRIF, Grille au service de la Recherche en Ile-de-France). Il faut pour cela demander un proxy longue durée à l'aide de la commande

roy@ui-grid:~/EGEE/Tutoriel$ myproxy-init -d -n -s myproxy.grif.fr

L'existence d'un proxy longue durée permet au Workload Management System de demander automatiquement un renouvellement de votre proxy standard afin de permettre aux jobs en cours de se poursuivre.

L'option -d signifie que vous voulez associer l'identité inscrite dans votre certificat à ce proxy, l'option -n signifie que vous voulez pouvoir accéder à ce proxy longue durée sans passphrase (ce qui permet au WMS d'accéder au proxy longue durée) et l'option -s précise le serveur MyProxy sur lequel vous voulez stocker votre proxy longue durée.

Pour pouvoir initialiser un proxy longue durée, vous devez tout d'abord créer un proxy standard.

Pour qu'un job utilise ce proxy longue durée pour pouvoir s'exécuter pendant plus de 12h, vous devez ajouter une ligne à votre fichier .jdl :

[
Type = "Job";
JobType = "Normal";
Executable = "tuto2.sh";
Arguments = "-i Test-grid.txt -o Tuto2-out.txt";
StdOutput = "std.out";
StdError = "std.err";
OutputSandbox = {"std.out", "std.err"};
InputSandbox = {"tuto2.sh"};
Requirements = other.GlueCEInfoHostName=="ce-grid.obspm.fr";
MyProxyServer="myproxy.grif.fr";
]

Pour obtenir des informations sur votre proxy longue durée, vous devez utiliser la commande
roy@ui-grid:~/EGEE/Tutoriel$ myproxy-info -d

Vous pouvez détruire ce proxy longue durée avec la commande
roy@ui-grid:~/EGEE/Tutoriel$ myproxy-destroy -d

Jobs paramétriques

La réalisation d'études paramétriques est particulièrement adaptée à l'architecture distribuée de la grille. Il existe une classe de jobs spéciale pour lancer un job paramétrique extrêmement simplement. Exécuter un job paramétrique consiste à exécuter N jobs différant seulement par la valeur d'un paramètre PARAM dont on peut préciser les valeurs.
Voici un exemple de script permettant de soumettre un job paramétrique simple :

[
Type = "Job";
JobType = "Parametric";
Executable = "/bin/echo";
Arguments = "Bonjour du job _PARAM_ !";
Parameters = 101;
ParameterStart = 1;
ParameterStep = 1;
StdOutput = "std.out";
StdError = "std.err";
OutputSandbox = {"std.out", "std.err"};
InputSandbox = {};
]

Ce .jdl permet de lancer l'exécution de la commande /bin/echo avec comme argument la chaîne de caractères "Bonjour du job PARAM !" où PARAM prend toutes les valeurs entre "ParameterStart" (= 1) compris et Parameters (= 101) non compris par incrément de ParameterStep (= 1). Dans ce cas précis, PARAM prend donc toutes les valeurs entières entre 1 compris et 100 compris.
Les valeurs de PARAM peuvent également être choisies dans une liste donnée en valeur de Parameters :

Parameters = { 1, 2, 3 } ;

La soumission de ce .jdl se déroule de la même façon que celle d'un job simple
roy@ui-grid:~/EGEE/Tutoriel$ glite-wms-job-submit -a -o idparam tutoparametric.jdl

Connecting to the service https://grid25.lal.in2p3.fr:7443/glite_wms_wmproxy_server

====================== glite-wms-job-submit Success ======================

The job has been successfully submitted to the WMProxy
Your job identifier is:

https://grid09.lal.in2p3.fr:9000/ij5COzGICmBW5paG4Seqmg

The job identifier has been saved in the following file:
/obs/roy/EGEE/Tutoriel/idparam

==========================================================================

L'utilisation de la commande glite-wms-job-status donne lieu quant à elle à un affichage qui peut rapidement devenir peu lisible dans les cas où le paramètre prend un grand nombre de valeurs (ne sont présentées ici que les affichages correspondant aux 5 premiers jobs du job paramétrique) :

roy@ui-grid:~/EGEE/Tutoriel$ glite-wms-job-status -i idparam

======================= glite-wms-job-status Success =====================
BOOKKEEPING INFORMATION:

Status info for the Job : https://grid09.lal.in2p3.fr:9000/ij5COzGICmBW5paG4Seqmg
Current Status: Waiting
- Nodes information for:
Status info for the Job : https://grid09.lal.in2p3.fr:9000/-Hpoev04pkb63TjsCim3Iw
Current Status: Submitted
Status info for the Job : https://grid09.lal.in2p3.fr:9000/0_Q4njHchBLockMCVZ-bmA
Current Status: Submitted
Status info for the Job : https://grid09.lal.in2p3.fr:9000/1NPahsyvlu5uca3Tma_OTA
Current Status: Submitted
Status info for the Job : https://grid09.lal.in2p3.fr:9000/1SSOA2nIoiuHGguP2IlR4Q
Current Status: Submitted
Status info for the Job : https://grid09.lal.in2p3.fr:9000/1ewIk4S5tr5Vtnt9yp5Q9g
Current Status: Submitted
...

Pour vérifier le statut de jobs paramétriques plus aisément, vous pouvez vous servir d'un script comme celui proposé dans la section Exemples de scripts.
La récupération des fichiers contenus dans la OutputSandbox se déroule de la même façon que pour un job normal.