• Non ci sono risultati.

5.2 Formato delle richieste e delle risposte

5.2.1 JSDL

In questa sottosezione viene descritto il linguaggio JSDL che viene usato dall’Ap- plication Execution Management per inviare le richieste verso SRDS. Se ne da pri- ma una descrizione generica per poi descrivere la struttura che ha un documento. Infine lo si rapporta al caso d’uso che ne fa l’AEM

5.2.1.1 Descrizione del JSDL

Il Job Submission Description Language[?] `e un linguaggio per descrivere i re- quisiti computazionali di job rispetto alle risorse, in particolare in ambienti Grid, anche se non limitati a quest’ultimo. JSDL contiene un suo vocabolario e schemi di validazione XML che facilitano l’espressione di tali requisiti come un insieme di elementi XML.

Gli elementi JSDL rientrano nelle seguenti categorie generali: • requisiti di identificazione per job;

• requisiti di identificazione di risorse; • dati richiesti.

JSDL `e un linguaggio che descrive i requisiti per singoli Job. Non tenta di affron- tare l’intero ciclo di vita di un job o il rapporto tra essi. La gestione e l’esecuzione di job descritti e presentati utilizzando JSDL prevede in aggiunta un certo numero di altri linguaggi e/o protocolli in particolare se un job `e eseguito in un ambiente di griglia.

5.2.1.2 Struttura di un documento

Un documento JSDL `e descritto utilizzando il linguaggio XML e aderisce allo schema XML nell’appendice 1. Un documento JSDL `e organizzato come se- gue: L’elemento radice JobDefinition contiene un unico elemento obbligatorio di

nome JobDescription. JobDescription contiene elementi che descrivono i Jobs: JobIdentification, Application, Resources, e DataStaging. La definizione dello pseudo schema `e del tipo:

<JobDefinition> <JobDescription> <JobIdentification ... /> <Application ... /> <Resources ... /> <DataStaging ... /> </JobDescription> </JobDefinition>

Si tenga presente che la specifica non definisce i valori di default per gli elementi non presenti in un documento JSDL. Tuttavia gli elementi necessari per descrivere determinati requirements per la sottomissione di un job devono a essere presenti, con i valori appropriati.

L ’insieme degli elementi che costituiscono il nucleo di JSDL sono:

• Job Structure: elemento che descrive un job e i suoi requisiti. Contiene una sezione chiamata JobDescription che `e la root del documento JSDL. • Job Identify: questo elemento contiene tutti gli elementi che servono per

identificare un Job: JobName, Description, JobAnnotation e JobProject. Se questo elemento non `e presente allora i suoi valori inclusi quelli dei sotto elementi sono idefiniti.

• Application: questo elemento descrive l’applicazione e tutti i suoi requisiti, Contiene gli elementi ApplicationName, ApplicationVersion e Descritpion. • Resource: l’elemento resource descrive le risorse che un Job richiede. Que- sto elemento pu`o essere prensente solo una volta. Su questo elemento si focalizzer`a la richiesta di risorse da parte di AEM verso SRDS, come verr`a descritto in seguito

5.2. FORMATO DELLE RICHIESTE E DELLE RISPOSTE 87 • DataStaging: dataStaging definisce i files che devono essere spostati sul- l’host che dovr`a eseguire il Job (fase in) e i files che devono essere spostati dall’host una volta terminata l’esecuzione (fase out). I file devono essere presenti sia prima che dopo la fine dell’esecuzione.

5.2.1.3 JDSL per AEM

Come gi`a accennato nella descrizione del campo Resource nel caso di AEM gli elementi che vengono considerati riguardano esclusivamente il campo Resource e i suoi sotto elementi. Gli attributi multipli nella stessa query corrispondono all’AND logico di essi. Ecco l’elenco degli elementi che una richiesta JSDL deve contenere:

• ExclusiveExecution: `e un booleano che indica se un Job deve avere l’acces- so esclusivo alle risorse che utilizza il sistema.

• OperatingSystem: stringa che specifica il sistema operativo che installato sulla macchina.

• CPUArchitecture: `e una stringa che specifica l’architettura del processore che il Job richiede per la sua esecuzione.

• IndividualCPUSpeed : `e un range di valori che specificano la velocit`a di ogni CPU richiesta dal Job.La misura `e espressa in multipli di Hertz. • IndividualCPUCount: `e un range di valori che specificano il numero di CPU

per ognuna delle risorse che devono essere allocate per la sottomissione del Job.

• IndividualNetworkBandwidth : questo elemento `e un range di valori che specifica la banda richiesta per ognuna delle risorse. La misura `e data in multipli di bit per secondo.

• IndividualPhysicalMemory: questo elemento `e un range di valori che spe- cificano l’ammontare di memoria fisica sopra ogni risorsa. La misura `e data in byte.

• TotalCPUCount: questo elemento consiste in un range di valori che speci- ficano il numero totale di CPU richieste per la sottomissione del Job. • TotalPhysicalMemory: questo elemento consiste in un range di valori che

specificano l’ammontare di tutta la memoria fisica richiesta dal job sull’ insieme di tutte le risorse.

• TotalVirtualMemory: questo elemento `e un range di valori che specificano l’ammontare totale di memoria virtuale per la sottomissione del Job. • TotalResourceCount: specifica il numero totale di risorse richieste dal job.

