Performance Test Selection Using Machine Learning and a Study of Binning Effect in Memory Allocators
Loading...
Date
2019-04-30
Authors
Oliveira Sousa, Anderson
Advisor
Fischmeister, Sebastian
Journal Title
Journal ISSN
Volume Title
Publisher
University of Waterloo
Abstract
Performance testing is an essential part of the development life cycle that must be done in a timely fashion. However, checking for performance regressions in software can be time-consuming, especially for complex systems containing multiple lengthy tests cases. The first part of this thesis presents a technique to performance test selection using machine learning. In our approach, we build features using information extracted from the previous software versions to train classifiers that assist developers in deciding whether or not to execute a performance test on a new version. Our results show that the classifiers can be used as a mechanism that aids test selection and consequently avoids unnecessary testing.
The second part of this work investigates the binning effect on user-space memory allocators. First, we examine how binning events can be a source of performance outliers in Redis and CPython object allocators. Second, we implement a \textit{Pintool} to detect the occurrence of binning on Python programs. The tool performs dynamic binary instrumentation on the interpreter and outputs information that helps developers in performing code optimizations. Finally, we use our tool to investigate the presence of binning in various widely used Python libraries.
Description
Keywords
performance evaluation, performance test selection, binning effect, machine learning, performance test prioritisation, benchmarking, performance variability