Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di...

35
Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita’ di Trieste, Italy Dipartimento di Elettrotecnica, Elettronica , Speech, Multimedia and Robotics Informatica, Universita' di Trieste Technologies Lab http://smartlab.univ.trieste.it An XML-based virtual machine for distributed computing in a Fork/Join framework

Transcript of Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di...

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

Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto

DEEI, Universita’ di Trieste, Italy

Dipartimento di Elettrotecnica, Elettronica , Speech, Multimedia and Robotics

Informatica, Universita' di Trieste Technologies Lab

http://smartlab.univ.trieste.it

An XML-based virtual machine for distributed computing in a Fork/Join framework

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

2

Introduction

“GRID Computing”: a High Performance Computingparadigm based on sharing computing resources in internet

Complex problems in theoretical physics, medicine, genetics, astronomy, financial, whether analysis …

1/391/39

Some requirement of GRID: - multi-platform nodes Java Virtual Machine- dynamic environment: hardware and software moving

A typical GRID monolytic architecture:

p2p node p2p nodeByte code + data

results

Dynamic linkingSecurity

VerificationOptimization

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

3

Introduction (cont.)

some problems of the monolythic architecture: performance – security - scalability

The point of view used in this work:

2/392/39

p2p node p2p nodeAlgorithm described in XML + data

results

XML Interpretation

Why using XML to describe algorithms in GRID?

- efficient algorithms distribution (HTTP’s Post )- efficient XML interpretation

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

4

Motivations of this work

• To increase computing power on a mobile robot

• Image – demining applications

• Distributed environment

LAN

Radio LAN

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

5

Il Meta-linguaggio XML

L’XML (eXtensible Markup Language) è un linguaggio dimeta – markup, specifica una sintassi per altri linguaggi di markup semantici

StrutturaStruttura Logica:

Prologo Elemento Document o

Document Type Definition (DTD) Fisica:

Contenuti e Funzionalità

SintassiSintassi Documenti validi e ben formati

8/398/39

<?xml version="1.0"?>

