Job Description Language (JDL) Elisa Ingrà INFN – Catania, Italy Grid Tutorial per i Laboratori Nazionali del Sud, Catania, 25-26 Febbraio 2008
Contenuti Job Description Language File JDL Attributi Tipi di job Command Line Interface Sottomissione job Recupero output Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Job Description Language (JDL) Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
File JDL JDL è un linguaggio per la descrizione dei job E’ composto da un insieme di elementi testuali Nel caso più semplice si può scrivere come semplice sequenza di coppie Attribute-Valore I commenti hanno la sintassi simile ad alcuni linguaggi di programmazione più diffusi (C,C++,Perl) /* */ per più righe di codice // per una riga di codice In aggiunta, un segno di # a inizio riga identifica un commento Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
JDL Attributi Lista di Attributi assolutamente NON ESAUSTIVA Type Descrive se il JDL si riferisce a un “Job”,“DAG” o “Collection” JobType “Interactive”, “MPICH” . . . (se Type=“Normal”) Executable L’eseguibile da lanciare Arguments Lista di argomenti per l’eseguibile StdInput File locale da usare come standard input StdOutput and StdError File su quali redirigere lo standard output e lo standard error InputSandbox Lista di file allegati OutputSandbox Lista di file da recuperare al termine dell’esecuzione Requirements Espressione booleana che verifica se un CE è adatto Rank Espressione che valuta la bontà di un CE RetryCount Numero massimo di tentativi di risottomissione Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Tipi di Job Normal Interactive MPICH Partitionable Checkpointable – Un eseguibile batch Interactive – Richiede l’interazione dell’utente MPICH – Per sfruttare il framework MPI (Message Passing Interface) Partitionable – Può essere partizionato in più sotto-job Checkpointable – L’esecuzione può essere “marcata” in alcuni punti per essere ripresa più tardi Parametrici – Job simili che differiscono solo per alcuni attributi parametrici Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Esempio di Job “Normal” $> cat hostname.jdl Type = “Job”; JobType = “Normal”; Executable = “/bin/sh/”; Arguments = “start_hostname.sh”; StdError = “stderr.log”; StdOutput = “stdout.log”; InputSandbox = “start_hostname.sh”; OutputSandbox = {“stderr.log”,”stdout.log”}; RetryCount = 7; $> cat start_hostname.sh #!/bin/sh sleep 5 hostname –f E’ un job Normale L’eseguibile da lanciare con gli argomenti File sui quali redirigere lo standard error e lo standard output File da recuperare alla terminazione del job Massimo numero di tentativi di risottomissione Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Requirements e Rank Requirements = < espressione booleana > – Espressione booleana con sintassi C – Serve a verificare se il candidato CE soddisfa i requisiti – Dentro l’espressione, il CE viene indicato con other. – Eg: Requirements = other.GlueCEInfoLRMSType == "PBS“ && other.GlueCEInfoTotalCPUs > 2); Rank = < espressione floating point > – Funzione di fitness C-like che individua la bontà di una risorsa – Eg: Rank = other.GlueCEPolicyMaxRunningJobs - other.GlueCEStateRunningJobs Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Esempio: sphere.jdl $> cat sphere.jdl #author: giuseppe.larocca@ct.infn.it Type = "Job"; JobType = "Normal"; Executable = "/bin/sh"; MyProxyServer="lxshare0207.cern.ch"; StdOutput = "sphere.out"; StdError = "sphere.err"; InputSandbox = {"start_sphere.sh","sphere1.pov","sphere1.ini"}; OutputSandbox = {"sphere.out","sphere.err","final_sphere.gif"}; RetryCount = 7; Arguments = "start_sphere.sh"; Requirements = Member("POVRAY-3.5",other.GlueHostApplicationSoftwareRunTimeEnvironment); Seleziona solo i CE dove POVRAY è installato Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Example: pds2jpg-ASAR-Demo.jdl $> cat pds2jpg-ASAR-Demo.jdl [ VirtualOrganisation = "gilda"; Executable = "/bin/bash"; Arguments = "pds2jpg_ASAR_install.sh ASA_APG_1PXPDE20020819_093043_000000152008_00394_02452_0000"; StdOutput = "pds2jpg_ASAR.out"; StdError = "pds2jpg_ASAR.err"; OutputSandbox = { "ASA_APG_1PXPDE20020819_093043_000000152008_00394_02452_0000-b1.jpg", "ENVISAT_Product_courtesy_of_European_Space_Agency", "pds2jpg_ASAR.out", "pds2jpg_ASAR.err“ }; RetryCount = 3; JobType = "normal"; Type = "Job"; InputSandbox = {"./pds2jpg_ASAR_install.sh","./beam20.tar.gz"}; rank = (-other.GlueCEStateEstimatedResponseTime); requirements = (other.GlueCEStateStatus=="Production") ] Programma allegato al JDL Funzione fitness per definire la bontà di un CE Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Job Parametrici (1/2) Consistono nella sottomissione di un insieme di job uguali eccetto che per un parametro il cui valore cambia è possibile tracciare ciascun job separatamente è possibile tracciare tutti i job insieme come job parametrico una variabile speciale (_PARAM_) indica il valore variabile tra gli attributi _PARAM_ assume valori numerici generati automaticamente oppure stringhe tratte da una lista Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Job Parametrici (2/2) Parameters = < intero | lista di stringhe > un intero che indica il numero di passi o una lista di stringhe (ogni stringa indica il nome di uno dei passi) ParameterStart, ParameterStep = < Integer > ParameterStart indica il primo valore da assegnare ParameterStep indica il valore di incremento tra due successivi valori assunti da _PARAM_ NodesCollocation = < Boolean > se è “vero”, tutti i job sono inviati allo stesso CE Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Tipi di JDL (Attributo Type) Il linguaggio JDL permette di descrivere i seguenti tipi di job: – Job: Un job semplice (default) – DAG: un Direct Acyclic Graph di job dipendenti – Collection: Un insieme di job che hanno attributi comuni DAG e d c b a e d c b a Collection a JOB Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
DAG (1/2) I job di tipo DAG sono dei grafi con le seguenti caratteristiche: – ordine di esecuzione – dipendenze tra i vari job – utilizzano file di output di un job come input per un altro job Type=“dag”; nodes = [ a= [description = [ JobType=“Normal”; Executable=“e.exe”; InputSandBox={…}; ] b=[file=node.jdl;] Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
DAG (2/2) dependencies = < lista di liste of stringhe > • una lista che descrive le dipendenze, le stringhe sono i nomi dei nodi • formato: { { a, b }, { a, c }, { a, d } , { c, e }, { d, e } } esempio: dependencies = { { A, {B, C, D} }; // i nodi “B”, “C” e “D” dipendono da “A” { B, F } { {C, D}, E }; { E, F }; }; max_nodes_running = < intero > • un intero > 0 che indica il numero massimo di nodi che possono essere sottomessi simultaneamente dal DAGman Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Collection E’ un insieme di job – Possono avere alcuni attributi definiti in comune – Vengono lanciati in parallelo dal WMS [ Type = "collection"; InputSandbox = { "input_common1.txt","input_common2.txt" }; nodes = { [ JobType = "Normal"; NodeName = "node1"; Executable = "/bin/sh"; Arguments = "script_node1.sh"; InputSandbox = {"script_node1.sh", root.InputSandbox[0] }; StdOutput = "myoutput1"; StdError = "myerror1"; OutputSandbox = {"myoutput1","myerror1"}; ], JobType = "Normal"; . . . ] }; Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Job MPI Sfrutta il Framework MPI sui CE • Il WMProxy: – Seleziona tutti i CE candidati con tale framework – Filtra ulteriormente i CE che hanno WN a sufficienza • Attributi – JobType=“MPICH” – NodeNumber=10; // se si richiedono 10 processori [ Type = "Job"; JobType = "MPICH"; Executable = "cpi"; NodeNumber = 2; StdOutput = "cpi.out"; StdError = "cpi.err"; InputSandbox = {"cpi"}; OutputSandbox = {"cpi.err","cpi.out"}; RetryCount = 0; ] Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Command Line Interface Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
glite-wms-job-* commands • glite-wms-job-list-match – Reperisce la lista dei CE che soddisfano i requisiti per l’esecuzione • glite-wms-job-delegate-proxy – Delega il WMProxy ad usare i proprio proxy • glite-wms-job-submit – Sottomette un job alla griglia e ottiene un job id • glite-wms-job-status – Verifica lo stato del job interrogando il L&B • glite-wms-job-cancel – Annulla un job precedentemente sottomesso alla griglia • glite-wms-job-output – Recupera l’output del job una volta terminato (non necessariamente con successo) Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Example: hostname.jdl (1/4) $> glite-wms-job-submit -d emidio -o jobid hostname.jdl Selected Virtual Organisation name (from proxy certificate extension): gilda Connecting to host glite-rb.ct.infn.it, port 7772 Logging to host glite-rb.ct.infn.it, port 9002 =============== glite-job-submit Success================ The job has been successfully submitted to the Network Server. Use edg-job-status command to check job current status. Your job identifier is: - https://glite-rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A The job identifier has been saved in the following file: /home/fscibi/gLite/Other/jobid ====================================================== $> cat jobid ###Submitted Job Ids### https://glite-rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A Job id appena generato opzione “-o jobid” Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Example: hostname.jdl (2/4) $> glite-wms-job-status -i jobid ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://glite-rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A Current Status: Done (Success) Exit code: 0 Status Reason: Job terminated successfully Destination: grid004.iucc.ac.il:2119/jobmanager-lcgpbs-short Submitted: Mon Apr 3 12:27:28 2006 CEST Job terminato Computing Element dove è stato eseguito il job Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Esempio: hostname.jdl (3/4) $> glite-wms-job-output -i jobid Retrieving files from host: glite-rb.ct.infn.it ( for https://glite-rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A ) ********************************************************************************* JOB GET OUTPUT OUTCOME Output sandbox files for the job: - https://glite-rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A have been successfully retrieved and stored in the directory: /tmp/glite/glite-ui/fscibi_Lb6LIhD93S7VYz1RVbCP8A $> glite-wms-job-output -i jobid --dir <dirname> Directory di default dove è scaricato l’output Per specificare una diversa directory Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Esempio: hostname.jdl (4/4) glite-wms-job-status -v 3 -i jobid ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://glite-rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A Current Status: Cleared Status Reason: user retrieved output sandbox Destination: grid004.iucc.ac.il:2119/jobmanager-lcgpbs-short Submitted: Mon Apr 3 12:27:28 2006 CEST --- - stateEnterTimes = Submitted : Mon Apr 3 12:27:28 2006 CEST Waiting : Mon Apr 3 12:27:37 2006 CEST Ready : Mon Apr 3 12:27:42 2006 CEST Scheduled : Mon Apr 3 12:28:01 2006 CEST Running : Mon Apr 3 12:28:55 2006 CEST Done : Mon Apr 3 12:30:37 2006 CEST Cleared : Mon Apr 3 15:36:39 2006 CEST Aborted : --- Cancelled : --- Unknown : --- Variazioni di stato del job Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Esempio: sphere.jdl $> glite-wms-job-list-match sphere.jdl Selected Virtual Organisation name (from proxy certificate extension): gilda Connecting to host glite-rb.ct.infn.it, port 7772 *************************************************************************** COMPUTING ELEMENT IDs LIST The following CE(s) matching your job requirements have been found: *CEId* dgt01.ui.savba.sk:2119/jobmanager-lcgpbs-infinite dgt01.ui.savba.sk:2119/jobmanager-lcgpbs-long dgt01.ui.savba.sk:2119/jobmanager-lcgpbs-short egee008.cnaf.infn.it:2119/blah-pbs-infinite egee008.cnaf.infn.it:2119/blah-pbs-long egee008.cnaf.infn.it:2119/blah-pbs-short fenrir.uniandes.edu.co:2119/blah-pbs-infinite fenrir.uniandes.edu.co:2119/blah-pbs-long Lista dei CE adatti all’esecuzione del job Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Links • JDL user manual - https://edms.cern.ch/file/555796/1/EGEE-JRA1-TEC-55796JDL-Attributes-v0-7.doc • Simple Job submissions with WMProxy - https://grid.ct.infn.it/twiki/bin/view/PI2S2/SimpleJobSubmission • Submission of DAGs, collections and parametric - http://grid.ct.infn.it/twiki/bin/view/PI2S2/WmProxyUse Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008
Domande Catania, Grid Turorial per I Laboratori Nazionali del Sud, 25-27/02/2008