EichelbergerSchmid12

Werbung
Erhebung von Produkt-Laufzeit-Metriken: Ein Vergleich mit
dem SPASS-Meter-Werkzeug
Holger Eichelberger and Klaus Schmid
Software Systems Engineering, Institute of Computer Science,
University of Hildesheim, Germany
{eichelberger,schmid}@sse.uni-hildesheim.de
Please cite this publication as follows:
Holger Eichelberger and Klaus Schmid. “Erhebung von Produkt-Laufzeit-Metriken: Ein Vergleich
mit dem SPASS-Meter-Werkzeug”. In: Proceedings of the DASMA Metrik Kongress (MetriKon’12).
In German. Shaker Verlag, 2012, pp. 171–180.
The corresponding BibTEX-entry is:
@INPROCEEDINGS{EichelbergerSchmid12,
author = {Holger Eichelberger and Klaus Schmid},
title = {Erhebung von Produkt-Laufzeit-Metriken: Ein Vergleich mit dem SPASS-Meter-Werkzeug},
booktitle = {Proceedings of the DASMA Metrik Kongress (MetriKon’12)},
year = {2012},
pages = {171--180},
publisher = {Shaker Verlag},
note = {In German}
}
The copyright with this publication is held by the authors Eichelberger and Schmid. Redistribution
without this disclaimer is not permitted. The definitive version was published in Proceedings of
the DASMA Metrik Kongress (MetriKon’12), 2012.
Erhebung von Produkt-Laufzeit-Metriken
Erhebung von Produkt-Laufzeit-Metriken: Ein Vergleich mit dem
SPASS-Meter-Werkzeug
Holger Eichelberger, Klaus Schmid
Universität Hildesheim, Marienburger Platz 22, 31131 Hildesheim
{eichelberger, schmid}@sse.uni-hildesheim.de
Zusammenfassung:
Die Erfassung von Produktmetriken zur Laufzeit ist ein wesentlicher Baustein einer
Qualitätsstrategie in der Produktentwicklung. Die Erfassung von Produktmetriken
in der Entwicklung ist jedoch oft mit signifikantem Aufwand verbunden, da viele
Werkzeuge nur bestimmte Eigenschaften erfassen können und ihre Verwendung oft
sehr komplex ist. Darüber hinaus entsteht durch die Durchführung der Messung
meist ein signifikanter Laufzeit-Overhead.
Das Ziel des SPASS-meter-Werkzeugs ist die integrierte Erfassung einer Vielzahl
von Metriken bei einfacher Konfiguration und geringem Laufzeit-Overhead. In diesem Beitrag stellen wir SPASS-meter vor und vergleichen es mit bekannten
ähnlichen Werkzeugen wie Kieker, OpenCore, Xprof und HPROF. Eine Übersicht
der Stärken und Schwächen schließt den Vergleich ab.
Schlüsselbegriffe
Erfassung von Metriken, Laufzeit-Overhead, Werkzeugvergleich, SPASS-meter
1
Einführung
Qualitätsmanagement in der Software-Entwicklung umfasst Planung, Steuerung
und Prüfung der Qualität von Softwareprodukten und -prozessen. Erwünschte
Qualitätsmerkmale wie z.B. Performanz eines Systems, einer Komponente oder
von einzelnen Funktionen werden in Form von Qualitätsanforderungen festgelegt. Im Verlauf der Softwareentwicklung werden diese Anforderungen verfeinert
und, falls möglich, in Form von Produktmetriken operationalisiert, um die Umsetzung messbar zu machen.
Die Erfassung von Produktmetriken ist jedoch oft mit signifikantem Aufwand
verbunden. Viele Werkzeuge können nur bestimmte Eigenschaften erfassen, so
dass gegebenenfalls mehrere Werkzeuge in Kombination eingesetzt werden müssen, um die benötigten Metriken zu bestimmen. Zudem ist die Anwendung der
Werkzeuge teilweise sehr komplex. Darüber hinaus entsteht durch die Anwendung vieler Werkzeuge meist ein signifikanter Laufzeit-Overhead, der wiederum
die gemessenen Daten beeinflusst.
MetriKon 2012
H. Eichelberger, K. Schmid
In diesem Beitrag stellen wir SPASS-meter1 vor, ein Werkzeug, das die identifizierten Probleme lösen hilft. SPASS-meter unterstützt die integrierte Erfassung
einer Vielzahl von Produkt-Laufzeit-Metriken für Java-Programme. Im Gegensatz
zu existierenden Werkzeugen ermöglicht SPASS-meter die Messung von Produktmetriken für frei definierbare Programmeinheiten wie Services oder
Komponenten. Um SPASS-meter in Bezug auf existierende Arbeiten einordnen
zu können, führen wir einen qualitativen und quantitativen Vergleich mit bekannten Werkzeugen wie OpenCore [4], Kieker [7, 10] oder Werkzeugen des Java
Development Kit (JDK) durch. In dieser Arbeit analysieren wir den LaufzeitOverhead, insbesondere die Auswirkung der Werkzeuge auf Rechenleistung und
Speicherverbrauch. Auch wenn es durchaus ähnliche Vergleichsarbeiten für
kommerzielle Werkzeuge gibt, ist uns kein ähnlicher Vergleich bekannt, der sowohl akademische als auch kommerzielle Werkzeuge umfasst.
Dieser Beitrag ist wie folgt strukturiert: In Abschnitt 2 stellen wir zunächst
SPASS-meter und in Abschnitt 3 die Vergleichswerkzeuge vor. In Abschnitt 4
führen wir einen qualitativen und in Abschnitt 5 einen quantitativen Vergleich der
beschriebenen Werkzeuge durch. In Abschnitt 6 fassen wir die Ergebnisse zusammen und geben einen Ausblick auf zukünftige Arbeiten.
2
SPASS-meter
In diesem Abschnitt beschreiben wir die grundlegenden Konzepte von SPASSmeter. SPASS-meter ist ein Werkzeug zur flexiblen Erfassung einer Vielzahl von
ressourcen-basierten Produktmetriken wie Ausführungszeit, Antwortzeit, Speicherverbrauch, Datei- oder Netzwerktransfer. Dabei interessierten uns nicht nur
die Gesamtergebnisse für ein zu messendes Programm, wie sie bereits mithilfe
verschiedener Werkzeuge bestimmt werden können, sondern insbesondere die
Zusammensetzung der Werte der Produktmetriken bezogen auf einzelne semantische Einheiten wie Services oder Komponenten.
Semantische Einheiten können im einfachsten Fall auf Elemente der Programmiersprache wie Methoden, Klassen oder Pakete abgebildet werden. Diese
Zuordnung ist jedoch nicht immer möglich, da eine semantische Einheit, abhängig vom gewählten Entwicklungsansatz, aus verschiedenen Elementen auf
Implementierungsebene bestehen kann, so kann ein Service durch mehrere Klassen realisiert sein.
SPASS-meter unterstützt die Erfassung von Produktmetriken für semantische
Einheiten in Form von logischen Gruppen die Elemente der Programmiersprache
zusammenfassen. Für jede Gruppe kann die Menge der zu erfassenden Produktmetriken und deren Erfassungsbereich festlegt werden. Der Erfassungsbereich
1
SPASS (Simplifying the Development of Adaptive Software Systems) ist ein messbasierter Ansatz zur Entwicklung
adaptiver Systeme der in unserer Arbeitsgruppe entwickelt wird; SPASS-meter ist das zugehörige Mess-Framework.
Software Metrik Kongress
Erhebung von Produkt-Laufzeit-Metriken
definiert ob eine Produktmetrik nur direkt für die Elemente der Gruppe oder auch
indirekt für die von der Gruppe aufgerufenen Programmteile ermittelt werden
soll. Weiterhin kann SPASS-meter systemweite Metriken, wie beispielsweise die
CPU-Auslastung der virtuellen Maschine, bestimmen um relative Produktmetriken abzuleiten und diese über Programme hinweg vergleichbar zu machen.
Dadurch ist SPASS-meter sehr flexibel konfigurierbar und ermöglicht indirekt die
Kontrolle des Laufzeit-Overheads, da aufwändigere Messverfahren wie indirekte
Produktmetriken nur bei Bedarf zum Einsatz kommen. Die Konfiguration von
SPASS-meter kann in Form von Quelltext-Annotationen oder als externe Konfigurationsdatei erfolgen.
Wie in Java üblich ermittelt SPASS-Meter den Ressourcenverbrauch durch Instrumentierung. Instrumentierung bedeutet, dass zusätzlicher Programmcode, der
die Messungen realisiert, in das zu messende Programm eingebracht wird.
3
Vergleichswerkzeuge
In diesem Abschnitt stellen wir die Werkzeuge vor, die wir in diesem Beitrag sowohl qualitativ als auch quantitativ mit SPASS-meter vergleichen. Wir
beschreiben zunächst die Auswahl und danach die einzelnen Werkzeuge.
Die Verfügbarkeit schränkt die Menge der Kandidaten für einen Vergleich deutlich ein. Einerseits ist es nicht selbstverständlich, dass kommerzielle Werkzeuge
wie OpenCore, AppDynamics oder JProfiler von den Herstellerfirmen für eine
(längere) Evaluation zur Verfügung gestellt werden. Andererseits sind akademische Werkzeuge wie JRaf-2 [1] oder J-SEAL2 [2] oft nicht (mehr) verfügbar oder
bereits veraltet. Zudem beschränken wir uns in dieser Arbeit aus Platzgründen auf
Werkzeuge, die direkt in der Produktionsumgebung einsetzbar sind, d.h. die ohne
grafische Benutzeroberfläche anwendbar sind.
Unter den genannten Bedingungen haben wir OpenCore, Kieker [7, 9], Xprof [3,
8] und HPROF [5, 8] für den Vergleich ausgewählt. Wir beschreiben in den folgenden Abschritten für jedes genannte Werkzeug die unterstützten
Produktmetriken, die Konfigurierbarkeit und das angewendete Messverfahren.
3.1
OpenCore
JXInsight/OpenCore ist ein kommerzielles Werkzeug der Firma JINSPIRED, das
insbesondere auf die Ermittlung von Verhaltens-, Qualitäts- und RessourcenAspekten von Java-basierten Programmen ausgelegt ist. Neben reinen JavaApplikationen unterstützt OpenCore JVM-basierte Sprachen wie Jython und
JRuby sowie die Analyse von SQL-Anfragen.
Die Konfiguration von OpenCore erfolgt durch Festlegung der zu beobachtenden
Programmteile, der zu ermittelnden Messwerte (Probes) und der abzuleitenden
Metriken (Metrics). Die zu beobachtenden Programmteile werden als ein- oder
MetriKon 2012
H. Eichelberger, K. Schmid
ausgeschlossene Pakete bzw. Klassen angegeben. OpenCore unterstützt zeitbasierte Messwerte wie z.B. verstrichene Laufzeit oder benötigte Zeit für die
automatische Speicherbereinigung sowie Zählgrößen wie z.B. belegter Speicher
oder Anzahl der blockierten Threads. Als abgeleitete Metriken können z.B.
Durchschnittswert, Maximum oder Varianz (der Differenzen aufeinanderfolgender) Messwerte angewendet werden. Die Konfiguration erfolgt in Form von
Dateien.
OpenCore ermittelt die Produktmetriken durch Instrumentierung.
3.2
Kieker
Kieker [7] ist ein OpenSource Werkzeug der Arbeitsgruppe Software Engineering
der Universität Kiel. Kieker ist insbesondere auf die Beobachtung von Kontrollflüssen und Ausführungszeit ausgelegt. Die Analyse der aufgezeichneten Daten
erfolgt nach Beendigung der Messung, d.h. offline. Kieker ist auf JavaProgramme anwendbar und wird aktuell auf VisualBasic und .NET erweitert [9].
Die Konfiguration von Kieker legt fest welche Produktmetriken für welche Klassen zu ermitteln sind. Dies kann in Form von Quelltext-Annotation oder als
externe Konfigurationsdatei erfolgen.
Kieker ermittelt die Produktmetriken durch Instrumentierung. Unter Verwendung
der quellenoffenen Bibliothek SIGAR1 (System Information Gatherer) können
zudem Informationen des Betriebssystems wie zum Beispiel der Gesamtspeicherverbrauch oder die Prozessorauslastung ermittelt werden.
3.3
XProf
Der Hotspot-Profiler [3, 8] des Oracle JDK identifiziert laufzeitintensive Methoden (hotspots). Diese werden von der virtuellen Maschine als Teil der
Laufzeitoptimierung transparent in nativen Code übersetzt und ausgeführt.
Aufgrund des speziellen Einsatzgebiets ermittelt der Hotspot-Profiler ausschließlich die Laufzeit von Methoden. Die virtuelle Maschine wird durch den
Parameter Xprof angewiesen, die Daten zu sammeln, die der Hotspot-Profiler im
Normalbetrieb verwirft. Die gesammelten Daten werden am Ende der Programmausführung ausgegeben. XProf ist nicht konfigurierbar.
3.4
Interne Java-Profiler
Der Heap/CPU-Profiler (HPROF) [5, 8] des Oracle JDK zeichnet den Speicherverbrauch und die Laufzeiten von Java-Programmen auf. HPROF ist als einfaches
Werkzeug zur Unterstützung der Programmierung gedacht.
1
http://www.hyperic.com/products/sigar
Software Metrik Kongress
Erhebung von Produkt-Laufzeit-Metriken
Produktmetrik
OpenCore
i
Kieker
i
Xprof
HPROF
i
i
x
Methode
Klasse
Paket
Gruppierung
Annotationen
Datei
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
d
x
x
x
anwendbar für
Programme in
I/O-Transfer
d,i d,i
Mechanismus
Granularität
Speicher
Speicher
d,i
Betriebssystem
CPU-Zeit
Laufzeit
Spassmeter
I/O-Transfer
Programm
Konfiguration
Java
Java,
Jython,
JRuby, SQL
Java,
VB, .NET
Java
Java
Tabelle 1: Zusammenfassung der Werkzeuge (d=direkt, i=indirekt, x=unterstützt).
Die Konfiguration von HPROF beschränkt sich im Wesentlichen auf die Art der
Aufzeichnung und deren Häufigkeit. Als Produktmetriken ermittelt HPROF den
Anteil der Instanzen einer Klasse am Speicherverbrauch sowie die Häufigkeit der
Ausführung einzelner Methoden bzw. deren Anteil an der Programmlaufzeit.
HPROF ermittelt Produktmetriken durch Instrumentierung.
4
Qualitativer Vergleich
In diesem Abschnitt fassen wir die Eigenschaften der bisher beschriebenen Werkzeuge zusammen. Wir klassifizieren dafür welche Arten von Messwerten ermittelt
werden, wie die Ermittlung von Messwerten konfiguriert werden kann, auf welche Weise die Messwerte ermittelt werden und auf welche Programmiersprachen
der jeweilige Ansatz anwendbar ist. Dabei konzentrieren wir uns insbesondere auf
den Vergleich mit SPASS-meter.
Tabelle 1 fasst die besprochenen Eigenschaften und insbesondere die Unterschiede
zusammen. SPASS-meter zeichnet sich durch eine breite Unterstützung von Ressourcen und vielfältige Konfigurierbarkeit aus. Auch OpenCore misst
verschiedene Ressourcen (nur für diesen Vergleich relevante sind in Tabelle 1 dargestellt) und unterstützt Java-ähnliche Sprache und SQL. Kieker fokussiert
insbesondere auf Laufzeit und die Messung einiger Systemressourcen. Xprof und
HPROF sind einfache Programme zur Unterstützung der Programmierung.
MetriKon 2012
H. Eichelberger, K. Schmid
5
Quantitativer Vergleich
Die Ermittlung von Laufzeit-Produktmetriken für Java-Programme erfolgt in der
Regel durch Instrumentierung, das heißt durch Veränderung des zu messenden
Programms. Dadurch werden jedoch zugleich die Laufzeit-Eigenschaften des zu
messenden Programms verändert. Damit möglichst unverfälschte Werte ermittelt
werden, ist es daher notwendig diese Beeinflussung möglichst gering zu halten.
Es ist daher ein Gütekriterium für ein Messwerkzeug, dass die Beeinflussung
möglichst gering gehalten wird. Es ist darüber hinaus auch von praktischer Bedeutung: jede Erhöhung der Rechenzeit oder des Speicherbedarfs macht die
Anwendung der Werkzeuge aufwändiger.
In diesem Abschnitt vergleichen wir die oben beschriebenen Werkzeuge in quantitativer Weise. Dazu analysieren wir die Auswirkung (Overhead) der Anwendung
der einzelnen Werkzeuge auf ein Testsystem bezüglich Rechenleistung und Speicherverbrauch. Im nächsten Abschnitt beschreiben wir die Umgebung zur
Analyse der Werkzeuge. In Abschnitt 5.3 diskutieren wir die Ergebnisse für Rechenleistung und in Abschnitt 5.4 die Ergebnisse für Speicherverbrauch.
5.1
Messumgebung
Um den Overhead der einzelnen Werkzeuge zu bestimmen, wenden wir jedes
Werkzeug auf eine Testsuite an. Das Werkzeug und auch die Testsuite werden auf
einem Rechnersystem ausgeführt, das speziell für diese Analyse installiert wurde.
In diesem Abschnitt beschreiben wir das Rechnersystem, das installierte Betriebssystem, die Softwareumgebung und die verwendete Testsuite.
Die Messungen werden auf einem Dell OptiPlex 790MT durchgeführt, der mit
einem Intel Core i5-2500 3.30GHz Prozessor, 4GByte Hauptspeicher 1.3GHz
DDR3-RAM und einer 128GB SATA solid state disk ausgestattet ist. Als Betriebssystem installieren wir Ubuntu Linux, Version 12.04.1 64 Bit ohne grafische
Benutzeroberfläche, um mögliche Beeinflussungen durch eine grafische Benutzeroberfläche zu vermeiden. Es wird kein Virenscanner installiert. Automatische
Updates werden deaktiviert.
Als Java-Umgebung verwenden wir das (zum Zeitpunkt der Messungen aktuelle)
Oracle JDK 1.6.0_34 64 Bit. Um den Ressourcenverbrauch der virtuellen Maschine zu ermitteln, wird sysstat1 installiert und so konfiguriert, dass der aktuelle
Verbrauch einmal pro Sekunde aufgezeichnet wird.
In der Literatur werden üblicherweise bekannte Systeme oder Testsuiten verwendet um Messergebnisse in nachvollziehbarer Weise zu ermitteln. In [1, 2, 10]
werden beispielsweise Benchmark-Suiten der Standard Performance Evaluation
1
http://sebastien.godard.pagesperso-orange.fr/
Software Metrik Kongress
Erhebung von Produkt-Laufzeit-Metriken
Corporation (SPEC) eingesetzt. Für unsere Messungen verwenden wir den aktuellen Java Virtual Machine Benchmark SPECjvm20081, da dieser frei verfügbar
ist und auch in der Literatur meist als Referenz herangezogen wird.
SPECjvm2008 besteht aus 37 Einzel-Benchmarks die die Performanz der virtuellen Maschine unter Last bestimmen. Dabei werden unter anderem der JavaCompiler, Fast Fourier Transformationen, kryptografische Berechnungen, XMLTransformationen und Anwendungsprogramme ausgeführt.
5.2
Messvorbereitung und Messablauf
Als Vergleichsgrundlage werden Rechenleistung und Speicherverbrauch der
Benchmark Suite in „Leerlauf-Konfiguration“ bestimmt. Für die Messungen der
Werkzeuge verwenden wir OpenCore in Version 6.2.M10, Kieker in Version 1.5
und XProf sowie HPROF aus dem JDK Version 1.6.0_34. Da Laufzeit die gemeinsame Produktmetrik aller beschriebenen Werkzeuge ist, wird für jedes
Werkzeug eine Konfiguration festgelegt, die die Ermittlung des Laufzeitanteils
jedes Einzel-Benchmarks beschreibt. Bei der folgenden Analyse ist zu beachten,
dass die einzelnen Werkzeuge unterschiedliche Aspekte von Laufzeit messen.
Für zusätzliche Vergleiche wurden weitere Konfigurationen für alle 37 EinzelBenchmarks erstellt, die die Breite der von den jeweiligen Werkzeugen unterstützten Produktmetriken abdecken. Alle Konfigurationen wurden so definiert,
dass keine indirekten Produktmetriken außer Laufzeit bestimmt werden.
Um mögliche Schwankungen während der Ausführung zu eliminieren, wird
SPECjvm2008 in jeder Konfiguration fünfmal in Folge mit jeweils 15 Minuten
Pause ausgeführt. Dabei führen wir die Basis-Konfiguration des SPECjvm2008
auf einer Client/Hotspot-JVM mit maximaler Stackgröße von 1GByte aus. Für
den SPECjvm2008 geben wir keine besonderen Einstellungen (Basis-LastModus). Insgesamt dauert ein Durchlauf des SPECjvm2008 mit diesen Einstellungen ca. 130 Minuten, d.h. die Messung für eine Konfiguration fast 12 Stunden.
5.3
Rechenleistung
SPECjvm2008 ermittelt die Anzahl der Operationen pro Minute für die 37 EinzelBenchmarks und ein kombiniertes Ergebnis für die gesamte Suite. Für die Konfiguration ohne Metrikenerfassung liegt das kombinierte Ergebnis im Bereich von
163 bis 165 Operationen pro Minute.
Abbildung 1 illustriert die Resultate für jede Konfiguration (jeweils fünf Messun-
gen) als Kastengrafik (Box-Whisker-Plot). Aufgrund der Messergebnisse teilen
wir die Werkzeuge in zwei Gruppen ein: in Werkzeuge mit geringem und Werkzeuge mit hohem Einfluss auf die Rechenleistung. Abbildung 1 a) stellt die
1
http://www.spec.org/jvm2008/
MetriKon 2012
H. Eichelberger, K. Schmid
113
166
165
112,5
164
112
163
162
111,5
161
111
160
110,5
159
158
110
SPECjvm
kieker
openCore
openCore+ SPASS-meter SPASS-meter+
Xprof
a)
b)
Abbildung 1: Einfluss der Werkzeuge auf die SPECjvm-Werte pro Minute
Gruppe mit geringem Einfluss (inklusive Leerlauf-Konfiguration) dar. Abbildung
1 b) zeigt in anderer Achsenskalierung die Gruppe mit deutlichem Einfluss auf
die Laufzeiteigenschaften dar. Die Messergebnisse mit Erfassung weiterer Produktmetriken neben Laufzeit sind mit „+“ bezeichnet. Mit HPROF terminierte
keine Ausführung von SPECjvm2008 innerhalb von 4 Stunden.
In der Gruppe der Werkzeuge mit geringem Einfluss liegt die Streuung der
Messwerte bei weniger als 1,5 Operationen pro Minute. OpenCore erzeugt den
geringsten Overhead (weniger als 1% in beiden Konfigurationen). Die Messungen mit Kieker ergeben 1,1% Overhead. Kieker erzeugt dabei
Aufzeichnungsdateien von insgesamt mehr als 14 GByte. Die Anwendung von
SPASS-meter führt in beiden Konfigurationen zu weniger als 2,8% Overhead was
durch die Laufzeit-Zusammenfassungen zu Gruppierungen und noch nicht abgeschlossene Optimierungsarbeiten begründet ist. Man erkennt zugleich jedoch
auch die verbleibende starke Streuung trotz Mittelung der gemessenen Werte. So
erscheint OpenCore teilweise besser als das Originalprogramm und auch bei
SPASS-meter wurden bessere Werte mit der Erfassung zusätzlicher Metriken gemessen, obwohl die Performanz leicht geringer sein sollte. In der Gruppe mit
deutlichem Einfluss erzeugt Xprof ca. 32% Overhead.
5.4
Speicherverbrauch
Den Speicherverbrauch der Werkzeuge haben wir aus den periodischen Aufzeichnungen von sysstat ermittelt. Wie in der Kastengrafik in Abbildung 2
dargestellt liegt der durchschnittliche Speicherverbrauch in allen Konfigurationen
bei ca. 600 MByte, d.h. im Streuungsbereich der Leerlaufkonfiguration. Streuungen der Messwerte können insbesondere durch die automatische
Speicherverwaltung von Java auftreten, z.B. wenn die Bestimmung des aktuellen
Software Metrik Kongress
Erhebung von Produkt-Laufzeit-Metriken
16,5
16
15,5
15
14,5
14
13,5
13
12,5
12
SPECjvm
kieker
openCore
openCore+
SPASS-meter SPASS-meter+
Xprof
Abbildung 2: Speicherverbrauch der Werkzeuge in % (von 4GByte)
Speicherverbrauchs zeitlich kurz vor oder nach der automatischen Speicherbereinigung erfolgt. OpenCore und SPASS-meter weisen in unseren Messungen die
geringsten Schwankungen auf. Xprof belegt im Maximum bis zu 40MBytes mehr
Speicher als die anderen Konfigurationen. Dies ist wahrscheinlich eine Folge der
umfangreichen Aufzeichnung für sämtliche ausgeführten Methoden.
6
Zusammenfassung
Die Erfassung von Laufzeit-Produktmetriken ist ein wichtiger Baustein der Qualitätssicherung. Werkzeuge zur Bestimmung von Produktmetriken unterscheiden
sich in den unterstützten Produktmetriken, der Konfiguration und dem Grad der
Beeinflussung (Overhead). In diesem Beitrag haben wir SPASS-meter, ein neues
Werkzeug zur Bestimmung des Ressourcenverbrauchs von Java-Programmen
vorgestellt und in qualitativer und quantitativer Weise mit bekannten Programmen
(OpenCore, Kieker, Xprof und HPROF) verglichen.
In qualitativer Hinsicht unterscheidet sich SPASS-meter (auch von weiteren existierenden Werkzeugen) in der Art der unterstützten Produktmetriken und der
flexiblen Konfiguration. SPASS-meter ermöglicht insbesondere die Bestimmung
des Ressourcen-Verbrauchs frei definierbarer semantischer Programmeinheiten.
Der quantitative Vergleich zeigt, dass OpenCore, Kieker und SPASS-meter ähnlich wenig Overhead erzeugen. Im Gegensatz zu OpenCore und Kieker, die seit
Jahren entwickelt und optimiert werden, ist das Optimierungspotential von
SPASS-meter noch nicht voll ausgenutzt. Xprof hat signifikant mehr Overhead.
Historisch betrachtet sind die gemessenen Werte von OpenCore, Kieker und
SPASS-meter bemerkenswert. Ältere Werkzeuge führten zu deutlich größeren
Overheads. So führte beispielsweise JRaf-2 [1] unter SPECjvm98 zu einer Re-
MetriKon 2012
H. Eichelberger, K. Schmid
duktion der Rechenleistung um 20%. Weitaus größere Overheads werden ebenfalls für aktuelle Profiler, wie beispielsweise Eclipse TPTP berichtet [6].
In Zukunft werden wir zum Beispiel im EU-geförderten Forschungsprojekt
INDENICA mit SPASS-meter den Ressourcenverbrauch einzelner Services auf
verschiedenen Service-Plattformen bestimmen. Die praktischen Erfahrungen
werden auch helfen, SPASS-meter weiter zu optimieren. SPASS-meter wird als
Teil von INDENICA unter Open Source Lizenz veröffentlicht werden.
Danksagungen
Wir bedanken uns bei der Firma JInsight, insbesondere bei Herrn Rod Peakcock,
für die freundliche Bereitstellung einer Forschungslizenz für OpenCore.
Diese Arbeit wird teilweise durch das INDENICA Projekt unterstützt.
INDENICA wird durch die Europäische Kommission unter der Fördernummer
257483 im Bereich Internet of Services, Software & Virtualisation (ICT 2009.1.2)
im 7. Rahmenprogramm gefördert.
Literaturhinweise
[1] W. Binder and J. Hulaas. A Portable CPU-Management Framework for
Java. IEEE Internet Computing, 8:74–83, September 2004.
[2] W. Binder, J. G. Hulaas, and A. Villazón. Portable resource control in Java.
In OOPSLA '01, pages 139–155, 2001.
[3] Java Performance Tuning team. Question of the month: -Xprof, 2012.
http://www.javaperformancetuning.com/news/qotm037.shtml.
[4] JINSPIRED. OpenCore, 2012. http://www.jinspired.com.
[5] Kelly O'Hare. HPROF: A Heap/CPU Profiling Tool in J2SE 5.0, 2004.
http://java.sun.com/developer/technicalArticles/Programming/HPROF.html.
[6] D. Okanovic and M. Vidakovic. Performance Profiling of Java Enterprise
Applications. In CIST 2011, 2011.
[7] M. Rohr, A. van Hoorn, J. Matevska, N. Sommer, L. Stoever, S. Giesecke,
and W. Hasselbring. Kieker: Continuous Monitoring and on demand Visualization of Java Software Behavior. In SE '08, 2008.
[8] SUN.
Java
Tuning
White
Paper,
2005.
http://www.oracle.com/technetwork/java/tuning-139912.html.
[9] A. van Hoorn, H. Knoche, W. Goerigk, and W. Hasselbring. Model-driven
instrumentation for dynamic analysis of legacy software systems. SofwaretechnikTrends, 31(2), 2012.
[10] A. van Hoorn, J. Waller, and W. Hasselbring. Kieker: A framework for application performance monitoring and dynamic software analysis. In ICPE '12,
pages 247–248, 2012.
Software Metrik Kongress
Herunterladen