<!DOCTYPE nome descrittivo del documento [

<!ELEMENT elemento 1 (second1.1, ..,>

<!ELEMENT second1.1 tipo>

….

….

<!ELEMENT elemento N>

<!ATTLIST elementoN

Attributo1 tipo Valore

….

]>

<!ENTITY nome “definizione”>

….

<elemento 1>Contenuti e funzionalità

….

</elemento 1>

….

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

6

XML-RPC: chiamata a procedure remote

Header HTTP per i parametri di comunicazione

Corpo XML per passare la richiesta coi parametri d’esecuzione

9/399/39

RichiestaRichiesta

URI al codice di gestione richieste HTTPUser-Agent HostContent-TypeContent-length <?xml version="1.0"?> <methodCall> <methodName> nome procedura richiamata </methodName> <params> <param> Parametro 1 </param>

…. </params> </methodCall>

RispostaRisposta

Verifica TrasmissioneChiusura connessione Content-TypeContent-lengthDateGMTServer: agente di collegamento del server<?xml version="1.0"?><methodResponse> <methodResponse> <params> <fault> parametri di ritorno <value> </params> struttura che segnala</methodResponse> l’errore

</value> </fault> </methodResponse>

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

7

XML-RPC: chiamata a procedure remote

Schema che descrive una comunicazione RPC

10/3910/39

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

8

Nodo Remoto BNodo Remoto ANodo Centrale

Processoprincipale

Processo A

Processo B

Nodo Centrale

Processoprincipale

Nodo Remoto BNodo Remoto A

Processo AProcesso B

Richiesta di Nododisponibile

Risolutore dei Nomi

Nodo Remoto BNodo Remoto ANodo Centrale

ProcessoProcessoprincipaleprincipale

Processo A

Processo B

Nodo GNodo E

Nodo D

Nodo A

Nodo B

Nodo C

Nodo centrale Risolutore deiNomi

Processo iniziale

Processo B

Processo A

Processo C

Processo D

Processo E

Nodo F

Processo F

Processo G

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

12/3912/39

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

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

*** ** *** **•* ** * *** *•** * ** •*** ** * **•** * ** **•** * ** ** **•* **********

*** ** *** **•* ** * *** *•** * ** •*** ** * **•** * ** **•** * ** ** **•* **********

*** ** *** **•* ** * *** *•** * ** •*** ** * **•** * ** **•** * ** ** **•* **********

*** ** *** **•* ** * *** *•** * ** •*** ** * **•** * ** **•** * ** ** **•* **********

InterpreteScritto in Java

13/3913/39

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

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 diAssembler

Si è deciso di non sviluppare una DTD del linguaggio per non appesantire la fase d’interpretazione

Il controllo della sintassi è affidato allo stesso compilatore Java

14/3914/39

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

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

15/3915/39

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

12

Le istruzioni Matematiche

<ADD target=“2” first=“3” second=“9”/>

Esempio

r1 r2 r3 r4 r5 r6 r7

r8 r9 r10 r11 r12 r13 r14 r15

r0

Registro

1 m3 r2

6 2 12

ADD CONV DIV ELEV MUL OPER SUB

Istruzioni:

m9

<OPER target=“0” op1=“13” op2=“11”op3=“9” command=“*+”/>

30 OPER

16/3916/39

ADD ADD

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

13

Le istruzioni di Spostamento Dati

<LOAD register=“4” index=“10”/>

Esempio

LOAD MOVE STORE

Istruzioni:

r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15r0

Registro

Disco Virtuale

m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10m11m12m13m14

m15 m16 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29m17 m18

m31 127 r5

r5

<LOAD regpointed=“4” index=“3”/>

m3

<STORE topointed=“5” from=“4”/>

r5

LOAD LOAD

STORE

17/3917/39

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

14

Le istruzioni Logiche

<CMP first=“6” second=“9”/>

Esempio

CMP JEQ JGR JNEQ JNGR LABEL QUIT

Istruzioni:

START STRUCT

r1 r2 r3 r4 r5 r6 r7

r8 r9 r10 r11 r12 r13 r14 r15

r0

Registro

1 m3 2

6 2 12

Flag = “ ”Flag = “ 2 ”

<CMP first=“6” second=“11”/>

Flag = “ 3 ”

CMP

18/3918/39

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

15

Le istruzioni di Chiamata

CALL FORK JOIN

Istruzioni:

r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15r0

Registro

Disco Virtuale

m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10m11m12m13m14

m15 m16 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29m17 m18

m31 8 127 r55 15

LOCALCALL RETURN

<FORK id=“N00” file=“pippo.xml” name=“via” to=“m15-m19” clone=“m5-m9”/>

Esempio

*RESERVED*

<JOIN to=“m15-m19”/>

5 7 8 12 15

FORK FORK JOIN

19/3919/39

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

16

Fork/Join

L’istruzione Fork è simile ad una chiamata a procedura classica, solo che lancia due processi in parallelo

Il compito di raccordo è svolto dall’istruzione Join, che sincronizza i flussi di programma separati col Fork

A: Fork X;B: <istruzione seguente

alla Fork>;:::

X: <prima istruzione della procedura chiamatadalla Fork>;::::

A

B X

P F

j o i n

B

20/3920/39

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

17

Fork/Join

Esistono diverse sintassi per descrivere il Fork/Join

Si può usare un contatore delle chiamate Fork

begincont:=3;A;fork E1;B;fork E2;D;go to E3;

E1: C;F;go to E3;

E2: E;E3: join cont;

G;end;

A

BC

E

F

D

G

p1, p2 : process;begin

A;p1 = fork sub1;B;p2 = fork sub2;C;join p1;join p2;G;

end;

procedure sub1;begin

D;E;

end;

procedure sub2;begin

F;end;

A

BD

F

E

C

G

p1 = fork sub1;

p2 = fork sub2;

join p1;

join p2;

Si possono associare le istruzioni a delle variabili

21/3921/39

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

18

Fork/Join

… … <FORK id=“N00” file=“pippo.xml” name=“via” to=“m3-m5” clone=“m7-m9”/>… … … …… …… …… …… …… …… …<JOIN to=“m3-m5”/>… …… …… …… …<QUIT/>

Esempio di chiamata Fork/Join in XML-VM

*** ** *** ** ** * **

<LABEL name=“via”/>** * ** ** * **•*** ** * ** ** *•* ************•** * ** ** ** •* ************•** * ** ** **•* ************

<RETURN from=“r6-r8”/>

22/3922/39

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

Le istruzioni Varie

RANDOM SHOW

Istruzioni:

r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15r0

Registro

Disco Virtuale

m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10m11m12m13m14

m15 m16 m19 m20 m21 m22 m23 m24 m25 m26 m27 m28 m29m17 m18

m31 127 r5

<RANDOM to=“m15-m25” type=“int” mul=“10”/>

Esempio

32 5 9 038 6 1 7 2

RANDOM

23/3923/39

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

20

Il Parser Java

È un traduttore in grado d’interpretare un documento XML

Permette al linguaggio Java di trattare le informazionicontenute 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 dell’Apache (Sax 2.0)

Realizzazione definitiva: MinML (Sax 1.0)

24/3924/39

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

21

L’interprete 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

25/3925/39

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

22

L’interprete 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 l’intestazione del documento sia corretta;Cerca nel documento il Tag <START/> o quello <STRUCT/>, 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 nell’array 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”;}

26/3926/39

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

23

L’interprete di XML-VM (continua)

