La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di Elettrotecnica, Elettronica, Speech, Multimedia and Robotics.

Presentazioni simili


Presentazione sul tema: "Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di Elettrotecnica, Elettronica, Speech, Multimedia and Robotics."— Transcript della presentazione:

1 Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di Elettrotecnica, Elettronica, Speech, Multimedia and Robotics Informatica, Universita' di TriesteTechnologies Lab An XML-based virtual machine for distributed computing in a Fork/Join framework

2 2 Introduction GRID Computing: a High Performance Computing paradigm based on sharing computing resources in internet Complex problems in theoretical physics, medicine, genetics, astronomy, financial, whether analysis … Some requirement of GRID: - multi-platform nodes Java Virtual Machine - dynamic environment: hardware and software moving A typical GRID monolytic architecture: p2p node Byte code + data results Dynamic linking Security Verification Optimization

3 3 Introduction (cont.) some problems of the monolythic architecture: performance – security - scalability The point of view used in this work: p2p node Algorithm described in XML + data results XML Interpretation Why using XML to describe algorithms in GRID? - efficient algorithms distribution (HTTPs Post ) - efficient XML interpretation

4 4 Motivations of this work To increase computing power on a mobile robot Image – demining applications Distributed environment LAN Radio LAN

5 5 Il Meta-linguaggio XML LXML (eXtensible Markup Language) è un linguaggio di meta – markup, specifica una sintassi per altri linguaggi di markup semantici Struttura Logica: Prologo Elemento Document o Document Type Definition (DTD) Fisica: Contenuti e Funzionalità Sintassi Documenti validi e ben formati …. Contenuti e funzionalità …. ….

6 6 XML-RPC: chiamata a procedure remote Header HTTP per i parametri di comunicazione Corpo XML per passare la richiesta coi parametri desecuzione Richiesta URI al codice di gestione richieste HTTP User-Agent Host Content-Type Content-length nome procedura richiamata Parametro 1 …. Risposta Verifica Trasmissione Chiusura connessione Content-Type Content-lengthDate GMTServer: agente di collegamento del server parametri di ritorno struttura che segnala lerrore

7 7 XML-RPC: chiamata a procedure remote Schema che descrive una comunicazione RPC

8 8 Chiamata tra i Nodi Peer – to – peer (teorico) Architettura del sistema Chiamata tra i Nodi Peer – to – peer (nostra realizzazione) Schema con restituzione dei risultati Esempio di rete Peer – to - peer

9 9 Architettura software Non esiste una precompilazione del documento sorgente Il documento viene analizzato (Parsing) eventi Eventi interprete scritto in Java (esecuzione) Lettura Parsing Esecuzione *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** *** ** * ** * *** * ** * ** *** ** * ** ** * ** ** ** * ** ** ** * ********** Interprete Scritto in Java

10 10 Il Meta-linguaggio XML-VM Permette di descrivere un algoritmo con XML I Tag XML diventano le istruzioni del nuovo linguaggio Il linguaggio si può vedere come un tipo semplificato di Assembler Si è deciso di non sviluppare una DTD del linguaggio per non appesantire la fase dinterpretazione Il controllo della sintassi è affidato allo stesso compilatore Java

11 11 Il Meta-linguaggio XML-VM ( continua) Attributi come parametri Strutture dati Registro Disco Virtuale I dati sono immagazzinati nel Disco Virtuale Abbiamo introdotto il tipo di dato Index Caratteristiche principali del linguaggio: I dati possono essere elaborati solo nel Registro

12 12 Le istruzioni Matematiche Esempio r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 r0 Registro 1m3r ADD CONV DIV ELEV MUL OPER SUB Istruzioni: m9 30 OPER ADD

13 13 Le istruzioni di Spostamento Dati Esempio LOAD MOVE STORE Istruzioni: r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15r0 Registro Disco Virtuale m0m1m2m3m4m5m6m7m8m9m10m11m12m13m14 m15m16m19m20m21m22m23m24m25m26m27m28 m29 m17m18 m31127r5 m3 r5 LOAD STORE

14 14 Le istruzioni Logiche Esempio CMP JEQ JGR JNEQ JNGR LABEL QUIT Istruzioni: START STRUCT r1r2r3r4r5r6r7 r8r9r10r11r12r13r14r15 r0 Registro 1m Flag = Flag = 2 Flag = 3 CMP

15 15 Le istruzioni di Chiamata CALL FORK JOIN Istruzioni: r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15r0 Registro Disco Virtuale m0m1m2m3m4m5m6m7m8m9m10m11m12m13m14 m15m16m19m20m21m22m23m24m25m26m27m28 m29 m17m18 m318127r5515 LOCALCALL RETURN Esempio *RESERVED* FORK JOIN

16 16 Fork/Join Listruzione Fork è simile ad una chiamata a procedura classica, solo che lancia due processi in parallelo Il compito di raccordo è svolto dallistruzione Join, che sincronizza i flussi di programma separati col Fork

