1
::. Le Metriche
Metriche
Quantitative
Qualitative
•Piattaforme hw-sw che
supportano le VM.
•Ciclo di sviluppo
•Tipologia di classi
supportate
•Tipo di supporto alle
Graphical User Interface.
•Compatibilità con java.
•Impronta di memoria.
•Multithreading.
•Tempo di chiamata a
metodi.
•Overhead delle VM.
•Tempo per le operazioni
di Input/Output su file.
•Tempo per le operazioni
di Input/Output su rete.
1
::. Valutazioni quantitative
Il multithreading
• Livello di multithreading:
Jeode
Java Thread X
CrEme
Java Thread X
CrEme Task
Java Thread Y
OS Task A
RTOS
RTOS
Task A
Task B
Task C
Native Threads
Modello preemptive in cui a ciascun thread Java
corrisponde un thread del RTOS: integrazione con i thread
nativi e sinergia con lo schedulatore del S.O.
OS Task B
CrEme
Kernel
Java Thread Y
Java Thread Z
Java Thread U
Java Thread V
OS Task C
OS Task D
I thread Java unitamente alla VM, sono visti dal RTOS come un
singolo task. La schedulazione dei thread è a carico della VM. Tale
modello è detto blue thtread, poiché è non preemptive.
Per entrambe le VM: I thread ad eguale priorità sono eseguiti a turno (round-robin).I thread a priorità più bassa possono andare in
starvation
5
1
::. Valutazioni quantitative
Il multithreading
Livello di multithreading: l’algoritmo
Il thread principale compie le seguenti azioni:
•Istanzia e avvia il thread FaiQualcosa (che esegue operazioni che abbiano una certa rilevanza
temporale e calcola il tempo impiegato per farlo) per un numero fissato di volte, in modo tale da
avere più rilevazioni temporali senza che vi siano altri thread Java nel sistema.
•Istanzia e lancia un numero di thread FaiNulla (specificato da riga di comando) e determina il
tempo necessario a compiere tale azione. Tale tempo concorre a determinare lo stato di trash
del sistema.
•Istanzia e avvia il thread FaiQualcosa per un numero di volte proporzionale al numero di thread
FaiNulla, in tale modo si cerca di avere valutazioni temporali a regime.
La stima si ottiene osservando il numero di thread in
corrispondenza del quale si verifica uno dei due eventi:
•il sistema solleva una eccezione del tipo out of memory;
•il sistema innesca dinamiche di trashing.
1
::. Valutazioni quantitative
Il multithreading
Livello di multithreading: le stime
Tempi medi di esecuzione del thread FaiQualcosa
120000
100000
80000
Livello di Multithreading
Stima
Jeode
CrEme
< 400
< 1200
•CrEme solleva una eccezione del tipo out
of memory (33Mb di memoria libera);
•Jeode innesca una dinamica di trashing.
ms 60000
Jeode
CrEme
40000
20000
0
0
5
10
20
50
100
200
NThread
Al crescere del numero di thread nel sistema il bilancio è favorevole a Jeode finquando NThread si aggira intorno alla
decina. Da un certo punto in avanti, CrEme risulta avere prestazioni temporali nettamente inferiori rispetto a Jeode, il che
lascia supporre che la piattaforma CrEme abbia un tempo di cambio di contesto molto minore rispetto a quello della
piattaforma Jeode.
Per quanto riguarda gli algoritmi multithread, Jeode ha un maggiore overhead in termini di utilizzo della CPU rispetto
a CrEme la quale ha un overhead maggiore in termini di utilizzo della memoria rispetto alla prima piattaforma.
6
1
::. Valutazioni quantitative
Il multithreading
• Prestazione di un algoritmo multithread: il prodotto tra due matrici.
1000000
900000
40000
800000
35000
700000
600000
ms
30000
Jeode
500000
CrEme
400000
300000
200000
25000
ms 20000
SuperWaba
15000
Ewe
10000
5000
100000
0
20
50
100
110
145
0
150
20
50
Dimensione matrici
Dimensione matrici
I risultati confermano le ipotesi fatte nell’analisi del livello di multithreading,
in relazione all’overhead e al tempo di cambio di contesto, degli algoritmi
multithread eseguiti sulle macchine Java-compliant.
1
::. Valutazioni quantitative
Overhead delle macchine virtuali
Footprint memory
(in termini di memoria utilizzata)
4500
4000
4000
3000
CrEme
Kb 2000
SuperWaba
1000
0
3500
Jeode
Ewe
3000
Kb
2500
2000
1500
1000
500
0
Virtual Machine
Virtual Machine
7
1
::. Valutazioni quantitative
Tempi medi di scrittura su file
Jeode
CrEme
SuperWaba
Tempi medi di lettura su file
Ewe
800000
5000000
4500000
700000
4000000
600000
3500000
500000
3000000
ms 400000
ms 2500000
300000
2000000
200000
1500000
1000000
Ewe
SuperWaba
CrEme
500000
0
1 Mb
2 Mb
100000
0
Jeode
4 Mb
1 Mb
2 Mb
4 Mb
8 Mb
8 Mb
1
::. Valutazioni quantitative
Tempi medi di chiamata a metodi
Jeode
CrEme
SuperWaba
Delay delle macchine virtuali
Ewe
4,00E-03
7
3,50E-03
6
3,00E-03
5
2,50E-03
ms 2,00E-03
ms
1,50E-03
Ewe
SuperWaba
CrEme
1,00E-03
5,00E-04
Jeode
3
2
1
0
Virtual Machine
Un parametro
strutturato
Un parametro
elementare
Senza parametri
0,00E+00
4
8
1
::. Valutazioni qualitative
Disponibilità
Interfaccia utente
Jeode
CrEme
SWaba
Ewe
Jeode
WinCE/PPC
Truffle
PalmOS
AWT
Linux
Swing
CrEme
SWaba
Ewe
opt
Ciclo di sviluppo
Compatibilità con Java
•Java-compliant: analogo al ciclo di sviluppo
di un’applicazione Java.
•Java-compliant: completa.
•SuperWaba: articolato, necessita
generazione eseguibili, mediante applicazione
senza interfaccia grafica.
•Ewe: discreta
•SuperWaba: modesta.
•Ewe: meno articolato di SWaba, è opzionale
la generazione degli eseguibili, realizzata con
un’applicazione dotata di interfaccia grafica.
1
::. Valutazioni qualitative
Classi supportate
Jeode
CrEme
SWaba
Ewe
Jeode
Java.lang
SQL
Util
Applet
I/O
User Interface
Net
Game API
Zip
Accesso registri di sistema
Reflect
Visualizzazione dati GPS
Math
Protocollo Garmin GPS
trattamento dei dati
API per PPC e PalmOS
RMI
API di com. tra PC e PDA
CrEme
SWaba
Ewe
Security
9
1
::. Conclusioni
I test sperimentali eseguiti sul testbed hanno dimostrato che,
a parità di sistema operativo, non si ha uniformità di risultati
nelle prestazioni delle differenti macchine virtuali. Risulta
quindi fondamentale l’implementazione delle java virtual
machine, ma è altrettanto basilare l’ottimizzazione delle API
messe a disposizione da ciascuna piattaforma.
Non è possibile eleggere una macchina virtuale principe
in assoluto, ma è possibile discernere in termini relativi in
base ai requisiti dei dispositivi e al relativo campo di
impiego.
10