Im PermanEnt-Projekt arbeiten die Projektpartner evermind GmbH, HBT GmbH, IOTIQ GmbH und das Universitätsrechenzentrum der Universität Leipzig an einer neuartigen Methode zur Identifikation von Performanceregressionen in CI-Pipelines. Dabei werden bestehende Unittests zu effizient messbaren Workloads transformiert und Werkzeuge entwickelt, um die Performancemessung in CI-Prozesse zu integrieren. Die entwickelten Methoden werden in dem aktuell prototypisch verfügbaren Jenkins-Plugin Peass-CI öffentlich zugänglich gemacht.

Auf dieser Webseite informieren wir regelmäßig über Neuigkeiten zum Projekt. Melden Sie sich bei Interesse am Projekt gerne für unseren Newsletter an oder informieren Sie sich über das Konzept über die aktuell verfügbare Präsentationen und Veröffentlichungen.

Motivation

In Verkehrsinformationssystemen benötigen Kunden schnell Verbindungen basierend auf Echtzeitdaten, um den ÖPNV effizient nutzen zu können, bei Webportalen führen höhere Antwortzeiten dazu, dass Kunden ggf. die aktuelle Transaktion abbrechen und bei der Verwaltung mobiler Geräte können gehen erhöhte Antwortzeiten oft mit mehr Stromverbrauch einher, der die Nutzungsdauer mobiler Geräte verkürzt.

Die Performance von IT-Systemen, d.h. die Effizienz eines Softwaresystems hinsichtlich Zeit- und Ressourcenverbrauch, wird maßgeblich durch die Implementierung bestimmt. Der Einsatz schnellerer Hardware führt zu dauerhaft erhöhten Kosten und löst Probleme nur solange, bis die Zahl der Nutzer wächst oder weitere ressourcenintensive Funktionalitäten implementiert werden.

Die Antwortzeit von IT-Systemen spielt in vielen Bereichen der Wirtschaft eine entscheidende Rolle:

In PermanEnt entwickeln wir einen neuartigen Ansatz, um Performanceprobleme durch Performance-Unittests (PUTs) zu ermitteln.

Zielsetzung

Um Performanceprobleme zu finden, werden aktuell Lasttests und Performancebenchmarks in der Qualitätssicherung und Monitoring im Betrieb eingesetzt. Die Implementierung und Wartung von Lasttests und Performancebenchmarks ist zeitaufwändig, die Suche nach Performanceproblemen in Monitoringdaten findet die Probleme erst im Produktivbetrieb.

 

Um funktionale Korrektheit einer Software sicherzustellen, werden durch Unittests kleine Programmeinheiten auf ihre Korrektheit geprüft. PUTs sollen äquivalent dazu die Performance von kleinen Programmeinheiten prüfen und in den Continuous-Integration-Prozess integriert werden, um regelmäßig und zeitnah Rückmeldungen über Veränderungen der Performance zu geben.

Umsetzung

Dafür werden drei Forschungsthemen genauer beleuchtet:

Performance wird durch verschiedene zufällige Faktoren bestimmt, wie die Just-In-Time-Compilation der JVM, die Speicherfragmentierung oder die Prozessortemperatur.

In PermanEnt wird die Forschungsfrage untersucht, wie Performanceänderungen dennoch schnell und zuverlässig im CI-Prozess gefunden werden können, um Entwicklern eine schnelle Rückmeldung über Performanceänderungen geben zu können, die ihre Modifizierung des Quellcodes verursacht hat.

Die Performance von konkreten Implementierungen ist oft schwer zu verstehen, da Just-In-Time Compilation und sich verändernde Implementierungen genutzter Bibliotheken die Performance beeinflussen.

In PermanEnt wird daher untersucht, wie Ursachen von gefundenen Performanceproblemen durch die Messung einzelner Knoten des Aufrufbaums gefunden werden können.

Die manuelle Erstellung und Wartung der PUTs ist aufwändig.

 

Deshalb wird ein Verfahren zur Generierung und Selektierung von Tests erforscht, das auf Basis von Ausführungsdaten bestehender PUTs und Monitoringdaten aus Test- und Produktivsystemen entscheidet, welche Testfälle Performanceprobleme effizient erkennen.

Die entwickelten Verfahren und zugehörigen Werkzeuge werden anhand der Softwareentwicklungsprozess der Partner evermind, HBT und IOTIQ erprobt und durch die Abteilung Forschung und Entwicklung der Universitätsrechenzentrums der Universität Leipzig entwickelt.

 

 

Dieses Projekt wurde mit Mittel des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 01IS20032A gefördert.

Veröffentlichungen

FOSDEM 2021

Performance is a crucial property of software for both closed and open source software. Assuring that performance requirements are met in the CI process using

Mehr erfahren »