public class saxtest {  public static void main(String[] arg) throws Exception { Definisci l’oggetto “xmlvmMachine” con l’ip 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 elaborarect.parseXmlvmDoc(args[0].toString()); //Esegui il Parsing del documentoObject o = ct.startExecution(args, table); //Lancia l’esecuzione 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 l’identificativo che ti è stato passato con quelli disponibili;Se l’identificativo è “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()); }}

27/3927/39

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

24

L’interprete di XML-VM (continua)

Nodo Remoto BNodo Remoto ANodo Centrale

saxtestsaxtest

xmlvmCall

xmlvmCall

Fork

ForkFork

JoinJoin

Join

xmlvmnamres

Sistema distribuito completo

28/3928/39

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

25

L’interprete 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 d’istruzione MatematicaEsempio d’istruzione 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 all’interno 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 d’istruzione 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<SECOND), aggiorna la variabile di flag a 2;

Altrimenti Se (FIRST==SECOND), aggiorna la variabile di flag a 3; }

Esempio d’istruzione per le Chiamate

public void LocalCall(xmlvm tag) throws Exception { Estrai gli attributi TO, NAME;Aggiungi un elemento all’XML-VMStack, dove sono memorizzati il registro al momento

della chiamata ed i parametri inviati;Metti nelle celle del disco virtuale dalla 1 in poi i parametri annidati nell’ordine in cui appaiono;Salta all’etichetta definita dal nome NAME;Raccogli i risultati della chiamata;Memorizza nelle celle di memoria indicate dall’attributo TO; }

29/3929/39

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

26

L’interprete di XML-VM (continua)

Pseudo-codice istruzione Forkpublic 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 l’IP;Prepara nel vettore args tutti i parametri necessari per l’invio della richiesta remota,ovvero il registro per intero e la sezione del disco virtuale indicata dall’attributo 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 all’IP;

Digli di eseguire il documento XML-VM indicato nell’attributo FILE a partire dallaprocedura etichettata col nome NAME;Raccogli i risultati della chiamata;Memorizza nelle celle di memoria indicate dall’attributo 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 dall’attributo 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 dell’attributo 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;}}

30/3930/39

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

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

31/3931/39

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

28

Procedurainiziale

Processo 1

::

Processo 2

Processo 3

Processo 4

Processo n-1

Processo n

Fork 1

Fork 2

Fork 3

Fork 4

Fork n-1

Fork n

Procedurafinale

Join 1

Join 2

Join 3

Join 4

Join n-1

Join n

Risultati Sperimentali Tre tipi di esperimenti

13

12

5

1

)12()12( dxxii

i

13

12

5

1

)12()12( dxxii

i

f(x)

x

Una Sommatoria Un Integrale Un Ordinamento Quick Sort

32/3932/39

Procedura iniziale

Proc I

Proc P

Proc Q

Proc L

Proc R

Proc SProc M

Proc N

Proc O

Proc T

Proc U

Proc A

Proc R

Join

Fork

Raccolta Join

Procedura ad alto carico di lavoro

Procedura a minimo carico di lavoro

Proc B

Proc C

Proc D

Proc E

Proc F

Proc J

Proc H

Proc G

Proc F

Procedura iniziale

Proc I

Proc P

Proc QProc L

Proc R

Proc SProc M

Proc N

Proc O

Proc T

Proc U

Proc A

Proc R

Join

Fork

Raccolta Join

Procedura ad alto carico di lavoro

Procedura a medio carico di lavoro

Proc B

Proc C

Proc D

Proc E

Proc F

Proc J

Proc H

Proc G

Proc F

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

29

Esempio di sorgente XML-VM

<?xml version='1.0'?><XMLVM><START/><STORE to="12" type="int">1</STORE><STORE to="0" type="index">m1</STORE><STORE to="13" type="int">0</STORE><STORE to="14" type="int">2</STORE><STORE to="15" type="index">m0</STORE><STORE to="16" type="int">20</STORE><LOAD register="15" index="15"/><LOAD register="16" index="16"/><ADD first="15" second="16"/><STORE to="15" from="15"/><LOAD register="29" index="14"/><LOAD register="30" index="13"/>

Codice XML-VM per la Sommatoria<LOAD register="31" index="12"/><MOVE target="15" source="30"/><STORE to="10" type="int">4000000</STORE><STORE to="11" type="int">100000</STORE><LOAD register="0" index="10"/><LOAD register="1" index="11"/><DIV result="2" first="0" second="1"/><CONV register="2" to="int"/><MOVE target="3" source="30"/><LABEL name="For1"/> <CMP first="2" second="3"/> <JNGR to="EndFor1"/> <MUL target="4" first="3" second="1"/> <ADD target="5" first="4" second="1"/> <STORE to="1" from="4"/> <STORE to="2" from="5"/> <FORK id="N00" file="http://10.0.0.3:80/SommaNodo_xmlvm.xml" name="Somma" to="m15[m12]" clone="m0[m14]"/> <LOAD register="15" index="15"/> <ADD first="15" second="31"/> <STORE to="15" from="15"/> <ADD first="3" second="31"/> <MOVE target="15" source="30"/>

<JGR to="For1"/><LABEL name="EndFor1"/><STORE to="17" type="index">m0</STORE><LOAD register="17" index="17"/><LOAD register="16" index="16"/><ADD first="17" second="16"/><STORE to="17" from="17"/><MOVE target="17" source="30"/><STORE to="9" from="2"/><JOIN topointed="m17[m9]"/><MOVE target="3" source="30"/><LOAD register="6" index="13"/><LOAD register="8" index="17"/><LABEL name="For2"/> <CMP first="2" second="3"/> <JNGR to="EndFor2"/> <LOAD register="7" pointer="8"/> <ADD first="8" second="31"/>

<ADD first="3" second="31"/> <ADD first="6" second="7"/> <JGR to="For2"/> <LABEL name="EndFor2"/><QUIT/></XMLVM>

33/3933/39

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

30

Risultati Sperimentali (Sommatoria)

0

50

100

150

200

250

300

350

Tem

pi,

sec

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

0

50

100

150

200

250

300

350

Tem

pi,

sec

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

Grafico dei Tempi per numero di macchine

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

Sp

eed

up

s

Ideale

Somma

Celeron ideale

Grafico degli Speedups

34/3934/39

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

31

0

100

200

300

400

500

600

Tem

pi,

sec

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

0

100

200

300

400

500

600

Tem

pi,

sec

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

0

200

400

600

800

1000

1200

Tem

pi,

sec

1 2 3 4 5 6 7

Numero di macchine

Pentium III

Celeron

0

200

400

600

800

1000

1200

1 3 5 7 9 11

13

15

Numero di macchine

Tem

pi,

sec

Pentium III e Celeron

Celeron teorico

Risultati Sperimentali (Integrale)

Grafico dei Tempi per numero di macchine

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

Sp

eed

up

s

Ideale

Integrale

Celeron Ideale

Grafico dei Tempi per Pentium e CeleronGrafico stimato per Pentium e CeleronGrafico degli Speedups

35/3935/39

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

32

0%

20%

40%

60%

80%

100%

Nu

mero

cara

tteri

Volume di dati trasferito

QuickSort 1687313 45603

Integrale 110525 1416

Somma 37189 930

Caratteri inviati in totale

Media Caratteri per chiamata

0%

20%

40%

60%

80%

100%

Nu

mero

cara

tteri

Volume di dati trasferito

QuickSort 1687313 45603

Integrale 110525 1416

Somma 37189 930

Caratteri inviati in totale

Media Caratteri per chiamata

Volume dati trasferiti via XML-RPC

Risultati Sperimentali (Quick Sort)

Grafico dei Tempi per numero di macchine

0

5

10

15

20

25

30

35

40

45

50

Tem

pi,

sec

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

Grafico degli Speedups

0

2

4

6

8

10

12

14

16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Numero di macchine

Sp

eed

up

s Ideale Pentium III

Quick Sort

Celeron ideale

Grafico degli Speedups riscalato (Pentium)

0

1

2

3

4

5

6

7

8

1 2 3 4 5 6 7

Numero di macchine

Sp

eed

up

s

Ideale Pentum III

QuickSort riscalato

36/3936/39

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

33

Risultati Sperimentali (Parsing)

Tabella dei tempi di ParsingTabella dei tempi di Parsing

Tempo medio di Parsing Tempo medio di esecuzione PercentualeSomma: 38,39439024 78143,26793 0,0491%Integrale: 53,09145299 106628,0923 0,0498%

QuickSort: 51,81403509 9727,277193 0,5327%

Tempo medio di Parsing Tempo medio di esecuzione PercentualeSomma: 38,39439024 78143,26793 0,0491%Integrale: 53,09145299 106628,0923 0,0498%

QuickSort: 51,81403509 9727,277193 0,5327%

Il Tempo di Parsing comprende il download e l’analisi del documento XML

Si effettua il Parsing dei documenti XML-VM ad ogni chiamata remota

37/3937/39

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

34

Conclusioni

Trasferimento dei metodi in Java

38/3938/39

NodoSorgente

Nodo Remoto• Compilazione• Esecuzione

Java

Trasferimento dei metodi con XML-VM

NodoSorgente

Nodo Remoto• Parsing • Esecuzione

XML

Nel Nodo remoto ci sono: Parser MinML Codice eseguibile (~100KB)

Metodi variabili:

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

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 d’analisi 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

39/3939/39