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