06.10.2022
09:55 - 10:40 Uhr

Vortrag
Special Topics

David Georg Reichelt
Universität Leipzig, Universitätsrechenzentrum

Performanceunterschiede durch kontinuierliche Messungprozesse finden

In unserem Anwendungsfall Geomap ist die Performance von besonderer Bedeutung, da Endkunden Analysen von Immobiliendaten schnell und aktuell benötigen. Da die Anforderungen an die Analysen sich regelmäßig ändern, vor allem auf Grund des wachsenden Funktionsumfangs, ist es wertvoll, Performanceregressionen frühzeitig und kostengünstig bestimmen zu können. Darüber hinaus ist es notwendig, zu überprüfen, inwiefern intendierte Performanceverbesserungen den geplanten Effekt auf die Performance wirklich haben. Besonders in einer Zeit, in der der Zukauf von Hardwareressourcen technisch unproblematisch, aber teuer ist, gewinnt die Performance von Software an Bedeutung. Daher ist es notwendig, die Performance regelmäßig zu messen.

Aufgrund der inhärenden Komplexität der JVM sind Performanceänderungen in Java schwer zu messen und zu verstehen. Herkömmliche Methoden ermöglichen die Ermittlung von Performanceunterschieden durch Lasttests, Monitoring und (Regressions-)benchmarks. Alle diese Ansätze erfordern hohen manuellen Aufwand für die Definition der Anwendungsfälle bzw. die Untersuchung der Messergebnisse.

Im Projekt PermanEnt, einem Kooperationsprojekt u.a. zwischen evermind und der Universität Leipzig, wurde daher ein neuartiger Ansatz zum kontinuierlichen Einsatz in Softwareentwicklungsprozessen entwickelt, der Messprozesse automatisiert, Entwickler frühzeitig auf Performanceveränderungen hinweist und durch Ursachenanalyse manuelle Aufwände für die Problemsuche reduziert. Die Messungen der Performance von Software wird in PermanEnt mit Performance-Unittests (PUT) durchgeführt, welche die Reproduktion der Performance von Programmeinheiten ermöglichen. Diese werden in den Continous-Integration-Prozess integriert, um regelmäßig und zeitnah Rückmeldungen über Veränderungen der Performance geben zu können. Um aussagekräftige Ergebnisse für den Entwickler bereitzustellen, wird erforscht, wie eine Ursachenanalyse zeitnah Regressionsursachen bestimmen kann.

In unserem Erfahrungsbericht gehen wir auf Folgendes ein:

  1. Eine Beschreibung des Geomap-Projekts und seiner Architektur, um die Anforderungen an den Performance Engineering Prozess zu verstehen.
  2. Eine allgemeine Einführung in Performancemessung in der JVM, um die Anforderungen an kontinuierliche Performancemessung darzustellen.
  3. Eine Einführung in den Peass-Ansatz, der bestehende Unittests in Performance-Unittests transformiert. Der Ansatz besteht aus einer Regressionstestselektion zur Beschleunigung der Messung, der Messung von Unittests sowie einer Ursachenanalyse, um die Knoten des Aufrufbaums zu bestimmen, in denen eine Performanceänderung stattgefunden hat. Durch die Anwendung des Peass-Ansatzes wird es möglich, mit geringem manuellen Aufwand Performanceänderungen zu messen.
  4. Eine Darstellung des im Projekt entwickelten Peass-CI-Plugins für Jenkins (https://github.com/jenkinsci/peass-ci-plugin) mit dem es möglich ist, Performancemessungen direkt im CI-Server durchzuführen.
  5. Eine Darstellung der Anwendung von Peass-CI auf Geomap. Dabei wird inbesondere auf die Definition der untersuchten Commits und Branches, die Parametrisierung des Messprozesses und die gefundenen Performanceunterschiede eingegangen. Darauf basierend wird eine Einschätzung gegeben, für welche Arten von Projekten der Peass Ansatz besonders geeignet ist, welche Schwierigkeiten es aus Nutzersicht noch gibt und warum es sich lohnt, diesen Ansatz weiter zu verfolgen.
  6. Der Erfahrungsbericht ist für alle interessant, die ihre Performance in der Qualitätssicherung überprüfen wollen. Der Fokus liegt auf technischen Details und Tools, die kontinuierliche Performancemessungen ermöglichen.

David Georg Reichelt, Universität Leipzig, Universitätsrechenzentrum

David Georg Reichelt ist wissenschaftlicher Mitarbeiter bei der Universität Leipzig. Er hat einen Master in Informatik. David Georg Reichelt verfügt über 8 Jahre Berufserfahrung in den Bereichen Softwareentwicklung und Software Performance Engineering. Seine besondere Expertise liegt in der kontinuierlichen Messung von Performanceunterschieden in der CI.
Er konnte dabei Forschungsergebnisse bisher sowohl auf wissenschaftlichen Veranstaltungen (u.a. Automated Software Engineering (ASE), Workshop on Challenges in Software Performance (WOSP-C), Symposium on Software Performance (SSP)), in den dazugehörigen wissenschaftlichen Publikationen sowie auf Fachkonferenzen (u.a. Free and Open Source Developers’ European Meeting (FOSDEM), it-tage, Chemnitzer Linuxtage (CLT)) vorstellen.