17 17 Fork/Join Esistono diverse sintassi per descrivere il Fork/Join Si può usare un contatore delle chiamate Fork Si possono associare le istruzioni a delle variabili

18 18 Fork/Join … … … Esempio di chiamata Fork/Join in XML-VM *** ** *** ** ** * ** ** * ** *** ** * ** ** * * ************ ** * ** ** ** * ************ ** * ** ** ** * ************

19 Le istruzioni Varie RANDOM SHOW Istruzioni: r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15r0 Registro Disco Virtuale m0m1m2m3m4m5m6m7m8m9m10m11m12m13m14 m15m16m19m20m21m22m23m24m25m26m27m28 m29 m17m18 m31127r5 Esempio RANDOM

20 20 Il Parser Java È un traduttore in grado dinterpretare un documento XML Permette al linguaggio Java di trattare le informazioni contenute nel documento come eventi concatenati Esistono due tipi di specifiche per il Parser Sax 1.0 (contenuto dei Tag ed attributi) Sax 2.0 (anche analisi DTD, fogli di stile ed altro…) Prima realizzazione: Xerces dellApache (Sax 2.0) Realizzazione definitiva: MinML (Sax 1.0)

21 21 Linterprete di XML-VM È scritto in Java per potersi adattare ad ogni piattaforma File che contengono procedure main() saxtest.java xmlvmCall.java xmlvmnamres.java File che implementano la Macchina Virtuale Index.java xmlvm.java xmlvmcontext.java XmlvmException.java xmlvmcontenthandler.java xmlvmgeneric.java xmlvmStack.java È strutturato nei seguenti 14 file File con compiti vari Methods.java PseudXmlRpc.java xmlvmMachine.java xmlvmMachineTable.java

