Projekt: SPASS-meter
Die Ressourcennutzung eines Programms im Sinne von Rechenzeit, Speichernutzung, Datei- oder Netzwerktransfer sind wichtige Kennzahlen zur Steuerung der Software-Entwicklung aber auch zur Selbstanpassung von Programmen zur Laufzeit. Im Rahmen der Software-Entwicklung dienen diese Kennzahlen zur Operationalisierung von Qualitätsanforderungen und unterstützen damit die Steuerung durch das Qualitätsmanagement. Zur Laufzeit eines Programms können diese Kennzahlen gezielt zur Selbstanpassung verwendet werden, beispielsweise um die Laufzeitqualität in veränderlichen Umgebungen zu erhalten oder zu verbessern.
SPASS-meter1 ist ein Monitoring-Framework das den Verbrauch von Ressourcen wie CPU-Zeit, Speichernutzung, Datei- und Netzwerktransfer für Java-Programme vermisst um sowohl die Software-Entwicklung im Allgemeinen als auch die Entwicklung selbst-adaptiver Programme zu unterstützen. Eine Besonderheit von SPASS-meter ist die Bestimmung der Ressourcennutzung für frei definierbare semantische Programmeinheiten wie Komponenten oder Services. Eine semantische Einheit wird dabei als logische Gruppierung beschrieben, für die sowohl der Erfassungsbereich (in Java charakterisiert durch Klassen oder Methoden) als auch die zu erfassenden Ressourcen festgelegt werden kann. Der Erfassungsbereich definiert dabei auch, ob der Verbrauch einer Ressource nur direkt für die Elemente der Gruppierung oder indirekt für die von der Gruppe aufgerufenen Programmteile ermittelt werden soll. Weiterhin kann SPASS-meter programm- und systemweite Metriken, wie beispielsweise die CPU-Auslastung der ausführend virtuellen Maschine eines Java-Programms, bestimmen um die relative Ressourcennutzung 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.
Bei experimentellen Messungen mit der SPECjvm2008 Benchmark Suite konnten wir einen durchschnittlichen Laufzeit-Overhad von 2,7 % Rechenzeit und maximal 2,2 % Speicherverbrauch selbst bei Messungen des indirekten Speicherverbrauchs (Allokation) ermiteln.
SPASS-meter wird als Teil von INDENICA unter Open Source Lizenz veröffentlicht werden.
Wesentliche Eigenschaften
- CPU-Zeit, Antwortzeit, Speicherverbrauch (Allokation, Unallokation), Dateitransfer, Netzwerktransfer auf System-, Programm- und Gruppenebene
- Frei-definierbare logische Gruppierungen um z.B. für Services oder Komponenten abzubilden mit individuellen zu messenden Ressourcen
- Direkte Resourcenmessung (nur in den vorgegebenen Klassen / Methoden) oder indirekte Messung (auch in abhängigen Klassen / Methoden)
- Statische, dynamische und gemischte Instrumentierung
- Anwendbar auf Java-Programme und Android-Apps
- Optionale Integration in Java Management Extensions (JMX) und OW2 Wildcat
1 SPASS-meter wird als Teil des Entwicklungsansatzes SPASS (Simplifying the develoPment of Adaptive Software Systems) entwickelt.
SPASS-meter ist als Open Source Software unter der APACHE Lizenz verfügbar und kann vom SSE github heruntergeladen werden. Die binären Komponenten sind als Releases auch über Maven Central erhältlich.
News: SPASS-meter 1.30 (06.06.2018) unterstützt jetzt auch Java 9.
Weiterführende Links:
Laufzeit:
2010 –
Kontakt: Dr. Holger Eichelberger
Veröffentlichungen
Lfd. Nr. | Publikation |
---|---|
2017 | |
6. |
Holger Eichelberger, Cui Qin und Klaus Schmid
(2017):
From Resource Monitoring to Requirements-based Adaptation: An Integrated Approach
In:
Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering Companion (ICPE '17)
S. 91-96.
ACM.
Zusammenfassung In large and complex systems there is a need to monitor resources as it is critical for system operation to ensure sufficient availability of resources and to adapt the system as needed. While there are various (resource)-monitoring solutions, these typically do not include an analysis part that takes care of analyzing violations and responding to them. In this paper we report on experiences, challenges and lessons learned in creating a solution for performing requirements-monitoring for resource constraints and using this as a basis for adaptation to optimize the resource behavior. Our approach rests on reusing two previous solutions (one for resource monitoring and one for requirements-based adaptation) that were built in our group. |
5. |
Holger Knoche und Holger Eichelberger
(2017):
The Raspberry Pi: A Platform for Replicable Performance Benchmarks?
In:
Proceedings of the 8th Symposium on Software Performance in Softwaretechnik-Trends
Bd. 37.
Heft / Ausgabe 3.
S. 14-16.
Zusammenfassung Replicating results of performance benchmarks can be difficult. A common problem is that researchers often do not have access to identical hardware and software setups. Modern single-board computers like the Raspberry Pi are standardized, cheap, and powerful enough to run many benchmarks, although probably not at the same performance level as desktop or server hardware. In this paper, we use the MooBench micro-benchmark to investigate to what extent Raspberry Pi is suited as a platform for replicable performance benchmarks. We report on our approach to set up and run the experiments as well as the experience that we made. |
2016 | |
4. |
Holger Eichelberger, Aike Sass und Klaus Schmid
(2016):
From Reproducibility Problems to Improvements: A journey
In:
Proceedings of the 7th Symposium on Software Performance
Bd. Softwaretechnik-Trends.
Heft / Ausgabe 4.
S. 43-45.
Zusammenfassung Reproducibility and repeatability are key properties of benchmarks. However, achieving reproducibility can be difficult. We faced this while applying the micro-benchmark MooBench to the resource monitoring framework SPASS-meter. In this paper, we discuss some interesting problems that occurred while trying to reproduce previous benchmarking results. In the process of reproduction, we extended MooBench and made improvements to the performance of SPASS-meter. We conclude with lessons learned for reproducing (micro-)benchmarks. |
2014 | |
3. | Holger Eichelberger und Klaus Schmid (2014): Flexible Resource Monitoring of Java Programs In: Journal of Systems and Software, 93: 163-186. Elsevier. |
2012 | |
2. | Holger Eichelberger (2012): SPASS-meter - Measuring Diverse Software Attributes in an Integrated Manner Invited talk at KoSSE Symposium Application Performance Management (Kieker Days 2012) |
1. |
Holger Eichelberger und Klaus Schmid
(2012):
Erhebung von Produkt-Laufzeit-Metriken: Ein Vergleich mit dem SPASS-Meter-Werkzeug
In:
G. Büren and R. R. Dumke and C. Ebert and H. Münch (Hrsg.):
Proceedings of the DASMA Metrik Kongress (MetriKon '12)
S. 171-180.
Shaker Verlag.
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. |