Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoMirella Pisani Modificato 8 anni fa
1
www.consorzio-cometa.it FESR Consorzio COMETA - Progetto PI2S2 Job Description Language (JDL) Marcello Iacono Manno Consorzio COMETA Grid Tutorial per l’Università di Catania Catania, 14 Marzo 2007
2
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 2 JDL descrive una richiesta al WMS … e quindi, permette la sottomissione di uno o più job i descrittori sono detti attributi gli attributi obbligatori sono i descrittori del processo i descrittori delle risorse sono forniti dall’Information Service (IS) e seguono lo schema Glue (gLite) Generalità sul JDL
3
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 3 Formato del linguaggio JDL una lista di voci racchiuse da [ ] ciascuna voce termina con ; entry: = | ; attributo: una stringa con il nome dell’attributo valore: stringa “abc” una stringa tra doppi apici intero 1234 virgola mobile 12.34 logico “true”,”false”, espressione (vedi GLUE) classads (vedi “nodes”) lista di valori: racchiusa da { } voci separate da, { “abc”, “bcd”, “def” }
4
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 4 Request types Type = “Job”un semplice job (default) “DAG” un Direct Acyclic Graph di job collegati “Collection”un insieme di job indipendenti
5
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 5 JobType JobType = “Normal”un semplice job “Interactive”un job che stabilisce una sessione interattiva con l’utente “MPICH”un job parallelo MPI “Partitionable”un job composto da un insieme di passi indipendenti adatti ad una esecuzione parallela “Checkpointable” un job che conserva il suo stato e può ripartire da una punto predefinito “Parametric”un job con uno o più attributi parametrici che variano da una sottomissione all’altra
6
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 6 Executable Executable = il percorso del file eseguibile (*) “/usr/bin/java/j2sdk1.5.0/bin/java”, “/home/user/executable.exe” variabili d’ambiente utilizzabili(*) “$JAVA/bin/java” percorsi assoluti o relativi (*) “executable.exe” deve essere inserito anche nell’Input Sandbox file remoti accessibili via gsiftp obbligatorio per tutti i job caratteri speciali non consentiti gli argomenti sono riportati in un attributo a parte (*) sul WN di esecuzione
7
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 7 Arguments Arguments = argomenti per il file eseguibile: “-out outputfile.dat” insieme con: Executable = “execprog”; forma sul Worker Node (WN) la linea di comando: $ execprog -out outputfile.dat le virgolette “” devono essere precedute dalla sbarra inversa \ “ -a \”quoted string\” -bcd” diventa (con l’eseguibile precedente): $ execprog -a ”quoted string” -bcd
8
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 8 StdInput, StdOutput, StdError StdInput, StdOutput, StdError = i percorsi per I file di ingresso / di uscita / di errore stesse regole di Executable bisogna specificare anche in Input/Output Sandbox StdOutput e StdError possono coincidere attributo non richiesto per i job interattivi esempi: StdInput = “/home/iacono/config.dat”; StdOutput = “gsiftp://grid999.ct.infn.it:1234/tmp/file.out”;
9
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 9 InputSandbox & OutputSandbox InputSandbox, OutputSandbox = identifica: i file di input da copiare dall’interfaccia sul WN prima dell’esecuzione del job i file di output che devono essere ricopiati dal WN all’interfaccia dopo l’esecuzione del job (il trasferimento vero e proprio è effettuato con l’istruzione glite-job-output ) i caratteri jolly sono accettati solo se risolti localmente non ammessi i file remoti (si richiedono InputData o script di copia) i file in InputSandbox non devono superare 10 MB ciascuno i nomi dei file devono essere differenti (la directory di arrivo è uguale per tutti) esempio: InputSandbox= { “myinp1.dat“, ”data/myinp2.dat” };
10
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 10 InputSandboxBaseURI & C. InputSandboxBaseURI, OutputSandboxBaseDestURI = modifica il percorso delle I/O Sandbox puntando ad un gsiFTP server esprime i nomi dei file come file locali nelle I/O Sandbox permette il recupero automatico dei file in uscita alla fine del job è previsto a breve il supporto per i file http esempio: InputSandboxBaseURI =“gsiftp://grid999.ct.infn.it:1234:/tmp”; modifica il significato di InputSandbox = “myfile.dat”; in: InputSandbox = “gsiftp://grid999.ct.infn.it:1234/tmp/myfile.dat”; OutputSandboxDestURI = modifica il percorso di ogni singolo file gsiFTP in OutputSandbox richiede lo stesso numero di voci di OutputSanbox permette il recupero automatico dei file in uscita alla fine del job non è compatibile con OutputSandboxBaseDestURI
11
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 11 ExpiryTime & Environment ExpiryTime = un job che non riesce a ad essere eseguito viene abortito dopo 1 giorno di tentativi non riusciti questo attributo modifica la durata standard esprime i secondi da un momento prefissato glite-job-submit permette di esprimerlo in maniera più comoda Environment = variabili d’ambiente formato delle stringhe: = esempio: Environment = { “JOB_LOG_FILE=/tmp/job.log”, “INP_DIR=/tmp/input_files” };
12
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 12 PerusalFileEnable,PerusalTimeInterval & PerusalFileDestURI PerusalFileEnable = abilita l’ispezione dei file durante l’esecuzione del job esempio: PerusalFileEnable = “true”; PerusalTimeInterval = la lunghezza dell’intervallo in secondi tra due ispezioni esempio: PerusalTimeInterval = 10; PerusalFileDestURI = una stringa con l’URI di un server gridFTP o https
13
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 13 InputData InputData = identifica i file remoti (LFN, GUID, LD e/o query) interroga il relativo catalogo per individuare i file copia i file nella directory corrente del WN influenza la scelta del matchmaking esempio: InputData = { “lfn:/grid/gilda/isospin.dat”, “guid:135b7b23-4a6a-87e7-9d101f8c8b70”, “lds:testfile.inp” // LDS catalog “query: select my_files”, // LDS catalog “si-lfn:/file.inp” /* StorageIndex catalog */ }; quando il catalogo non è specificato (come nei primi due casi), se StorageIndex è definito, allora si utilizza il catalogo da questo indicato, altrimenti vengono provati nell’ordine prima il catalogo RLS e poi quello DLI
14
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 14 StorageIndex = (*) endpoint URL del servizio StorageIndex (SI) per risolvere i nomi dei file esempio: StorageIndex = "https://grid017.ct.infn.it:8443/gilda/glite-data- catalog-service-fr-mysql/services/SEIndex" StorageIndex & DataCatalog DataCatalog = (*) endpoint URL del servizio RLS o DLI per risolvere i nomi dei file esempio: DataCatalog = “https://grid017.ct.infn.it:8443/gilda/glite-data-catalog- service-fr-mysql/services/FiremanCatalog"; (*) da usare solo con InputData
15
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 15 OutputSE & OutputData OutputSE = endpoint URL di uno StorageElement (SE) per i file di output influenza la decisione sulla destinazione del job esempio: OutputSE = “grid009.ct.infn.it”; OutputData = (*) lista di classads per descrivere i file di output (vedi “nodes”) simile a DataRequirements salvataggio automatico dei file alla fine del job (*) ancora non supportato
16
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 16 DataAccessProtocol & DataRequirements DataAccessProtocol = i protocolli da usare per le operazioni sui file obbligatorio con InputData esempio: DataAccessProtocol = { “file”, “gridftp” }; DataRequirements = le caratteristiche dei file (nel formato classad) esempio: DataRequirements = { [ DataCatalogType = “...” ; DataCatalog = “https://...”; InputData = { “lfn:…”, “guid:…”, “lds:…”, “query:…” }; ], [ DataCatalogType = “SI”; …. ] };
17
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 17 VirtualOrganisation, RetryCount & ShallowRetryCount VirtualOrganisation = il nome della Virtual Organisation (VO) deve corrispondere con il certificato a bordo dell’interfaccia superato dall’opzione –vo in glite-job-submit esempio: VirtualOrganisation = “gilda”; RetryCount, ShallowRetryCount = indica quante volte un job deve essere ri-sottomesso se fallisce a causa di una risorsa di GRID non valido per DAG / Collection limitato dal parametro MaxRetryCount “shallow” se il job è stato abortito prima dell’esecuzione la ri-sottomissione “deep” azzera il contatore “shallow”
18
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 18 LBAddress & VOMSProxyServer LBAddress = l’indirizzo del Logging&Bookkeping (LB) server formato: [: ] default preso dalla configurazione WMS (port = 9000) esempio: LBAddress = “lb-grid.ct.infn.it“; MyProxyServer = l’indirizzo del proxy server rinnovo automatico del certificato proxy (job lunghi) porta di default = 7512 esempio: MyProxyServer = “grid001.ct.infn.it:7512”;
19
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 19 HLRLocation & JobProvenance HLRLocation = the user Home Location Register (HLR) HLR manages the economic transaction takes into for resource usage bills the job on the user account example: HLRLocation = “prod-hlr-01.ct.infn.it” JobProvenance = the endpoint URL of the JobProvenance service where data about the job have to be stored the WMS sends to this destination the job sandboxes files
20
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 20 NodeNumber & ListenerPort NodeNumber = un intero >1 per indicare quante CPU usare per un job MPI obbligatorio per il JobType = “MPICH” esempio: NodeNumber = 3; ListenerPort = il numero della porta a cui condor_console_shadow si collega per stabilire uno stream interattivo si usa con JobType = “Interactive” esempio: ListenerPort = 44000;
21
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 21 ListenerHost & ListenerPipeName ListenerHost = il nome dell’ host computer a cui condor_console_shadow si collega per stabilire uno stream interattivo si usa con JobType = “Interactive” è usata quando la sottomissione e la sessione interattiva avvengono su macchine diverse ListenerPipeName = il percorso assoluto delle pipe dove sono contenuti gli stream esempio: ListenerPipeName = “/tmp/pipe”; significa: stdin=/tmp/pipe.in, stdout=/tmp/pipe.out (default=/tmp/listener/ )
22
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 22 JobSteps JobSteps = un intero che indica il numero di passi di un job partizionabile o una lista di stringhe associate con le parti di programma eseguibili in maniera parallela il main stepper deve essere inserito nel job se si usa il classad JobState, questa definizione prevale esempi: JobSteps = 1000 ; (esegue 1000 passi del main stepper) JobSteps = { “a”,”b”,”c” }; (esegue le sezioni “a”, “b”, “c” del main stepper)
23
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 23 CurrentStep & JobState CurrentStep = un numero >0 da cui iniziare l’elaborazione di un job esempio: CurrentStep = 2; (default=0) JobState = lo stato di partenza da cui iniziare l’elaborazione di un job example: JobState = [ JobSteps = 1000; CurrentStep = 350; UserData = [ DumpPath=“gsiftp://grid999.ct.infn.it:1234/tmp/dumpfile” ] ]
24
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 24 GLUESchema GLUESchema (Grid Logical Uniform Environment) un modello di informazione per descrivere le caratteristiche e lo stato dei vari componenti dei GRID indipendente dalla particolare implementazione sintassi. esempi: entità = proprietà = Requirements = other.GlueCEUniqueID == "grid010.ct.infn.it:2119/jobmanager-lcgpbs-infinite" Requirements = other.GlueCEInfoLRMSType == "PBS" || other.GlueCEInfoLRMSType == "LSF"
25
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 25 Requirements & UserTags Requirements = un’espressione logica costruita con una sintassi simile al linguaggio C descrive le caratteristiche dei siti che devono eseguire il job gli attributi provengono dal GlueSchema gli attributi utilizzati sono quelli con il prefisso “other.” esempio: Requirements = other.GlueCEInfoTotalCPUs > 2 && other.GlueCEPolicyMaxRunningJobs < 2; UserTags = un attributo di tipo classad che l’utente può usare per associare al job una o più coppie di valori (tag) i valori definiti possono essere usati per effettuare ricerche sul LB
26
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 26 Rank & FuzzyRank Rank = un’espressione costruita con valore in virgola mobile per classificare i Computing Element (CE) il CE di rango più elevato sarà quello prescelto esempi: Rank = other.GlueCEPolicyMaxRunningJobs -other.GlueCEStateRunningJobs; (il CE con il numero massimo di slot liberi) Rank = - other.GlueCEStateEstimateResponseTime (il CE con il minimo tempo stimato di transito sulla coda) FuzzyRank = un valore logico per decidere se l’attribuzione del rango è di tipo fuzzy il valore default è falso
27
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 27 DAG: modifiche agli attributi DAG Attributes changes: Type e VirtualOrganisation: diventano attributi obbligatori JobType: non può essere Partitionable o CheckPointable HLRLocation, LBAddress, MyProxyServer and JobProvenance: se dichiarati, devono essere uguali per tutti i nodi del DAG AllowZippedISB: crea una InputSandbox per l’intero DAG PerusalFileEnable: se dichiarato per un nodo, viene esteso a tutti gli altri UserTags, Requirements and Rank: si applicano soltanto all’intero DAG InputSandbox, InputSandboxBaseURI and OuputSandboxBaseURI: i valori dichiarati per l’intero DAG sono ereditati dai singoli DAG
28
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 28 Nodes (1/2) Nodes = i classads descrivono i nodi e le loro dipendenze esempio : nodes = [ a = [ /* nodo “a” */ description = [ descrizione: un classad JobType = “Normal”; che contiene un file JDL Executable = “a.exe”; per descrivere un nodo InputSandbox = {…}; ]; b = [ /* nodo “b” */ file = node_b,jdl;file: una stringa che indica ];l’indirizzo assoluto di un … file JDL che descrive ]; un nodo
29
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 29 Nodes (2/2) & max_nodes_running 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 };// il nodo “b” dipende dal nodo “a” { a, c };// il nodo “c” dipende dal nodo “a” { c, e }; // il nodo “e” dipende dai nodi “c” [...] }; max_nodes_running = un intero > 0 che indica il numero massimo di nodi cha possono essere sottomessi simultaneamente dal DAGman
30
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 30 Job Partizionabili JOB PARTIZIONABILI un job partizionabile ha tre passi: pre-job (nodo “a”) sub-job (nodi “b”,”c”,”d”) post-job (nodi “e”) i nodi intermedi sono indipendenti vengono trasformati in DAG i nodi devono essere sezionabili JobSteps (vedi 22) si usa per distribuire M nodi in N passi (con M < N ; si assume inoltre lo stesso peso per tutti i nodi)
31
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 31 StepWeight, PreJob & PostJob StepWeight = una lista di “pesi” per migliorare la partizione del job esempio: StepWeight = { 7.5, 15, 55, 15, 7.5 }; PreJob, PostJob = classad per la descrizione del pre- e del post-job esempio: PreJob = [ Type = “Job”;JobType = “Normal”; VirtualOrganisation = “gilda”;Executable = “pre-job.exe”; ];
32
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 32 Job parametrici Job = “Parametric” 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
33
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 33 ParameterStart, ParameterStep, Parameters, NodesCollocation 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 indicates il valore di incremento tra due successivi valori assunti da _PARAM_ NodesCollocation = se è “vero”, tutti i job sono inviati allo stesso CE
34
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 34 Job Collections Job = “Collection” un insieme di job indipendenti tra loro sottomessi e monitorati come un’unica richiesta simile ai DAG, ma senza dipendenze estende tutte le clausole dei DAG i nodi sono descritti mediante classad gli attributi si riferiscono all’intera Collection un attributo definito per un singolo nodo, viene automaticamente esteso agli altri
35
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 35 GangMatching Requirements = anyMatch ( ) | whichMatch( ) | allMatch ( ) il file JDL serve per trovare un CE adatto lo Storage Element (SE) non viene considerato esiste un meccanismo più generale esempio: Requirements = anyMatch( other.storage.CloseSEs, target.GlueSAStateAvailableSpace > 200) costringe il Resource Broker (RB) a scegliere una CE con accanto un SE con almeno 200 MB di spazio disponibile
36
Catania, Grid Tutorial per l'Universita' di Catania, 14.03.2007 36 Documentazione JDL (sottomissione via WMS Netrwork Server) https://edms.cern.ch/file/555796/1/EGEE-JRA1-TEC-555796-JDL-Attributes-v0-7.doc JDL (sottomissione via WMS WMProxy) https://edms.cern.ch/file/590869/1/EGEE-JRA1-TEC-590869-JDL-Attributes-v0-5.doc GLUESchema http://www.cnaf.it/~sergio/datatag/glue/v11/CE/index.htm CONDOR classads http://www.cs.wisc.edu/condor/classad/
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.