Workload Management System (WMS) in gLite Guido Cuscela INFN - Bari II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 2 Outline Panoramica dell’architettura –Componenti e servizi –Ciclo di vita del job Job Description Language –JDL Document –Tipi di richieste –Tipi di job Command Line Interface –Sottomissione dei job –Recupero dell’output
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 3 Panoramica dell’architettura
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 4 Panoramica dell’architettura Workload Management System (WMS)
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 5 Components and Services User Interface (UI) –E’ il terminale per accedere ai servizi della griglia –Command Line Interface (CLI) –Portali grid (come GENIUS) WMProxy –Punto di accesso al Workload Management System –Smista i job sulle varie risorse –Implementa algoritmi di schedulazione Logging and Bookkeeping (LB) –Tiene traccia delle azioni utente –Tiene traccia delle variazioni di stato dei job Computing Element (CE) –E’ la risorsa computazionale che esegue job –Presenta un’interfaccia indipendente dal sistema sottostante
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 6 Job Life Cycle (1/4) L’utente descrive un job tramite il Job Description Language (JDL) document. Alcuni input files (Input Sandbox) possono essere agganciati al JDL. L’utente sottomette il job e aspetta per qualche risposta Il WMProxy riceve il file JDL e I file di input a corredo e li salva localmente. Genera e invia indietro all’utente un jobid appena generato e univoco nel tempo e nello spazio. Da adesso in poi l’utente userà questo jobid per identificare quel job
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 7 Job Life Cycle (2/4) Il Resource Broker esegue un algoritmo (matchmaking) per decidere a quale CE inviare il job in funzione di una funzione di fitness. Prima o poi il job verrà trasherito (con tutta la Input Sandbox) al CE per l’esecuzione. Il Computing Element accetta e mette in coda il jobThe job starts execution over the Local Resources Management System (LRMS)
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 8 Job Life Cycle (3/4) A terminazione del job, l’Output Sandbox viene inviata indietro al WMProxy Il WMProxy salva localmente tale output Allo stesso tempo il Computing Element notifica al L&B la terminazione del job Adesso l’output è pronto per essere scaricato dal WMProxy
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 9 Job Life Cycle (4/4) L’utente interroga il L&B per verificare lo stato dei suoi job e realizza che il job ha terminato la sua esecuzione. L’utente scarica l’Ouput Sandbox direttamente dal WMProxy Il WMProxy ripulisce il repository locale Il job ha terminato la sua esecuzione
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 10 Diagramma di stato del job Submitted: Il job è stato creato sulla UI ma non ancora sottomesso Waiting: Il job è in fase di processamento da parte del WMProxy Ready: Il job è stato processato ma non inviato al CE destinazione Scheduled: Il job è nel CE in coda in attesa di essere eseguito Running: Il job sta girando sul Computing Element Done: Il job ha terminato la sua esecuzione Aborted: Il job è stato abortito dal WMS Cancelled: Il job è stato annullato dall’utente Cleared: Il job ha terminato e l’output è stato scaricato
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 11 Matchmaking Algorithm L’algoritmo di matchmaking –Decide come schedulare i job sulle risorse –Usa l’Information System per verificare la disponibiltà di risorse Prima fase: selezione –L’algoritmo decide quali CE sono adatti a eseguire il job in questione –Questo viene fatto valutando l’attributo Requirements del JDL Seconda fase: Ranking –La funzione di fitness Rank viene valutata per I CE candidati (suitable) –Il job viene sottomesso al CE che massimizza questa funzione
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 12 Job Description Language (JDL)
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 13 Job Description Language E’ 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 sono C-like –/* */ –oppure // –In aggiunta, un segno di # a inizio riga identifica un commento
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 14 JDL Attributes Lista di Attributi assolutamente non esaustiva TypeDescrive se il JDL si riferisce a un “Job”,“DAG” o “Collection” JobType“Interactive”, “MPICH”... (se Type=“Normal”) ExecutableL’eseguibile da lanciare ArgumentsLista di argomenti per l’eseguibile StdInputFile locale da usare come standard input StdOutput and StdError File su quali redirigere lo standard output e lo stand error InputSandboxLista di file in attachment OutputSandboxLista di file da recuperare a terminazione di esecuzione RequirementsEspressione booleana che verifica se un CE è adatto Rank RetryCount Espressione che valuta la bontà di un CE Numero max di tentativi di risottomissione
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 15 JobType Normal –Un eseguibile batch Interactive –Richiede l’interazione dell’utente MPICH –Per sfruttare il framework MPI (Message Passing Interface) Partitionable –Può essere partizionato in più sottojob Checkpointable –L’esecuzione può essere “marcata” in alcuni punti per essere ripresa più tardi Parametrici –Job simili che differescono solo per alcuni attributi parametrici
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 16 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 File sui quali redirigere lo standard output e lo standard error L’eseguibile da lanciare con gli argomenti File in attachment al JDL File da recuperare a terminazione del job Max numero di tentativi di risottomissione
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 17 Requirements & Rank Requirements = –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 = –Funzione di fitness C-like che individua la bontà di una risorsa –Dentro l’espressione, il CE viene indicato con other. –Eg: Rank = other.GlueCEPolicyMaxRunningJobs other.GlueCEStateRunningJobs Catania, Tutorial TriGrid VL,
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 18 Esempio: sphere.jdl $> cat sphere.jdl #author: 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
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 19 Example: pds2jpg-ASAR- Demo.jdl $> cat pds2jpg-ASAR-Demo.jdl [ VirtualOrganisation = "gilda"; Executable = "/bin/bash"; Arguments = "pds2jpg_ASAR_install.sh ASA_APG_1PXPDE _093043_ _00394_02452_0000"; StdOutput = "pds2jpg_ASAR.out"; StdError = "pds2jpg_ASAR.err"; OutputSandbox = { "ASA_APG_1PXPDE _093043_ _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") ] Fitness function per definire la bonta di un CE Installer attached al JDL
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 20 Job parametrici (1/3) consiste nella sottomissione di un insieme di job identici eccetto che per un parametro il cui valore cambia è possibile tracciare ciascun job separatamente … … oppure tutti 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
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 21 Job parametrici (2/3) Parameters = un intero che indica il numero di passi o una lista di stringhe (ogni stringa indica il nome di uno dei passi) ParameterStart, ParameterStep = ParameterStart indica il primo valore da assegnare ParameterStep indicata il valore di incremento tra due successivi valori assunti da _PARAM_ NodesCollocation = se è “vero”, tutti i job sono inviati allo stesso CE
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 22 Job parametrici (3/3) Esempio: [ JobType = "Parametric"; Executable = "myjob.exe"; StdInput = "input_PARAM_.txt"; StdOutput = "output_PARAM_.txt"; StdError = "error_PARAM_.txt"; Parameters = 100; ParameterStart = 1; ParameterStep = 1; InputSandbox = {"myjob.exe", "input_PARAM_.txt"}; OutputSandbox = {"output_PARAM_.txt","error_PARAM_.txt"}; ]
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 23 Tipi di JDL (Type) Il JDL permette di descrivere: –Job: Un job semplice (default) –DAG: un Direct Acyclic Graph di job dipendenti –Collection: Un insieme di job che hanno attributi comuni Catania, Tutorial TriGrid VL,
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 24 Collections 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";... ] }; ] BAC
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 25 DAG (1/2) E’ un grafo di job –Stabilisce un ordine di esecuzione –Stabilisce dipendenze tra job –Permette di usare 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; ] ] ABCDEF
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 26 DAG (2/2) dependencies = 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 = un intero > 0 che indica il numero massimo di nodi cha possono essere sottomessi simultaneamente dal DAGman ABCDEF
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 27 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 processi [ Type = "Job"; JobType = "MPICH"; Executable = "cpi"; NodeNumber = 2; StdOutput = "cpi.out"; StdError = "cpi.err"; InputSandbox = {"cpi"}; OutputSandbox = {"cpi.err","cpi.out"}; RetryCount = 0; ]
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 28 Command Line Interface
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 29 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 il 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 –Recupero l’output del job una volta terminato con successo
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 30 Example: hostname.jdl (1/4) $> glite-wms-job-submit -a -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: - The job identifier has been saved in the following file: /home/fscibi/gLite/Other/jobid ===================================================================== $> cat jobid ###Submitted Job Ids### opzione “-o jobid” job id appena generato
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 31 Example: hostname.jdl (2/4) $> glite-wms-job-status -i jobid ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : 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: CEST ************************************************************* Terminato Computing Element dove il job ha girato
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 32 Esempio: hostname.jdl (3/4) glite-wms-job-output -i jobid Retrieving files from host: glite-rb.ct.infn.it ( for rb.ct.infn.it:9000/Lb6LIhD93S7VYz1RVbCP8A ) ********************************************************************************* JOB GET OUTPUT OUTCOME Output sandbox files for the job: - have been successfully retrieved and stored in the directory: /tmp/glite/glite-ui/fscibi_Lb6LIhD93S7VYz1RVbCP8A ********************************************************************************* $> edg-job-get-output -i jobid --dir Directory di default ove viene scaricato l’output Per specificare una diversa directory
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 33 Esempio: hostname.jdl (4/4) glite-wms-job-status -v 3 -i jobid ************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : Current Status: Cleared Status Reason: user retrieved output sandbox Destination: grid004.iucc.ac.il:2119/jobmanager-lcgpbs-short Submitted: Mon Apr 3 12:27: CEST stateEnterTimes = Submitted : Mon Apr 3 12:27: CEST Waiting : Mon Apr 3 12:27: CEST Ready : Mon Apr 3 12:27: CEST Scheduled : Mon Apr 3 12:28: CEST Running : Mon Apr 3 12:28: CEST Done : Mon Apr 3 12:30: CEST Cleared : Mon Apr 3 15:36: CEST Aborted : --- Cancelled : --- Unknown : --- Variazioni di stato del job
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 34 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 deljob
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 35 Links JDL user manual – JDL-Attributes-v0-7.dochttps://edms.cern.ch/file/555796/1/EGEE-JRA1-TEC JDL-Attributes-v0-7.doc Simple Job submissions with WMProxy – missionhttp://repository.gs.ba.infn.it/twiki/bin/view/GILDA/SimpleJobSub mission Submission of DAGs, collections and parametric jobs – Sunmission of MPI jobs –
II Corso di formazione INFN su aspetti pratici dell'integrazione di applicazioni in GRID - 36