Performance Evolution of Highly-Configurable Software Systems (Pervolution)

Project Description

Almost every complex software system today is configurable. Configuration options allow users to tailor a system according to their requirements. A key non-functional requirement is performance. However, users and even domain experts often lack understanding which configuration options have an influence on performance and how and which combinations of options cause performance interactions. In addition, software systems evolve, introducing a further dimension of complexity. During evolution, developers add new functionality and need to understand which pieces of functionality—controlled by which configuration options—require maintenance, refactoring, and debugging. For example, the number of configuration options has nearly doubled in the Linux kernel (x86), starting from 3284 in release 12 to 6319 in release 32; the increase for the Apache Web server has been from 150 options in 1998 to nearly 600 options in 2014. Identifying the options that are critical for performance becomes infeasible in such scenarios. Without a proper representation of the evolution of the performance influence of configuration options, developers have to start from scratch again and again, to identify performance bugs, performance-optimal configurations, and to build an understanding of the performance behavior of the system.

In Pervolution, we will develop an approach to facilitate performance-aware evolution of complex, configurable systems, by tracking down evolutionary performance changes and by providing development guidelines based on extracted performance-evolution patterns. Our goal is to provide deep insights into the performance evolution of configuration options and their interactions, so that developers can reason about their decisions about the system’s configurability during software evolution, in the light of the changed performance behavior. Technically, we will use performance-influence models that capture the influences of configuration options as well as of their interactions on performance, using a unique combination of machine-learning techniques, sampling heuristics, and experimental designs. For each version of the system (time dimension), we analyze performance influence models of different variants (configuration dimension). We will relate variability and code changes to the individual influences inside the model and allow users to reason about these models.

We will extend the prevailing black-box approach of learning performance-influence models by combining static, variability-aware code analyses and program differencing to spot performance-related changes across different system versions. This unique combination of techniques allows us to tame the exponential complexity of the problem and to provide practical solutions. A distinguishing feature of Pervolution is that it considers both dimensions of variability and time explicitly and equally.

Publications (copyright notice)

2017


Copyright Notice: This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these publications may not be reposted without the explicit permission of the copyright holder.

Funding

Pervolution is funded by the German Research Foundation (DFG), under the contracts AP 206/11-1 and SI 2171/2-1; the funding period is from 2017 to 2020.

Contact

Pervolution is a research project at the University of Passau and Bauhaus-Universität Weimar. The project members are: