Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di...
-
Upload
vinicio-tonelli -
Category
Documents
-
view
220 -
download
4
Transcript of Giuseppe Cutuli, Enzo Mumolo, Marco Tessarotto DEEI, Universita di Trieste, Italy Dipartimento di...
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
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
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
4
Motivations of this work
• To increase computing power on a mobile robot
• Image – demining applications
• Distributed environment
LAN
Radio LAN
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>
….
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>
7
XML-RPC: chiamata a procedure remote
Schema che descrive una comunicazione RPC
10/3910/39
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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:
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