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.