22 22 Linterprete di XML-VM (continua) public Object startExecution(Object[] arg, xmlvmMachine Machine) throws Exception{ Inizializzazioni; Scansione rapida del documento per la ricerca dei Tag Label; Verifica che lintestazione del documento sia corretta; Cerca nel documento il Tag o quello, e inizializza la variabile i con la posizione del Tag appena trovato; try { FOR(i < tag.getChildrenCount(); i++) { SE (il Tag[i] è uno tra ADD LOAD MOV STORE SUB …) Allora lancia la procedura associata; Altrimenti { Per START e LABEL non fare niente; Per STRUCT ripristina le informazioni presenti nellarray Arg[]; Per JEQ, JNEQ, JGR, JNGR lancia le procedure associate ed aggiorna i ; Per RETURN esegui la procedura Return(tag); Per SHOW mostra il contenuto del registro indicato; Per QUIT esci dal ciclo; } } catch(Exception e) SE (non termina con QUIT) Lancia un errore e scrivi non termina con Quit; }

23 23 Linterprete di XML-VM (continua) public class saxtest { public static void main(String[] arg) throws Exception { Definisci loggetto xmlvmMachine con lip e la porta del risolutore dei nomi, e chiamalo table; xmlvmcontext ct = new xmlvmcontext(); ct.init(); Object[] args = new Object[2]; args[0] = "http:// xml"; //nome del documento XML-VM da elaborare ct.parseXmlvmDoc(args[0].toString()); //Esegui il Parsing del documento Object o = ct.startExecution(args, table);//Lancia lesecuzione del } Saxtest.java xmlvmnamres class nameres implements XmlRpcHandler { Inizializzo la xmlvmMachineTable, inserendo tutti i Nodi a disposizione: nameres() { } public class xmlvmnamres { public static void main(String args []) throws Exception { WebServer webserver = new WebServer (10000); //attivo il Server XML-RPC webserver.addHandler ("$default", new nameres()); } public Object execute (String method, Vector v) throws Exception { Riconosci che la chiamata è per una vera a propria risoluzione del nome; Confronta lidentificativo che ti è stato passato con quelli disponibili; Se lidentificativo è N00, allora restituisci i dati di uno dei Nodi disponibili a caso; Altrimenti restituisci quello specificato; } xmlvmCall public class xmlvmCall implements XmlRpcHandler { public Object execute (String method, Vector v) throws Exception { Vector vResult = Methods.execute(method,v); return (vResult); } public static void main(String args []) throws Exception { WebServer webserver = new WebServer (...porta...); webserver.addHandler ("$default", new xmlvmCall()); }

24 24 Linterprete di XML-VM (continua) Sistema distribuito completo

25 25 Linterprete di XML-VM (continua) public void Div(xmlvm tag) throws Exception { Estrai gli attributi RESULT, REST, FIRST e SECOND; Se R[FIRST] e R[SECOND] sono numeri, allora Se (RESULT.compareTo() == 0), allora metti il risultato della divisione in R[FIRST] rispettando il tipo di dato del risultato; Altrimenti mettilo in R[RESULT]; Se (REST.compareTo() != 0), allora metti il resto della divisione in R[REST]; } Esempio di codice distruzione MatematicaEsempio distruzione per Spostamento dati public void Store(xmlvm tag) throws Exception { Estrai gli attributi TO, TYPE, FROM e TOPOINTED; Se (FROM.compareTo() != 0), carica il valore della cella R[FROM]; altrimenti cairca il valore contenuto allinterno del TAG; Se (TO.compareTo() != 0), metti il valore caricato in DV[TO]; altrimenti mettilo nella locazione di memoria del disco virtuale puntato da R[TOPOINTED]; } Esempio distruzione Logica public void Cmp(xmlvm tag) throws Exception { Estrai gli attributi FIRST e SECOND; Se (FIRST>SECOND), aggiorna la variabile di flag a 1; Altrimenti Se (FIRST

26 26 Linterprete di XML-VM (continua) Pseudo-codice istruzione Fork public void Fork(xmlvm tag) throws Exception { Estrai gli attributi TO, IP, FILE, NAME e CLONE; Effettua una chiamata RPC al risolutore dei nomi e aggiorna lIP; Prepara nel vettore args tutti i parametri necessari per linvio della richiesta remota, ovvero il registro per intero e la sezione del disco virtuale indicata dallattributo CLONE; Inizializza le celle del disco virtuale descritte da TO al valore *RESERVED*; ForkThread remoteCall = new ForkThread(); RemoteCall.start(); } protected class ForkThread extends Thread { Definizione delle Variabili locali; public void run() { Effettua la richiesta remota direttamente verso la macchina corrispondente allIP; Digli di eseguire il documento XML-VM indicato nellattributo FILE a partire dalla procedura etichettata col nome NAME; Raccogli i risultati della chiamata; Memorizza nelle celle di memoria indicate dallattributo TO; } Pseudo-codice istruzione Join public void Join(xmlvm tag) throws Exception { Estrai gli attributi TO e TOPOINTED; SE(TO.compareTo() != 0) verifica che le celle individuate dallattributo TO non siano ancora *RESERVED*; se sono ancora *RESERVED*, esegui un ciclo che continui a monitorare le celle; Altrimenti { verifica che le celle contigue a partire dalla cella puntata dalla prima parte dellattributo TOPOINTED per una lunghezza pari alla seconda parte dello stesso attributo non siano ancora *RESERVED*; se sono ancora *RESERVED*, esegui un ciclo che continui a monitorare le celle; }

27 27 Accorgimenti presi per gli esperimenti Risolutore dei nomi per raccogliere le misurazioni Procedure di rilevazione dei tempi Procedure di rilevazione del flusso di dati XML-RPC Strumenti a disposizione per gli esperimenti 16 computer eterogenei 8 Pentium III 800MHz, Windows2000, 128 MB RAM 8 Celeron 400MHz, WindowsNT 4.0, 64 MB RAM Impostazioni adottate negli esperimenti Nodo centrale escluso dalla computazione (Pentium III) Misurazioni in funzione del numero di macchine coinvolte Carico doppio sui Pentium III I Pentium III sono le prime macchine introdotte

28 28 Risultati Sperimentali Tre tipi di esperimenti f(x) x Una Sommatoria Un Integrale Un Ordinamento Quick Sort

29 29 Esempio di sorgente XML-VM 1 m1 0 2 m0 20 Codice XML-VM per la Sommatoria m0

30 30 Risultati Sperimentali (Sommatoria) Grafico dei Tempi per numero di macchineGrafico degli Speedups

31 31 Risultati Sperimentali (Integrale) Grafico dei Tempi per numero di macchineGrafico dei Tempi per Pentium e CeleronGrafico stimato per Pentium e CeleronGrafico degli Speedups

32 32 Volume dati trasferiti via XML-RPC Risultati Sperimentali (Quick Sort) Grafico dei Tempi per numero di macchineGrafico degli SpeedupsGrafico degli Speedups riscalato (Pentium)

33 33 Risultati Sperimentali (Parsing) Tabella dei tempi di Parsing Il Tempo di Parsing comprende il download e lanalisi del documento XML Si effettua il Parsing dei documenti XML-VM ad ogni chiamata remota

34 34 Conclusioni Trasferimento dei metodi in Java Nodo Sorgente Nodo Remoto Compilazione Esecuzione Java Trasferimento dei metodi con XML-VM Nodo Sorgente Nodo Remoto Parsing Esecuzione XML Nel Nodo remoto ci sono: Parser MinML Codice eseguibile (~100KB) Metodi variabili:

35 35 Conclusioni Si è progettato e sviluppato un sistema per Grid Computing Si è utilizzato XML per descrivere algoritmi I risultati raccolti hanno risposto adeguatamente alle attese I grafici delle prestazioni dimostrano efficienza di calcolo I Tempi di download e danalisi dei metodi sono leggerissimi Non è stato affrontato il problema della distribuzione del Carico e della tolleranza ai guasti Non sono stati affrontati i problemi di sicurezza e programmazione complessa Si è utilizzato Java per implementare la macchina virtuale


Scaricare ppt "Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di Elettrotecnica, Elettronica, Speech, Multimedia and Robotics."

Presentazioni simili


Annunci Google