Projekt: SPASS-meter

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).


SPASS-meter is released under APACHE Open Source license and is available for download at the SSE github. The binary released components are also on Maven Central.

News: SPASS-meter 1.30 (06.06.2018) now supports also Java 9.


Further links:


                2010 –

Contact: Dr. Holger Eichelberger