5.2. FORMATO DELLE RICHIESTE E DELLE RISPOSTE 89

5.2.1.4 Estensioni al JSDL

Il JSDL di per se identifica un insieme di risorse statico per quanto dettagliato, tuttavia nel caso di AEM `e necessario fare una selezione anche degli attributi dinamici.

`

E stata quindi richiesta un ulteriore espansione del JSDL con l’aggiunta di un attributo che identificasse per quell’elemento il livello di risorsa dinamica libera richiesta. Per fare questo si `e deciso di inserire un nuovo attributo alll’interno di alcuni elementi che identificavano sia risorse di tipo dinamico sia risorse di tipo statico. La scelta `e ricaduta su (elencare gli attributi) inserendo l’attributo dynamic-epsilon (ε).

Per gli attributi dinamici `e identificato un valore tra zero ed uno detto epsilon. Viene calcolato un valore soglia moltiplicando epsilon per l’estremo inferiore del range statico.

• Vincolo statico: da L a U • Valore soglia dinamico: L∗ε

Le risorse che hanno un valore minore rispetto a quello soglia sono scartate. La seguente tabella elenca gli attributi statici che hanno anche una componente dinamica, ogni elemento che `e considerato dinamico contiene l’attributo dinamico dynamic-epsilon che varia tra i valori 0 e 1.

Nome elemento jsdl STATICO DINAMICO

OperatingSystem X CPUArchitecture X IndividualPhysicalMemory X X IndividualVirtualMemory X DiskSpace X X IndividualNetworkBandwith X

<?xml version="1.0" encoding="UTF-8"?> <JobDefinition xmlns="http://www.example.org/" xmlns:jsdl="http://schemas.ggf.org/jsdl/2005/11/jsdl" xmlns:jsdl-posix="http://schemas.ggf.org/jsdl/2005/11/jsdl-posix" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <JobDescription> <JobIdentification>

<JobName>My Gnuplot invocation</JobName> <Description>

Simple application invocation: User wants to run the application 'gnuplot' to produce a plotted graphical file based on some data shipped in from

elsewhere(perhaps as part of a workflow). A front-end application will then build into an animation of spinning data. Front-end application knows URL for data file which must be staged-in. Front-end application wants to stage in a control file that it specifies directly which directs gnuplot to produce the output files. In case of error, messages should be produced on stderr (also to be staged on completion) and no images are to be transferred. </Description> </JobIdentification> <Application> <ApplicationName>gnuplot</ApplicationName> <POSIXApplication> <Executable>/usr/local/bin/gnuplot</Executable> <Argument>control.txt</Argument> <Input>input.dat</Input> <Output>output1.png</Output> </POSIXApplication> </Application> <Resources> <IndividualPhysicalMemory dynamic-epsilon=0.6> <Range> <LowerBound>36541584</LowerBound> <UpperBound>3621302304768</UpperBound> </Range> </IndividualPhysicalMemory> <OperatingSystem> <OperatingSystemName>Linux</OperatingSystemName> <OperatingSystemVersion>2.6.22-14</OperatingSystemVersion> </OperatingSystem> <CPUArchitecture> <CPUArchitectureName>i386</CPUArchitectureName> </CPUArchitecture> <DiskSpace dynamic-epsilon=0.8> <LowerBoundedRange>20202020202.0</LowerBoundedRange> </DiskSpace> <TotalResourceCount> <exact>5.0</exact> </TotalResourceCount> </Resources> <DataStaging> ... </DataStaging> </JobDescription> </JobDefinition> Figura 5.6: Listato JSDL

5.2. FORMATO DELLE RICHIESTE E DELLE RISPOSTE 91 Ecco un esempio di listato JSDL che contiene le richieste di risorse da parte dell’Application Execution Management

5.2.2

GLUE

