Strategie di Monitoraggio della Piattaforma Java per Sistemi

Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
tesi di laurea
Strategie di Monitoraggio della Piattaforma Java per Sistemi
Embedded
Anno Accademico 2004-2005
relatore
Ch.mo Prof. Stefano Russo
correlatore
Ing. Salvatore Orlando
candidato
Giuseppe Scafuti
Matr. 534-953
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie di Monitoraggio della Piattaforma Java per Sistemi Embedded
Metodologie e strumenti per il reengineering del workflow management
Architettura Java 2 Micro Edition (J2ME)
• Virtual Machine, fornisce l’ambiente di esecuzione necessario ad
interpretare il byte code Java.
• Configurazione, un insieme minimo di Application Programming
Interafce (API), che catturano le funzionalità essenziali di ogni
tipologia di dispositivo, accomunate da requisiti hardware comuni,
come ad esempio la capacità di memoria, la tipologia di processore
(es. Connected Device Configuration, Connected Limited Device
Configuration ) .
•Profilo, rappresenta il livello che contiene le APIs che il
programmatore utilizza per scrivere applicazioni per un particolare
device (es. MIDP. Personal Profile, Foudation Profile ecc ).
Si ottiene un completo Java Runtime Environment (JRE) assemblando in maniera opportuna virtual
machine, configurazioni e profili in funzione della tipologia di dispositivo da utilizzare.
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Caratteristiche Architetturali delle Virtual Machine
J9
Jeode
CDC HI
Tipologia di Garbage
Collection
Incremental Garbage
Collector
Garbage Collector
concorrente
Incremental Garbage
Collector
Tecnologia di
compilazione
Just In Time ( JIT ) & Ahead
of Time ( AOT ) Compilation
Adaptive Dynamic
Compilation ( ADC )
Just In Time ( JIT )
Compilation
Mapping tra Java
Thread e OS Thread
1:1
1:1
1:1
Scimark 2.0.
Embedded Caffeine Mark 3.0
• Misura le performance della VM, in termini di codice
numerico utilizzato, in applicazioni di carattere scientifico
ingegneristico.
• Misura le prestazioni della VM, in termini di velocità
di esecuzione, in applicazioni che stressano Memory
Unit, I/O Unit.
Dati Embedded CaffeineMark
Dati del test Scimark 2.0
2
2500
2000
1,5
Mflop
Num ero di
1500
istruzioni
bytecode per
1000
second
1
0,5
500
J9
Jeode
0
Linux/ARM
WinCE/ARM
Piattaforma OS/HW
J9
0
Linux/ARM
Jeode
WinCE/ARM
Piattaform a OS/HW
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Analisi della Garbage Collection
Tale test ha come obiettivo la misurazione del tempo di Garbage Collection, al variare memory
footprint.
E’ inoltre oggetto di studio la politica di gestione della Heap Memory.
WinCE/ARM
J9
Linux/ARM
Jeode
Jeode
Media ( Kb/msec )
6,456594
7,748745
Media (Kb/msec )
4,173114
3,706683
Deviazione Standard
0,504217
1,841981
Deviazione Standard
0,423681
0,854454
Andamento del tempo di Garbage Collection (Linux/ARM)
Analisi della Gestione della memoria Heap (Linux/ARM)
Tempo Garbage Collection (msec)
1600
Dimensione della Memoria Heap (Kb)
J9
1400
1200
1000
800
600
400
200
0
1000
5000
9000
13000
17000
21000
0
Dimensione del vettore
J9
25000
750
720
690
660
630
600
570
540
510
480
450
420
390
360
330
300
270
240
210
180
150
120
90
60
30
0
Jeode
J9
150
Jeode
300
Poli. (Jeode)
450
600
750
Memoria Allocata (kb)
900
1050
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Analisi delle tecnologie di compilazione
• Il test esegue cento volte il metodo CompilationTest(), il quale effettua un ordinamento a cicli fissi su un
vettore di stringhe di 2400 elementi.
• La JIT Compilation di J9 su piattaforma WinCE\ARM, diminuisce dell’uno per cento il tempo di esecuzione
del metodo CompilationTest().
• La tecnologia di compilazione ADC di Jeode, permette di avere un tempo di esecuzione molto più basso su
entrambe le piattaforme OS\HW considerate.
Jeode
J9
30000
Tempo di esecuzione (msec)
Tempo di esecuzione (msec)
6400
5900
5400
4900
4400
3900
25000
20000
15000
10000
5000
3400
0
10
20
30
40
50
60
70
80
90
100
0
10
20
30
Jeode su Linux/ARM
50
60
70
80
Numero della prova
Numero della prova
Jeode su WinCE/ARM
40
J9 su Linux/ARM
J9 su WinCE/ARM
90
100
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Analisi dei tempi di bootstrap dei thread
• Il test misura il tempo che trascorre dall’invocazione del metodo start() di un thread, all’esecuzione della
prima istruzione del metodo del Run() (tempo di bootstrap del thread). Sono state effettuate 1000
misurazioni.
• Il tempo di bootstrap di un thread è un parametro importante da valutare, in quanto esso rappresenta un
costo fisso che si riflette sul tempo di esecuzione dell’intera applicazione.
• I tempi di bootstrap dei thread di entrambe le Virtual Machine su tutte e due le piattaforme, risultano
essere molto simili, eccetto Jeode VM su piattaforma WinCE-ARM.
• I tempi di bootstrap dei thread rilevati da entrambe le VM su Linux-ARM fanno registrare una maggiore
varianza, rispetto a quelli su WinCE-ARM
Linux/ARM
J9
Jeode
WinCE/ARM
J9
Jeode
Media (msec )
2,759
2,463
Media (msec )
3,07
1,303
Deviazione Standard
2,516926
1,877509
Deviazione Standard
0,94851
0,503131
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Sun CDC HotSpot Implemetation su Symbian-ARM
andamento del tempo di Garbage Collection,
analoghi a quelli di J9.
• La JIT Compilation della Sun CDC HI VM
permette una riduzione del tempo di esecuzione di
un metodo, inferiore all’uno per cento.
Analisi del tempo di Garbage Collection
tempo di Garbage Collection
(msec)
• Politica di gestione della Heap Memory ed
• I tempi di bootstrap dei thread presentano una
varianza molto alta.
400
350
300
250
200
150
100
50
0
144
CDC
270
398
526
654
782
910
Memoria Occupata (kb)
Andamento dell 'Heap M emory Footprint
Analisi dei tempi di
bootstrap dei thread
Media (msec )
Sun CDC HI
22,922
Dimensione della Memoria
Heap (Kb)
1600
1400
1200
1000
800
600
400
200
CDC HI
0
0
0
0
27
00
25
00
23
00
0
0
0
0
0
Dimensione del vettore
21
00
19
00
17
00
15
00
13
00
11
00
90
00
70
00
50
00
23,28866
30
00
Deviazione Standard
10
00
0
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Byte Code Library ( BCEL )
I programmi scritti in Java sono compilati in un portabile formato binario, chiamato byte code.
Ogni classe è rappresentata da un singolo class file, contenente le informazioni e le istruzioni byte code
ad esso collegate.
Le BCEL API (Byte Code Engineering Library), sono un toolkit per l’analisi statica, la creazione dinamica
e la trasformazione dei Java Class file.
E’ possibile effettuare iniezioni di byte code nel Class File, senza gestire tutti i dettagli interni, tale
operazione è detta Byte Code Injection.
Hello.java
Byte Code Instruction di Hello.class
Facoltà di Ingegneria
Corso di Studi in Ingegneria Informatica
Strategie dieMonitoraggio
Piattaforma del
Java
per Sistemi
Embedded
Metodologie
strumenti perdella
il reengineering
workflow
management
Esempio di Byte Code Injection
Si vuole intercettare il momento in cui la VM inizia l’esecuzione di un metodo (evento Method Entry).
Le Byte Code Instruction da iniettare, dovranno essere inserite, subito dopo la prima istruzione byte
code del metodo.