• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE mediante un Framework intelligente basato su SOA
 

Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE mediante un Framework intelligente basato su SOA

on

  • 2,616 views

13 Maggio 2010, tesi specialistica in informatica. L'ottimizzazione delle risorse della Grid di EGEE mediante un Framework intelligente basato su SOA.

13 Maggio 2010, tesi specialistica in informatica. L'ottimizzazione delle risorse della Grid di EGEE mediante un Framework intelligente basato su SOA.

Statistics

Views

Total Views
2,616
Views on SlideShare
2,536
Embed Views
80

Actions

Likes
1
Downloads
25
Comments
0

4 Embeds 80

http://lopinsjk.wordpress.com 77
http://www.slideshare.net 1
url_unknown 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE mediante un Framework intelligente basato su SOA Tesi Specialistica - L'ottimizzazione delle risorse della Grid di EGEE mediante un Framework intelligente basato su SOA Document Transcript

    • ` Universita degli Studi di Perugia Facolt` di Scienze Matematiche, Fisiche e Naturali a Corso di laurea in Informatica Tesi di Laurea Specialistica L’Ottimizzazione delle Risorse della Grid di EGEE mediante un Framework Intelligente basato su SOA Laureando: Relatore: Davide Ciambelli Prof. Antonio Lagan` a Correlatori: Dr. Leonardo Pacifici Dr. Carlo Manuali Anno Accademico 2008/2009
    • A coloro che hanno creduto in me.
    • Costruire Chiudi gli occhi immagina una gioia molto probabilmente penseresti a una partenza ah si vivesse solo di inizi di eccitazioni da prima volta quando tutto ti sorprende e nulla ti appartiene ancora penseresti all’odore di un libro nuovo a quello di vernice fresca a un regalo da scartare al giorno prima della festa al 21 marzo al primo abbraccio a una matita intera la primavera alla paura del debutto al tremore dell’esordio ma tra la partenza e il traguardo nel mezzo c’` tutto il resto e e tutto il resto ` giorno dopo giorno e e giorno dopo giorno ` e silenziosamente costruire e costruire ` potere e sapere e rinunciare alla perfezione ma il finale ` di certo pi` teatrale e u cos` di ogni storia ricordi solo ı la sua conclusione cos` come l’ultimo bicchiere l’ultima visione ı un tramonto solitario l’inchino e poi il sipario tra l’attesa e il suo compimento tra il primo tema e il testamento nel mezzo c’` tutto il resto e e tutto il resto ` giorno dopo giorno e e giorno dopo giorno ` e silenziosamente costruire e costruire ` sapere e potere e rinunciare alla perfezione ti stringo le mani rimani qui cadr` la neve a a breve
    • Sommario La possibilit` di valutare la qualit` del lavoro di un utente o quanto un servizio a a offerto pu` essere innovativo e performante, riveste una grande importanza in am- o bito di ricerca. Per raggiungere questo obiettivo, in questa Tesi viene proposto un Framework basato su un’architettura orientata ai servizi dove le informazioni utili per calcolare la qualit` (Quality of Service/Quality of User) vengono ottenute a direttamente da Grid. Il Framework preso in esame ` GriF. L’idea alla base di e GriF ` la creazione di un Framework collaborativo che operi in ambiente Grid e sia e in grado di consentire l’esecuzione di programmi richiedenti alte capacit` compu- a tazionali senza richiedere uno sforzo eccessivo all’utente. Contestualmente, GriF si propone di gestire l’ottimizzazione delle risorse e l’organizzazione strutturata dei risultati ottenuti. In sostanza, l’obiettivo della Tesi ` quello di porre solide e basi su cui sviluppare un robusto modello di creditizzazione.
    • Abstract The ability of assessing the quality of work of a user the innovativity and per- formance of a service is of great importance in the field of research. To achieve this goal, we propose in this Thesis a Framework based on a Service-Oriented Architecture in which the information needed to calculate the quality (Quality of Service/Quality of User) are obtained directly from Grid. The Framework con- sidered is called the GriF. GriF is based on the idea of creating a collaborative Framework that operates in a Grid environment and allows the execution of Grid programs requiring high computational capabilities without asking exceptioned ef- forts to the users. At the same time, GriF aims at managing resource optimization and the structured organization of the results. In essence, the Thesi’s objective is to lay a own solid foundations on which establish a robust crediting model.
    • Indice 1 Introduzione al Grid Computing 1 1.1 Grid Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Alcuni cenni storici . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.2 Lo sviluppo delle griglie di calcolo . . . . . . . . . . . . . . 4 1.1.3 Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Le applicazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.1 Promotori ed applicazioni reali . . . . . . . . . . . . . . . . 10 1.2.1.1 OGF . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.1.2 EDG, EGEE e gLite . . . . . . . . . . . . . . . . . 11 1.2.1.3 Globus Alliance . . . . . . . . . . . . . . . . . . . 12 1.2.1.4 Globus Toolkit . . . . . . . . . . . . . . . . . . . . 12 1.2.2 Campi applicativi . . . . . . . . . . . . . . . . . . . . . . . 13 1.2.3 European Grid Initiative . . . . . . . . . . . . . . . . . . . . 14 1.2.3.1 Lo scopo e la struttura di EGI . . . . . . . . . . . 14 1.2.3.2 EGI Design Study . . . . . . . . . . . . . . . . . . 16 1.2.3.3 Obiettivi di EGI . . . . . . . . . . . . . . . . . . . 16 2 Ottimizzazione delle Risorse della Grid di EGEE 18 2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2 L’architettura Grid di EGEE . . . . . . . . . . . . . . . . . . . . . 19 2.2.1 Computing Element . . . . . . . . . . . . . . . . . . . . . . 20 2.2.1.1 CE-CREAM . . . . . . . . . . . . . . . . . . . . . 22 2.2.2 Workload Management System . . . . . . . . . . . . . . . . 23 i
    • INDICE 2.2.3 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.2.4 Job Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.5 Storage Element . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.6 Data Management System . . . . . . . . . . . . . . . . . . . 27 2.2.7 Information System . . . . . . . . . . . . . . . . . . . . . . 30 2.2.8 Virtual Organization Membership Server . . . . . . . . . . 30 2.2.9 MyProxy Server . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3 EGEE Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.1 gLite: La Futura Generazione di Middleware EGEE . . . . 32 2.3.1.1 L’idea . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3.1.2 Lo sviluppo . . . . . . . . . . . . . . . . . . . . . . 32 2.3.1.3 Il software . . . . . . . . . . . . . . . . . . . . . . 33 2.4 Ottimizzazione delle risorse . . . . . . . . . . . . . . . . . . . . . . 34 3 GriF: Algoritmi Adattivi e Queue Ranking 36 3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.2 SOA e Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2.1 Cos’` un’architettura SOA . . . . . . . . . . . . . . . . . . . e 38 3.2.1.1 Una nuova architettura . . . . . . . . . . . . . . . 39 3.2.1.2 Le regole . . . . . . . . . . . . . . . . . . . . . . . 40 3.2.1.3 Gli standard per i Web Service . . . . . . . . . . . 42 3.2.1.4 Web Service per Chi? . . . . . . . . . . . . . . . . 44 3.2.2 Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2.2.1 Le caratteristiche di base del Framework . . . . . 45 3.2.2.2 Perch´ un Framework? . . . . . . . . . . . . . . . e 47 3.2.2.3 Usare un Framework . . . . . . . . . . . . . . . . . 47 3.2.2.4 Vantaggi e svantaggi nell’utilizzo di un Framework 48 3.2.2.5 Scegliere un Framework . . . . . . . . . . . . . . . 49 3.2.2.6 Java e Framework . . . . . . . . . . . . . . . . . . 50 3.3 Analisi delle code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 ii
    • INDICE 3.4 Un approccio adattivo per il filtraggio delle code . . . . . . . . . . 57 4 Le Ottimizzazioni Realizzate 60 4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.2 MySQL e Database GriF . . . . . . . . . . . . . . . . . . . . . . . 61 4.2.1 Modello Entit`-Relazione . . . . . . . . . . . . . . . . . . . a 65 4.2.2 Il motore InnoDB . . . . . . . . . . . . . . . . . . . . . . . 67 4.2.2.1 Funzionalit` del motore InnoDB di MySQL . . . . a 68 4.2.2.2 Limiti delle tabelle InnoDB . . . . . . . . . . . . . 68 4.2.2.3 Come creare un tabella di tipo InnoDB . . . . . . 69 4.2.3 Il Database di GriF . . . . . . . . . . . . . . . . . . . . . . 69 4.3 Lo Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.3.1 Perch´ programmare in Shell . . . . . . . . . . . . . . . . . e 73 4.3.2 Caratteristiche . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.3 Lo Script rank.sh . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.3.1 Descrizione dello Script . . . . . . . . . . . . . . . 75 4.3.4 Lo Script state.sh . . . . . . . . . . . . . . . . . . . . . . . . 79 4.3.4.1 Descrizione dello Script . . . . . . . . . . . . . . . 81 5 Conclusioni e Future Work 86 A Sorgenti 88 A.1 grif.sql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Glossario 92 Bibliografia 98 iii
    • Elenco delle figure 1.1 Esempio di sistema Grid. . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Architettura a livelli dell’ambiente Grid proposta da M. Chetty e R. Buyya. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 EGI DS Schedule. . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 Elementi della Grid di EGEE. . . . . . . . . . . . . . . . . . . . . . 20 2.2 Interfacce SRM e Posix-like File I/O. . . . . . . . . . . . . . . . . . 29 2.3 Il middleware gLite. . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.1 Gli elementi di una Service-Oriented Architecture. . . . . . . . . . 39 3.2 I due layer operativi di Applicazioni e Framework. . . . . . . . . . 46 3.3 Funzionamento dell’architettura Java. . . . . . . . . . . . . . . . . 51 3.4 Design Pattern Layers. . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.5 L’ambiente GriF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.1 Il Database di GriF. . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.2 Lo schema generale di funzionamento del YP di GriF e le interazioni con la Grid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 iv
    • Elenco delle tabelle 1.1 Ere computazionali. . . . . . . . . . . . . . . . . . . . . . . . . . . 4 v
    • Elenco dei sorgenti 4.1 I sorgenti delle tabelle Rules e Rank del database GriF. . . . . . . 72 4.2 Lo script per l’analisi delle code rank.sh. . . . . . . . . . . . . . . . 77 4.3 Lo script di ottimizzazione state.sh. . . . . . . . . . . . . . . . . . 82 vi
    • Capitolo 1 Introduzione al Grid Computing Un giorno le macchine riusciranno a risolvere tutti i problemi, ma mai nessuna di esse potr` porne uno. a - Albert Einstein - 1.1 Grid Computing Il termine Grid Computing (in italiano letteralmente griglia di calcolo) indica, come mostrato in Figura 1.1, un’infrastruttura distribuita che consente l’accesso a risorse computazionali costituite da un numero indistinto di piattaforme distribui- te geograficamente ed interconnesse da una rete. L’uso del termine griglia deriva dalla similitudine, fatta dai primi sviluppatori delle piattaforme Grid, secondo i quali in un prossimo futuro si sarebbe arrivati ad utilizzare le risorse di calco- lo alla stessa stregua dell’energia elettrica, ovvero semplicemente collegando una spina all’infrastruttura energetica (Power grid). L’idea del Grid computing, cui spesso ci si fa riferimento quale prossima rivoluzione dell’informatica (come a suo tempo fu il World Wide Web), nasce attorno alla met` degli anni novanta con a l’obiettivo di risolvere problemi computazionali su larga scala in ambito scientifico e ingegneristico. Esse si sono sviluppate originariamente in seno alla fisica delle alte energie e il loro impiego ` oggi esteso alla chimica, alla medicina, alla biologia, e all’astronomia e, in qualche maniera, a molti altri settori. La griglia garantisce agli utenti appartenenti ad un gruppo (gergalmente detto VO, acronimo di Vir- 1
    • 1.1 Grid Computing Figura 1.1: Esempio di sistema Grid. tual Organization) un accesso coordinato e controllato a una grande quantit` a di risorse condivise che vengono viste come un unico sistema di calcolo logico cui sottomettere le proprie applicazioni. Essa fa leva sul fatto che in media l’utilizzo delle risorse informatiche, appartenenti ad una determinata istituzione, ` pari al e 5% della sua reale potenzialit`. Il modello prevede che le risorse di calcolo ven- a gano fornite da diverse entit` in modo da creare un’infrastruttura in media pi` a u efficiente rispetto a quella della singola entit`. a 1.1.1 Alcuni cenni storici L’idea della Grid nasce negli Stati Uniti alla fine degli anni ’90 come risultato del- l’elaborazione collettiva della comunit` scientifica internazionale in tema di calcolo a distribuito. Le sue basi vennero gettate nel 1989-90 all’INFN [1], al CERN e nei maggiori Centri di Calcolo in Europa e negli USA. Tale tecnologia si affiancava a quella del WEB e di Internet ed aveva le caratteristiche necessarie per portare, nel giro di pochi anni, all’integrazione delle griglie fornite da cluster di workstation e Personal Computer (PC) con i grandi supercalcolatori mainframe. Infatti i main- 2
    • 1.1 Grid Computing frame, basati su architetture speciali sviluppate in maniera dedicata, richiedono tempi, costi di progettazione e realizzazione tali da non poter tenere il passo con lo sviluppo dei processori “commodity” adottati da milioni di utenti. I semplici PC e i dischi poco costosi ad essi collegati, insieme alle interfacce di rete e ai backbone standard per le reti locali (Ethernet), sono le componenti elementari di sistemi con potenze davvero ragguardevoli. Le prestazioni di queste componenti sono progres- sivamente migliorate, seguendo la legge di Moore, di un fattore 2 ogni 18 mesi, a parit` di costo. In Italia uno dei primi cluster di workstation basato su processori a commodity, noto come “INFN Farm” ` stato realizzato nel 1989 dall’INFN in col- e laborazione con il CERN. Esso mostr` al mondo scientifico come questa tecnologia o potesse essere utilizzata nell’ambito dell’esperimento DELPHI [2] per le relative esigenze di calcolo con costi che, per le applicazioni di quell’esperimento, erano considerevolmente pi` bassi di quelli delle tecnologie precedenti. u Negli anni ’90 questa trasformazione fu completata. I modelli di calcolo “cen- tralizzati” basati sui grandi supercomputer, attorno ai quali sono nati i grandi Centri di Calcolo con migliaia di utenti negli USA e in Europa, sono stati pro- gressivamente affiancati e a volte sostituiti da modelli distribuiti che potevano sfruttare i cluster di PC, attualmente disponibili in molte Universit` e Centri di a Ricerca. L’ultimo passo importante per le Grid fu la riduzione dei costi per l’uso della rete geografica. Grazie alle liberalizzazioni intervenute in tutto il mondo a met` degli anni ’90 nel settore delle telecomunicazioni, i costi cominciarono a a decrescere ancora pi` rapidamente di quanto previsto dalla legge di Moore per u CPU e dischi (Tabella 1.1). Alla fine degli anni ’90 erano quindi disponibili, su una rete a banda larga che collegava le universit` e i centri di ricerca con velocit` a a di trasmissione sempre pi` elevata e costi sempre pi` ridotti, un numero crescente u u di risorse computazionali e di memoria. Si pose quindi il problema dello sviluppo di una nuova tecnologia che per- mettesse alla comunit` scientifica di sfruttare e condividere in modo dinamico le a risorse distribuite per accelerare i processi innovativi ed aumentare la propria ef- 3
    • 1.1 Grid Computing ficienza produttiva. Questo obiettivo fu centrato da Ian Foster e Carl Kesselman nella primavera del 1999 [3] quando proposero per la prima volta il concetto di Grid. Tale tecnologia rapidamente adottata da tutta la comunit` scientifica inter- a nazionale si basa sullo sviluppo di servizi e protocolli standard per la condivisione di risorse distribuite nascondendone all’utente l’eterogeneit`. a Era Relazione tra Architettura di Architettura di calcolatori e utenti condivisione super calcolo Anni ’70 Uno a molti Sistemi Time sharing Supercalcolatore Anni ’80 Uno a uno PC e Workstation Supercalcolatore Anni ’90 Molti a uno Clusterizzazione COW Terzo millennio Molti a molti Grid Grid Tabella 1.1: Ere computazionali. 1.1.2 Lo sviluppo delle griglie di calcolo Fu infatti proprio nel 1998 che, a seguito del progetto Globus [4] di Foster e Kesselman, si iniziarono a sviluppare alcuni servizi di base che miravano ad una prima implementazione di Grid. Questi sono stati rapidamente resi disponibili come Open Source attraverso il Globus Toolkit (GTK) [5] che divenne un primo standard internazionale per l’accesso e la condivisione di risorse computaziona- li distribuite. Il GTK ` un software studiato per risolvere problemi legati allo e sviluppo di servizi ed applicazioni per Grid. La Grid si basa su di una serie di servizi e protocolli che sono implementati attraverso API e SDK nel GTK. Tale software permette la condivisione di risorse di calcolo, database e altri strumenti in maniera sicura, senza la necessit` di sacrificare le autonomie locali. Il Toolkit a fornisce servizi e librerie per il monitoraggio e la gestione delle risorse computa- zionali, ma anche servizi per la gestione della sicurezza delle informazioni. Nel 2000 l’INFN promosse in Europa la creazione del primo progetto Grid europeo denominato DataGrid [6]. Tale progetto, finanziato dall’Unione Europea con 10 Milioni di Euro, raccolse una ventina di partner provenienti da diversi paesi Eu- 4
    • 1.1 Grid Computing ropei e comprendenti soggetti di molte discipline scientifiche e dell’industria. Gli obiettivi principali di DataGrid erano: • lo sviluppo di nuove componenti di middleware per l’accesso a dati disponibili in domini di gestione diversi e distribuiti a livello geografico; • la realizzazione di un primo “testbed” Europeo e internazionale che permet- tesse l’inizio di effettive attivit` utili per la comunit` scientifica; a a • l’ottimizzazione della gestione dei carichi di lavoro su risorse computazionali distribuite a livello geografico. Inoltre l’INFN, in collaborazione con il CERN, avvi` nel 2001 il progetto Data- o TAG [7] che affrontava il problema dell’interoperabilit` con le Grid in sviluppo a negli Stati Uniti e nei Paesi dell’area Asiatica. DataTAG stabiliva uno stretto legame di collaborazione con i principali progetti Grid avviati negli Stati Uniti (Globus e Condor per esempio), per lo sviluppo d’interfacce comuni e di standard internazionali, anche all’interno della nuova organizzazione mondiale che venne allora a crearsi per questo scopo, il Global Grid Forum. Nei due anni seguenti un numero crescente di attivit` di ricerca e sviluppo sulle Grid fu finanziato da quasi a tutti i Paesi e dalla Comunit` Europea che gi` nel biennio 2001/03 del Quinto a a Programma Quadro (PQ) approvarono una ventina di progetti di finanziamento. Contemporaneamente negli Stati Uniti la National Science Foundation (NSF) e il Department Of Energy (DOE) finanziarono vari progetti, tra i quali TeraGrid, che aveva come obiettivo la costruzione di un’infrastruttura nazionale di supercalcolo. In Italia a INFN Grid si affiancano altri progetti nazionali, come ad esempio Grid.it [11] (del quale fece parte anche l’universit` di Perugia) che coinvolgeva vari istituti a di ricerca e Universit`, il progetto di Grid per la finanza (EGrid) [8], il progetto a Grid per il supercalcolo al sud SPACI [9], il progetto Grid Inter-dipartimentale a Napoli e altri progetti minori. Si pu` quindi tranquillamente affermare che i mag- o giori Enti di ricerca (INFN, CNR, INAF ed ENEA ) e molte Universit` negli ultimi a anni sono stati progressivamente coinvolti nelle attivit` di sviluppo e utilizzo della a 5
    • 1.1 Grid Computing Grid. Nel successivo Sesto PQ, i progetti basati sullo sviluppo di Grid, ottennero un posto di primo piano. Di fatto nel Sesto PQ venne approvato e finanziato il progetto EGEE [10] del CERN, di durata biennale. Esso prevedeva la realizza- zione della prima Grid Europea per le scienze, e aperta inoltre all’industria e al commercio. EGEE ` l’acronimo di Enabling Grids for E-sciencE e pu` essere e o considerato il successore di DataGrid e DataTAG che ha portato alla costruzione della prima Grid Europea di produzione. Essa ` stata un’impresa storica; vi han- e no partecipato pi` di 70 Enti ed Istituzioni scientifiche appartenenti a 26 Paesi u Europei organizzati in 9 grandi Federazioni. EGEE ha richiesto inoltre lo sviluppo di un middleware Grid Open Source, costruito con stretti criteri d’ingegneria del software in grado di durare nel tempo che ` andato a sostituire quello esistente e facendo passare definitivamente l’Europa dalla fase di “sperimentazione” a quella di “produzione”. Il middleware si basa sui nuovi standard come il Web Service Resource Framework (WSRF) [12] per la costruzione di Web e Grid services, de- finiti a livello internazionale da W3C [13] e OASIS [14], organizzati in una logica di Open Grid Services Architecture. Oggi EGEE rappresenta una grande sfida vinta dalla comunit` scientifica Europea, chiamata ad organizzarsi in tempi brevi a in un grande progetto competitivo a livello internazionale. EGEE costituisce un passo fondamentale del processo di integrazione di tutte le esistenti infrastrutture Grid nazionali in una grande e-Infrastruttura (Internet e Grid) su scala Europea. EGEE si pu` collegare alla Cyber-Infrastruttura americana proposta dalla Natio- o nal Science Foundation e alle Grid asiatiche in costruzione in Cina e Giappone. Esso ` un passo decisivo verso la costruzione di una Grid mondiale, necessaria alle e moderne societ` che mettono la conoscenza alla base dello sviluppo. Si tratta di a una svolta epocale dal punto di vista scientifico e tecnologico, poich´ le Grid di e produzione cambieranno il modo di produrre e fare ricerca, sia per gli enti pubblici che per le aziende private. Di fatto in EGEE l’INFN ha promosso la costituzio- ne di una Joint Research Unit (JRU) di cui fanno parte alcune Universit` (come a Calabria, Lecce, Napoli e Perugia), alcuni enti (come CNR, ENEA, GARR), al- 6
    • 1.1 Grid Computing cune importanti aziende (come Datamat, Nice), alcune scuole prestigiose (come SISSA) e alcuni consosrzi (come CASPUR, SPACI). Oggi che si sta strutturando la European Grid Initiative (EGI) [15] questa JRU sta giocando un ruolo chiave per la sua costruzione e si sta costituendo a tale scopo come infrastruttura nazio- nale, IGI (Italian Grid Infrastructure), di riferimento. Grazie ad essa l’Italia pu` o giocare un ruolo di primo piano nello sviluppo delle Grid in Europa e nel mondo. E proprio a seguito di tali iniziative, infrastrutture Grid d’interesse generale per svariate discipline scientifiche, cominciano a divenire operanti in Italia, in Europa e in USA con funzionalit` costantemente incrementate. Ci` a reso possibile la a o completa automatizzazione degli strumenti per l’installazione del middleware e lo sviluppo di sistemi per il controllo. A seguito di tutto ci`, infatti, gli utenti Grid o possono oggi installare e aggiornare il loro middleware abbastanza semplicemen- te e dispongono di un portale (Genius) che consente l’uso trasparente dei servizi della Grid. Inoltre, possono provare direttamente queste funzionalit` tramite la a piattaforma di prova (testbed) GILDA [16] messa a punto dall’INFN ed utilizzata da EGEE per le attivit` di divulgazione [17]. a 1.1.3 Middleware Secondo la definizione di Ian Foster [19] una Grid ` un’infrastruttura hard- e ware e software che permette un accesso sicuro, consistente, diffuso ed economico a risorse computazionali di alto livello. L’utilizzo di questo insieme di risorse richiede una infrastruttura hardware capace di fornire le inter- connessioni necessarie e gli strumenti software (come il middleware) per gestire e controllare il sistema. Con il termine “middleware” si intende un insieme di soft- ware che fungono da intermediari tra diverse applicazioni. La Figura 1.2 mostra l’architettura a livelli dell’ambienti Grid proposta da M. Chetty e R. Buyya [18]. Nella parte inferiore dello stack in figura sono state distribuite le risorse ammini- strate localmente e interconnesse attraverso reti locali o wide-area (Grid fabric). Il Grid fabric incorpora: 7
    • 1.1 Grid Computing • computer come PC, workstation, o SMPs (multiprocessori simmetrici) con sistemi operativi Unix o Windows; • cluster con diversi sistemi operativi; • Resource Management System come Load Sharing Facility, Condor, Portable Batch System e Sun Grid Engine; • dispositivi di archiviazione; • database; • speciali strumenti scientifici come telescopi, radio e sensori. Figura 1.2: Architettura a livelli dell’ambiente Grid proposta da M. Chetty e R. Buyya. Il livello superiore successivo ` l’infrastruttura di sicurezza e fornisce un accesso e sicuro ed autorizzato alle risorse Grid. Lo strato ancora superiore, il nucleo princi- pale del middleware Grid, offre un accesso uniforme e sicuro alle risorse (pu` anche o implementare un livello di sicurezza). I due strati successivi sono uno strato midd- 8
    • 1.2 Le applicazioni leware a livello utente, costituito da Resource broker e/o da utilit` di pianificazio- a ne responsabili all’aggregazione di risorse, e un ambiente per la programmazione Grid. I Resource broker gestiscono l’esecuzione di applicazioni su risorse distri- buite utilizzando appropriate strategie di programmazione. L’ultimo strato infine comprende le applicazioni di rete che vanno dal calcolo collaborativo per l’accesso remoto fino allo sviluppo di applicazioni commerciali e strumenti scientifici per simulazioni. Un esempio di middleware ` il gestore delle transazioni, ovvero un e componente che ` interposto tra l’utente e il gestore del database, o l’applicazione e in generale, o il sistema client/server. In queste situazioni, il middleware acce- lera il completamento delle richieste dell’utilizzatore, riducendo il numero delle richieste di collegamento al database e rendendo ogni collegamento pi` efficiente. u Esempi di questo tipo di programmi sono CICS [20], IBM WebSphere MQ [21] e Tibco [22]. L’utilizzo di uno strato software aggiuntivo, il middleware appunto, consente di ottenere un elevato livello di servizio per gli utenti ed un elevato livello di astrazione per i programmatori. Inoltre, rende pi` semplice la manutenzione, u l’implementazione e l’integrazione delle applicazioni. Tale ruolo rappresenta un’e- voluzione del ruolo del middleware, che inizialmente era preposto esclusivamente al miglioramento e all’ottimizzazione dell’efficienza del sistema. 1.2 Le applicazioni Dopo anni di ricerche e sviluppi in questo campo, sono stati individuati cinque settori principali sui quali le Grid possono avere un impatto notevole: • Distributed Supercomputing (supercalcolo distribuito); • High Throughput Computing (calcolo di gran volume); • on-Demand Computing (calcolo a richiesta); • Data intensive applications (calcolo ad alta intensit` di dati); a • Collaborative Computing (calcolo collaborativo). 9
    • 1.2 Le applicazioni Di seguito vengono illustrate le caratteristiche principali dei 5 settori. Distributed Supercomputing La griglia ` usata per schedulare un numero limitato di task pesanti (tra loro indi- e pendenti o scarsamente accoppiati) con l’obiettivo di utilizzare in contemporanea le potenti risorse dei supercomputer delle large scale facilities. High-Throughput Computing La griglia ` usata per schedulare un largo numero di task indipendenti o scarsa- e mente accoppiati, con l’obiettivo di utilizzare i cicli di processori di qualsiasi tipo inutilizzati per ottenere lavoro utile. L’obiettivo principale ` quello di massimiz- e zare il throughput finale. On-Demand Computing La griglia ` usata per accedere a risorse non disponibili di cui non ` conveniente, e e o possibile, disporre a lungo termine e localmente. L’obiettivo principale ` quello e di ottimizzare il rapporto costo-prestazione. Data Intensive application La griglia ` utilizzata per elaborare quantit` massicce di dati indipendentemente e a da dove essi sono memorizzati e dove si localizza l’utente. L’obiettivo ` sintetizza- e re nuova informazione da dati mantenuti in repository, librerie digitali e database geograficamente distribuiti. Collaborative Computing Riguardano principalmente la gestione coordinata delle interazioni umane in un ambiente geograficamente distribuito. L’obiettivo ` quello di garantire Quality of e Service in ambiente distribuito. 1.2.1 Promotori ed applicazioni reali Le tecnologie su cui si deve basare lo sviluppo delle Grid si richiede siano standard e non proprietarie, in modo da garantire interoperabilit` e affidabilit` tra i sistemi a a (in generale eterogenei) che i singoli utenti includono nella Grid stessa. In linea con questo protocollo, la progettazione degli standard per le infrastrutture Grid 10
    • 1.2 Le applicazioni ` guidata da enti e associazioni creati dalla partecipazione di un gran numero di e centri di ricerca e aziende interessate a questa tecnologia. Di seguito verranno descritti i maggiori enti di sviluppo delle tecnologie Grid e il loro apporto allo stato dell’arte. 1.2.1.1 OGF L’Open Grid Forum (OGF) [23] nasce nel 2006 dall’unione tra il Global Grid Forum e l’Enterprise Grid Alliance. In particolare, il Global Grid Forum venne costituito dalla fusione tra i Grid Forum americano, europeo e giapponese, che essenzialmente organizzavano conferenze tenute e seguite da ricercatori ed esperti nell’ambito del calcolo ad alte prestazioni. Il secondo invece ` una partnership tra e varie aziende del settore, anche di grosso calibro quali IBM, Sun Microsystems e Cisco Systems, con l’obiettivo di rendere possibile l’uso estensivo dei data center aziendali alla comunit` degli utenti di Grid. L’OGF ha finora prodotto un discre- a to numero di standard di grande rilevanza nello sviluppo della tecnologia Grid, primo fra tutti l’Open Grid Services Architecture, che pone le basi tecniche per lo sviluppo di un’infrastruttura Grid. Altro risultato importante ` la Distribu- e ted Resource Management Application API, la descrizione di un’interfaccia per la sottomissione e la gestione di job all’interno di un sistema distribuito, standard implementato anche nel Grid Engine supportato da Sun. 1.2.1.2 EDG, EGEE e gLite Lo European Data Grid (EDG) [24] era un progetto finanziato dalla Comunit` a Europea per lo sviluppo di una Grid a supporto dei centri di ricerca, rivolta in particolare alla biologia, fisica delle particelle e scienze della Terra. Nel 2004 il progetto ` stato considerato concluso e molti dei suoi risultati sono stati ripresi in e un secondo progetto, l’Enabling Grid For E-sciencE, sempre finanziato dall’Unio- ne Europea ma che vede partecipazioni internazionali, dall’America all’Estremo Oriente. Il middleware prodotto nel progetto EDG ` stato la base dell’infrastrut- e tura creata come supporto all’immensa richiesta computazionale del Large Hadron 11
    • 1.2 Le applicazioni Collider, installato al CERN di Ginevra. Questo middleware fu adattato per lo sviluppo di EGEE mentre in parallelo veniva sviluppato gLite, che oltre al codi- ce dell’EDG incorpora pezzi di codice fra i pi` diffusi sistemi middleware per il u calcolo distribuito, come il GTK e Condor Cycle Scavenger. 1.2.1.3 Globus Alliance La Globus Alliance [25] ` un’associazione di vari enti, in particolar modo Unive- e sit` e centri di ricerca Europei, Americani e dall’Estremo Oriente, che ha come a obiettivo lo sviluppo di un middleware per la creazione e gestione di sistemi Grid: il Globus Toolkit, il pi` diffuso attualmente. Oltre alle Universit` e ai centri di u a ricerca, ` da notare la presenza all’interno della Globus Alliance di Univa Cor- e poration, societ` commerciale fondata nel 2004 dai ricercatori Tuecke, Foster e a Kesselman, che si propone come supporto alle aziende per l’utilizzo della tecnolo- gia Grid. Sono presenti anche altre partecipazioni di aziende private quali IBM e Microsoft. 1.2.1.4 Globus Toolkit Il Globus Toolkit (GTK) ` un middleware per il supporto di Grid e applicazioni e orientate a questa tecnologia. Il software viene liberamente distribuito su Internet unitamente ad una serie di applicazioni pensate per affrontare vari aspetti del- l’amministrazione e dell’utilizzo di Grid quali sicurezza, fault detection, resource management. Nato dall’unione tra vari gruppi interessati alla tecnologia Grid, si propone come progetto mirato a risolvere i problemi reali che si affrontano nella messa in opera di un sistema Grid, fornendo uno strato di middleware basato su standard internazionali, come ad esempio lo standard SOAP definito dalla W3C, che supporta la produzione e l’utilizzo di applicativi per Grid. La grande diffu- sione del GTK, insieme al fatto di essere Open Source, ha permesso di avvicinare molte aziende al Grid Computing. Come suggerisce il suo nome, il GTK non ` e un unico blocco software monolitico, ma si presenta come una composizione di elementi specializzati, ognuno dei quali ` pensato per assolvere ad un preciso com- e 12
    • 1.2 Le applicazioni pito ed affrontare un problema circoscritto. In particolare i componenti principali del Toolkit sono: • WS-Core, un’implementazione dello standard OGSA basato sui Web Ser- vices. • GSI, uno strato software che utilizza la tecnica di crittografia a chiave pub- blica per fornire servizi di sicurezza ad ampio spettro (segretezza, autenti- cazione, etc). Queste due componenti sono poi affiancate da un insieme di altre applicazioni di utilit`, sempre basate su interfacce standard, che offrono alcuni dei principali a servizi richiesti ad una griglia, quali data management, resource discovery e mo- nitoring. Inoltre, viene anche fornita una API per lo sviluppo di applicativi per il Grid per i linguaggi Java e C++, insieme ad una collezione di esempi riguardanti la stessa API e i servizi ad essa collegati. 1.2.2 Campi applicativi Uno dei problemi chiave delle Grid riguarda il rapporto tra il bacino di utenti, ov- vero quali comunit` o gruppi di persone utilizzano l’infrastruttura, e l’apparato di a servizio ovvero quali comunit` o gruppi di persone garantiscono la predisposizio- a ne, e la necessaria sostenibilit` e fruibilit` dell’infrastruttura. Grid specializzate a a e progettate per supportare obiettivi e gruppi specifici. Alcuni possibili scenari di utilizzo della Grid da parte delle comunit` per i loro obiettivi, sono: a Governi Un numero relativamente piccolo di pianificatori e scienziati che utilizzano le po- tenze di calcolo dei computer in Grid per risolvere problemi di Governance, quali la difesa nazionale, le pianificazioni a lungo termine delle risorse, ma anche problemi di tipo amministrativo come la gestione degli archivi catastali o della popolazione. La ricerca scientifica La comunit` scientifica che utilizza le risorse disponibili e il parco delle apparec- a chiature disponibili (come microscopi elettronici, acceleratori di particelle, sorgenti 13
    • 1.2 Le applicazioni di raggi X, etc) in forma collaborativa tra gruppi diversi, geograficamente dispersi e con competenze, strumentazioni e archivi di “know-how” complementari. Mercato Le diverse comunit` (che includono anche i consumatori) che provvedono a fornire a dei particolari servizi, come ad esempio modelli finanziari, studi sull’andamento del mercato e quant’altro possa riguardare l’economia, la logistica, l’energia, le materie prime, gli alimenti, il patrimonio naturalistico e artistico etc riferiti in ge- nere ai relativi database necessari per effettuare le relative elaborazioni statistiche e approntamento di scenari. 1.2.3 European Grid Initiative Come gi` accennato, l’attivit` di EGEE si concluder` con la fine di Maggio 2010 a a a con l’entrata in regime operativo di EGI (Figura 1.3) come da piano di implemen- tazione previsto dalla commissione EGI DS coordinata da Ludek Martyska nel 2008. In quella occasione Robert Jones, il direttore di EGEE, passer` le consegne a a Steven Newhouse, direttore di EGI che ha il suo quartier generale in Amster- dam. Gli azionisti di EGI sono le National Grid Initiatives (NGI), entit` nazionali a che nascono come aggregazione e rappresentanti di tutte le iniziative nate in un dato paese Europeo. L’obiettivo di EGI ` quello di garantire la sostenibilit` del- e a l’infrastruttura Grid in Europa. EGI mette a disposizione un forum per collegare insieme le risorse di calcolo in diversi paesi Europei a sostegno della ricerca interna- zionale in molte discipline scientifiche. Gi` comunque dal 2007 l’embrione di EGI a sotto forma di commissione EGI DS ha iniziato le sue attivit` di pianificazione a ed ` stata supportata da organizzazioni operanti per conto delle costituende NGI e sotto forma di JRU in molti dei 36 paesi europei interessati fornendo un sostegno all’infrastruttura sviluppata da EGEE. 1.2.3.1 Lo scopo e la struttura di EGI Gi` sin d’oggi ` chiaro comunque che quanto ` avvenuto in EGEE per la scienza a e e altro non ` che il processo di innesco di una linea di sviluppo pi` generalizzato. e u 14
    • 1.2 Le applicazioni Figura 1.3: EGI DS Schedule. L’innovazione, garanzia per lo sviluppo economico, ` intimamente connessa al ra- e pido progresso scientifico che a sua volta ` diventato sempre pi` dipendente dalla e u collaborazione tra i ricercatori di tutto il mondo. Di fatto, come gi` accennato a in precedenza, l’utilizzo di elevate capacit` di calcolo ` sempre pi` necessario per a e u modellare sistemi complessi e per elaborare i risultati sperimentali. Le griglie di calcolo per l’e-Science nate per rispondere alle necessit` di discipline scientifiche a (come la fisica delle alte energie e la bioinformatica, ecc) condividendo e combi- nando la potenza dei computer e i sofisticati, spesso unici, strumenti scientifici dal 2009 hanno fatto molta strada finendo per combinare le discipline pi` sva- u riate e coordinare strategie di sviluppo di tutte le Scienze. Cos` facendo EGEE ı ` evoluta in un vero e proprio modello di organizzazione paneuropeo capace di e garantire la sostenibilit` a lungo termine delle e-Infrastrutture Grid e di integrare a le strategie nazionali di finanziamento a sostegno della e-Science. Le NGI nate a livello nazionale per questo scopo stanno perci` attrezzandosi per rispondere in o modo coordinato ed efficace sia alle esigenze delle discipline scientifiche all’interno dei singoli paesi sia per sostenere un ruolo propulsivo pi` generale nei confronti u di pi` vasti settori della societ`. Le NGI sono infatti organismi con la missione u a 15
    • 1.2 Le applicazioni pubblica di integrare finanziamenti a livello nazionale per la fornitura di servizi basati su Grid. Essi finiranno perci` per rappresentare un “one-stop-shop” per o una serie di servizi comuni basati su Grid per le comunit` di ricerca nazionali i a cui rappresentanti (uno per ciascuna NGI) costituiranno la struttura di governo di EGI. Tale Consiglio controller` l’organismo esecutivo che gestir` le collaborazioni a a internazionali tra le NGI. 1.2.3.2 EGI Design Study Come accennato in precedenza il progetto di implementazione di EGI ` stato cu- e rato dalla commissione EGI Design Study (EGI DS) attivata nel Settembre 2007 i cui lavori si sono conclusi alla fine del Novembre 2009 dopo che, a latere del Congresso EGEE ’09 tenutosi nel Settembre 2009 a Barcellona, ` stata formal- e mente costituita l’assemblea dei rappresentati delle NGI che ha eletto come suo presidente Peter Oster, Direttore del CSC (Center for Scientific Computing) di Helsinki. Il progetto ` stato parzialmente finanziato dalla Commissione Europea e attraverso il Settimo Programma Quadro al fine di: • valutare i requisiti e casi d’uso per EGI; • identificare i processi ed i meccanismi per fondare EGI; • definire la struttura di EGI; • avviare la costruzione di EGI. 1.2.3.3 Obiettivi di EGI Per EGI sono stati definiti i seguenti obiettivi: • assicurare la sostenibilit` a lungo termine della e-Infrastruttura Europea; a • coordinare l’integrazione e l’interazione tra le NGI; • mettere in funzione un’infrastruttura di produzione Grid di livello Europeo, per una vasta gamma di discipline scientifiche da collegare alle NGI; 16
    • 1.2 Le applicazioni • fornire servizi e supporto globali ad integrazione e/o coordinamento dei servizi nazionali (Autenticazione, supporto alle VO, sicurezza, ecc); • coordinare lo sviluppo e la standardizzazione del middleware per migliorare le infrastrutture; • fornire la documentazione e materiale di formazione per il middleware e le operazioni; • tenere conto degli sviluppi effettuati a livello nazionale da parte dei progetti di e-Science che avevano lo scopo di sostenere le varie comunit`; a • collegare l’infrastruttura Europea con analoghe infrastrutture altrove; • collaborare strettamente con industrie, fornitori di tecnologie e di servizi, per promuovere l’adozione rapida ed efficace delle tecnologie di rete da parte dell’industria Europea. 17
    • Capitolo 2 Ottimizzazione delle Risorse della Grid di EGEE Sono convinto che l’informatica abbia molto in comune con la fisica. Entrambe si occupano di come funziona il mondo a un livello abbastanza fondamentale. La differenza, naturalmente, ` che mentre in fisica devi capire come ` fatto il mondo, e e in informatica sei tu a crearlo. Dentro i confini del computer, sei tu il creatore. Controlli – almeno potenzialmente – tutto ci` che vi succede. o Se sei abbastanza bravo, puoi essere un dio. Su piccola scala. - Linus Torvalds - 2.1 Introduzione EGEE, (Enabling Grids for E-sciencE), cui abbiamo gi` fatto ripetutamente ri- a ferimento ` il progetto europeo che per antonomasia ha mirato ad integrare le e infrastrutture Grid preesistenti per creare in Europa un’unica piattaforma per il supporto alla ricerca scientifica e permettere ai ricercatori un accesso alle maggiori risorse computazionali, indipendentemente dalla loro collocazione geografica. La piattaforma EGEE supporta le comunit` che condividono la necessit` di accede- a a re a ingenti risorse computazionali e che siano disposte ad integrare in essa la propria infrastruttura accettando una politica di accesso comune. La nascita di EGEE risale al 1 Aprile 2004, come prosecuzione del progetto EDG (European DataGrid) che in tre anni di attivit` ha portato ad un grande sviluppo di software a e middleware necessario alla realizzazione di un’infrastruttura Grid utilizzata da molti progetti di ricerca nei campi della fisica, della chimica, della biologia e della 18
    • 2.2 L’architettura Grid di EGEE geologia. Il progetto ha avuto una durata biennale. Esso ha per` trovato prosecu- o zione e finanziamento come EGEE II, nell’ambito del Sesto Programma Quadro dell’unione europea. Un successivo finanziamento ha consentito il varo, poi, di EGEE III. In EGEE sono stati creati collegamenti con simili iniziative di altri continenti. Il progetto EGEE gestisce ogni giorno centinaia di migliaia di ope- razioni informatiche e costituisce l’infrastruttura di griglia di calcolo pi` grande u al mondo. L’infrastruttura EGEE comprende 91 partner istituzionali di 32 paesi Europei, Asiatici e Statunitensi. Essa ` collegata alla rete europea di comunica- e zioni ad alta velocit` GEANT2 [26] e ad altre reti simili. Per effettuare i calcoli a vengono attivati cluster di varie centinaia, e addirittura migliaia di computer, ri- correndo in tutto a oltre 100 000 CPU e a diversi milioni di gigabyte di memoria di massa. Recentemente il sistema EGEE ` diventato interoperabile con altre griglie e scientifiche nazionali e internazionali come l’Open Science Grid [27] negli USA e NAREGI [28] in Giappone. Oltre che alle applicazioni scientifiche, EGEE si ` este- e so anche ai servizi all’industria. Tre societ` si sono impegnate finora a collaborare a nel progetto EGEE Business Associates (EBA) al fine di rendere l’infrastruttura di calcolo distribuito della griglia pi` accessibile, pi` efficace e pi` sicura in un u u u contesto industriale. Il progetto EBA specifica come le piccole e medie imprese (quindi il settore economico) possano adottare in una maniera totalmente sicura e fiduciosa le tecnologie della Grid. Questa apertura della comunit` scientifica a all’industria rappresenta un qualificante passo in avanti rispetto alla condivisione di risorse e know-how scientifico in campi diversi quali appunto il mondo della ricerca e quello dell’industria. 2.2 L’architettura Grid di EGEE L’architettura Grid di EGEE ` articolata in componenti che assicurano al suo e interno l’operativit` di funzioni diverse. Elementi di fondamentale importanza a nell’infrastruttura di EGEE di cui daremo qui di seguito una breve descrizio- ne sono il Computing Element (CE), il Workload Management System (WMS), 19
    • 2.2 L’architettura Grid di EGEE la User Interface (UI), il Job Wrapper (JW), lo Storage Element (SE), il Data Management Service (DMS), l’Information System (IS), il Virtual Organization Membership Server (VOMS) e il MyProxy Server (MPS) (le cui componenti fisiche sono evidenziate in violetto nella Figura 2.1) Figura 2.1: Elementi della Grid di EGEE. 2.2.1 Computing Element Il Computing Element o CE, ` la componente che garantisce le risorse compu- e tazionali di un sito e svolge il ruolo di intermediario tra le richieste di servizi Grid da parte di una entit` autorizzata e il Resource Management System (RMS). Il a Resource Management System ` un’applicazione campione sviluppata dalle indu- e 20
    • 2.2 L’architettura Grid di EGEE strie partner della Sun Microsystems. L’applicazione utilizza tecnologie J2EE ed ` utilizzata per tracciare risorse per progetti cui partecipano le industrie stesse. e Comunque, l’applicazione pu` essere adattata per venire incontro a molte esigen- o ze, come ad esempio vari tipi di applicazioni e-commerce. Il CE ` formato da due e componenti: • EDG: ` la componente che funge da gateway fra il Resource Broker (gestore e delle risorse della Grid) e il Resource Management System (RMS) o diret- tamente il Local Batch System che accetta e processa i job, tipicamente su cluster realizzati con PC di tipo “commodity”. Esempi di Batch Systems usati nella GRID sono: LSF, PBS, torque; • Jobmanager: ` l’applicazione che si interfaccia all’RMS o direttamente e al Local Batch System durante l’esecuzione del job fornendo, tramite il Workload Manager, le informazioni sullo stato del job; Oltre al CE, nel meccanismo di sottomissione dei job alla Grid, prendono parte anche altre componenti e applicazioni come: • Local Centre Authorization Service (LCAS): ` il servizio che rilascia e l’autorizzazione per la richiesta fatta al sito dalla Grid. La decisione viene presa basandosi sulle credenziali dell’utente e le specifiche del job. Le VO autorizzate sono inserite nella Grid Access Control List (GACL). Questo servizio tiene conto anche di eventuali liste nere; • Local Credential Mapping Service (LCMAPS): ` un servizio che fornisce e tutte le credenziali necessarie al job che ` stato accettato nel sito; e • Job Repository: ` un archivio locale che contiene le informazioni sui job in e esecuzione o su quelli che sono stati eseguiti. Le informazioni sono ottenute dal LCMAPS e dal Jobmanager (` l’interfaccia verso il Resource Manage- e ment System o verso il Batch System e fornisce informazioni aggiornate al Workload Manager sullo stato del job). Queste informazioni sono utilizzate 21
    • 2.2 L’architettura Grid di EGEE anche per prevedere la durata di esecuzione del job (parametro utilizzato dal Resource Broker per lo scheduling). Il Job Repository non ` accessibile e dall’esterno del sito; • Local Batch System (scheduler): ` il servizio che accetta e processa i job e diretti ad un insieme di nodi di elaborazione e si occupa di distribuire il carico di lavoro tra loro; • Information Provider: ` il servizio che pubblica le informazioni circa lo e stato del CE acquisendole dal Local Batch System e propagandole all’ap- posito Information System. Queste informazioni possono essere utilizzate anche dal Workload Management System per trovare il miglior sito Grid per l’esecuzione di uno specifico job; 2.2.1.1 CE-CREAM CREAM (Computing Resource Execution And Management) ` un servizio leg- e gero che implementa tutte le operazioni di livello CE. Presenta una Web Service- based Interface ed ` implementato come una estensione Java-Axis servlet (svi- e luppato all’interno dell’Apache Tomcat container). L’obiettivo di CREAM ` ga- e rantire l’interoperabilit` con client scritti in vari tipi di linguaggio e operanti su a differenti computer platform. L’interfaccia ` definita usando Web Serice Descrip- e tion Language (WSDL) e gli utenti possono generare il proprio client CREAM molto semplicemente. CREAM supporta: • Job Submission; • job di tipo batch e MPI; • delegazione automatica e manuale dei job; • Job Cancellation; • Job Info configurabili con livello di filtraggio basato sul tempo di sottomis- sione e/o stato del job; 22
    • 2.2 L’architettura Grid di EGEE • Job List; • GSI based authentication; • VOMS based authorization; • Job Purge (per terminare i job); • possibilit` (per gli amministratori) di disabilitare nuove sottomissioni. a Inoltre CREAM pu` essere usato: o • dal WMS, tramite il servizio ICE (Interface to CREAM Environment); • da un generico client (ad esempio un software di livello utente che sottomette job direttamente verso il CREAM CE); • tramite C++ command line interface e JAVA clients. 2.2.2 Workload Management System Il processo che prevede la selezione di risorse in base alle richieste dell’applicazione ` chiamato “resource matching”. In un ambiente Grid dinamico, dove le risorse e possono cambiare, ` necessario rendere automatica la loro ricerca. A tal proposito e ` stato sviluppato il Workload Management System o WMS, il componen- e te middleware che ha il compito di trovare e gestire le risorse Grid in modo da garantire l’esecuzione dell’applicazione ed allo stesso tempo un utilizzo non ecces- sivo delle risorse stesse. Per svolgere questi compiti, il WMS interagisce con altri servizi Grid e pi` precisamente con: u • Information System: per avere un immagine delle caratteristiche e dello stato delle risorse Grid. • Replica Manager: per ottenere informazioni sulla locazione e sui costi di accesso dei dati. • Computing Element: per sottomettere job al Local Resource Manage- ment System. 23
    • 2.2 L’architettura Grid di EGEE • Authentication and Authorization Services: per l’autenticazione e l’autorizzazione della richiesta dell’utente attraverso le sue credenziali. Il WMS ` composto da molti componenti importanti che interagiscono tra loro e e fanno s` che la gestione delle risorse sia completamente trasparente all’utente. Tra ı questi elementi i pi` importanti sono il Workload Manager o WM ed il Resour- u ce Broker o RB. Il WM ` il nucleo di tutto il sistema. A partire da una richiesta e valida esso deve intraprendere l’azione corretta. Per fare ci` esso deve interagire o con gli altri componenti, che si occupano delle richieste specifiche. Questi com- ponenti sono chiamati helper ed hanno il compito di ricevere un file codificato in formato JDL (Job Description Language) e di restituirlo completo delle specifiche relative all’espletamento dell’azione richiesta. Per esempio, se la richiesta ` quella e di trovare una risorsa per un job, l’input ` un’espressione JDL fatta dall’utente e con la descrizione del job, mentre l’output sar` la stessa espressione con l’aggiunta a del CE scelto per l’esecuzione in base allo stato delle risorse Grid. Fra tutti gli helper del WM, il pi` importante ` sicuramente il Resource Broker. A partire da u e un’espressione JDL che rappresenta la richiesta di sottomissione del job, la sua principale funzione ` quella di trovare la risorsa (o le risorse) che meglio soddisfino e la richiesta. Il Resource Broker pu` essere visto come l’unione di due moduli: il o primo che restituisce tutte le risorse che soddisfano l’espressione; il secondo che classifica le risorse ottenute e trova la migliore, basandosi sulle informazioni dei vari CE e sulle informazioni ottenute attraverso il Replica Manager. Inoltre il WMS comprende i moduli del middleware responsabili della distribuzione e del- la gestione dei job attraverso le risorse di GRID, in maniera tale da garantire la corretta esecuzione delle applicazioni. L’esecuzione di un job comporta due tipi di richieste: la sottomissione e la cancellazione; in particolare sottomettere un job significa delegare la sua esecuzione ad un appropriato CE tenendo conto dei requisiti necessari per portare a buon fine l’operazione. La decisione riguardo la migliore risorsa utilizzabile ` il risultato del processo di matchmaking tra le ri- e chieste e le risorse disponibili; quest’ultimo aspetto dipende sia dallo stato della 24
    • 2.2 L’architettura Grid di EGEE risorsa considerata che dalle politiche di utilizzo definite dal suo amministratore o dalla VO a cui l’utente appartiene. Lo scheduling dei job ` un’altra funzione e del WM. Anche in questo caso possono essere applicate differenti politiche, come scegliere la risorsa pi` vicina (eager scheduling) o rimandare la sottomissione fino u a quando la risorsa non diventi disponibile (lazy scheduling). Dal punto di vista del processo di matchmaking questi due tipi di politiche implicano, nel primo caso, la scelta tra diverse risorse possibili, nel secondo, la scelta tra diversi job. L’archi- tettura interna del WM si adatter` all’applicazione delle diverse politiche possibili a attraverso l’implementazione di plugins, operazione questa che dovr` risultare fa- a cile e senza conseguenze sul corretto funzionamento del WMS. Tali cambiamenti potranno essere anche adottati in seguito ad eventi particolari (come il cambia- mento dello stato di Grid nel suo insieme) ossia in seguito ad eventi non definiti a priori. Il meccanismo che permette l’applicazione delle diverse politiche e la se- parazione tra le informazioni riguardanti le risorse e quelle riguardanti il loro uso, ` l’Information Supermarket (ISM). L’ISM consiste di un archivio di informazioni e sulle risorse accessibile in sola lettura dal modulo adibito al matchmaking e il cui aggiornamento ` il risultato di notifiche provenienti dalle risorse o da verifiche ef- e fettuate dal WMS. L’ISM potr` essere configurato in maniera tale da far innescare a il processo di matchmaking da particolari eventi verificatisi. Queste funzionalit` a migliorano la modularit` del software e il supporto a politiche analoghe al lazy a scheduling. Un’altra possibilit` di gLite ` quella di conservare una richiesta di a e sottomissione per un determinato periodo di tempo, se le risorse richieste non so- no immediatamente disponibili. Questa eventualit` si potr` verificare adottando a a lo hearing scheduling e verr` affrontata ripetendo la richiesta periodicamente o a attendendo la notifica da parte delle risorse richieste che giungeranno all’ISM. Il modulo che implementa questa funzione ` chiamato Task Queue (TQ). Ci sono e diverse interazioni tra i componenti interni al WMS e tra questi ed i servizi esterni come il Logging and Bookkeeping e il Data Management. Queste interazioni sono possibili attraverso l’utilizzo di particolari interfacce chiamate Web Services. 25
    • 2.2 L’architettura Grid di EGEE 2.2.3 User Interface La User Interface (UI) ` il componente dell’infrastruttura Grid che permette e agli utenti l’accesso a tutti i servizi offerti dal WMS, che ` l’unico con il quale e interagisce. La UI permette di specificare diversi tipi di richieste, intese come operazioni su oggetti (job o gruppi di job legati insieme da delle dipendenze). Tali operazioni sono ad esempio la sottomissione di job, la cancellazione, la richiesta di informazioni e la richiesta dell’output. Per fare tutto ci` la UI si basa sul linguaggio o JDL, concepito per descrivere le caratteristiche, le richieste e le preferenze di un oggetto. JDL ` basato sul Classified Advertisement Language definito dal progetto e Condor [29] che permette la gestione di espressioni di tipo DAG (espressioni che identificano le dipendenze tra i job). Le operazioni permesse sono: • la sottomissione di job e la specifica di espressioni DAG per l’esecuzione su un CE remoto, includendo la ricerca automatica delle risorse, la comunicazione con il job in esecuzione e l’eventuale restart di un job da un precedente punto di checkpoint; • la ricerca delle risorse che possono eseguire uno specifico job, in accordo con i suoi requisiti; • la cancellazione del job sottomesso; • la restituzione dell’output; • la restituzione degli stati di checkpoint. Tutti questi servizi sono resi disponibili attraverso un’interfaccia a linea di coman- do, un’interfaccia grafica Java e delle API che permettono la creazione dinamica di file JDL. 26
    • 2.2 L’architettura Grid di EGEE 2.2.4 Job Wrapper Il Job Wrapper (JW) ` uno script generato dal WMS per ogni richiesta di e sottomissione di job; questo script ` quello che viene sottomesso al LRMS del CE e ed ` responsabile di creare l’ambiente per l’esecuzione del job, che comprende: e • il trasferimento dei file di input; • la definizione delle variabili d’ambiente; • l’avvio del job con gli argomenti specificati; • l’upload e la registrazione dei file di output del job attraverso il Replica Manager; • il trasferimento dell’output dopo il completamento del job; • la pulizia dell’area di esecuzione delle variabili. 2.2.5 Storage Element Lo Storage Element (SE) ` l’interfaccia Grid al sistema di archiviazione di e massa Mass Storage System (MSS). L’accesso ai dati ed il loro trasferimento ` e implementato attraverso un protocollo particolare: il GridFTP. Nelle specifiche di esecuzione di un job l’utente pu` scegliere se trasferire su un SE e registrare o nel servizio di Catalog della Grid alcuni file di output del suo job. A tale scopo vanno specificati il nome dello Storage Element desiderato ed il Logical File Name (LFN) del file, con il quale il file verr` identificato nella Grid. Scegliere un SE per a il salvataggio dei propri file vincola il Resource Broker in modo da scegliere, per l’esecuzione del job, il CE pi` vicino allo SE in questione. u 2.2.6 Data Management System La replicazione dei dati su pi` nodi all’interno della Grid, ` utilizzata per ridurre u e la latenza durante l’accesso ai dati, aumentare le prestazioni della Grid stessa e permettere un’accesso veloce e trasparente agli utenti. Tuttavia, per mantenere le 27
    • 2.2 L’architettura Grid di EGEE varie copie dei dati allineate e registrarne la loro posizione, viene utilizzato un siste- ma di gestione dei dati di alto livello. Nella Grid europea il Data Management System (DMS) ` implementato attraverso vari servizi: e • Replica Location Service (RLS): utilizzato per localizzare le copie nella Grid ed assegnare i nomi fisici dei file; • Replica Metadata Catalog (RMC): utilizzato per richiedere ed assegnare i nomi logici ai file; • Replica Optimization Service (ROS): utilizzato per individuare la mi- gliore copia cui accedere; • R-GMA: ` l’EDG Information Service che fornisce le informazioni sui SE e e CE; • Globus Libraries: permettono il buon funzionamento del protocollo di trasferimento GridFTP; • EDG Network Monitoring Services: sono dei servizi che permettono di ottenere statistiche e caratteristiche della rete; • Storage Services: sono i servizi di memorizzazione dei dati. Il DMS pu` essere suddiviso in tre gruppi di servizi riguardanti l’accesso ai dati: o Storage Element, Catalog Services e Data Scheduling. La loro funzione sar` quella a di gestire le repliche dei file dell’utente. I servizi di Data Scheduling forniranno le interfacce necessarie all’allocazione dei dati, mentre il loro accesso avverr` at- a traverso l’SE. Nello Storage Element i metodi di accesso saranno prima di tutto definiti a seconda dal tipo di supporto di memorizzazione che verr` utilizzato, a inoltre si utilizzeranno due tipi di interfacce (Figura 2.2): la SRM dedicata alle operazioni di controllo e gestione e la Posix-like File I/O che permetter` l’accesso a e la modifica dei files da parte dell’utente. Un altro aspetto della gestione dei dati riguarda il loro trasferimento con l’introduzione del File Transfer Service (FTS). 28
    • 2.2 L’architettura Grid di EGEE Figura 2.2: Interfacce SRM e Posix-like File I/O. Questo si occupa del trasferimento fisico dei dati da un punto all’altro della griglia permettendo ai siti coinvolti di poter controllare l’utilizzo delle risorse di rete. Una caratteristica importante dell’FTS ` che tratta solo file fisici, per cui successive e trasformazioni dei dati che porteranno alla creazione, ad esempio, di file logici sa- ranno fatte da servizi di livello superiore. Il processo di trasferimento ` eseguito, e dall’utente, in maniera analoga alla sottomissione di un’applicazione a GRID. In FTS la descrizione del job da sottomettere sar` costituita da un unico file in cui a saranno descritti gli indirizzi dei file da trasferire e la loro destinazione, i para- metri necessari per impostare correttamente l’operazione e autenticare l’utente. Una volta che il job ` stato sottomesso a FTS, il trasferimento dei dati avverr` e a utilizzando un “canale”, ossia una pipe specificamente creata all’interno della rete. Questo sistema ha un duplice vantaggio: prima di tutto permette un’ottimizzazio- ne dell’utilizzo della banda disponibile, poi rende il trasferimento completamente trasparente per l’utente: la configurazione e la definizione della topologia dei ca- nali ` controllata dai siti o dalle VO, per cui l’utente, dopo aver sottomesso il job, e delegher` a queste la gestione del trasferimento. All’interno del Data Manage- a ment ` anche incluso il servizio del Package Manager, incaricato di automatizzare e i processi d’installazione, aggiornamento, configurazione e rimozione di pacchetti 29
    • 2.2 L’architettura Grid di EGEE software provenienti da un’area condivisa nel sito GRID. 2.2.7 Information System L’Information System (IS), garantisce due diversi servizi. • Publish Service: permette agli utenti di pubblicare delle informazioni at- traverso un R-GMA Produttore. Le informazioni pubblicate dai “produtto- ri” vengono mantenute fino a quando non ci sono pi` richieste da parte dei u “Consumatori”. A tale scopo sono stati introdotti dei database relazionali che provvedono a cancellarle periodicamente. • Consumer Service: permette di accedere alle informazioni pubblicate at- traverso i vari R-GMA Produttori. Nella pratica si traduce in espressioni SQL da sottomettere ai database informativi, in modo da realizzare ricerche globali o mirate ai singoli Produttori. 2.2.8 Virtual Organization Membership Server Il Virtual Organization Membership Server (VOMS) ` un database di utenti e autorizzati ad utilizzare le risorse della VO. Il server ` utilizzato per due scopi e principali: il primo ` quello di ottenere informazioni sulle risorse a disposizione e della VO, tramite la lista degli utenti, il secondo consiste nel fornire agli utenti le credenziali da utilizzare per ottenere l’accesso alle risorse della VO. In questo modo, dopo una prima comunicazione, non ne sono necessarie altre tra il servizio VOMS e il sito. Questo tipo di servizio rappresenta un compromesso tra i requisiti di sicurezza del sistema e la fruibilit` delle risorse. Attraverso il VOMS, infatti, a ogni utente crea un proxy di durata prefissata che gli permette di utilizzare le risorse della VO alla quale ` registrato senza dover comunicare le sue credenziali e ad ogni accesso. 30
    • 2.3 EGEE Middleware 2.2.9 MyProxy Server Il MyProxy Server (MPS) ` un servizio che permette di salvare delle credenziali e per un proxy a lungo termine. Un utente salva le sue credenziali sul server e da quel momento in poi pu` creare il proxy per l’utilizzo delle risorse. Il vantaggio del o MyProxy Server ` che pu` essere utilizzato per rinnovare un normale proxy, in mo- e o do da rendere possibile l’esecuzione di job molto lunghi, che altrimenti verrebbero abortiti alla scadenza del proxy. 2.3 EGEE Middleware L’architettura di un sistema definisce gli scopi, le modalit` di funzionamento e le a interazioni fra i suoi componenti fondamentali. A questo scopo serve un architet- tura “aperta”, in continua evoluzione, che fissi regole ben precise che soddisfino i bisogni di estensibilit` ed interoperabilit` richieste da Grid. A tal proposito il a a middleware rappresenta un componente cruciale. Con il termine inglese “midd- leware” si intende un insieme di programmi e procedure che fungono da intermedia- ri tra diverse applicazioni. Sono spesso utilizzati come supporto per applicazioni distribuite complesse. L’utilizzo di uno strato software aggiuntivo, il middleware appunto, consente di ottenere un elevato livello di servizio per gli utenti, e di astrazione per i programmatori. Inoltre, consente di facilitare la manutenzione, la stesura e l’integrazione di applicazioni. Grid deve possedere, innanzi tutto, un insieme di protocolli comuni, che pur consentendo indipendenti metodi di control- lo e gestione locale delle risorse, abilitino le interazioni tra i diversi componenti del sistema e definiscano i meccanismi di base attraverso cui le risorse condivise possano essere viste e utilizzate dagli utenti. I middleware API (Application Pro- gram Interface) e SDK (Software Development Kit) aiutano la rapida costruzione di applicazioni che utilizzino al meglio le potenzialit offerte da Grid. API definisce dei metodi standard per invocare uno specifico insieme di funzionalit`. Questo in- a sieme pu` essere dato da una chiamata ad una subroutine o da metodi di oggetti o (Object-Oriented API). SDK sono degli insiemi di codice che vengono utilizza- 31
    • 2.3 EGEE Middleware ti dagli sviluppatori per implementare specifiche funzionalit` nei programmi che a realizzano. 2.3.1 gLite: La Futura Generazione di Middleware EGEE 2.3.1.1 L’idea Per qualsiasi impegno sul Grid Computing, il middleware rappresenta sempre un componente cruciale. Per EGEE, era stato deciso che un approccio a due fasi poteva essere la soluzione migliore. Originariamente, il progetto EGEE ha usato il middleware basato sul lavoro del suo predecessore (l’European DataGrid o EDG). Questo opportunamente modificato in seguito nel middleware LCG ` stato usato e nella prima infrastruttura di EGEE. Parallelamente, EGEE ha sviluppato e re- ingegnerizzato gran parte della struttura di tale middleware ed ha prodotto una nuova soluzione, chiamata gLite [30], che utilizza attualmente (Figura 2.3). La struttura di gLite combina il cuore del middleware a basso livello con una serie di servizi ad alto livello. Distribuito su licenza commerciale Open Source, gLite integra sia componenti provenienti dai migliori progetti di middleware al momento disponibili, quali Condor e GTK, sia componenti sviluppati per il progetto LCG. Il risultato un ottimo middleware di basso livello, compatibile con gestori di job come PBS, Condor e LSF, e costruito tenendo presente l’interoperabilit` e l’obiettivo a di fornire servizi fondamentali che facilitino la realizzazione di applicazioni Grid provenienti da tutti i campi. 2.3.1.2 Lo sviluppo Molti centri di ricerca sia universitari che industriali collaborano allo sviluppo del software, organizzati in diverse aree di ricerca: Security, Accesso alle Risor- se (Computing e Storage Elements), Accounting, Data Management, Workload Management, Logging and Bookkeeping, Information and Monitoring, Network Monitoring e Provisioning. Sviluppo e distribuzione sono inoltre supportati dal programma intensivo di formazione (t-Infrastructure) realizzato da EGEE. Questo programma fornisce supporto sia con documentazione in linea sia con seminari e 32
    • 2.3 EGEE Middleware Figura 2.3: Il middleware gLite. tutorial on line. La formazione inoltre ` disponibile sul testbed per l’attivit` di di- e a vulgazione, GILDA. Essa ` caratterizzata dalla propria Autorit` di Certificazione e a (CA), e dalla possibilit` di permettere agli utenti e agli amministratori di sistema a di testare tutti gli aspetti di sviluppo ed utilizzo del middleware gLite. 2.3.1.3 Il software I servizi Grid di gLite adottano l’Architettura Orientata ai Servizi, il che significa che con essi diventa molto semplice collegare il software ad un’altro servizio Grid facilitando la compatibilit` con i gli standard Grid di nuova generazione, per esem- a pio la Web Service Resource Framwork (WSRF) di OASIS e la Open Grid Service Architecture (OGSA) del Global Grid Forum. La struttura di gLite concepita co- me un sistema modulare, abilitando gli utenti a sviluppare servizi differenti idonei alle loro esigenze, piuttosto che costringerli ad usare l’intero sistema. Questo ` e 33
    • 2.4 Ottimizzazione delle risorse stato concepito per permettere agli utenti di adattare il sistema ad ogni specifica esigenza. Basandosi sull’esperienza dello sviluppo del middlware EDG e LCG, gLite aggiunge nuove funzionalit` in tutti i livelli della struttura software. In par- a ticolare assicura una maggiore sicurezza, maggiore interfacciabilit` per la gestione a dei dati e la sottomissione dei job, una struttura del sistema rivisitata, e molte altre funzionalit` che rendono facile ed efficente l’uso di gLite. Gi` distribuito su a a varie Griglie di test e di pre-produzione dell’intero progetto, i risultati di gLite sui servizi di pre-produzione sono in aumento. 2.4 Ottimizzazione delle risorse Le tematiche prese in esame nell’ambito delle attivit` di ricerca relative alla Grid a hanno come oggetto principalmente lo studio di alcuni problemi relativi alla ot- timizzazione delle risorse Grid, sullo scheduling di job distribuiti e in particolare all’ottimizzazione delle code (queue ranking). Nella teoria dello scheduling su Grid si assume che ogni job, per essere eseguito, richieda un processore per un certo intervallo di tempo chiamato tempo di processamento. Questa assunzione rimane valida per tutti i modelli di sistemi di processamento classici ed in particolare per i sistemi manifatturieri come le macchine parallele, dove n job devono essere proces- sati contemporaneamente. Il job j richiede una singola operazione che pu` essere o eseguita su una qualsiasi delle m macchine o eventualmente su una delle macchi- ne appartenenti ad un certo sottoinsieme Mj di m. Lo scheduling ` un campo e tradizionale dell’informatica, ma nonostante siano state studiate molte tecniche per numerose tipologie di sistemi (da uniprocessore a multiprocessore e ai sistemi distribuiti), le caratteristiche tipiche delle griglie di dati rendono molti di questi approcci inadeguati. Infatti, mentre nei sistemi tradizionali le risorse e i job sono sotto il diretto controllo dello schedulatore, le risorse delle griglie sono geografi- camente distribuite, di natura eterogenea e appartengono a diversi individui e/o organizzazioni, ciascuno con le proprie politiche di scheduling, di modelli di costo di accesso con carichi di lavoro e disponibilit` di risorse che variano dinamicamen- a 34
    • 2.4 Ottimizzazione delle risorse te nel tempo. La mancanza di un controllo centralizzato, insieme alla presenza di utenti che generano job, molto diversi l’uno dall’altro, rendono la schedulazione molto pi` complessa di quella dei sistemi di calcolo tradizionali. I recenti sviluppi u nei sistemi di produzione e di comunicazione hanno richiesto un nuovo sforzo per costruire modelli in grado di descrivere approcci alternativi per la schedulazione delle code. In particolare, si fa riferimento a sistemi in cui l’esecuzione di un job richiede la copresenza di pi` risorse che ne richiede la disponibilit` simultanea. u a Per risolvere tali problematiche ` stato necessario trasformare i job ossia intro- e durre nuovi prototipi noti come job parametrici nei quali si assume che ogni job, adeguatamente “frammentato” in n subjob, possa richiedere per la sua esecuzione pi` processori contemporaneamente. Inoltre, considerando il fatto che la Grid pre- u sa in esame utilizza un sistema informativo (IS) basato su policy statiche, spesso le informazioni in esso contenute non sono in alcun modo aderenti a quanto sta veramente accadendo. Inoltre, nessuna informazione viene pubblicata in relazione alle performance di calcolo istantaneo o di elaborazione complessiva. Ci` rende o il problema dello scheduling delle code un problema di ottimizzazione di risorse eterogenee la cui ottimizzazione aumenterebbe significativamente le velocit`, le a performance e il retrieve dei risultati dei job sottomessi in griglia. 35
    • Capitolo 3 GriF: Algoritmi Adattivi e Queue Ranking Penso che la cosa pi` misericordiosa al mondo sia l’incapacit` u a della mente umana di mettere in relazione i suoi molti contenuti. Viviamo su una placida isola d’ignoranza in mezzo a neri mari d’infinito e non era previsto che ce ne spingessimo troppo lontano. Le scienze, che finora hanno proseguito ognuna per la sua strada, non ci hanno arrecato troppo danno: ma la ricomposizione del quadro d’insieme ci aprir`, un giorno, visioni cos` terrificanti della realt` e del posto a ı a che noi occupiamo in essa, che o impazziremo per la rivelazione o fuggiremo dalla luce mortale nella pace e nella sicurezza di una nuova et` oscura. a - Howard Phillips Lovecraft - 3.1 Introduzione Dal desiderio di ottimizzare l’uso della Grid ` nata l’idea di progettare e im- e plementare GriF (Grid Framework), un Framework intelligente basato su una Service-Oriented Architecture (SOA) dedicata alla gestione e la sottomissione dei job da distribuire in griglia ottimizzandone la fruibilit`, la velocit` di esecu- a a zione e il recupero (nonch´ il controllo) dei risultati. Dalla vasta disponibilit` e a delle risorse della Grid e dal crescente numero dei suoi possibili fruitori nasce il problema affrontato nella mia Tesi: come ` possibile ottimizzare la gestione delle e risorse di Grid in modo da soddisfare il pi` equamente possibile le richieste. Per u questo motivo il mio lavoro di Tesi si ` concentrato sullo studio della gestione delle e code di una VO e la ricerca dei criteri per la loro ottimizzazione. Partendo da un’analisi teorica di come vengono gestite le code di una VO ` stata analizzata e 36
    • 3.2 SOA e Framework una strategia per ottimizzare la sottomissione dei job attraverso due metodolo- gie informatiche quali il ranking e gli algoritmi adattivi. Una volta precisati gli ambiti di tali metodi si ` affrontato lo studio dettagliato del loro impatto sulla e disponibilit`, raggiungibilit` e performance. Portando avanti tale analisi abbia- a a mo dovuto affrontare le problematiche relative alla gestione delle code di job, alla classificazione degli utenti, all’assegnazione delle risorse, alla parametrizzazione dei job, alle code libere e le relative CPU, al retrive dei risultati dei job nonch´ e all’introduzione di una base di dati per la raccolta, in tempo reale, di tutte le in- formazioni provenienti dalla griglia. Tutto questo ` stato fatto facendo riferimento e alla Grid di EGEE accessibile alla VO COMPCHEM e su questo si ` proceduto e a configurare l’ambiente di sviluppo di GriF installando Java, Tomcat, Axis, MySQL e garantendo l’interoperabilit` attraverso un Framework basato su SOA. a 3.2 SOA e Framework Il settore del middleware sta vivendo un momento molto importante grazie al- l’avvento di Framework, Web Service e SOA, tecnologie in grado di garantire il miglioramento della produttivit` tramite il ri-uso di componenti applicative. a La globalizzazione e la straordinaria evoluzione delle tecnologie dell’informazione e delle comunicazioni stanno, infatti, producendo rapidi e continui cambiamen- ti. Con l’avvento delle SOA sta diventando obsoleto il concetto di applicazione mentre diventa fondamentale quello di “Servizio” inteso come una funzionalit` di a business realizzata tramite “componenti” che rispettano un’interfaccia standard. Il passaggio dalla struttura tradizionale dei prodotti software a quella innovativa sta avvenendo grazie ad alcuni passi fondamentali compiuti a livello internaziona- le negli ultimi vent’anni, come la definizione e l’accettazione di standard aperti, accompagnati da crescita e affidabilit`, di prestazioni e di economicit` d’uso delle a a reti di comunicazione, su cui si sono affermati Internet e i sistemi distribuiti. La creazione di un’unica interfaccia di programmazione per accedere a qualsiasi fonte di dati, dai database relazionali alle pagine XML, ha rappresentato una tappa 37
    • 3.2 SOA e Framework ` importante per arrivare quindi al risultato finale. E stato un percorso difficile non solo per gli aspetti tecnici, pur complessi, ma anche per le difficolt` dovute alla a recessione economica, vista la mole degli investimenti necessari, che difficilmente sono sostenibili da una singola istituzione. 3.2.1 Cos’` un’architettura SOA e Una SOA o architettura orientata ai (o basata sui) servizi, nasce per integrare i rapporti Business to Business (B2B). In questo scenario B2B le aziende svi- luppano sempre pi` rapporti di partnership e diventa quindi indispensabile che i u rispettivi sistemi informativi riescano a raggiungere un certo livello di integrazione, tenendo presente che il pi` delle volte le piattaforme di partenza sono eterogenee. u Una SOA ` progettata per il collegamento a richiesta di risorse computazionali e (principalmente applicazioni e dati), per ottenere un dato risultato per gli utenti, che possono essere utenti finali o altri servizi. L’OASIS (Organizzazione per lo sviluppo di standard sull’informazione strutturata) definisce la SOA cos` ı: Un paradigma per l’organizzazione e l’utilizzazione delle risorse distribuite che possono essere sotto il controllo di domini di propriet` differenti. Esso fornisce a un mezzo uniforme per offrire, scoprire, interagire ed usare le capacit` di produrre a gli effetti voluti consistentemente con presupposti e aspettative misurabili. Anche se esistono molteplici definizioni di SOA, solo il gruppo OASIS ha prodotto una definizione formale applicabile profondamente sia alla tecnologia che ai domini aziendali. La nascita della SOA deve perci` essere vista come un’evoluzione del o middleware, che, dall’integrazione delle applicazioni della singola azienda, viene esteso all’integrazione delle applicazioni di pi` imprese e alla gestione dei flussi u di lavoro per via telematica (e-Business). La SOA ` composta da una serie di e strumenti che permettono di descrivere i flussi organizzativi cercando di estendere tale funzionalit` sino ad avere degli strumenti che permettano di leggere gli stessi a flussi oltre che all’essere umano anche alla macchina, attraverso software specifici, come mostrato in Figura 3.1. Lo scopo primario ` quello di passare da un mondo e 38
    • 3.2 SOA e Framework Figura 3.1: Gli elementi di una Service-Oriented Architecture. eterogeneo dove le varie architetture si sommano in un agglomerato caotico ad un insieme pi` ordinato di risorse le quali gravitano attorno ad un nucleo detto u “infrastruttura di integrazione”, che si preoccupa di collegare tutto l’insieme orga- nizzativo. I sistemi informatici moderni sono progettati per essere interconnessi: le tipologie di sistemi operativi, le tecnologie software e hardware sono differenti, e nessuna ha il sopravvento sulle altre. Con l’appoggio crescente da parte delle maggiori industrie del software, l’architettura basata sui servizi promette di fornire quello che CORBA [31] e D-COM [32] non sono mai riusciti a realizzare appieno: l’utilizzo di servizi a prescindere da dove e come siano realizzati. 3.2.1.1 Una nuova architettura Per approfondire questo aspetto si consideri il caso in cui i responsabili IT di un’azienda debbano integrare il sistema informativo che ` stato costruito negli e anni tenendo conto che sia verso l’interno dell’azienda che verso l’esterno di essa si sente sempre pi` il bisogno di utilizzare risorse eterogenee. Si dia per tanto il u caso che l’inventario sia gestito su un server Linux, i processi gestionali e l’applica- 39
    • 3.2 SOA e Framework tion server risiedono su Windows 2003, i fornitori hanno server per le ordinazioni raggiungibili su Internet, ma dietro un firewall, e cos` i clienti. Tutti questi siste- ı mi, lontani geograficamente operanti con sistemi operativi diversi possono ancora darci le informazioni e i servizi di cui abbiamo bisogno ma, utilizzando le tecniche esposte finora, ci` sarebbe estremamente difficile. Conviene, invece, cambiare la o prospettiva e pensare alle varie componenti in gioco non pi` come astrazioni di un u prodotto, ma come erogatori di servizi di cui il sistema informatico considerato ` e fruitore. Questa ` una solida base per costruire un’applicazione distribuita, le cui e parti sono: • Fornitori di servizi (o provider), che possiamo utilizzare indipendentemente da dove si trovano, dalla tecnologia su cui sono basati e dalla piattaforma software o hardware che li realizza; • Fruitori (o consumer) di tali servizi definiti anche questi indipendentemente da dove si trovano, dalla tecnologia che usano e dalla piattaforma software o hardware su cui lavorano. 3.2.1.2 Le regole A questa impostazione fa chiaramente seguito l’adozione di alcune regole che ci permettano di utilizzare i relativi servizi. Queste sono: • Un linguaggio comune che consenta ai fornitori di servizi di comprendere le richieste e di rendere comprendibili le loro risposte; • Un contratto stipulato tra il fruitore e il fornitore di servizi basato su poche regole chiare e persistenti e implementate in maniera univoca sulle macchine (protocollo); • Dinamicit` dei servizi aggiuntivi purch´ sempre formulati sulla base del a e protocollo implementato cos` che la fornitura e l’utilizzo di nuovi servizi sia ı istantaneo e non ambiguo; 40
    • 3.2 SOA e Framework • Un canale di comunicazione sicuro, semplice e universalmente ac- cettato (per esempio HTTP o HTTPS). Quanto appena descritto esiste gi` ed ` la base delle SOA, cio` delle architetture a e e basate sui servizi, ovvero delle architetture in cui la parte di logica del client e quella di funzionalit` del business sono nettamente separate e dove quest’ultima a ` realizzata mediante moduli pi` semplici (i servizi), definiti formalmente inter- e u facce. Quella che ` stata realizzata ` un’architettura client-server dove il client di e e GriF (denominato YC, Yet a Consumer) sfruttando un’interfaccia User Friendly, pu` effettuare operazioni in griglia come ad esempio sottomettere uno o pi` job, o u conoscere il relativo stato, quindi compilare eseguibili customizzati, creare input file mediante interfacce user-driven e altro ancora. Il server principale (denomi- nato YP, ovvero Yet a Provider) risiede su un cluster di workstation formato da 2 front-end e 8 nodi. Le caratteristiche tecniche dei front-end sono riportate di seguito: • Single processor Quad-Core CPU Intel(R) Xeon(R) X3210 2.13GHz; • Hard Disk da 250 GB SATA; • SO Scientific Linux SL release 5.2 (Boron); • Rete Gigabit Ethernet; • Kernel versione 2.6.18-128.7.1.el5xen. Un altro componente fondamentale del nostro progetto ` la UI che normalmen- e te rappresenta l’interfaccia utente verso la Grid. Essa ` interconnessa ai front- e end attraverso una rete pubblica di tipo MAN (Metropolitan Area Network). Le caratteristiche tecniche principali della UI sono: • Single processor Quad-Core CPU Intel(R) Xeon(TM) 3.06GHz; • SO Scientific Linux CERN SLC release 4.8 (Beryllium); 41
    • 3.2 SOA e Framework • Rete Fast Ethernet; • Kernel versione 2.6.9-89.0.16.ELsmp. Le richieste che vengono inviate dal YC a GriF e quindi alla Grid, scendendo leg- germente nel dettaglio, sono in realt` chiamate a Web Service i quali effettueranno a le operazioni a basso livello in griglia passando per la UI e infine restituiranno i risultati direttamente al YC. Inoltre un secondo server, denominato YR (Yet a Registry), basato sul protocollo UDDI (Universal Description, Definition, and In- tegration) agisce come un registro che espone i servizi offerti da GriF. In pratica, gli utenti ispezionano il YR, mediante una semplice ricerca basata su una o piu’ parole chiave, al fine di trovare ed invocare l’appropriato Web Service residente su uno specifico YP identificato, insieme al servizio, dal YR stesso. 3.2.1.3 Gli standard per i Web Service Il linguaggio comune ` l’XML, di cui si utilizza un dialetto, SOAP (Simple e Object Access Protocol) e anche XML-RPC (XML Remote Procedure Calling) per inviare richieste e ricevere risposte. L’utilizzo di SOAP su HTTP/HTTPS (ma si potrebbero usare anche altri protocolli ad esempio SMTP o FTP) ` la e base dei Web Service, secondo quanto la maggior parte dell’industria del software ha ormai stabilito come standard di fatto. Lo standard di descrizione dei Web Service ` il WSDL (Web Service Description Language). Una macchina pu` e o quindi interrogare un fornitore di servizi, esaminare il file WSDL dato in risposta, e avere tutte le informazioni utili per interrogare il Web Service che le interessa, sapendone interpretare correttamente le risposte. Lo strumento, o protocollo, che viene utilizzato per “scoprire” il Web Service di cui abbiamo bisogno, cio` per e cercare in modo automatico un Web Service che risponda alle nostre esigenze, ` e UDDI. L’utilizzo dei Web Service fa s` che tutto quello che viene sviluppato nel ı corso degli anni non vada perso, ma possa essere integrato grazie ad una nuova filosofia secondo la quale gli oggetti, i componenti, diventano dei Web Service che interagiscono tra loro senza per` che le loro specifiche implementazioni debbano o 42
    • 3.2 SOA e Framework essere condivise. L’unica cosa condivisa ` il contratto fra il service provider e e il client (ovvero gli standard di comunicazione). Quindi pi` in dettaglio, nella u prospettiva di una SOA: • Il servizio ` la realizzazione di determinate funzionalit` mentre WSDL ` il e a e linguaggio utilizzato per la descrizione dei contratti. Il componente (il Web Service) ` scritto in modo da poter essere utilizzato solo in base al contratto e esposto (interfaccia); • I servizi sono coarse grained, ovvero la granularit` dei servizi pi` utili ` a u e grossa: un servizio generalmente fornir` delle informazioni ottenute dopo a una elaborazione significativa. Per esempio, la lista delle code ordinata per CPU totali e CPU libere. Servizi a granularit` pi` fine, come quello che a u fornisce le CPU occupate per una singola coda, vengono utilizzati “dietro le quinte” dal Web Service principale. Oggetti, componenti e servizi sono posti in scala crescente di utilit` business e decrescente granularit`; a a • Un Web Service ` auto-contenuto, anzi di pi`: un Web Service mantiene al e u suo interno il proprio stato. Generalmente le chiamate sono stateless ovvero non presuppongono il mantenimento di informazioni sullo stato del servizio tra una chiamata e l’altra; • Un Web Service ` “debolmente accoppiato” (loosely coupled ) con gli al- e tri Web Service, cio` sostanzialmente indipendente da essi. Questo ` un e e concetto fondamentale, anche per considerazioni di scalabilit` e versatilit` a a dell’applicazione; • Un Web Service pu` essere fruitore di Web Service e al tempo stesso fornitore o di altri Web Service; • I vari Web Service interagiscono scambiandosi messaggi su un canale virtuale detto message bus o service bus che pu` essere esterno o interno all’azienda. o 43
    • 3.2 SOA e Framework Tale canale, se interno, non utilizza necessariamente SOAP su HTTP. Al- l’interno dell’azienda, infatti, si potrebbe utilizzare, per esempio, un sistema di accorpamento di messaggi e, se la comunicazione dei messaggi ` punto a e punto, una buona scelta ` XML-RPC; e • I Web Service assumono che la connettivit` sia asincrona: alta latenza e alta a rumorosit` del canale non sono un problema. Il famoso sviluppatore/autore a Don Box dice che questo concetto pu` anche estendersi alle persone coinvolte o nella realizzazione dell’applicazione SOA: scambiandosi XML-schema e non tipi (o per esempio classi Java) si parla a “rumore zero”. Il servizio quindi porta all’estremo il concetto di incapsulamento (o information hiding). 3.2.1.4 Web Service per Chi? Chi utilizza all’interno del progetto i vari Web Service? I processi. I processi fanno quella che viene chiamata orchestrazione (orchestation) dei Web Service: la logica di business utilizza i vari servizi per ottenere lo scopo voluto. L’azione di sincronizzazione e di scambio di messaggi fra diversi gruppi di Web Service/pro- cessi viene generalmente chiamata coreografia (coreography). Chi ha esperienza di scrittura di applicazioni enterprise avr` intuito alcune delle problematiche nuo- a ve che una architettura di questo genere fa nascere. Per esempio nasce il bisogno di un nuovo modello di transazione. Nasce l’idea della long-term transaction, ov- vero di una transazione di lungo termine, che coinvolge diverse entit`, di cui non a ` possibile a priori determinare il tempo di risposta. Occorre quindi anche una e nuova semantica delle transazioni, essendo il modello ACID (Atomicit`, Consi- a stenza, Isolamento, Durabilit`) non del tutto adeguato. I Web Service da soli non a risolvono tutti i problemi: ` necessario uno strato di integrazione dei servizi, che e ne determini la descrizione, la “scoperta” (discovery), la composizione (composi- tion) e la gestione processo e intraprocesso (orchestration, coreography) dei Web Service. 44
    • 3.2 SOA e Framework 3.2.2 Framework Un Framework, uno strumento ormai sempre pi` in voga nello sviluppo di appli- u cazioni Java, ` una struttura di supporto su cui un software pu` essere organizzato e o e progettato. Alla base di un Framework c’` sempre una serie di librerie di codice e utilizzabili con uno o pi` linguaggi di programmazione, spesso corredate da una u serie di strumenti di supporto allo sviluppo del software, come ad esempio un IDE (nel nostro caso Netbeans), un debugger, o altri strumenti ideati per aumentare la velocit` di sviluppo del prodotto finito. Un Framework Java ` un insieme di a e classi e interfacce di base che costituisce un’architettura generica per lo sviluppo di applicazioni in una determinata area tecnologica (Java). Quando si utilizza un Framework Java, lo sviluppatore implementa interfacce o estende classi per tale Framework, ma il controllo del flusso applicativo ` a carico del Framework e Java. Quindi il codice applicativo dello sviluppatore non ` direttamente invocato e dall’intervento dell’utente sul sistema, ma il flusso elaborativo passa attraverso il codice del Framework: sono quindi le classi del Framework che invocano il codice applicativo dello sviluppatore e non viceversa come quando si utilizza una libreria di classi. 3.2.2.1 Le caratteristiche di base del Framework ` E molto frequente imbattersi nel termine “Framework” nella letteratura riguar- dante lo sviluppo di applicazioni. Molto spesso per` non si ha un’idea chiara di o cosa si intenda con questo termine. Un Framework ` una architettura generica che e costituisce l’infrastruttura per lo sviluppo di applicazioni in una determinata area tecnologica. Detto in maniera molto semplice ` un insieme di classi ed interfacce e di base, che costituiscono l’infrastruttura di una applicazione come mostrato in Figura 3.2. In base a questa definizione ` facile pensare erroneamente che utiliz- e zare un Framework equivalga ad usare una libreria di classi. In realt` vi ` una a e sostanziale differenza tra le due cose. Una libreria di classi, quali ad esempio le classi di base del linguaggio Java, viene utilizzata dallo sviluppatore per svolgere 45
    • 3.2 SOA e Framework Figura 3.2: I due layer operativi di Applicazioni e Framework. determinate funzionalit`. In questo caso il codice che viene scritto invoca il codi- a ce esistente per svolgere una certa funzione, ma il controllo del flusso applicativo rimane del codice scritto. Adottare un Framework significa invece affidarsi ad un specifica architettura ovvero, con altre parole, estendere le classi del Framework e/o implementarne le interfacce. In tal caso sono i componenti del Framework che hanno la responsabilit` di controllare il flusso elaborativo. Nel mondo dell’ar- a chitettura del software un Framework ` considerato come una parte di software e esistente nel quale inserire il proprio, che pu` essere parafrasato con il noto slo- o gan di Hollywood “don’t call us we call you”. Il nostro codice applicativo non ` e direttamente invocato dall’intervento dell’utente sul sistema ma il flusso elabora- tivo passa attraverso il codice del Framework: sono le classi del Framework che invocano il nostro codice applicativo e non viceversa come ` invece nel caso delle e librerie di classi. 46
    • 3.2 SOA e Framework 3.2.2.2 Perch´ un Framework? e Lo scopo di un Framework ` di risparmiare allo sviluppatore la riscrittura di co- e dice gi` steso in precedenza per compiti simili. Questa circostanza si ` presentata a e sempre pi` spesso man mano che le interfacce utente sono diventate pi` complesse, u u o pi` in generale man mano che ` aumentata la quantit` di software con funzio- u e a nalit` secondarie simili. Ad esempio, il tipo di interazione con l’utente offerta da a un menu a tendina sar` sempre la stessa indipendentemente dall’applicazione cui a il menu appartiene (o almeno questo ` ci` che l’utente si aspetta). In casi come e o questo un Framework, che permette di aggiungere la funzionalit` di una finestra a con un menu a tendina con poche righe di codice sorgente a carico del programma- tore, o magari permettendogli di disegnare comodamente il tutto in un ambiente di sviluppo, permetter` di concentrarsi sulle vere funzionalit` dell’applicazione, a a senza doversi far carico di scrivere codice “di contorno”. Il termine inglese Fra- mework quindi pu` essere tradotto come intelaiatura o struttura, che ` appunto o e la sua funzione, a sottolineare che al programmatore rimane solo la creazione del contenuto vero e proprio dell’applicazione. Un Framework ` definito da un insie- e me di classi astratte e dalle relazioni tra esse. Istanziare un Framework significa fornire un’implementazione delle classi astratte. L’insieme delle classi concrete, definite ereditando il Framework, eredita le relazioni tra le classi. Si ottiene in questo modo un insieme di classi concrete con un insieme di relazioni tra classi. 3.2.2.3 Usare un Framework Come abbiamo evidenziato nel precedente paragrafo, utilizzare un Framework significa implicitamente adottare una specifica architettura per la propria applica- zione. Anche se questo pu` sembrare a prima vista vincolante `, invece, nel caso o e di un Framework valido (e vedremo quali criteri lo rendono tale), uno dei maggio- ri vantaggi. All’inizio di un progetto infatti la scelta dell’architettura ` uno dei e momenti fondamentali che pu` determinare il successo o l’insuccesso del progetto o stesso. A volte ` una scelta che viene trascurata o sottovalutata, principalmente e 47
    • 3.2 SOA e Framework per un errato approccio allo sviluppo applicativo considerato esclusivamente come una attivit` di scrittura di codice, ma che produce effetti disastrosi se non pon- a derata attentamente. Utilizzare un Framework maturo e gi` ampiamente testato a significa attenersi ad una architettura che funziona e quindi significa iniziare un progetto da una base solida. Ci` porta inoltre ad un significativo risparmio di o tempo e risorse in quanto lo sviluppatore non deve pi` preoccuparsi di realizza- u re componenti infrastrutturali ma pu` concentrarsi esclusivamente sullo sviluppo o della logica di business che poi ` il valore aggiunto della applicazione che si scrive. e Non ` raro nello sviluppo di un progetto assistere alla riscrittura di componenti e di base che gi` esistono e che sono stati gi` ampiamente testati. Possiamo dire a a che uno dei vantaggi nell’utilizzo di un Framework ` che si viene aiutati a non e ` “reinventare la ruota” come spesso purtroppo accade. E chiaro che tutto ci` ` o e vero quando si fa riferimento ad un Framework giunto ad uno stadio di sviluppo maturo, gi` adottato da molti sviluppatori e quindi gi` ampiamente provato “sul a a campo”. Da un punto di vista pratico adottare un Framework significa senz’altro ridurre i tempi di un progetto ed evitare errori nella fase di disegno in quanto si utilizza una infrastruttura realizzata secondo le best-practice dell’ambito tec- ` nologico di riferimento. E bene precisare che un Framework non va confuso con un design-pattern. Un design-pattern ` una strategia di soluzione di un problema e comune, ` qualcosa di concettuale che prescinde dall’implementazione tecnologi- e ca. Un Framework ` invece qualcosa di concreto, ` un insieme di componenti e e che pu` essere usato per realizzare una applicazione (componenti che, quando il o Framework ` ben strutturato, sono sviluppati secondo i design-pattern pi` diffusi e u nell’ambito specifico). 3.2.2.4 Vantaggi e svantaggi nell’utilizzo di un Framework In genere i vantaggi dell’utilizzo di un Framework vanno ben oltre gli svantaggi, anzi si pu` affermare che quanto pi` il progetto sia di grandi dimensioni tanto o u pi` consigliabile ` l’utilizzo di un Framework. Di seguito vengono schematica- u e 48
    • 3.2 SOA e Framework mente riassunti alcuni dei principali vantaggi che si ottengono nell’adozione di un Framework nello sviluppo di applicazioni Java: • Disegno architetturale: un buon Framework ` fondato su un disegno e architetturale valido, in quanto il suo codice ` scritto in base alle best-practice e della tecnologia in uso. Ci` conferisce al proprio progetto fondamenta solide o dalle quali partire; • Riduzione dei tempi di progetto: lo sviluppatore deve implementare esclusivamente la logica applicativa potendo risparmiare le energie e il tempo necessari alla scrittura di componenti infrastrutturali; • Semplificazione dello sviluppo: un buon Framework semplifica lo svilup- po applicativo perch´ fornisce tutta una serie di componenti che risolvono e la gran parte dei compiti comuni a tutte le applicazioni (controllo del flus- so, logging, gestione messaggi di errore, debugging, internazionalizzazione, validazione dei dati, e cos` via). ı Va precisato che ovviamente un Framework non ` la soluzione di tutti i problemi. e Adottarne uno che non si adatta al proprio problema pu` portare molti svantag- o gi, per questo la scelta di quello giusto per le proprie esigenze ` di fondamentale e importanza. In genere ` comunque sempre preferibile evitare Framework poco e generici, che impongono l’utilizzo di strumenti proprietari e che legano indissolu- bilmente la propria applicazione ad una specifica struttura. Il Framework deve fornire una base per lo sviluppo ma la logica applicativa sviluppata deve essere utilizzabile anche al di fuori della struttura del Framework stesso. 3.2.2.5 Scegliere un Framework Esistono molti Framework per lo sviluppo di applicazioni Java, sia Open-Source che prodotti commerciali. La scelta di un Framework ` importante per tutte le e ragioni che abbiamo visto precedentemente e investe aspetti non solo tecnici ma anche economici. I criteri per la scelta sono molteplici ed ` bene chiarire che non e 49
    • 3.2 SOA e Framework esiste il Framework “ideale”. Di seguito sono elencate alcune caratteristiche che servono per valutare un Framework: • Maturit` del progetto: ` sconsigliabile adottare un Framework che sia a e in una fase iniziale di sviluppo e che sia poco adottato nella comunit` de- a gli sviluppatori e quindi poco testato sul campo in progetti reali. Meglio indirizzarsi verso progetti gi` stabili e sperimentati; a • Documentazione: va sempre verificato che la documentazione sia ricca e ben fatta. Questo facilita la risoluzione dei problemi che si incontrano nella realizzazione dell’applicazione e la comprensione del suo funzionamento; • Validit` del disegno architetturale: proprio perch´ la scelta di un Fra- a e mework influisce sull’architettura applicativa ` bene verificare che sia dise- e gnato correttamente e quindi che siano adottati i design-pattern e le best- practice della tecnologia di riferimento; • Adozione degli standard: un Framework deve essere fondato sui com- ponenti standard della tecnologia di riferimento. Nel nostro caso sulle API che costituiscono la Java EE (Java Enterprise Edition). Quanto pi` un Fra- u mework impone soluzioni proprietarie, l’uso di specifici tool di sviluppo o un modello troppo indirizzato ad uno specifico caso applicativo tanto pi` va u evitato; • Estendibilit`: deve essere possibile estendere le funzionalit` del Framework a a per adattarlo alle alle proprie esigenze. 3.2.2.6 Java e Framework “Write Once, Run Anywhere” ` il motto che la Sun ha utilizzato, anni orsono, e per identificare Java. Gi` da questa semplice frase si capisce qual ` l’obiettivo a e di questo linguaggio: rendere il codice scritto indipendente dalla piattaforma. In Java ` possibile scrivere un programma in ambiente Linux ed eseguirlo in ambien- e te Windows, senza apportare alcuna modifica al codice sorgente. Per ottenere 50
    • 3.2 SOA e Framework questa indipendenza viene utilizzata una architettura particolare che ` illustra- e ta in Figura 3.3. L’architettura funziona nel modo seguente: l’utente scrive il Figura 3.3: Funzionamento dell’architettura Java. proprio codice seguendo le regole grammaticali e sintattiche del Java. Il file pro- dotto, identificato dall’estensione .java, viene “compilato” ed in questa maniera viene creato un codice intermedio indipendente dalla macchina denominato byte code che ` contenuto all’interno dei file .class. A questo punto entra in gioco e la “virtual machine” (VM) ovvero il componente fondamentale della struttura; ne esiste una per ogni sistema operativo ed ` lei che si occupa di interpretare e e quindi rendere effettivamente portabile il codice. Quando un programma viene eseguito, prima viene caricata la VM (se non ` gi` stato fatto) la quale si occupa e a di chiamare ed eseguire le classi (byte code) di cui si ha bisogno e, utilizzando 51
    • 3.2 SOA e Framework una compilazione JIT (Just In Time), si preoccuper` di tradurre in linguaggio a macchina le istruzioni del programma. I compilatori JIT hanno la particolarit` a di effettuare la compilazione “al volo” ovvero durante l’esecuzione del programma stesso. Per eseguire il medesimo programma su di un sistema operativo diverso basta assicurarsi che sulla macchina di destinazione sia presente una VM appro- priata, copiare sulla macchina il byte code del programma ed eseguirlo. In questa semplice maniera viene mantenuta la portabilit` del codice. Una delle caratteristi- a che fondamentali di Java ` l’orientamento agli oggetti che si riferisce a un moderno e metodo di programmazione e progettazione, ovvero la programmazione orientata agli oggetti (OOP). L’idea alla base della OOP ` di rappresentare, nella proget- e tazione del software, le entit` reali o astratte che compongono il problema sotto a forma di oggetti istanziati da classi. Gli oggetti sono caratterizzati da propriet` a (definite variabili o campi di istanza o di esemplare) e da metodi o funzioni appli- cabili sugli oggetti stessi, che possono ad esempio modificarne lo stato o estrarne informazioni. I programmi scritti in Java possono essere unicamente orientati agli oggetti, di conseguenza tutto il codice deve essere necessariamente incluso in una classe. Sebbene Java possa operare sia su oggetti che su tipi di dati primitivi, ` considerato un linguaggio ad oggetti puro, ovvero nel quale gli oggetti sono le e entit` di base del linguaggio anzich´ essere costruiti partendo da costrutti ad un a e inferiore livello di astrazione. Per sviluppare programmi in Java ` teoricamente e sufficiente un qualsiasi editor di testo; in pratica, se si vuole scrivere qualcosa di pi` del classico hello world, occorre un ambiente di sviluppo integrato. Esistono u diversi IDE (Integrated Development Environment, ovvero ambiente di sviluppo integrato), alcuni gratuiti ed altri a pagamento. La Sun ha promosso l’implemen- tazione di un ambiente di sviluppo gratuito e Open Source chiamato NetBeans e lo mette a disposizione gratuitamente insieme a Sun Java Studio. Questi due am- bienti sono scritti in Java e NetBeans ` distribuito insieme alla macchina virtuale. e Come entit` separata, NetBeans ` scaricabile da netbeans.org ed ` stato l’IDE a e e scelto per l’implementazione di GriF. 52
    • 3.2 SOA e Framework Come abbiamo detto nei paragrafi precedenti, l’utilizzo di un Framework nelle attivit` di sviluppo di software orientato agli oggetti, accelera notevolmente i tem- a pi permettendo ai progettisti di occuparsi dei problemi in astratto senza scendere nei dettagli, un rischio sempre presente durante l’attivit` di progettazione. Inol- a tre, implementare le parti di codice relative alla GUI con un IDE come Netbeans permette di velocizzare ulteriormente lo sviluppo. Abbiamo anche detto che il Fra- mework pu` essere visto come un livello aggiuntivo indipendente al quale chiedere o servizi ignorando come ` fatto e cosa nasconde. Questa struttura sposa benissimo e uno schema di progettazione (design-pattern) dove la struttura logica del sistema viene suddivisa in livelli, separando interfacce grafiche, gestione della sessione, lo- gica applicativa, servizi di business, servizi tecnici e fondamenta, come mostrato in Figura 3.4. Questa suddivisione pone l’enfasi sul fatto che i livelli superiori uti- Figura 3.4: Design Pattern Layers. lizzano e conoscono i livelli inferiori. I livelli inferiori invece non utilizzano quelli 53
    • 3.3 Analisi delle code superiori, al pi` li conoscono ma solo tramite interfacce apposite. Questo fa s` che u ı la riusabilit` aumenta scendendo di livello. I primi due livelli infatti sono dedicati a alla specifica User Interface (UI) e, cos` come il terzo, sono fortemente accoppiati ı dall’applicazione specifica. Dal quarto livello in poi si presentano livelli sempre pi` u disaccoppiati con l’applicazione offrendo servizi di interesse generale, quindi mag- giormente riusabili. Nell’ultimo livello in particolare (Foundation) risiedono tutti i servizi tecnici di basso livello, i Framework e altri servizi di utilit`. Il Framework a infatti non sa nulla di chi lo utilizza (in questo caso i livelli sovrastanti) mentre, al contrario, viene usato liberamente dagli eventuali altri livelli sottostanti. In genere l’utilizzo di Framework, proprio per questa separazione di ambito di applicazione, porta beneficio a tutto il sistema in termini di alta coesione (High Coesion) e basso accoppiamento (Low Coupling). Inoltre, il Framework nasconde la struttura inter- na fornendo solo poche classi e metodi per l’utilizzo dei servizi garantendo quindi variazioni protette (Protected Variation). GriF si colloca proprio come uno strato software a s` stante, al quale il programmatore chiede servizi come fossero API di e Java. Uno degli obiettivi di GriF ` quello di fornire uno strumento che permetta e un approccio semplificato e trasparente alla Grid utilizzando Basi di Dati, SQL, Java Script Shell e Web Service come mostrato in Figura 3.5. 3.3 Analisi delle code I gestori di un sistema Grid hanno bisogno di capire come vengono gestite le risorse e come esse vengono assegnate agli utenti che ne fanno richiesta. Inoltre, hanno la necessit` di conoscere gli skill degli utenti ossia le capacit` o le incapacit` che essi a a a possiedono per l’utilizzo di tali risorse. Oltre a permettere l’utilizzo di varie fun- zionalit` Grid in modo trasparente al programmatore, GriF ha anche l’obiettivo di a ottimizzare la gestione delle risorse partendo dall’analisi delle code. Abbiamo gi` a detto quali sono i limiti della Grid dal punto di vista dello scheduling delle code. I limiti diventano ancora pi` evidenti se si pensa che ` cambiato il modo in cui i job u e vengono processati. Fino a qualche anno fa i job presi in considerazione facevano 54
    • 3.3 Analisi delle code Figura 3.5: L’ambiente GriF. riferimento a modelli di processamento classici, ossia seriali. Le macchine parallele hanno aperto nuovi scenari e nuove problematiche in quanto n job possono essere eseguiti in parallelo. Qui entra in gioco l’insufficiente strutturazione delle code, incapaci di schedulare job paralleli ottimizzando le prestazioni. In particolare le applicazioni parallele consistono di pi` componenti (subjob) eseguiti in parallelo u su uno o pi` processori di uno o pi` cluster o supercalcolatori presso differenti u u siti. Tali applicazioni possono cos` accedere efficacemente ad un numero di risorse ı computazionali molto pi` ampio di quello a disposizione utilizzando un qualsia- u si supercalcolatore o cluster singolo. Un’opportuna distribuzione dei subjob tra 55
    • 3.3 Analisi delle code le risorse disponibili consente a queste applicazioni di beneficiare, in termini di prestazioni, di questa potenza computazionale aggregata nonostante l’overhead addizionale introdotto dalle comunicazioni (tra i subjob) che utilizzano le reti pi` u ` lente. E chiaro che, frammentando un job in n subjob, diventa difficile, se non im- possibile, velocizzare la loro esecuzione con l’architettura che oggi la griglia mette a disposizione. Ad esempio il meccanismo che a tutt’oggi governa la politica di scheduling quando si sottomette un job parametrico ` abbastanza aleatorio. Non ` e e possibile infatti prevedere n´ l’identit` della coda in cui il job verr` processato n´ e a a e le sue caratteristiche reali, quali ad esempio performance, CPU libere e memoria disponibile. Questo di fatto condiziona molto l’esito del risultato sia in termini di velocit` di esecuzione che di affidabilit`. Infatti, in molti casi, l’effetto delle scelte a a fatte automaticamente dalla griglia ` negativo, con il conseguente fallimento di e molti job che spesso non vengono neppure terminati. Non potendo, ovviamente, cambiare l’architettura Grid, abbiamo cercato un criterio che ottimizzasse la diffusione dei job attraverso la rete rispetto ad alcuni parametri da noi ritenuti importanti. Il primo di questi (considerato come condi- zione necessaria) ` la raggiungibilit` della coda (coda up). Il test per esaminare se e a una coda ` up viene effettuato sfruttando il programma ping che misura il tempo, e espresso in millisecondi, impiegato da uno o pi` pacchetti ICMP a raggiungere la u coda in rete e quindi ritornare indietro all’origine. Macroscopicamente, se il tempo di risposta ` ritenuto soddisfacente la coda ` definita up e viene accettata mentre le e e altre definite down vengono scartate. Altra condizione necessaria ` la disponibilit` e a delle CPU. Ogni coda possiede un certo numero di CPU e queste possono essere libere oppure occupate. Le code prese in considerazione sono quelle che hanno al- meno due CPU libere cos` da evitare il rischio di accodamenti indesiderati o stalli. ı L’ultima condizione da soddisfare non ` una vera e propria condizione ma una ga- e ranzia di rendimento della coda. Essa consiste in un ranking basato su un indice di prestazione della coda che utilizza una funzione che considera il numero totale di job processati, il numero di job completati con successo (Done), il numero dei 56
    • 3.4 Un approccio adattivo per il filtraggio delle code job falliti (Aborted) e la sommatoria dei tempi di ogni subjob eseguito, reperendo l’informazione dal Database utilizzato per salvare tutte le attivit` svolte da ogni a coda. Con questa funzione ` possibile assegnare un punteggio alle code che altro e non ` che il Rank relativo. e 3.4 Un approccio adattivo per il filtraggio delle code La Grid ` una piattaforma che si sta rapidamente affermando come luogo di di- e vulgazione e condivisione coordinata di risorse ma la sua crescita ` profondamente e legata all’evoluzione tumultuosa delle tecnologie informatiche. Negli ultimi dieci anni, a partire dai primi esperimenti di macchine parallele virtuali realizzate su reti locali, sino a giungere a concezioni avveniristiche come la potenza di calcolo su richiesta, un filo conduttore pu` essere individuato nella necessit` di superare o a il problema dell’eterogeneit`, sia a livello hardware che a livello software, al fine di a fornire un’immagine integrata del sistema. Questo problema, tuttavia, si presen- ta in nuove forme ogni qualvolta, trovata una soluzione accettabile per dominare il livello di eterogeneit` precedentemente affrontato, si voglia superare la conce- a zione precedente per aprire l’orizzonte a nuove idee e possibilit`. Problemi quali a la gestione dell’elevatissimo livello di eterogeneit` e l’ottimizzazione delle risorse, a restando irrisolti, rendono ancora improponibile un effettivo avvento del Grid in qualit` di tecnologia pervasiva. Tuttavia GriF vuole candidarsi come una sorta di a Single System Image (SSI) per rendere pi` agevole l’utilizzo della griglia anche u ad utenti neofiti. Si parla di SSI quando, in un ambiente costituito da risorse ete- rogenee e/o distribuite, si cerca di costruire, a beneficio dell’utente, un’interfaccia che unifichi la gestione e l’utilizzo di queste risorse mascherandone le differenti ` caratteristiche. E importante sottolineare come la definizione del concetto di SSI non dipenda da disomogeneit` in termini di prestazioni, ma solo in termini di a possibilit` di utilizzo. In questa nuova ottica, dunque, GriF non rappresenta pi` a u semplicemente un’infrastruttura di calcolo distribuito, utilizzata per l’elaborazione di job parametrici, ma diventa l’ambiente eletto a svolgere processi di ottimizza- 57
    • 3.4 Un approccio adattivo per il filtraggio delle code zione attraverso la formazione di “contenitori” virtuali di apprendimento al cui interno si analizzano i comportamenti dei job. Alla luce di questo nuovo approccio ci siamo concentrati su un meccanismo adattivo in grado di migliorare le prestazioni della griglia sfruttando le informazioni che compongono la struttura dei job. In modo particolare, tale modello ` legato e alla complessit` e all’elaborazione in tempo reale di ciascun job. In base a questi a precisi requisiti abbiamo definito un modello che realizzasse un tipo di adattivit` a dei contenuti a breve termine, in modo da cogliere informazioni momentanee sui job, osservando il loro comportamento per un intervallo di tempo molto breve, combinando le informazioni fornite da GriF con quelle gi` in nostro possesso. a Per adattivo si intende un meccanismo che cambia il suo comportamento sulla base delle informazioni disponibili. La creazione del repository (la tabella Rules del Database GriF) in cui immagazzinare gli eventi trascorsi relativi alle code, ha avuto il merito principale di rendere attuabile questo meccanismo. In questo modo vari agenti artificiali sono in grado di sfruttare le informazioni derivanti da Grid per popolare il repository costruendo delle regole di ottimizzazione basate sulle caratteristiche computazionali dei job. Perci`, ogni volta che un utente sottomette o un job, il sistema ` in grado di analizzare tale richiesta per poter individuare la e coda migliore tra quelle disponibili semplicemente esaminando le regole presenti nel repository. Gli agenti artificiali sono di fatto Script Shell che vengono eseguiti periodicamente dal sistema e si comportano come filtri adattivi che intercettano le informazioni provenienti dalla griglia e le usano per aggiornare il repository. Questo raffinamento produce regole via via pi` efficienti offrendo risultati sempre u pi` soddisfacenti. In definitiva, un risultato ` da ritenersi soddisfacente nel caso u e in cui le regole applicate consentano ad un job di terminare con successo (Done) ` in un tempo accettabile. E da notare, da ultimo, che il repository viene utilizzato anche come contenitore temporaneo in cui possono presentarsi non solo job con stati finali quali Done o Aborted, ma anche job con stati intermedi come Waiting, Ready, Scheduled e Running. Nel prossimo capitolo vedremo nel dettaglio come 58
    • 3.4 Un approccio adattivo per il filtraggio delle code avverr` il popolamento della tabella Rules del Database attraverso l’interazione a degli Script con la Grid ed i componenti di GriF. 59
    • Capitolo 4 Le Ottimizzazioni Realizzate La realt` ` quella cosa che, anche se smetti di crederci, non svanisce. ae - Philip Kindred Dick - 4.1 Introduzione Nei capitoli precedenti abbiamo introdotto il concetto di job parametrico focaliz- zando la nostra attenzione sui vantaggi della parametrizzazione. Quando parliamo di job parametrici assumiamo che un job (che noi chiameremo job padre) viene frammentato in tante parti (i cosiddetti subjob o job figli). La divisione viene effettuata sfruttando il parametro k che divide l’input del job padre e determina il numero dei subjob. In particolare, la sperimentazione ` stata condotta su un Ser- e vizio GriF che consente l’esecuzione parametrica in Grid del programma ABC [33]. Tale programma, il cui compito ` quello di calcolare la reattivit` di un sistema e a atomo diatomo utilizzando la meccanica quantistica, si caratterizza soprattutto per il sistema usato e l’intervallo di energia esplorato. Il sistema studiato viene caratterizzato mediante dei dati di input e da una routine che ne definisce l’intera- zione (comunemente detta superficie di energia potenziale), mentre l’intervallo di energia ` definito in input mediante i suoi valori estremi e il numero di energie di e collisione da calcolare. Nello specifico, tale numero verr` diviso per la costante di a distribuzione Grid (k) generando cos` gli n subjob che verranno eseguiti in paral- ı lelo. Ciascun subjob, quindi, user` la stessa superficie utilizzata dal job padre ma a ognuno avr` una parte di input propria da computare. La computazione, come a 60
    • 4.2 MySQL e Database GriF accennato, viene eseguita in parallelo e questo ` il principale vantaggio nell’utiliz- e zo dei job parametrici. I risultati di questo approccio tuttavia possono provocare alcuni svantaggi causati dalla crescita del numero dei job. Il fulcro su cui gravita l’ottimizzazione delle risorse riguarda proprio questo aspetto ossia come fare in modo che le performance di GriF non calino al crescere del numero dei subjob. Infatti pi` job vengono sottomessi in griglia e maggiore sar` il lavoro che spetta u a al Framework. L’obiettivo di GriF ` quindi quello di interagire con la griglia in e modo rapido ed efficace. Nei capitoli precedenti abbiamo accennato alla scarsa efficienza della Grid, a volte inaffidabile per problemi di overhead e correttezza nel retrieve dei risultati. In particolare, dai test effettuati, abbiamo potuto notare che le informazioni sullo stato dei job non sempre coincidevano con la realt` e que- a sto ha fatto perdere credibilit` ad alcuni dei servizi della griglia computazionale a presa in esame. Per questi ed altri motivi, sono stati introdotti alcuni strumenti di qualit` per aumentare le prestazioni del Framework. Prima di tutto ` stato a e introdotto un Database, strumento necessario per avere sempre a disposizione la grande quantit` di informazioni derivanti dalla propagazione dei subjob in gri- a glia. L’impiego di una base di dati ha permesso, infatti, l’interazione di GriF con uno strumento molto pi` veloce, affidabile ed efficiente rispetto alle informazioni u da recuperare in griglia. Infine, sono stati implementati due Script, denominati rank.sh e state.sh, il cui compito ` quello di reperire le informazioni provenienti e dalla griglia e quindi salvarle nella base di dati. In questo scenario, cruciale ` il e ruolo rivestito dal Database, usato come ponte fra GriF e la griglia, e aggiornato di volta in volta dagli script, costantemente in relazione con la Grid. 4.2 MySQL e Database GriF Il pi` diffuso database Open Source basato sul linguaggio SQL ` MySQL [34]. u e Il codice di MySQL viene sviluppato fin dal 1979 dalla ditta TcX ataconsult - e ` che poi ` diventata MySQL AB. E per` solo dal 1996 che viene distribuita una o versione che supporta SQL e in futuro si prevede il pieno rispetto dello standard 61
    • 4.2 MySQL e Database GriF ANSI. MySQL ` composto da un client con interfaccia a caratteri e un server, e entrambi disponibili sia per sistemi Unix come GNU/Linux che per Windows. Il codice di MySQL viene rilasciato sotto licenza duale GPL e non libera. Grazie a questa doppia licenza, chiunque sia interessato all’uso di MySQL in un ambiente libero od Open Source pu` utilizzarlo sotto i termini della normale licenza GPL, o mentre chi lo volesse utilizzare per scopi non liberi pu` acquistare la licenza d’uso o [35] dai proprietari del software, e quindi evadere le restrizioni poste dalla licen- za GPL. Tale licenza viene erroneamente dichiarata da MySQL AB come licenza commerciale, in realt` non ` esatto chiamarla in questo modo, poich´ un soft- a e e ware libero pu` essere allo stesso tempo commerciale. Tuttavia, fino alla versione o 4.0, una buona parte del codice del client era licenziato con la GNU LGPL e poteva dunque essere utilizzato per applicazioni commerciali. Dalla versione 4.1 in poi, anche il codice dei client ` distribuito sotto GNU GPL. Esiste peraltro e una clausola estensiva che consente l’utilizzo di MySQL con una vasta gamma di licenze libere. Soffermandoci sulle caratteristiche tecniche possiamo affermare che MySQL ` un RDBMS, ossia un sistema di gestione per database relazionali. e Un database ` essenzialmente un insieme strutturato di dati. MySQL si occupa e della strutturazione e della gestione a basso livello dei dati stessi, in modo da velocizzarne l’accesso, la modifica e l’inserimento di nuovi elementi. L’acronimo RDBMS significa “Relational DataBase Management System” e sta ad indicare che MySQL offre la possibilit` di conservare i dati non in un enorme “storeroom” a ma in diverse tabelle, in modo da velocizzarne l’accesso. L’acronimo SQL significa “Structured Query Language” ed indica il linguaggio standard di interrogazione dei Database. Esso ` utilizzato per interrogare e gestire basi di dati mediante e l’utilizzo di costrutti di programmazione denominati query. Con SQL si leggono, si modificano e si cancellano dati nonch´ si esercitano funzioni gestionali ed ammi- e nistrative sul sistema del database. Alcune delle critiche pi` frequenti rivolte ad u SQL riguardano la mancanza di portabilit` del codice fra vendors diversi, il modo a inappropriato con cui vengono trattati i dati mancanti (NULL), e la semantica 62
    • 4.2 MySQL e Database GriF a volte inutilmente complicata. L’utilizzo di MySQL comporta per` importanti o vantaggi: ` • E veloce: basta dare un’occhiata ai benchmark1 ufficiali per rimanerne impressionati [36]; ` • E affidabile: essendo stato progettato per manipolare molti dati; ` • E scalabile: pu` funzionare utilizzando da 2 MegaByte di RAM fino a o 4GigaByte; ` • E versatile: la sua natura Open Source garantisce una versione per ogni piattaforma. MySQL svolge il compito di DBMS nella piattaforma LAMP (GNU/Linux: il si- stema operativo, Apache: il Web server, MySQL: il database management system (o database server), Perl, PHP e/o Python: i linguaggi di scripting), una delle pi` u usate e installate su Internet per lo sviluppo di siti e applicazioni web dinamiche. Il 16 Gennaio 2008 Sun Microsystem (di recente a sua volta rilevata da Oracle) ha acquistato la societ` per un miliardo di dollari, stimando il mercato del data- a base in 15 miliardi di dollari. I principali introiti provengono dal supporto agli utilizzatori di MySQL tramite il pacchetto Enterprise, dalla vendita delle licenze commerciali e dall’utilizzo da parte di terzi del marchio MySQL. MySQL ` scritto e in C e C++ e viene testato con un ampia gamma di diversi compilatori. Inoltre lavora su diverse piattaforme come: • IBM AIX 4.x e 5.x; • FreeBSD 5.x e versioni superiori con threads nativi; • HP-UX 11.x e versioni superiori con threads nativi; 1 Con il termine benchmark si intende un insieme di test software volti a fornire una misura delle prestazioni di un computer per quanto riguarda diverse operazioni. Vi ` una seconda definizione, e relativa ai test di particolari software: in questo caso il benchmark ` la determinazione della e capacit` di detto software di svolgere pi` o meno velocemente, precisamente od accuratamente, a u un particolare compito per cui ` stato progettato. e 63
    • 4.2 MySQL e Database GriF • Linux; • Mac OS X; • NetBSD 1.3/1.4 Intel e NetBSD 1.3 Alpha; • Novell NetWare 6.0 e 6.5; • OpenBSD 2.5 con threads nativi e OpenBSD nelle versioni precedenti alla 2.5 con il MIT-pthreads package; • SCO OpenServer 5.0.X con il recente porting del FSU Pthreads package; • SCO Openserver 6.0.x; • SCO UnixWare 7.1.x; • SGI Irix 6.x con threads nativi; • Solaris 2.5 e versioni superiori con i threads nativi su SPARC e x86; • Tru64 Unix; • Windows 2000, Windows XP, Windows Vista, Windows Server 2003, Win- dows Server 2008 e Windows Vienna. L’architettura di MySQL ` multilivello con moduli indipendenti. Inoltre essa e ` completamente multi-threads con la possibilit` di utilizzare pi` CPU qualora e a u disponibili e fornisce Storage Engine sia transazionali che non-transazionali. Il motore originale di MySQL ` costituito da una serie di librerie ISAM per l’accesso e ai dati. L’efficienza dell’implementazione, la stabilit` delle release, la possibilit` a a di utilizzo in rete e la natura Open Source ne hanno decretato l’enorme successo. Si tratta infatti del pi` diffuso RDBMS per le applicazioni web. u 64
    • 4.2 MySQL e Database GriF 4.2.1 Modello Entit`-Relazione a Per la progettazione dei database viene utilizzato il modello Entity-Relationship [37] (anche detto modello entit`-relazione, modello entit`-associazione o modello a a E-R) che rende possibile la rappresentazione concettuale dei dati ad un alto livello di astrazione. Viene spesso utilizzato nella prima fase della progettazione di una base di dati in cui ` necessario tradurre le informazioni risultanti dall’analisi di e un determinato dominio in uno schema concettuale. Il modello E-R si basa su un insieme di concetti molto vicini alla realt` di interesse: quindi facilmente intuibili a dai progettisti (e in genere considerati sufficientemente comprensibili e significati- vi anche per i non-tecnici), ma non implementabili sugli elaboratori. Infatti, pur essendo orientato alla progettazione di basi di dati, il modello prescinde dai criteri specifici di organizzazione fisica dei dati persistenti nei sistemi informatici. Esisto- no tecniche per la traduzione dei concetti ad alto livello (meglio comprensibili per gli umani) in concetti di pi` basso livello tipici dei vari modelli logici (ad esempio u il modello relazionale) implementati nei diversi RDBMS esistenti. Il modello E-R ha rappresentato per lungo tempo (e ancora oggi) uno degli approcci pi` solidi per u la modellazione di domini applicativi in ambito informatico. Per questo motivo, ` stato spesso usato anche al di fuori del contesto della progettazione di database e ed ` stato utilizzato come modello di riferimento per numerose altre notazioni per e la modellazione. Al modello E-R era ispirata, tra l’altro, la notazione OMT poi confluita in UML. I costrutti principali del modello E-R sono entit`, associazioni a e attributi: • Entit`: rappresentano classi di oggetti (come fatti, cose e persone) che a hanno propriet` comuni ed esistenza autonoma ai fini dell’applicazione di a interesse. Un’occorrenza di un’entit` ` un oggetto della classe che l’entit` ae a stessa rappresenta. Non si parla qui del valore che identifica l’oggetto, ma piuttosto l’oggetto stesso. Un’interessante conseguenza di questo fatto ` che e un’occorrenza di entit` ha un’esistenza indipendente dalle propriet` a esso a a associate. Da questo punto di vista il modello E-R presenta una marcata 65
    • 4.2 MySQL e Database GriF differenza rispetto al modello relazionale nel quale non possiamo rappre- sentare un oggetto senza conoscere alcune sue propriet`. In uno schema a ogni entit` ha un nome che la identifica univocamente e viene rappresentata a graficamente tramite un rettangolo con il nome dell’entit` all’interno; a • Associazioni: le associazioni (dette anche relazioni) rappresentano un le- game tra due o pi` entit`. Il numero di entit` collegate identifica il grado u a a dell’associazione. Un buono schema E-R ` caratterizzato da una prevalenza e ` di associazioni di grado 2. E possibile legare un’entit` con s´ stessa (attraver- a e so un’associazione ad anello), sia legare le stesse entit` con pi` associazioni. a u Di norma viene rappresentata graficamente da un rombo contenente il nome dell’associazione; • Attributi: un’entit` ` descritta usando una serie di attributi. Tutti gli og- ae getti della stessa classe entit` hanno gli stessi attributi: questo ` ci` che si a e o intende quando si parla di oggetti simili. La scelta degli attributi riflette il livello di dettaglio con il quale vogliamo rappresentare le informazioni sulle entit`. Per ogni attributo associato ad una classe entit`, dobbiamo definire a a un dominio di possibili valori (ad esempio, per l’attributo nome, il domi- nio potrebbe essere l’insieme delle stringhe di 15 caratteri). Per ciascuna classe entit`, dobbiamo definire anche una chiave. La chiave ` un insieme a e minimale di attributi che identificano univocamente una tupla all’interno del database. Potrebbe esserci pi` di una chiave ed in questo caso si parla di u chiavi candidate. La scelta per` deve ricadere solo su una chiave candidata, o detta chiave primaria. L’attributo si identifica con un’ellisse al cui inter- no viene specificato il nome dell’attributo o anche semplicemente, nel caso di diagrammi complessi, solo il nome. In caso di chiave primaria, il nome dell’attributo viene sottolineato. 66
    • 4.2 MySQL e Database GriF 4.2.2 Il motore InnoDB In MySQL una tabella pu` essere di diverse tipologie. Ogni tipo di tabella presenta o propriet` e caratteristiche differenti (transazionale o non-transazionale, diverse a prestazioni e strategie di locking piuttosto che altre funzioni particolari). Il tipo di tabella predefinito di MySQL ` denominato MyISAM. Tuttavia MySQL supporta e anche il tipo InnoDB, un particolare motore per il salvataggio dei dati di MySQL, fornito in tutte le sue distribuzioni e utilizzato nel presente elaborato di Tesi. La sua caratteristica principale ` quella di supportare le transazioni di tipo ACID. e Recentemente ` stato acquistato dalla Oracle, che ha intenzione, in generale, di e mantenere inalterate le principali caratteristiche di MySQL AB. Le differenze tra MyISAM e InnoDB sono: • Per recuperare una tabella dopo un crash del sistema, InnoDB riesegue le ultime istruzioni registrate nei log. MyISAM deve invece eseguire una scan- sione completa della tabella per poi recuperarla, ed eventualmente ricostruire gli indici. Di conseguenza, il tempo impiegato da InnoDB per il recupero non aumenta con il crescere dei dati contenuti nella tabella, mentre il tempo impiegato da MyISAM ` proporzionale alle dimensioni della tabella; e • Mentre MyISAM si affida al sistema operativo per il caching delle letture e delle scritture sulle tabelle, InnoDB ha una sua propria gestione della cache. Le pagine di dati modificate non vengono cos` inviate immediatamente al ı sistema e ci`, in alcuni casi, consente a InnoDB di modificare i dati molto o pi` rapidamente; u • MyISAM generalmente immagazzina i record di una tabella nell’ordine in cui sono state create, mentre InnoDB le immagazzina nell’ordine seguito dalla chiave primaria. Conseguentemente, quando viene utilizzata la chiave per la lettura di una riga, l’operazione avviene pi` rapidamente; u • InnoDB comprime i record molto meno rispetto a MyISAM. Questo significa che la memoria e lo spazio su disco richiesti da InnoDB sono maggiori, no- 67
    • 4.2 MySQL e Database GriF nostante nella versione 5 di MySQL lo spazio su disco richiesto sia diminuito del 20%; • Allo stato attuale, InnoDB non supporta le ricerche fulltext. 4.2.2.1 Funzionalit` del motore InnoDB di MySQL a InnoDB mette a disposizione le seguenti funzionalit`: a • transazioni SQL con savepoint e transazioni XA; • Lock a livello di record; • Chiavi esterne; • Integrit` referenziale; a • Colonne AUTOINCREMENT; • Tablespace. Il lock in InnoDB per quanto riguarda i comandi SELECT ` di tipo non-locking. e InnoDB offre delle ottime performance in termini di prestazioni e utilizzo del- la CPU specialmente quando si ha a che fare con una grande quantit` di dati. a InnoDB pu` interagire tranquillamente con tutti gli altri tipi di tabelle in MySQL. o 4.2.2.2 Limiti delle tabelle InnoDB Le tabelle InnoDB sono soggette alle seguenti limitazioni: • Non ` possibile creare pi` di 1000 colonne per tabella; e u • Su alcuni sistemi operativi le dimensione del tablespace non possono superare i 2 Gb; • La grandezza di tutti i file di log di InnoDB deve essere inferiore ai 4 Gb; • La grandezza minima di un tablespace ` di 10 Mb; e 68
    • 4.2 MySQL e Database GriF • Non possono essere creati indici di tipo FULLTEXT; • Le SELECT COUNT(*) su tabelle di grandi dimensioni possono essere molto lente. 4.2.2.3 Come creare un tabella di tipo InnoDB Per sapere se InnoDB ` presente nella propria installazione di MySQL, eseguire il e comando: SHOW VARIABLES LIKE ’have_innodb’; Questo comando mostra il valore della variabile have_innodb: se essa presenta il valore “YES”, InnoDB ` attivo. Inoltre, per avere una panoramica di tutti i tipi e di tabella attivi e non attivi ` possibile eseguire il comando: e SHOW ENGINES; La sintassi per creare una tabella di tipo InnoDB ` la seguente (due alternative): e CREATE TABLE prova (att1 VARCHAR, .....) ENGINE = InnoDB; CREATE TABLE prova (att1 VARCHAR .....) TYPE = InnoDB; Per convertire una tabella gi` esistente in InnoDB Type (due alternative): a ALTER TABLE prova ENGINE = InnoDB; ALTER TABLE prova TYPE = InnoDB; ` E comunque consigliato utilizzare la sintassi che prevede l’utilizzo della parola chiave ENGINE poich´ la parola chiave TYPE (utilizzata nelle vecchie versioni di e MySQL) ` ormai considerata obsoleta. e 4.2.3 Il Database di GriF Come accennato, GriF ha richiesto l’utilizzo di un Database il cui schema logico mostrato Figura 4.1. In particolare, vengono rappresentate le seguenti entit`: a • VO: le Organizzazioni Virtuali presenti in Grid che utilizzano GriF; 69
    • 4.2 MySQL e Database GriF Figura 4.1: Il Database di GriF. • VO User: l’insieme degli utenti (per VO) che utilizzano i servizi di GriF. Amministratori, Passive User, Active User, Software Developer e Service Provider sono le classi di appartenenza di ciascun utente, identificate in base al tipo di attivit` e all’utilizzo delle risorse computazionali da parte di a ogni utente; • Service: i servizi messi a disposizione da ogni VO. Nel nostro elabora- to di Tesi GriF mette a disposizione degli utenti un solo servizio che ` il e programma ABC. • Rules: ogni job sottomesso in griglia da un utente viene diviso in n subjob in base al valore della costante k. Tale costante viene scelta dalla VO e rende possibile la parametrizzazione di un job ossia la suddivisione del suo input file. La divisione genera quindi n file di input simili tra loro (alcuni para- metri restano inalterati). “Rules” di fatto contiene le informazioni relative ai subjob quali ad esempio l’URL, l’URI, lo stato, la data di sottomissione e la coda che lo ha processato. Lo stato di un job pu` essere Null (default), o Waiting, Ready, Scheduled, Running, Aborted e Done con gli ultimi due che 70
    • 4.2 MySQL e Database GriF ` decretano il successo o l’insuccesso di un job. E evidente che gli ultimi due stati sono “stati finali” dai quali il job non pu` pi` uscire mentre i primi o u cinque sono “stati intermedi” che il job assume temporaneamente. La tabel- la Rules non viene utilizzata esclusivamente come storico di eventi in tempo reale ma anche come container di regole utilizzate per rendere intelligente la sottomissione di nuovi subjob in base al successo o all’insuccesso dei job contenuti in essa; • Rank: questa tabella, insieme a “Rules”, rappresenta il cuore della base di dati come mostrato nel Sorgente 4.1. “Rank” memorizza le informazioni di ciascuna coda comprese la disponibilit`, la raggiungibilit`, le performan- a a ce e le CPU libere. I parametri vengono recuperati dalla griglia mediante wrapping comando Grid ’lcg-infosites --vo <VO_name> ce’. L’attributo last_performance di questa tabella viene calcolato utilizzando una funzione che considera i job totali contenuti nella tabella Rules (TO- TALJOBS ) eseguiti in ciascuna coda, classificandoli in base al loro successo (Done) o all’insuccesso (Aborted ). In particolare, la funzione utilizzata ` la e seguente: ￿￿ ￿ ￿ DON E F AILED · T OT ALJOBS LAST P ERF ORM AN CE = (4.1) T IM E(m) I valori di ciascuna variabile vengono inizializzati rispettivamente a 1000, 1, 1, 1 (DONE, FAILED, TOTALJOBS, TIME ) per evitare errori di inconsi- stenza. Time rappresenta il tempo medio di esecuzione di una certa coda cal- colato come sommatoria dei tempi di esecuzione di ogni subjob normalizzati secondo k. Nel dettaglio: 71
    • 4.2 MySQL e Database GriF n ￿ EXEC T IM E(m)j T IM E(m) = , j ￿= 0 (4.2) j=1 k(j) dove n corrisponde al numero totale dei subjob completati con successo e EXEC TIME ` il tempo parziale di esecuzione di un subjob. Questi attributi e vengono poi utilizzati successivamente per calcolare il Rank vero e proprio, ossia il punteggio che verr` assegnato ad ogni coda. a Sorgente 4.1: I sorgenti delle tabelle Rules e Rank del database GriF. 1 ... 2 ... 3 4 CREATE TABLE r u l e s 5 ( 6 url sjob VARCHAR( 2 0 0 ) NOT NULL, 7 uri sjob VARCHAR( 2 0 0 ) NOT NULL, 8 submit id MEDIUMINT NOT NULL, 9 u r l p a r e n t VARCHAR( 2 0 0 ) NOT NULL, 10 sub date TIMESTAMP( 1 4 ) DEFAULT 0 , 11 surface VARCHAR( 2 0 ) NOT NULL, 12 constant INT ( 2 ) NOT NULL, 13 queue VARCHAR( 2 0 0 ) NOT NULL, 14 state ENUM ( ’ Waiting ’ , ’ Ready ’ , ’ S c h e d u l e d ’ , ’ Running ’ , ’ Aborted ’ , ’ Done ’ ) , 15 t o t a l t i m e INT ( 2 0 ) , 16 get ENUM ( ’ no ’ , ’ y e s ’ ) , 17 18 PRIMARY KEY ( u r l s j o b , u r l p a r e n t ) , 19 FOREIGN KEY ( s u b m i t i d ) REFERENCES submit ( i d ) ON UPDATE CASCADE ON DELETE CASCADE, 20 FOREIGN KEY ( u r l p a r e n t ) REFERENCES submit ( u r l j o b ) ON UPDATE CASCADE ON DELETE CASCADE 21 ) 22 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 23 24 CREATE TABLE rank 25 ( 26 id MEDIUMINT NOT NULL AUTO INCREMENT PRIMARY KEY, 27 code VARCHAR( 2 0 0 ) UNIQUE KEY, 28 free cpu INT ( 1 0 ) , 29 ping FLOAT( 1 0 , 1 ) , 30 l a s t p e r f o r m a n c e FLOAT( 1 0 , 3 ) , 31 ranking FLOAT( 1 0 , 1 ) 32 ) 33 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 34 35 . . . ✆ ✠ 36 . . . 72
    • 4.3 Lo Scripting 4.3 Lo Scripting In informatica un linguaggio di scripting ` un linguaggio di programmazione in- e terpretato, destinato in genere a compiti di automazione del sistema (batch) o delle applicazioni (macro). I programmi sviluppati con questi linguaggi vengono detti Script, termine della lingua inglese utilizzato in ambito teatrale per indi- care il testo dove vengono tracciate le parti che devono essere interpretate dagli attori. Gli Script generalmente sono semplici programmi il cui scopo ` quello di e interagire con altri programmi molto pi` complessi in cui avvengono le operazioni u pi` significative. Gli script si distinguono dai programmi con cui interagiscono, i u quali solitamente sono implementati in un linguaggio differente e non interpretato. La Shell ` uno dei possibili interpreti dei comandi. Molto pi` che una semplice e u interfaccia tra il kernel del sistema operativo e l’utilizzatore, ` ad oggi anche un e vero e proprio potente linguaggio di programmazione. Lo script ` uno strumento e semplice da usare per creare applicazioni “incollando” insieme chiamate e coman- di di sistema, utility e file binari (eseguibili). Ad esempio, uno Shell Script pu` o utilizzare virtualmente l’intero repertorio di comandi, utility e strumenti di un sistema UNIX. Inoltre i comandi interni della shell, come i costrutti condizionali ed i cicli iterativi, forniscono ulteriore potenza e flessibilit` agli Script. a 4.3.1 Perch´ programmare in Shell e Imparare a scrivere degli Script non ` difficile ed ` veramente esigua la serie di e e operatori ed opzioni specifiche che ` necessario conoscere. La sintassi ` sempli- e e ce e chiara, come quella necessaria per eseguire e concatenare utility da riga di comando. Uno Shell Script ` un metodo rapido per costruire un prototipo di e un’applicazione complessa. Inoltre, eseguire anche una serie ridotta di istruzioni tramite uno Shell Script ` spesso un utile primo passo nello sviluppo di un proget- e to. In questo modo si pu` verificare e sperimentare la struttura di un’applicazione o e scoprirne i principali errori prima di procedere alla codifica finale in altro lin- guaggio come ad esempio C, C++, Java o Perl. Lo scripting di Shell ` attento e 73
    • 4.3 Lo Scripting alla filosofia classica UNIX e per questo ` altamente versatile ed eseguibile su ogni e piattaforma compatibile. Infine “programmare Shell” significa conoscere i siste- mi operativi, abilitando il programmatore ad eseguire operazioni particolarmente complesse in modo leggero e con il minimo sforzo. 4.3.2 Caratteristiche Nei linguaggi di scripting il programmatore generalmente si disinteressa delle ri- sorse di sistema che il programma finito dovr` consumare, demandando il tutto a al sistema stesso. Per risorse si intendono, per esempio, la gestione della allo- cazione e deallocazione della memoria, la conversione tra tipi, l’inizializzazione e la chiusura dell’applicazione. In questo modo si evitano molti problemi tipi- ci della programmazione tradizionale, che inoltre costringe il programmatore ad occuparsi di problematiche non sempre strettamente connesse con l’obiettivo del software che deve creare. L’utilizzo di un linguaggio di scripting permette quindi di concentrarsi direttamente sulla soluzione del problema. 4.3.3 Lo Script rank.sh L’obiettivo dello script rank.sh ` quello di raccogliere le informazioni sullo stato e delle code per poi poterle classificare attraverso la funzione Rank. Abbiamo gi` a detto che il Ranking ` una funzione che calcola un punteggio che viene assegnato e alla coda in base alle sue performance. Le code vengono messe a disposizione dalle organizzazioni di una VO (ad esempio l’Universit` degli Studi di Perugia della VO a COMPCHEM) che decide le politiche con cui esse vengono gestite, in accordo con le regole generali della Grid. Di fatto, ogni organizzazione mette a disposizione uno o pi` CE nel quale vengono abilitate una o pi` code di esecuzione. In questo u u modo si pu` scegliere di sottomettere i job in code differenti (tipicamente deno- o minate short, long e infinite) a seconda dei valori minimi e massimi delle policy utilizzate. Una volta che le code sono a disposizione della griglia possono essere analizzate. Qui entra in gioco lo script mostrato in figura Figura 4.2. I risultati dei test effettuati in griglia hanno evidenziato i difetti dei CE, componenti a volte 74
    • 4.3 Lo Scripting inadatti a fornire informazioni precise riguardo lo stato reale delle code. I CE sono responsabili della computazione dei job finch´ essi non sono terminati. Quando e un job raggiunge uno stato finale (Done o Aborted ) verr` creato automaticamente a (attraverso meccanismi di basso livello gestiti da GriF) il relativo file dei risulta- ti nell’SE che conferma la sua terminazione. Questa operazione istantanea (che dovrebbe determinare il raggiungimento di uno stato “Done” per il job) spesso non viene opportunamente rilevata dalla Grid che quindi introduce un notevole ed inutile ritardo. Per questo motivo lo script in questione interagisce direttamente con l’SE al fine di comprendere il reale stato di un job (in particolare se gi` in uno a stato “Done”) in un dato istante. 4.3.3.1 Descrizione dello Script L’unica interazione dello script con la Grid si verifica quando vengono recuperate le informazioni delle code dei CE attraverso il comando ’lcg-infosites --vo $VO ce’ come mostato nel Sorgente 4.2 (riga 12). L’output del comando viene poi salvato nel file denominato lcg-infosites.out che da qui in avanti verr` utilizzato per a eseguire tutte le operazioni. Dalla riga 15 alla riga 23, tramite i comandi awk e sed, vengono salvati i nomi delle code e il valore delle CPU libere nei file deno- minati code e freeCPU. Alla riga 29 si lancia un comando che cancella la tabella rank in modo tale da avere ogni volta un ambiente ripulito dai risultati delle pre- cedenti operazioni e quindi aggiornabile in tempo reale. Dalla riga 32 alla riga 43, vengono effettuate le scritture nella tabella. In particolare, per mantenere le corrispondenze tra ogni coda e il rispettivo valore di CPU libere ci siamo serviti della funzione AUTO_INCREMENT di MySQL utilizzandola come contatore. Dalla riga 46 alla riga 58, abbiamo calcolato il tempo medio necessario per raggiungere ogni coda, salvando poi i risultati nel file denominato ping.tmp. Per sfruttare al meglio le performance del programma ping abbiamo utilizzato le opzioni -i e -w che consentono, rispettivamente, di aspettare al pi` 2 decimi di secondo tra u ogni invio dei pacchetti ICMP e di diminuire il valore del timeout. Inoltre ` sta- e 75
    • 4.3 Lo Scripting ta utilizzata l’opzione -c che, inviando un massimo di cinque pacchetti ICMP di tipo “ECHO RESPONSE”, garantisce un’esecuzione rapida del comando. Nella riga 61 viene lanciata una query SQL che rimuove dalla tabella tutte le code con valori nulli in corrispondenza dei campi ping e free_cpu. Dalla riga 64 fino alla 115 vengono poi calcolate le ultime performance della coda attraverso la funzione LAST_PERFORMANCE (4.1) gi` illustrata nel paragrafo 4.2.3. Dalla riga 138 fino al a termine dello script viene finalmente calcolato il Rank per ogni coda utilizzando la seguente funzione: RAN K (x, y, z, w) = x (α · y + (z + β) (w + γ)) (4.3) dove: • x indica se la coda ` up o down e pu` assumere rispettivamente i valori 1 o e o 0; • y rappresenta la funzione last_performance; • z rappresenta il numero di CPU libere per ogni coda; • w rappresenta il tempo di raggiungibilit` relativo ad ogni coda; a • α, β e γ rappresentano i pesi che consentono di aumentare o diminuire l’importanza di ogni componente della funzione. Pi` il valore risultante sar` alto, maggiori saranno le performance e quindi mi- u a gliore il suo Rank della coda considerata. A questo punto l’inserimento nella tabella rank ` completato e si ha la certezza di avere a disposizione tutte le code e raggiungibili. Da notare che per eseguire lo Script in questione viene utilizzato crontab, un processo di sistema che consente la pianificazione di comandi UNIX che poi vengono mandati in esecuzione periodicamente, ad intervalli di tempo. In particolare rank.sh viene eseguito ogni 15 minuti. 76
    • 4.3 Lo Scripting Sorgente 4.2: Lo script per l’analisi delle code rank.sh. 1 # !/ bin / bash 2 3 USER=” r o b o t @ u i . hpc . unipg . i t ” 4 VO=”compchem” 5 INFOSITES=” l c g − i n f o s i t e s −−vo $VO c e ” 6 RANKING=” / v a r / l i b / tomcat5 / programs /LAST GRIF/ ” 7 MYSQL mysql −u r o o t −−password=<password> −D g r i f −e ” =” 8 9 # ## MAIN ### 10 11 # Recupero le informazioni delle code 12 s s h $USER ”$INFOSITES” > ”$RANKING” l c g − i n f o s i t e s . out 13 14 # CODE 15 awk ’ { p r i n t $6 } ’ ”$RANKING” l c g − i n f o s i t e s . out > ”$RANKING” code . tmp 16 s e d −e ’ 1 , / ˆ $ /d ’ −e ’ / ˆ [ ] ∗ $ /d ’ ”$RANKING” code . tmp > ”$RANKING” code 17 rm ”$RANKING” code . tmp 18 19 # FREE CPU 20 awk ’ { p r i n t $2 } ’ ”$RANKING” l c g − i n f o s i t e s . out > ”$RANKING” freeCPU . tmp 21 s e d −e ’ 1 , / ˆ $ /d ’ −e ’ / ˆ [ ] ∗ $ /d ’ ”$RANKING” freeCPU . tmp > ”$RANKING” freeCPU 22 rm ”$RANKING” freeCPU . tmp 23 rm ”$RANKING” l c g − i n f o s i t e s . out 24 25 CODE=‘ c a t ”$RANKING” code ‘ 26 FREE=‘ c a t ”$RANKING” freeCPU ‘ 27 28 # Comando che ripulisce ogni volta la tabella rank 29 $MYSQL ”TRUNCATE TABLE r a n k a p p ; ” 30 31 # Inserisce le code nella tabella rank_app 32 f o r i i n $CODE; 33 do 34 $MYSQL ”INSERT INTO r a n k a p p ( code ) VALUES( ’ $ i ’ ) ; ” 35 done 36 37 # Inserisce le free cpu nella tabella rank_app 38 z=1 39 f o r j i n $FREE 40 do 41 $MYSQL ”UPDATE r a n k a p p SET f r e e c p u =’ $ j ’ WHERE i d =’ $z ’ ; ” 42 l e t ” z+=1” 43 done 44 45 # Calcola il ping e lo inserisce nella tabella rank_app 46 awk −F ’ : ’ ’ { p r i n t $1 } ’ ”$RANKING” code > ”$RANKING” p i n g c o d e . tmp 47 PING CODE=‘ c a t ”$RANKING” p i n g c o d e . tmp ‘ 48 z=1 49 f o r i i n $PING CODE 50 do 51 s s h $USER ” p i n g − i 0 . 2 −c 5 −w 1 $ i ” > ”$RANKING” p i n g . tmp 52 PING=$ ( s e d −n / r t t /p ”$RANKING” p i n g . tmp | awk −F ’= ’ ’ { p r i n t $2 } ’ | awk −F ’ / ’ ’ { p r i n t $2 } ’ ) 53 $MYSQL ”UPDATE r a n k a p p SET p i n g =’$PING ’ WHERE i d =’ $z ’ ; ” 54 l e t ” z+=1” 55 done 56 57 rm ”$RANKING” p i n g c o d e . tmp 58 rm ”$RANKING” p i n g . tmp 59 60 # Rimuove le code dove free_cpu =0 e ping =0.0 77
    • 4.3 Lo Scripting 61 $MYSQL ”DELETE FROM r a n k a p p WHERE f r e e c p u = ’0 ’ o r p i n g = ’ 0 . 0 ’ ; ” 62 63 # Calcolo L A S T_ P E R F O R M A N C E 64 $MYSQL ”SELECT code FROM r a n k a p p ; ” > ”$RANKING” c o d e r a n k . tmp 65 s e d −e ’ 1 d ’ ”$RANKING” c o d e r a n k . tmp > ”$RANKING” c o d e r a n k . out 66 rm ”$RANKING” c o d e r a n k . tmp 67 CODE RANK=‘ c a t ”$RANKING” c o d e r a n k . out ‘ 68 69 CMD ( command ) =$ 70 u=1 71 # Per ogni coda in rank .. 72 f o r i i n $CODE RANK 73 do 74 QUEUE ( s e d −n ” $u ”p ”$RANKING” c o d e r a n k . out | awk ’ { p r i n t $1 } ’ ) =$ 75 # Conto i job Done computati dalla coda 76 F=$ ($MYSQL ”SELECT COUNT( ∗ ) AS F a t t i FROM r u l e s WHERE s t a t e =’Done ’ and queue =’$QUEUE’ ; ” ) 77 # Comando che elimina " Fatti di n " e restituisce solo il valore 78 FATTI=‘ echo $F | s e d ’ s /S∗ s ∗ / / ’ ‘ 79 # Calcolo il tempo totale servito a computare i job Done 80 TEMP ($MYSQL ”SELECT SUM( ( t o t a l t i m e / c o n s t a n t ) ) AS Time from r u l e s WHERE =$ queue =’$QUEUE’ AND s t a t e =’Done ’ ; ” ) 81 TEMPO=‘ echo $TEMP | s e d ’ s /S∗ s ∗ / / ’ ‘ 82 i f [ ”$TEMPO” == ”NULL” ] 83 then 84 TEMPO 0 ” =” 85 else 86 TEMPO=‘ echo ” s c a l e =3; $TEMPO / $FATTI” | bc ‘ 87 fi 88 # Conto i job totali computati dalla coda 89 TOT ($MYSQL ”SELECT COUNT( ∗ ) AS T o t a l i FROM r u l e s WHERE queue =’$QUEUE’ ; ” =$ | awk ’ { p r i n t $1 } ’ ) 90 TOTALI=‘ echo $TOT | s e d ’ s /S∗ s ∗ / / ’ ‘ 91 # Conto i job Aborted computati dalla coda 92 A=$ ($MYSQL ”SELECT COUNT( ∗ ) AS A b o r t i t i FROM r u l e s WHERE s t a t e =’ Aborted ’ and queue =’$QUEUE’ ; ” ) 93 ABORTITI=‘ echo $A | s e d ’ s /S∗ s ∗ / / ’ ‘ 94 i f [ ”$TOTALI” −eq 0 ] 95 then 96 FATTI=1000 97 ABORTITI=1 98 TOTALI=1 99 TEMPO=1 100 fi 101 i f [ ”$FATTI” −eq 0 ] 102 then 103 FATTI=‘ e x p r $FATTI + 1 ‘ 104 fi 105 i f [ ”$ABORTITI” −eq 0 ] 106 then 107 ABORTITI=‘ e x p r $ABORTITI + 1 ‘ 108 fi 109 # Funzione che calcola l a s t _ p e r f o r m a n c e 110 LAST PERFORMANCE=‘ echo ” s c a l e =4; ( ( ( ( $FATTI) / ($ABORTITI) ) ∗ $TOTALI) / $TEMPO) ” | bc ‘ 111 $MYSQL ”UPDATE r a n k a p p SET l a s t p e r f o r m a n c e =’$LAST PERFORMANCE’ WHERE code =’$QUEUE’ ; ” 112 l e t ”u+=1” 113 done 114 115 rm ”$RANKING” c o d e r a n k . out 116 78
    • 4.3 Lo Scripting 117 # Funzione che calcola il ranking 118 ALFA=100000 119 BETA=1 120 GAMMA=1 121 $MYSQL ”SELECT code , ($ALFA∗ l a s t p e r f o r m a n c e +(($BETA+f r e e c p u ) ∗ ($GAMMA i n g ) ) ) AS r a n k i n g +p FROM r a n k a p p ; ” > ”$RANKING” r a n k i n g . tmp 122 123 s e d −e ’ 1 d ’ ”$RANKING” r a n k i n g . tmp > ”$RANKING” r a n k i n g . out 124 125 CMD ( command ) =$ 126 h=1 127 R OUT=‘ c a t ”$RANKING” r a n k i n g . out ‘ 128 # Per ogni coda in rank .. 129 f o r k i n $R OUT 130 do 131 QUEUE ( s e d −n ” $h ”p ”$RANKING” r a n k i n g . out | awk ’ { p r i n t $1 } ’ ) =$ 132 RANK ( s e d −n ” $h ”p ”$RANKING” r a n k i n g . out | awk ’ { p r i n t $2 } ’ ) =$ 133 # Inserisco il rank della coda 134 $MYSQL ”UPDATE r a n k a p p SET r a n k i n g =’$RANK’ WHERE code =’$QUEUE’ ; ” 135 l e t ”h+=1” 136 done 137 138 rm ”$RANKING” r a n k i n g . tmp 139 rm ”$RANKING” r a n k i n g . out 140 rm ”$RANKING” freeCPU 141 rm ”$RANKING” code 142 143 $MYSQL ”CREATE TABLE IF NOT EXISTS rank LIKE r a n k a p p ; ” 144 $MYSQL ”TRUNCATE TABLE rank ; ” ✆ ✠ 145 $MYSQL ”INSERT INTO rank (SELECT ∗ FROM r a n k a p p ) ; ” 4.3.4 Lo Script state.sh L’obiettivo dello script state.sh, mostrato nel Sorgente 4.3, ` quello di aggiun- e gere regole di ottimizzazione nella tabella rules. Abbiamo anticipato che rules, oltre a contenere le informazioni sui job Done e Aborted, viene utilizzata come repository temporaneo per aggiornare gli stati intermedi dei job. Tuttavia, gli aggiornamenti hanno un ruolo secondario rispetto al vero scopo di questa tabella che ` quello di fornire a GriF una collezione di regole per ottimizzare la scelta e delle code. Nel caso, infatti, che un job venga sottomesso in griglia, GriF, cono- scendo le caratteristiche del job, ha il compito di selezionare una coda tra quelle disponibili in rules. Un passaggio chiave ` perci` quello di individuare quelle e o code che in passato hanno completato un job simile a quello appena sottomes- so. Ci` consentir` di premiare quelle code che, a parit` o comunque per Ranking o a a molto performanti, hanno eseguito job simili. Il confronto avviene in base a due 79
    • 4.3 Lo Scripting parametri: la superficie scelta dall’utente, che deve coincidere, e la costante k uti- lizzata per la suddivisione dei job (con uno scostamento di k di ±2). Se la query risultante generata dal Framework fornisce un risultato significa che esistono una serie di job cui corrisponde un esito positivo del confronto. In questo modo il Framework sar` in grado di selezionare, tra le code migliori, quelle dove sono stati a eseguiti job simili a quello attuale. Si ricorda che al crescere del numero di regole (ovvero al crescere dei job eseguiti con successo da GriF) cresce la probabilit` di a trovare code adeguatamente performanti. Anche per state.sh abbiamo costruito una sequenza di operazioni per evitare il pi` possibile l’interazione con la Grid u come illustrato nello schema generale di funzionamento del YP di GriF riportato in Figura 4.2. Figura 4.2: Lo schema generale di funzionamento del YP di GriF e le interazioni con la Grid. 80
    • 4.3 Lo Scripting 4.3.4.1 Descrizione dello Script La tabella rules contiene esclusivamente subjob. Come accennato in precedenza, ogni subjob include il riferimento al job padre. Lo Script deve aggiornare le infor- mazioni dei subjob discendenti da job padri con stato Null. Null infatti ` lo stato e che il job presenta come default. Se lo stato di un job padre ` Null significa che i e suoi subjob (o una parte di essi) non sono ancora stati completati. Dalla riga 13 alla riga 21 vengono recuperate le informazioni dei job padri dividendole in due file denominati rispettivamente url_job.out e insert_rules.out. Il primo file contiene la lista dei job padri con stato Null mentre il secondo file contiene tutte le informazioni da replicare nei job figli. Dalla riga 24 alla riga 40 viene lancia- to il comando glite-job-status per ogni URL presente nel file url_job.out. L’output di questo comando mostra tutti i subjob in cui il job padre ` stato fram- e mentato. Dalla riga 42 alla riga 60 vengono dichiarati una serie di vettori utili al salvataggio delle informazioni sui subjob derivanti dall’esecuzione del precedente comando. Da questo punto in avanti, lo Script effettua una sequenza di query che aggiornano rules assicurandosi di non ricontrollare job gi` esaminati in pre- a cedenza. Infatti lo Script deve aggiornare gli stati dei subjob discendenti da job padri appena sottomessi ma oltre a ci` deve anche controllare periodicamente lo o stato dei subjob vecchi. Per fare ci`, dalla riga 82 alla riga 101, viene controllata o la presenza di file di risultati (estensione .gz) direttamente nell’SE. Questa ope- razione ` rapida ed efficace ed elimina le imprecisioni derivanti dall’interrogazione e circa lo stato dei job effettuata alla Grid. Il controllo dello stato di un job (Done o Aborted ) si basa sull’esistenza e sulla dimensione degli eventuali file dei risultati, come segue: • se il file .gz esiste e la dimensione ` = 0 il job ` terminato con un insuccesso e e (stato Aborted ); • se il file .gz esiste e la dimensione ` ￿= da 0 il job ` terminato con successo e e (stato Done); 81
    • 4.3 Lo Scripting Dalla riga 106 alla fine dello script viene effettuata una sequenza di query per controllare l’integrit` delle informazioni precedentemente contenute nel Database a con quelle appena raccolte. Si ricorda infatti che le informazioni derivanti dall’SE hanno la priorit` rispetto a tutto il resto (in quanto pi` affidabili). Anche in a u questo caso lo Script in questione viene eseguito mediante il comando crontab. In particolare, lo Script state.sh viene lanciato ogni 60 minuti. Sorgente 4.3: Lo script di ottimizzazione state.sh. 1 # !/ bin / bash 2 3 USER=” r o b o t @ u i . hpc . unipg . i t ” 4 JOBSTATUS=” g l i t e −job−s t a t u s ” 5 STATUS=” / v a r / l i b / tomcat5 / programs /LAST GRIF/ ” 6 MYSQL mysql −u r o o t −−password=<password> −D g r i f −e ” =” 7 URL SJOB=” i n f o ” 8 STATUS STRING=” C u r r e n t ” 9 QUEUE D e s t i n a t i o n ” =” 10 11 # ## MAIN ### 12 13 # seleziono gli url dei job padri 14 $MYSQL ”SELECT u r l j o b FROM submit WHERE s t a t e =’ Null ’ AND j o b t y p e =’ P a r a m e t r i c ’ ; ” > ”$STATUS” u r l j o b . tmp 15 s e d −e ’ 1 d ’ ”$STATUS” u r l j o b . tmp > ”$STATUS” u r l j o b . out 16 rm ”$STATUS” u r l j o b . tmp 17 18 $MYSQL ”SELECT id , username , s u r f a c e , c o n s t a n t , s u b d a t e FROM submit WHERE s t a t e =’ Null ’ AND j o b t y p e =’ P a r a m e t r i c ’ ; ” > ”$STATUS” i n s e r t r u l e s . tmp 19 s e d −e ’ 1 d ’ ”$STATUS” i n s e r t r u l e s . tmp | s e d s / : / / g | s e d s /−//g > ”$STATUS” r u l e s . out 20 c a t ”$STATUS” r u l e s . out | awk −F” n” ’ { p r i n t s u b s t r ( $1 , 1 , ( l e n g t h ( $1 ) −7) ) s u b s t r ( $1 , ( l e n g t h ( $1 ) −5) , l e n g t h ( $1 ) ) } ’ > ”$STATUS” i n s e r t r u l e s . out 21 rm ”$STATUS” i n s e r t r u l e s . tmp 22 23 # faccio il glite - job - status per ogni url padre 24 CMD ( command ) =$ 25 URL=‘ c a t ”$STATUS” u r l j o b . out | t r −d ’ 0 1 5 ’ ‘ 26 z=0 27 f o r i i n $URL 28 do 29 s s h $USER $JOBSTATUS $ i > ”$STATUS” j o b s t a t u s . out 30 s e d −e ’ 1 , 1 1 d ’ ”$STATUS” j o b s t a t u s . out > ”$STATUS” j o b s t a t u s . tmp 31 URLSJ=$ ( s e d −n /$URL SJOB/p ”$STATUS” j o b s t a t u s . tmp | awk ’ { p r i n t $7 } ’ ) 32 STATE=$ ( s e d −n /$STATUS STRING/p ”$STATUS” j o b s t a t u s . tmp | awk ’ { p r i n t $3 } ’ ) 33 Q=$ ( s e d −n /$QUEUE/p ”$STATUS” j o b s t a t u s . a z z | awk ’ { p r i n t $2 } ’ ) 34 ID=$ ( awk ’ { p r i n t $1 } ’ ”$STATUS” i n s e r t r u l e s . out ) 35 USER=$ ( awk ’ { p r i n t $2 } ’ ”$STATUS” i n s e r t r u l e s . out ) 36 SURFACE=$ ( awk ’ { p r i n t $3 } ’ ”$STATUS” i n s e r t r u l e s . out ) 37 CONSTANT ( awk ’ { p r i n t $4 } ’ ”$STATUS” i n s e r t r u l e s . out ) =$ 38 SUB DATE=$ ( awk ’ { p r i n t $5 } ’ ”$STATUS” i n s e r t r u l e s . out ) 39 rm ”$STATUS” j o b s t a t u s . tmp 40 rm ”$STATUS” j o b s t a t u s . out 41 42 d e c l a r e −a URLVECTOR 82
    • 4.3 Lo Scripting 43 declare −a STATEVECTOR 44 declare −a QUEUEVECTOR 45 declare −a DATEVECTOR 46 declare −a SURFVECTOR 47 declare −a CONSTVECTOR 48 declare −a IDVECTOR 49 declare −a USERVECTOR 50 51 IDVECTOR=($ID ) 52 USERVECTOR=($TMPUSER) 53 DATEVECTOR=($SUB DATE) 54 SURFVECTOR=($SURFACE) 55 CONSTVECTOR=($CONSTANT) 56 URLVECTOR=($URLSJ ) 57 STATEVECTOR=($STATE) 58 QUEUEVECTOR=($Q) 59 N=$ { # URLVECTOR [*]} 60 N=‘ e x p r $N − 1 ‘ 61 # Comando che serve per vedere se ho gia ’ controllato gli url padri 62 INSIDE=$ ($MYSQL” SELECT count ( ∗ ) AS count FROM r u l e s WHERE u r l p a r e n t =’ $ i ’ ; ” ) 63 COUNT=‘ echo $INSIDE | s e d ’ s /S∗ s ∗ / / ’ ‘ 64 i f [ ”$COUNT” −eq 0 ] 65 then 66 f o r j i n ‘ s e q 0 $N ‘ 67 do 68 # Toglie il . f dall ’ estensione della superfice 69 SUP=$ ( echo $ {SURFVECTOR[ z ] } | t r ” . ” ” n” | s e d 2d ) 70 # Costruisce l ’ uri che ci aspettiamo 71 URI SJOB=”ABC ” $ {USERVECTOR[ z ] } ” ”− −” ” ” $ {DATEVECTOR[ z ] } ” ” . ” ”$SUP” ” . x” ” . out−” ” $ j ” ” . gz ” 72 # Query di inserimento ( la fa solo la prima volta per i sub_job dei job nuovi ) 73 $MYSQL ”INSERT INTO r u l e s VALUES ( ’ $ {URLVECTOR[ j ] } ’ , ’ $URI SJOB ’ , ’ $ {IDVECTOR[ z ] } ’ , ’ $ i ’ , ’ $ {DATEVECTOR[ z ] } ’ , ’ $ {SURFVECTOR[ z ] } ’ , ’ $ {CONSTVECTOR[ z ] } ’ , ’ $ {QUEUEVECTOR[ j ] } ’ , ’ $ {STATEVECTOR[ j ] } ’ , ’ ’ , ’ no ’ ) ; ” 74 done 75 else 76 f o r j i n ‘ s e q 0 $N ‘ 77 do 78 # Toglie il . f dall ’ estensione della superfice 79 SUP=$ ( echo $ {SURFVECTOR[ z ] } | t r ” . ” ” n” | s e d 2d ) 80 URI SJOB=”ABC ” $ {USERVECTOR[ z ] } ” ”− −” ” ” $ {DATEVECTOR[ z ] } ” ” . ” ”$SUP” ” . x” ” . out−” ” $ j ” ” . gz ” 81 # Calcolo la dimensione dei file . gz che recupero dall ’ SE 82 DIMENSIONE=$ ( s s h $USER / a l t b o o t / opt / g l i t e / b i n / g l i t e −g r i d f t p −l s − l g s i f t p : / / s e . hpc . unipg . i t /tmp/ | g r e p $URI SJOB | awk ’ { p r i n t $5 } ’ ) 83 i f [ −z ”$DIMENSIONE” ] 84 then 85 DIMENSIONE=−1 86 fi 87 i f [ ”$DIMENSIONE” −eq 0 ] 88 then 89 $MYSQL ”UPDATE r u l e s SET s t a t e =’ Aborted ’ WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ AND ( s t a t e =’Ready ’ OR s t a t e =’ Scheduled ’ OR s t a t e =’Running ’ OR s t a t e =’ Waiting ’ ) ; ” 90 fi 91 i f [ ”$DIMENSIONE” −g t 0 ] 92 then 93 ATTUALE=‘ d a t e ”+%Y m −% −%d % H:%M:%S” ‘ 83
    • 4.3 Lo Scripting 94 T=$ ($MYSQL”SELECT s u b d a t e from r u l e s WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ” ) 95 TIME DB=‘ echo $T | s e d ’ s /S∗ s ∗ / / ’ ‘ 96 MIN=$ ($MYSQL ”SELECT TIMESTAMPDIFF(MINUTE, ’ $TIME DB ’ , ’$ATTUALE’ ) AS MIN ; ” ) 97 MINUTI=‘ echo $MIN | s e d ’ s /S∗ s ∗ / / ’ ‘ 98 $MYSQL ”UPDATE r u l e s SET s t a t e =’Done ’ , t o t a l t i m e =’$MINUTI ’ WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ AND ( s t a t e =’Ready ’ OR s t a t e =’ Scheduled ’ OR s t a t e =’Running ’ OR s t a t e =’ Waiting ’ ) ; ” 99 fi 100 i f [ ”$DIMENSIONE” −eq −1 ] 101 then 102 # Query di update del campo state dei sub_job dei padri gia ’ presi p re ce de n te me nt e 103 $MYSQL ”UPDATE r u l e s SET s t a t e =’$ {STATEVECTOR[ j ] } ’ WHERE u r l s j o b =’VECTOR[ j ] } ’ AND ( s t a t e =’Ready ’ OR s t a t e =’ Scheduled ’ OR s t a t e =’Running ’ OR s t a t e =’ Waiting ’ ) ; ” 104 fi 105 # Controllo integrita ’ DB con SE 106 URI DA =$ ($MYSQL ” S e l e c t u r i s j o b from r u l e s where u r l s j o b =’$ {URLVECTOR[ j ] } ’ ; ” ) 107 URI DA CONTROLLARE=‘ echo $URI DA | s e d ’ s /S∗ s ∗ / / ’ ‘ 108 STATO DA =$ ($MYSQL ” S e l e c t s t a t e from r u l e s where u r l s j o b =’$ {URLVECTOR[ j ] } ’ ; ” ) 109 STATO DA CONTROLLARE=‘ echo $STATO DA | s e d ’ s /S∗ s ∗ / / ’ ‘ 110 DIM=$ ( s s h $USER / a l t b o o t / opt / g l i t e / b i n / g l i t e −g r i d f t p −l s − l g s i f t p : / / s e . hpc . unipg . i t /tmp/ | g r e p $URI DA CONTROLLARE | awk ’ { p r i n t $5 } ’ ) 111 i f [ −z ”$DIM” ] 112 then 113 DIM=−1 114 fi 115 i f [ ”$DIM” − l t 0 ] && [ ”$STATO DA CONTROLLARE” == ”Done” ] 116 then 117 $MYSQL ”UPDATE r u l e s SET s t a t e =’ Aborted ’ WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ; ” 118 fi 119 i f [ ”$DIM” −g t 0 ] && [ ”$STATO DA CONTROLLARE” == ” Aborted ” ] 120 then 121 ATTUALE=‘ d a t e ”+%Y m −% −%d % H:%M:%S” ‘ 122 T=$ ($MYSQL”SELECT s u b d a t e from r u l e s WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ” ) 123 TIME DB=‘ echo $T | s e d ’ s /S∗ s ∗ / / ’ ‘ 124 MIN=$ ($MYSQL ”SELECT TIMESTAMPDIFF(MINUTE, ’ $TIME DB ’ , ’$ATTUALE’ ) AS MIN ; ” ) 125 MINUTI=‘ echo $MIN | s e d ’ s /S∗ s ∗ / / ’ ‘ 126 $MYSQL ”UPDATE r u l e s SET s t a t e =’Done ’ , t o t a l t i m e =’$MINUTI ’ WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ; ” 127 fi 128 i f [ ”$DIM” −g t 0 ] && [ ”$STATO DA CONTROLLARE” == ”Done” ] 129 then 130 ATTUALE=‘ d a t e ”+%Y m −% −%d % H:%M:%S” ‘ 131 T=$ ($MYSQL”SELECT s u b d a t e from r u l e s WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ” ) 132 TIME DB=‘ echo $T | s e d ’ s /S∗ s ∗ / / ’ ‘ 133 MIN=$ ($MYSQL ”SELECT TIMESTAMPDIFF(MINUTE, ’ $TIME DB ’ , ’$ATTUALE’ ) AS MIN ; ” ) 134 MINUTI=‘ echo $MIN | s e d ’ s /S∗ s ∗ / / ’ ‘ 135 $MYSQL ”UPDATE r u l e s SET t o t a l t i m e =’$MINUTI ’ WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ; ” 136 fi 137 i f [ ”$DIM” −eq 0 ] && [ ”$STATO DA CONTROLLARE” == ”Done” ] 84
    • 4.3 Lo Scripting 138 then 139 $MYSQL ”UPDATE r u l e s SET s t a t e =’ Aborted ’ WHERE u r l s j o b =’$ {URLVECTOR[ j ] } ’ ; ” 140 fi 141 done 142 fi 143 l e t ” z+=1” 144 J=$ ($MYSQL ”SELECT count ( ∗ ) FROM r u l e s WHERE u r l p a r e n t =’ $ i ’ ; ” ) 145 JOB=‘ echo $J | s e d ’ s /S∗ s ∗ / / ’ ‘ 146 echo $JOB 147 D=$ ($MYSQL ”SELECT count ( ∗ ) FROM r u l e s WHERE u r l p a r e n t =’ $ i ’ AND s t a t e =’Done ’ ; ” ) 148 DONE=‘ echo $D | s e d ’ s /S∗ s ∗ / / ’ ‘ 149 echo $DONE 150 A=$ ($MYSQL ”SELECT count ( ∗ ) FROM r u l e s WHERE u r l p a r e n t =’ $ i ’ AND s t a t e =’ Aborted ’ ; ” ) 151 ABORT=‘ echo $A | s e d ’ s /S∗ s ∗ / / ’ ‘ 152 echo $ABORT 153 K=‘ e x p r $DONE + $ABORT‘ 154 i f [ $ABORT −eq $JOB ] 155 then 156 $MYSQL ”UPDATE submit SET s t a t e =’ Aborted ’ WHERE u r l j o b =’ $ i ’ ; ” 157 fi 158 i f [ $K −eq $JOB ] && [ $DONE −ne 0 ] 159 then 160 $MYSQL ”UPDATE submit SET s t a t e =’Done ’ WHERE u r l j o b =’ $ i ’ ; ” 161 fi 162 done 163 164 rm ”$STATUS” r u l e s . out 165 rm ”$STATUS” i n s e r t r u l e s . out ✆ ✠ 166 rm ”$STATUS” u r l j o b . out 85
    • Capitolo 5 Conclusioni e Future Work Anche da giovane non riuscivo a condividere l’opinione che, se la conoscenza ` pericolosa, la soluzione ideale risiede nell’ignoranza. e Mi ` sempre parso, invece, che la risposta autentica a questo problema e stia nella saggezza. Non ` saggio rifiutarsi di affrontare il pericolo, e anche se bisogna farlo con la dovuta cautela. Dopotutto, ` questo il senso e della sfida posta all’uomo fin da quando un gruppo di primati si evolse nella nostra specie. Qualsiasi innovazione tecnologica pu` essere pericolosa: o il fuoco lo ` stato fin dal principio, e il linguaggio ancor di pi`; e u si pu` dire che entrambi siano ancora pericolosi al giorno d’oggi, o ma nessun uomo potrebbe dirsi tale senza il fuoco e senza la parola. - Isaac Asimov - Il lavoro svolto in questo elaborato di Tesi ha portato allo sviluppo di un Framework collaborativo per la sottomissione ottimizzata di job parametrici in ambiente Grid. In particolare sono stati analizzati gli aspetti che hanno porta- to al miglioramento delle performance delle code, fin qui anello particolarmente debole dell’architettura della Grid presa in esame. Questo lavoro si basa essen- zialmente sull’implementazione di due script che interagiscono con il Database di GriF che esenta tale Framework da continue interazioni con la griglia. Questo ha comportato il fatto che la prima parte del presente lavoro sia stato dedicato all’analisi dettagliata della Grid di produzione del progetto EGEE. Sta diventando infatti sempre pi` evidente che la tecnologia Grid rappresenter` il detonatore di u a una profonda rivoluzione organizzativa ed una forte spinta per la reale convergen- za di tutte quelle metodologie scientifiche e di calcolo di molti campi della ricerca. Nella seconda parte invece il comportamento dei job ` stato analizzato al fine di e 86
    • 5. Conclusioni e Future Work studiare e mettere a punto delle strategie per rendere performanti le esecuzioni nelle code Grid. I due Script prodotti (rank.sh e state.sh) sono i componenti essenziali che rendono il Framework considerato intelligente e capace di avviare in- dagini riguardanti la tipologia degli utenti che lo utilizzano. Il presente elaborato di Tesi troverebbe, perci`, un naturale sbocco nello sviluppo di un ulteriore com- o ponente o modulo capace di eseguire profilazioni ripartite per modelli di utilizzo allo scopo di calcolare indici di Qualit` relativi alle attivit` degli utenti (Quality a a of User, o QoU), a partire dalle informazioni registrate dai sensori di GriF circa il comportamento ed i risultati ottenuti dagli utenti. Solo una adeguata profilazione (e quindi il calcolo di una accurata QoU) pu` consentire infatti alle VO, quale ad o esempio COMPCHEM, di raggiungere importanti obiettivi come la creditizzazione degli utenti e in fin dei conti la sua stessa sostenibilit` in Grid. a 87
    • Appendice A Sorgenti A.1 grif.sql 1 2 -- DATABASE grif -- 3 4 -- cancella le tabelle -- 5 6 DROP TABLE IF EXISTS r u l e s CASCADE; 7 DROP TABLE IF EXISTS submit CASCADE; 8 DROP TABLE IF EXISTS own CASCADE; 9 DROP TABLE IF EXISTS s e r v i c e CASCADE; 10 DROP TABLE IF EXISTS v o u s e r CASCADE; 11 DROP TABLE IF EXISTS vo CASCADE; 12 DROP TABLE IF EXISTS rank CASCADE; 13 14 -- crea le tabelle -- 15 16 -- TABLE rank 17 18 CREATE TABLE rank 19 ( 20 id MEDIUMINT NOT NULL AUTO INCREMENT PRIMARY KEY, 21 code VARCHAR( 2 0 0 ) UNIQUE KEY, 22 free cpu INT ( 1 0 ) , 23 ping FLOAT( 1 0 , 1 ) , 24 l a s t p e r f o r m a n c e FLOAT( 1 0 , 3 ) , 25 ranking FLOAT( 1 0 , 1 ) 26 ) 27 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 28 29 -- TABLE vo 30 31 CREATE TABLE vo 32 ( 33 name VARCHAR( 2 0 ) PRIMARY KEY, 34 admin VARCHAR( 2 0 ) 35 ) 36 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 37 38 -- TABLE vouser 39 40 CREATE TABLE v o u s e r 88
    • A.1 grif.sql 41 ( 42 username VARCHAR( 2 0 ) NOT NULL, 43 name vo VARCHAR( 2 0 ) NOT NULL, 44 passwd VARCHAR( 5 0 ) NOT NULL, 45 salt VARCHAR( 5 0 ) NOT NULL, 46 name VARCHAR( 3 0 ) NOT NULL, 47 surname VARCHAR( 3 0 ) NOT NULL, 48 address VARCHAR( 1 0 0 ) NOT NULL, 49 t e l e p h o n e VARCHAR( 1 5 ) NOT NULL, 50 mail VARCHAR( 3 0 ) NOT NULL, 51 type ENUM ( ’ admin ’ , ’ p a s s i v e u s e r ’ , ’ a c t i v e u s e r ’ , ’ software developer ’ , ’ service provider ’ ) , 52 err sin INT ( 5 ) , 53 e r r s e m 1 INT ( 5 ) , 54 e r r s e m 2 INT ( 5 ) , 55 e r r s e m 3 INT ( 5 ) , 56 num comp INT ( 5 ) , 57 e r r c o m p INT ( 5 ) , 58 59 PRIMARY KEY ( username , name vo ) , 60 FOREIGN KEY ( name vo ) REFERENCES vo ( name ) ON UPDATE CASCADE ON DELETE CASCADE 61 ) 62 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 63 64 -- TRIGGER validazione mail 65 66 -- INSERT 67 68 DELIMITER // 69 70 DROP TRIGGER IF EXISTS c h e c k m a i l // 71 72 CREATE TRIGGER c h e c k m a i l 73 BEFORE INSERT ON v o u s e r 74 FOR EACH ROW 75 BEGIN 76 IF NEW. m a i l NOT REGEXP 77 ’ ˆ [ a−z0 −9 . −]+@[ a−z0 −9 − ] + . [ a−z0 −9 . −]+ $ ’ THEN 78 SET NEW. m a i l = ’ e−mail@not . ok ’ ; 79 END IF ; 80 END// 81 82 -- UPDATE 83 84 DROP TRIGGER IF EXISTS c h e c k m a i l u p // 85 86 CREATE TRIGGER c h e c k m a i l u p 87 AFTER UPDATE ON v o u s e r 88 FOR EACH ROW 89 BEGIN 90 IF NEW. m a i l NOT REGEXP 91 ’ ˆ [ a−z0 −9 . −]+@[ a−z0 −9 − ] + . [ a−z0 −9 . −]+ $ ’ THEN 92 UPDATE v o u s e r SET username = OLD. username , name vo = OLD. name vo , passwd = OLD. passwd , 93 s a l t = OLD. s a l t , name = OLD. name , surname = OLD. surname , a d d r e s s = OLD. a d d r e s s , 94 t e l e p h o n e = OLD. t e l e p h o n e , m a i l = OLD. mail , t y p e = OLD. t y p e WHERE username = NEW. username ; 95 END IF ; 96 END// 97 89
    • A.1 grif.sql 98 DELIMITER ; 99 100 -- TABLE service 101 102 CREATE TABLE s e r v i c e -- alias job 103 ( 104 name VARCHAR( 2 0 ) NOT NULL, 105 yp VARCHAR( 1 5 0 ) NOT NULL, 106 cost FLOAT( 1 0 , 2 ) NOT NULL, 107 description VARCHAR( 5 0 0 ) NOT NULL, 108 109 PRIMARY KEY ( name , yp ) 110 ) 111 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 112 113 -- TRIGGER controllo costo 114 115 -- INSERT 116 117 DELIMITER // 118 119 DROP TRIGGER IF EXISTS c h e c k c o s t // 120 121 CREATE TRIGGER c h e c k c o s t 122 BEFORE INSERT ON s e r v i c e 123 FOR EACH ROW 124 BEGIN 125 IF NEW. c o s t < 0 THEN 126 SET NEW. c o s t = 0 ; 127 END IF ; 128 END// 129 130 -- UPDATE 131 132 DROP TRIGGER IF EXISTS c h e c k c o s t u p // 133 134 CREATE TRIGGER c h e c k c o s t u p 135 AFTER UPDATE ON s e r v i c e 136 FOR EACH ROW 137 BEGIN 138 IF NEW. c o s t < 0 THEN 139 UPDATE s e r v i c e SET name = OLD. name , yp = OLD. yp , c o s t = OLD. c o s t , d e s c r i p t i o n = OLD. d e s c r i p t i o n 140 WHERE name = NEW. name AND yp = NEW. yp ; 141 END IF ; 142 END// 143 144 DELIMITER ; 145 146 -- TABLE own 147 148 CREATE TABLE own 149 ( 150 vo VARCHAR( 2 0 ) NOT NULL , 151 s e r v i c e VARCHAR( 2 0 ) NOT NULL, 152 yp VARCHAR( 1 5 0 ) NOT NULL, 153 154 PRIMARY KEY ( vo , s e r v i c e , yp ) , 155 FOREIGN KEY ( vo ) REFERENCES vo ( name ) ON UPDATE CASCADE ON DELETE CASCADE, 156 FOREIGN KEY ( s e r v i c e , yp ) REFERENCES s e r v i c e ( name , yp ) ON UPDATE CASCADE ON DELETE CASCADE 157 ) 90
    • A.1 grif.sql 158 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 159 160 -- TABLE submit 161 162 CREATE TABLE submit 163 ( 164 id MEDIUMINT NOT NULL AUTO INCREMENT PRIMARY KEY, 165 username VARCHAR( 2 0 ) NOT NULL, 166 service VARCHAR( 2 0 ) NOT NULL, 167 yp VARCHAR( 1 5 0 ) NOT NULL, 168 url job VARCHAR( 2 0 0 ) NOT NULL UNIQUE KEY, 169 s u b d a t e TIMESTAMP( 1 4 ) DEFAULT CURRENT TIMESTAMP, 170 uri VARCHAR( 2 0 0 ) NOT NULL, 171 state ENUM ( ’ Aborted ’ , ’ Done ’ , ’ N u l l ’ ) , 172 surface VARCHAR( 2 0 ) NOT NULL, 173 lnput VARCHAR( 4 0 ) NOT NULL, 174 c o n s t a n t INT ( 2 ) NOT NULL, 175 enrg FLOAT( 1 0 , 2 ) NOT NULL, 176 dnrg FLOAT( 1 0 , 2 ) NOT NULL, 177 nnrg FLOAT( 1 0 , 2 ) NOT NULL, 178 j o b t y p e ENUM ( ’ S e r i a l ’ , ’ P a r a m e t r i c ’ ) , 179 r e t r i e v e ENUM ( ’N ’ , ’Y ’ ) NOT NULL, 180 181 FOREIGN KEY ( username ) REFERENCES v o u s e r ( username ) ON UPDATE CASCADE ON DELETE CASCADE, 182 FOREIGN KEY ( s e r v i c e , yp ) REFERENCES s e r v i c e ( name , yp ) ON UPDATE CASCADE ON DELETE CASCADE 183 ) 184 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 185 186 -- TABLE rules 187 188 CREATE TABLE r u l e s 189 ( 190 url sjob VARCHAR( 2 0 0 ) NOT NULL, 191 uri sjob VARCHAR( 2 0 0 ) NOT NULL, 192 submit id MEDIUMINT NOT NULL, 193 u r l p a r e n t VARCHAR( 2 0 0 ) NOT NULL, 194 sub date TIMESTAMP( 1 4 ) DEFAULT 0 , 195 surface VARCHAR( 2 0 ) NOT NULL, 196 constant INT ( 2 ) NOT NULL, 197 queue VARCHAR( 2 0 0 ) NOT NULL, 198 state ENUM ( ’ Waiting ’ , ’ Ready ’ , ’ S c h e d u l e d ’ , ’ Running ’ , ’ Aborted ’ , ’ Done ’ ) , 199 t o t a l t i m e INT ( 2 0 ) , 200 get ENUM ( ’ no ’ , ’ y e s ’ ) , 201 202 PRIMARY KEY ( u r l s j o b , u r l p a r e n t ) , 203 FOREIGN KEY ( s u b m i t i d ) REFERENCES submit ( i d ) ON UPDATE CASCADE ON DELETE CASCADE, 204 FOREIGN KEY ( u r l p a r e n t ) REFERENCES submit ( u r l j o b ) ON UPDATE CASCADE ON DELETE CASCADE 205 ) 206 ENGINE = InnoDB DEFAULT CHARSET = UTF8 ; 207 ✆ ✠ 208 ALTER TABLE vo ADD FOREIGN KEY( admin ) REFERENCES v o u s e r ( username ) ; 91
    • Glossario ACID Atomicity, Consistency, Isolation, Durability, 44 ANSI American National Standards Institute, 61 API Application Programming Interface, 4 CA Certificate Authority, 32 CASPUR Consorzio interuniversitario per le Applicazio- ni di Supercalcolo Per Universit` e Ricerca, a 5 CE Computing Element, 19 CERN Organizzazione Europea per la Ricerca Nucleare, 2 CICS Customer Information Control System, 8 CNR Consiglio Nazionale delle Ricerche, 5 COMPCHEM Computational Chemistry, 36 CORBA Common Object Request Broker Architectu- re, 38 CREAM Computing Resource Execution And Mana- gement, 22 CSC Center for Scientific Computing, 16 92
    • Glossario DELPHI DEtector with Lepton, Photon and Hadron Identification, 2 DMS Data Management Service, 19 EBA EGEE Business Associates, 18 EDG European Data Grid, 11 EGEE Enabling Grids for E-sciencE, 5 EGI European Grid Initiative, 5 EGI DS EGI Design Study, 14 ENEA Ente per le Nuove Tecnologie, l’Energia e l’Ambiente, 5 FTP File Transfer Protocol, 42 FTS File Transfer Service, 28 GACL Grid Access Control List, 21 GARR Gestione Ampliamento Rete Ricerca, 5 GILDA Grid INFN Laboratory for Dissemination Activities, 5 GNU GNU’s Not Unix, 61 GPL General Public Licence, 61 GriF Grid Framework, 36 GSI Grid Security Infrastructure, 13 GUI Graphical User Interface, 52 HTTP HyperText Transfer Protocol, 40 HTTPS HyperText Transfer Protocol Secure sockets, 40 93
    • Glossario ICE Interface to CREAM Environment, 23 ICMP Internet Control Message Protocol, 56 IDE Integrated Development Environment, 50 IGI Italian Grid Infrastructure, 5 INAF Istituto Nazionale di Astrofisica, 5 INFN Istituto Nazionale di Fisica Nucleare, 2 IS Information Service, 19 ISM Information Supermarket, 24 J2EE Java 2 Enterprise Edition, 20 JDL Job Description Language, 24 JIT Just In Time, 50 JRU Joint Research Unit, 5 JW Job Wrapper, 19 LAMP Linux, Apache, MySQL, PHP/Python/Perl, 63 LCAS Local Centre Authorization Service, 21 LCMAPS Local Credential Mapping Service, 21 LGPL Lesser General Public License, 61 LRMS Local Resource Management System, 26 LSF Load Sharing Facility, 21 MAN Metropolitan Area Network, 41 MPS MyProxy Server, 19 MSS Mass Storage System, 27 94
    • Glossario NAREGI NAtional REsearch Grid Initiative, 18 NGI National Grid Initiatives, 14 OASIS Advancing open standars for the information society, 5 OGF Open Grid Forum, 11 OGSA Open Grid Services Architecture, 13 OMT Object Modeling Technique, 64 OOP Object Oriented Programming, 50 PBS Portable Batch System, 21 RAM Random-Access Memory, 63 RB Resource Broker, 24 RDBMS Relation Database Management System, 61 RLS Replica Location Service, 28 RMC Replica Metadata Catalog, 28 RMS Resource Management System, 20 ROS Replica Optimization Service, 28 RPC Remote Procedure Call, 42 SDK Software Development Kit, 4 SE Storage Element, 19 SISSA Scuola Internazionale Superiore di Studi Avanzati, 5 SMTP Simple Mail Transfer Protocol, 42 SOA Service-Oriented Architecture, 36 SOAP Simple Object Access Protocol, 12 95
    • Glossario SPACI Southern Partnership for Advanced Compu- tational Infrastructures, 5 SQL Structured Query Language, 52 SRM Storage Resource Management, 28 SSI Single System Image, 57 TQ Task Queue, 24 UDDI Universal Description Discovery and Integra- tion, 42 UI User Interface, 19 UML Unified Modelling Language, 64 URI Universal Resource Identifier, 70 URL Universal Resource Locator, 70 VM Virtual Machine, 50 VO Virtual Organization, 1 VOMS Virtual Organization Membership Server, 19 W3C World Wide Web Consortium, 5 WM Workload Manager, 24 WMS Workload Management System, 19 WSDL Web Serice Description Language, 22 WSRF Web Service Resource Framwork, 33 XA eXtended Architecture, 68 XML Extensible Markup Language, 37 96
    • Glossario YC Yet a Consumer, 41 YP Yet a Provider, 41 YR Yet a Registry, 42 97
    • Bibliografia [1] Istituto Nazionale di Fisica Nucleare, http://www.infn.it [2] DELPHI Experiment, http://delphiwww.cern.ch/Welcome.html [3] I. Foster, C. Kesselman, The GRID - Blueprint for a new Computing Infrastructure, Argonne National Laboratory & University of Chicago. [4] I. Foster, C. Kesselman, The anatomy of the Grid, Morgan Kaufmann Press 1998. [5] Globus Toolkit Homepage, http://www.globus.org/toolkit [6] The DataGrid Project, http://eu-datagrid.web.cern.ch/eu-datagrid [7] Research & technological development for a Data TransAtlantic Grid http://datatag.web.cern.ch/datatag [8] Home of the EGRID project, http://www.egrid.it [9] Southern Partnership for Advanced Computational Infrastructures: http://spacin-wn02.dma.unina.it/index.php/it/members/spaci-srl [10] EGEE Portal, http://www.eu-egee.org [11] GRID.IT: An Italian National Research Council Project on Grid Computing Funded under the National Programme http://www.grid.it [12] The WS-Resource Framework, http://www.globus.org/wsrf 98
    • BIBLIOGRAFIA [13] Ufficio Italiano W3C, http://www.w3c.it [14] Advancing open standars for the information society: http://www.oasis-open.org/home/index.php [15] European Grid Initiative Design Study, http://web.eu-egi.eu [16] The Gilda, http://glite.web.cern.ch/glite [17] Italian Grid Infrastructure, http://Grid-it.cnaf.infn.it [18] M. Chetty, R. Buyya, Weaving Electrical and Computational Grids: How Analogous Are They? Technical Report, Monash University, Novembre 2001 http://buyya.com/papers/gridanalogy.pdf. [19] I. Foster, C. Kesselman, Computational Grids, Argonne National Laboratory & University of Chicago (2001). [20] CISC, http://www.ibm.com/C ISC [21] Websphere, http://www.ibm.com/software/websphere [22] The Tibco, http://www.tibco.com [23] Open Grid Forum, http://www.ogf.org [24] European Data Grid: ttp://www.globus.org/alliance/news/EDG-index.html [25] The Globus Alliance, http://www.globus.org [26] The GEANT2, http://www.geant2.net [27] The Open Science Grid, http://www.opensciencegrid.org [28] Nationl Research Grid Initiative, http://www.naregi.org [29] Condor Project Homepage, http://www.cs.wisc.edu/condor 99
    • BIBLIOGRAFIA [30] Lightweight Middleware for Grid Computing, http://glite.web.cern.ch/glite [31] CORBA, the Common Object Request Broker Architecture: http://www.corba.org/ [32] Distributed Component Object Model: http://it.wikipedia.org/wiki/Distributed Component Object Model [33] D. Skouteris, J. F. Castillo, D. E. Manolopoulos: ABC: A Quantum Reactive Scattering Program, Comp. Phys. Comm., 133, 128-135 (2000). [34] MySQL website, http://www.mysql.com [35] MySQL Non-free license: http://www.mysql.com/company/legal/licensing/commercial-license.html [36] MySQL/Sun set World Record SPECJ Benchmark: http://www.mysql.com/why-mysql/benchmarks/ [37] Entity-relationship model: http://en.wikipedia.org/wiki/Entity-relationship model 100
    • Grazie Giunto al termine di questo lavoro desidero ringraziare ed esprimere la mia rico- noscenza nei confronti di tutte le persone che, in modi diversi, mi sono state vicine e hanno permesso e incoraggiato sia i miei studi che la realizzazione e stesura di questa tesi. I miei pi` sentiti ringraziamenti vanno a chi mi ha seguito in questi u mesi: il Prof. Antonio Lagan`, per la fiducia fin da subito dimostratami e per avermi a seguito durante lo svolgimento del lavoro con consigli e confronti che mi hanno aiutato ad intraprendere, ogni volta, le scelte pi` appropriate. u Il Dott. Carlo Manuali, per la continua disponibilit` e prontezza nei charimenti a e suggerimenti, per la rilettura critica di tutti i capitoli della tesi e per avermi gui- dato con i suoi suggerimenti durante la conclusione di questo percorso formativo. Il Dott. Leonardo Pacifici, per i suoi preziosi consigli e per la sincerit` dimo- a stratami come uomo e come amico. Rimarr` in me il piacevole ricordo di questi sette anni di studio che ho trascorso a “a tempo pieno” in questo dipartimento nel quale ho trovato, quasi sempre, pro- fessori che hanno contribuito, con indicazioni e suggerimenti, al raggiungimento di questo traguardo per me importante. Ringrazio la mia famiglia e tutti gli amici per essermi stati vicini durante questi anni trascorsi da studente, per avermi sem- pre supportato ma pi` di tutto “sopportato”. u Il mio primo pensiero va ai miei genitori a cui dedico questo lavoro di tesi: senza il loro aiuto non avrei mai raggiunto questa meta. Sono davvero grato per tutto il sostegno economico ricevuto ma pi` di ogni altra cosa per quell’aiuto tacito o u 101
    • esplicito venuto dal loro cuore, per tutte quelle volte che mi hanno incoraggiato vedendomi preso dallo studio, da un esame o da questa tesi. Mi auguro che tutti i sacrifici fatti siano in questo modo, almeno in parte, ripagati. Un pensiero particolare va a mio fratello Giorgio che ha tentato di spronarmi nei recenti momenti di difficolt`. a Ringrazio Orsola che con estrema pazienza ha sopportato i miei sbalzi di umore e le mie paranoie quando, sotto stress, mi sono sfogato con lei. Se ho raggiunto questo traguardo lo devo anche alla sua continua presenza, per avermi fatto capire che potevo farcela, incoraggiandomi a non mollare mai. Come non ringraziare tutti gli Amici dell’Universit` e in particolare i miei compa- a gni dell’“Aula B2” con i quali ho vissuto pi` da vicino tre anni di intenso studio u ma anche di piacevoli svaghi. Ora, pi` di tutti, possono comprendere il mio grado u di soddisfazione. Ringrazio di cuore Andrea con il quale ho affrontato il mio percorso di studi e la maggior parte degli esami ma soprattutto perch´ insieme abbiamo condiviso e con tenacia passioni e aspirazioni comuni e mi auguro che continueremo a farlo. Non dimenticher` mai quello che ha fatto per me, cosa mi ha insegnato e come o ` mi ha sostenuto nei tanti momenti delicati. E stato un privilegio trascorrere tutto questo tempo con una persona cos` straordinaria e mi sento fortunato per averla ı incontrata. Grazie all’umorismo e all’ottimismo di Simone: senza la sua influenza positiva non avremmo fatto cos` tanti esami in poco tempo. ı Non dimentico di certo Danilo con il quale ho condiviso casa per due anni e con cui ho preparato alcuni degli ultimi esami (in particolare l’esame di Crittografia). Desidero ringraziare tutte le persone con cui ho iniziato e trascorso gli studi, con cui ho scambiato pensieri, idee e risate all’interno del dipartimento. In diversi mo- di hanno contribuito al mio percorso formativo, aiutandomi a credere in me stesso, suscitando in me nuovi interessi e suggerendomi, direttamente o indirettamente, il modo per coltivarli. 102
    • Un ringraziamento particolare va a Salvatore Marella, guida invisibile rimasta al mio fianco per tutta la durata di questo cammino. Infine voglio ringraziare il DAP senza il quale oggi non apprezzerei la vera bellez- za della vita con la consapevolezza che aver attraversato gli ultimi sette mesi mi fa credere ancora di pi` che “IMPOSSIBLE IS NOTHING”. u Maggio 2010 Davide 103