• Non ci sono risultati.

Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Valore 0,146766 0,143082 0,146158 0,143957 0,14

3.6 Fase 5: Test energetic

Dopo aver effettuato tutti i test per misurare i tempi di esecuzione dei programmi era necessario trovare dei riscontri effettivi sui consumi. Si è reso quindi necessario misurare sperimentalmente i consumi energetici.

3.6.1 Strumentazione

Esistono diversi strumenti in grado di rilevare l’energia consumata, come gli electricity (o energy) meter, in grado di misurare la corrente assorbita da un carico elettrico; oppure le pinze amperometriche, in grado di rilevare la quantità di corrente senza bisogno di inserirle in serie al circuito come i classici amperometri.

75

Questi strumenti non erano però indicati per i test da eseguire e si è preferito utilizzare un altro strumento, costruito da Formenti e Gallazzi [14] e descritto nel loro lavoro di tesi.

Questo sistema è costituito da:

 System Board: posta a monte dell’alimentatore del computer utilizzato per i test e permette di misurare il consumo energetico di tutto il sistema. Dato che non si era interessati a suddividere i consumi in base a CPU, RAM, dischi ecc … questa soluzione pratica risulta essere perfetta per lo scopo.

Figura 3.8 - System Board

 DAQ Board (Data Acquisition Board): collegata alla System Board, permette di acquisirne i segnali, elaborali e trasmetterli al PC. Per questi esperimenti è stato utilizzato il modello NI USB-6210 DAQ, prodotto dalla National Instruments, collegabili facilmente al PC tramite porta USB.

76

Figura 3.9 - NI USB-6210 DAQ

 Programma di acquisizione dati: riceve i dati dal DAQ, permettendo il loro salvataggio e la visualizzazione a video. Il programma si basa su LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench), un ambiente di programmazione proprietario, sviluppato dalla National Instruments. Tale software presenta un’interfaccia grafica che permette di visualizzare su un grafico l’andamento della corrente e della potenza nel tempo.

77

Figura 3.10 - Interfaccia del programma di acquisizione dati in LabVIEW

Figura 3.11 - Schema dei collegamenti del sistema di acquisizione dati

PC Tester System Board DAQ

PC con programma

di acquisizione

78

3.6.2 Preparazione ed esecuzione dei test

Per effettuare i test energetici i programmi sono stati leggermente modificati in modo da aumentare la loro durata (qualche secondo di esecuzione) e rendere più semplice il processo di acquisizione. Ciò è stato fatto includendo la chiamata ai metodi interessati in un ciclo for. Il numero di iterazione è stato scelto di volta in volta in base ai test.

Tramite la strumentazione vista si è in grado di rilevare il consumo energetico di tutto il sistema. Questo però non è esattamente l’obiettivo del lavoro, che si focalizza invece sui consumi dei soli programmi test. È necessario quindi eliminare dal consumo ottenuto, quello relativo al mantenimento delle funzionalità di base del sistema, ovvero il consumo dell’idle. Per ottenere questo valore è stata fatta un’acquisizione del consumo mantenendo la macchina in uno stato di quiete, eliminando tutti i processi non fondamentali per il sistema. Sottraendo quindi il valore dell’idle al consumo totale si otterrà il valore di energia netto del programma test.

Il valore dell’idle però non è sempre costante, ma varia nel tempo anche sulla stessa macchina e nelle stesse condizioni. Per questo motivo i dati acquisiti in sessioni diverse non possono condividere lo stesso valore di idle, ma va ricalcolato ogni volta. Anche tra le acquisizioni nella stessa sessione potrebbero esserci delle fluttuazioni che vanno considerate. Questi test però registrano una durata molto breve, di qualche secondo, e per questo risulta poco probabile un cambiamento nell’idle così rapido. Ad ogni modo tutti i valori ottenuti sono stati ripetuti più volte e mediati, controllando sempre i limiti sulla confidenza già visti. In questo modo, anche se il valore di idle dovesse mutare tra un’acquisizione e la successiva, i valori di energia ne subirebbero l’influenza e i dati verrebbero scartati in quanto troppo distanti dagli altri valori.

L’output del programma di acquisizione è costituito da una serie di file di testo contenti diverse informazioni su potenza ed energia. Tra questi si sono valutati due file: uno contenente il valore di potenza istantanea ad ogni campionamento, e l’altro contenente i risultati globali. In particolare quest’ultimo riporta:

79

 Tempo di esecuzione del programma (in secondi);

 Potenza media, calcolata come valore medio tra tutte le potenze istantanee rilevate e salvate nell’altro file (in Watt).

 Energia consumata, calcolata utilizzando l’integrale della potenza nel tempo, mediante il metodo dei trapezi (in Joule).

 Wattora consumati, calcolati come

Il software di acquisizione permette di eliminare direttamente l’influenza dell’idle se viene indicato il valore medio di potenza in quella situazione. Per questo motivo è stato inserito il valore di potenza media dell’idle calcolato poco prima, in modo da ottenere già dei valori netti, senza bisogno di ulteriori manipolazioni.

La procedura tenuta per lo svolgimento dei test è sempre stata la seguente:

1. Inizio acquisizione con programma in LabVIEW installato sul PC collegato al DAQ tramite porta USB.

2. Lancio del programma test sul PC collegato alla System Board. 3. Attesa della terminazione del programma test.

4. Arresto dell’acquisizione con il programma in LabView.

L’inizio dell’acquisizione e il lancio del programma non erano perfettamente sincronizzati, ma non risultava un problema in quanto avendo impostato il valore di potenza media dell’idle direttamente nel programma il consumo in quel periodo veniva eliminato. Lo stesso discorso è valido per il tempo intercorso tra la terminazione del programma e l’arresto dell’acquisizione.

I test energetici si sono concentrati sulla sostituzione degli if concatenati con lo switch e sul programma ad hoc.

I risultati ottenuti sono stati confrontati con quelli precedenti ricavati con TPTP, per verificare l’esistenza di una certa corrispondenza.

Infine si è provato a calcolare una stima sul guadagno possibile di una esecuzione tipica del programma Adempiere.

80

Come esecuzione tipica si è preso l’inserimento di un nuovo Business Partner. Sono stati rilevati i tempi di esecuzione di tutti i metodi mediante TPTP. Sono state scelte 20 tra le classi più significative, ovvero quelle con tempi di esecuzione più alti. Tutte queste classi assieme coprivano quasi il 50% del tempo totale di esecuzione.

Sono stati analizzati i codici di queste classi alla ricerca di punti migliorabili; in particolar modo if concatenati e concatenamenti di diverse stringhe. Si è valutata poi la frequenza con cui questi obiettivi si ripetono rapportando il numero di linee di codice dei costrutti sul numero totale di linee di codice delle classi.

Si è trovato così un valore percentuale approssimante la possibile influenza di questi blocchi di codice sul totale. Chiaramente questo è un valore grossolano, in quanto si basa su due ipotesi:

 Ogni istruzione ha lo stesso peso sul tempo di esecuzione

 Il codice è analizzato in maniera statica e quindi non è dato sapere quali parti di codice vengono eseguite (e quanto volte) e quali no.

Queste due ipotesi inficiano chiaramente la bontà della stima, ma per il momento era sufficiente ottenere un indice grossolano per capire le potenzialità dei miglioramenti introdotti con l’eliminazione delle problematiche su tutto un programma complesso come Adempiere.

È stato calcolato poi il risparmio energetico per ogni classe ed effettuata la somma pesata di tutti i risparmi in base al tempo di esecuzione dei metodi di ogni classe.

81

Capitolo 4

4

Risultati e regole di ottimizzazione

In questo capitolo verranno riportati tutti i risultati ottenuti dai test descritti nel capitolo precedente ed effettuati mediante l’utilizzo del plug-in TPTP della piattaforma Eclipse. I risultati sono suddivisi per categoria:

 Risultati dei test su if concatenati e switch

 Risultati dei test sugli iteratori

 Risultati dei test sulle stringhe

 Risultati dei test sul programma ad hoc

Per ogni categoria sono indicati i vari test effettuati, con i tempi di esecuzione e alcuni grafici di supporto per evidenziare meglio i risultati ottenuti.

Dall’analisi dell’esito dei test sono state poi estrapolate alcune regole per la programmazione efficiente nel linguaggio Java.

Il computer con il quale sono stati effettuati i test aveva le seguenti caratteristiche:

 Intel Core 2 Duo E4400 @ 2.00 GHz (2MB L2 Cache), FSB 800 MHz

 RAM da 2 GB DDR2

82

Documenti correlati