Download Chapter 1 Introduction to EverBEEN

Transcript
CHAPTER 1. INTRODUCTION TO EVERBEEN
6
• The environment can offer facilities, such as synchronization, logging and communication mechanisms,
that would make the task of creating a benchmark easier.
• Statistics, analysis and visualization are good candidates for having a helpful library instead of
writing a custom one.
1.1.1
Related works
• Kalibera, T., Lehotsky J., Majda D., Repcek B., Tomcanyi M., Tomecek A., Tuma, P., Urban J.:
Automated Benchmarking and Analysis Tool1 (PDF, 149 kB), VALUETOOLS 2006
• Kalibera, T., Bulej, L., Tuma, P.: Generic Environment for Full Automation of Benchmarking2
(PDF, 84 kB), SOQUA 2004
• Täuber, J.: Deployment of Performance Evaluation Tools in Industrial Use Case3 (PDF, 614 kB),
MFF 2013
1.2
Case study
During the development of EverBEEN, several use cases were considered and this section describes the
ones that BEEN was specifically designed for.
1.2.1
Regression benchmarking
Regression benchmarking is a technique mostly aimed at discovering negative performance impact of a
newly added feature, an upgrade or a single patch in the source code. This usually involves performing
the same set of benchmarks against various versions of the same software. Often, even individual revisions
of the source tree are tested. When the benchmark is stable enough to result in consistent data, it is easy
to immediately see which commits had an impact on performance.
While performance degradation is obviously an undesired effect, unplanned performance increase can
also be an indicative of a problem. This can easily happen when an expensive check (e.g. for security
purposes) is unintentionally removed or bypassed. Whether performance fluctuations be positive or
negative, regression benchmarking provides the development team with crucial information which not
only denotes the actutal performance change, but also points to the exact code modification that caused
it.
1.2.2
Pull-oriented benchmarking
Consider the following case: We have access to a source code repository with version history of a software
product, whose developers don’t do any regular benchmarking. Suddenly, they realize that their software
behaves much slower than a year ago. Although the performance degradation is probably caused by
several factors, the developers would like to determine major slowdown culprits and eliminate them.
If this software were a standalone desktop application, the obvious solution would be to build all the
revisions of the software since last year and benchmark them. Writing a script automating this task
would be straightforward. When the software in question is distributed middleware, even setting up a
benchmarking environment could be a costly task.
This task can be generalized into a problem of running a benchmark over a set of parameters. The
parameters are known in advance and the benchmark is by necessity a user-written code. A generic
benchmarking framework should therefore simplify both parameter specification and the process of writing
benchmark code. The user’s options must be flexible enough to support many possible configurations of
the benchmark — one might want to benchmark a single piece of software with various configurations.
1 http://d3s.mff.cuni.cz/publications/download/Submitted_1404_BEEN.pdf
2 http://d3s.mff.cuni.cz/publications/download/KaliberaBulejTuma-FullAutomationOfBenchmarking.pdf
3 https://is.cuni.cz/webapps/zzp/detail/78663/4417375