The consumption of resources of a program can be measured for example in terms of computation time, memory usage, file- or network transfer. These measurements are important key indicators for the management of software development activities but also to control the self-adaptation and self-configuration of programs at runtime. During software development, these indicators can be used to operationalize quality requirements and to support the project management. At runtime of a program, these indicators can be used to drive self-adaptation, e.g., to maintain or improve the runtime quality in changing environments.
Figure Spass-meter Monitoring Pipeline
SPASS-meter1 is a monitoring-framework that measures the consumption of resources such as CPU time, memory use, file and network-transfer for Java programs in order to support software development in general and, in particular, self-adaptive programs. One distinct feature of SPASS-meter determines the resource consumption of user-defined semantic program units such as components or services. A semantic program unit is defined in terms of a logical grouping, its monitoring scope (in Java characterized as individual classes or methods) as well as the resource to be monitored. The monitoring scope also defines whether the consumption shall be recorder directly for the specified elements or also indirectly for dependent (called) program parts. Further, SPASS-meter can determine the resource consumption on program and system level such as the CPU usage of the executing virtual machine of a Java program in order to derive the relative resource consumption and to enable comparisons across programs.
Figure Spass-meter Architectur
The monitoring scope of SPASS-meter can be configured in a very flexible way and, indirectly, allows controlling the runtime overhead, as resource consuming measurements such as indirect metrics are only executed on demand. The configuration of SPASS-meter can be given in terms of source code annotations or as external configuration file. As usual in Java, SPASS-meter determines the resource consumption by instrumentation, i.e., the insertion of additional program code realizing the measurements.
Experiments with the SPECjvm2008 benchmark suite showed an average runtime overhead of 2,7 % computation capabilities and at maximum 2,2 % additional memory consumption even for indirect measurement of memory allocations.
SPASS-meter will be published under an Open Source license as part of the INDENICA results.
Summary of important features:
- Measurement of CPU time, response time, memory use (allocation, unallocation), file transfer and network transfer on system, program and logical group level
- User-defined logical grouping in order to specify the monitoring scope for semantic units such as services or components
- Direct resource monitoring (just in specified classes /methods) or indirect monitoring (also in dependent classes / methods)
- Static, dynamic and mixed instrumentation
- Can be applied to Java programs and Android Apps
- Optional integration with Java Management Extensions (JMX) and OW2 Wildcat
1 SPASS-meter is being developed as a part of the development approach SPASS (Simplifying the develoPment of Adaptive Software Systems).
News: SPASS-meter 1.30 (06.06.2018) now supports also Java 9.
Contact: Dr. Holger Eichelberger
|6.||Holger Eichelberger, Cui Qin and 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) pp. 91-96. ACM.|
|5.||Holger Knoche and Holger Eichelberger (2017): The Raspberry Pi: A Platform for Replicable Performance Benchmarks? In: Proceedings of the 8th Symposium on Software Performance in Softwaretechnik-Trends vol. 37. number / issue 3. pp. 14-16.|
|4.||Holger Eichelberger, Aike Sass and Klaus Schmid (2016): From Reproducibility Problems to Improvements: A journey In: Proceedings of the 7th Symposium on Software Performance vol. Softwaretechnik-Trends. number / issue 4. pp. 43-45.|
|3.||Holger Eichelberger and Klaus Schmid (2014): Flexible Resource Monitoring of Java Programs In: Journal of Systems and Software, 93: 163-186. Elsevier.|
|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 and 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 (ed.): Proceedings of the DASMA Metrik Kongress (MetriKon '12) pp. 171-180. Shaker Verlag.|