Il GLUE Schema[?] `e un sottolinguaggio validabile dell’XML che permette la de- scrizione di un insieme di risorse che appartengono ad una Griglia. Esso fornisce una descrizione ad un livello concettuale definendo un modello informativo che `e una astrazione del mondo reale in costrutti che possono essere rappresentati in sistemi informatici(es., oggetti, propriet`a, comportamenti, e relazioni).

Viene utilizzado dall’SRDS per inviare la lista dei nodi che soddisfano la richiesta precedentemente inviata da AEM nel formato JSDL.

GLUE comprende una serie di entit`a e di sottoentit`a che servono per mappare le risorse appartenenti ad una griglia nella maniera pi`u fedele possibile. Nel caso di SRDS il GLUE non include tutte le possibili entit`a ma solo un sottinsieme di esse. Un esempio di risposta in formato GLUE `e dato dalla figura 5.7 come si pu`o notare l’elemeto root `e chiamato Site. Site rappresenta un concetto amministrativo usato per aggregare un insieme di servizi e risorse che sono installate e gestite dallo stesso insieme di persone.

Il primo sotto elemento di Site `e l’elemento Cluster. Cluster fa parte dell’isie- me di entit`a utilizzate per descrivere le risorse computazionali, esso rappresenta un aggregato di entit`a che rappresentano un complesso di risorse computazionali in termini di SubCluster e Computing Element. Un Cluster `e un insieme ete- rogeneo di risorse (macchine che appartengono al solito cluster possono avere CPU, RAM e i sistemi operativi differenti) mentre un SubCluster `e un insieme omogeneo.

SubCluster fornisce i dettagli delle macchine che offrono un ambiente di esecu- zione per i jobs.

L’elemento Cluster contiene un sottoelemento chiamato Host. Questa entit`a `e stata disaccoppiata dalla struttura gerarchica CE / cluster / SubCluster in quanto il primo `e usato per il monitoraggio funzionale, mentre il secondo `e utilizzato principalmente l’organizzazione.

Host contiene i seguenti attributi:

• UniqueID di tipo string indica l’ID unico dell’host

• Name di tipo string indica il nome dell’host solitamente sottoforma di IP • UpTime di tipo int32 indica il tempo che `e passato fin dall’ultimo reboot del

sistema

inoltre contiene i sottoelementi a sua volta che servono per descrivere le caratteri- stiche della macchina, essi sono:

• MainMemory: indica che l’host ha una memoria principale, contiene i seguenti attributi:

– RAMSize di tipo int32 che indica la quantit`a di memoria fisica presente sull’host.

– RAMAvailable di tipo int32 che indica la quantit`a di memoria fisica disponibile presente sull’host

– VirtualSize di tipo int32 indica la quantit`a di memoria virtuale presente sull’host (RAM+swap)

– VirtualAvailable di tipo int32 indica la quantit`a di memoria virtuale disponibile sull’host

• Processor: indica che l’host ha un processore, contiene i seguenti attributi: – Vendor di tipo string indica il nome di chi ha prodotto il processore – Model di tipo string indica il nome del modello

– Version di tipo string indica la versione

– ClockSpeed di tipo int32 indica la velocit`a del processore in MHz – InstructionSet di tipo string indica il tipo di set istruzioni del proces-

5.2. FORMATO DELLE RICHIESTE E DELLE RISPOSTE 93 Sono inoltre presenti altri attributi meno significativi, che tuttavia non vengono utilizzati dall’SRDS

• OperatingSystem: indica che l’host ha un sistema operativo, contiene i seguenti attributi:

– Name di tipo string che indica il nome del sistema operativo. – Release di tipo string che indica la release.

– Version di tipo string che indica la versione.

• Architecture: indica che l’host ha un architettura, contiene i seguenti attri- buti:

– PlatformType di tipo string che indica il tipo di piattaforma dell’host. – SMPSize di tipo int32 che indica il numero di CPU fisiche presenti

sulla macchina.

– SMTSize di tipo int32 che indica il numero di CPU logiche se esse utilizzano la tecnologia multi-threading.

• FileSystem: indica che l’host ha uno o pi`u file system, contiene i seguenti attributi:

– Name di tipo string indica il nome della partizione. – Root di tipo string indica il path della root di file system.

– Size di tipo int32 esprime in Mbyte la grandezza del file system. – AvailableSpace di tipo int32 esprime in Mbyte lo spazio disponibile

sul file system.

– ReadOnly di tipo boolean indica se ci sono capabilities Read-Only o Write-Only.

– Type di tipo string indica il ttipo di file system.

• NetworkAdapter: indica che l’host ha una o pi`u interfacce di rete, contiene i seguenti attributi:

– Name di tipo string indica il nome dell’interfaccia di rete. – IPAddress di tipo string indica l’IP della macchina.

– MTU di tipo int32 indica Max Transmission Unit ( unit`a massima di trasmissione) per la LAN alla quale l’interfaccia di rete `e attaccata. – OutboundIP di tipo boolean indica se la connettivit`a in uscita `e attiva. – InboundIP di tipo boolean indica se la connettivit`a in entrata `e attiva. • ProcessorLoad contiene le informazioni che riguardano il livello di carico

delle CPU, contiene i seguenti attributi:

– Last1Min di tipo int32 indica la media delle lunghezze della coda pronti e il numero di job attualmente in esecuzione sulla CPU nel- l’ultimo minuto.

– Last5Min di tipo int32 indica la media delle lunghezze della coda pronti e il numero di job attualmente in esecuzione sulla CPU negli ultimi 5 minuti.

– Last15Min di tipo int32 indica la media delle lunghezze della coda pronti e il numero di job attualmente in esecuzione sulla CPU negli ultimi 15 minuti.

Sono presenti anche altri elementi meno significativi che tutavia non vengo utiliz- zati nel caso di SRDS.

Documenti correlati