This repository aims to evaluate an energy regression (increase in energy usage) happening after the update from 3.18.5 to 3.19.0 of the alpine base image.
In order to pin down the regression we are using sysbench.
We are building the base docker image of alpine (in two different versions 3.18.5 and 3.19.0) and then only installing sysbench (both times in the exact same version) as dependency.
The testrun is done with the following commands:
$ sysbench cpu run --cpu-max-prime=25000 --threads=8 --time=15
which executes a CPU bound calculation for prime numbers on 8 threads, no event limit, no rate limit, but 15 seconds time limit.
We are using the Green Metrics Tool Measurement cluster to get the results
Find the detailed results from a measurement cluster here:
- Single sysbench run with Alpine 3.18.5 docker image
- Single sysbench run with Alpine 3.19.0 docker image
- Cumulative comparison of 10 runs each
A more easy way to reproduce can be done with perf if your CPU supports Intel RAPL.
`$ sudo perf stat -a -r 10 -e power/energy-pkg/ runuser -u gc -- sh -c "docker run --rm --init alpine_3.18.5 sysbench cpu run --cpu-max-prime=25000 --threads=8 --time=15"
This will encapsultae the sysbench run in a docker run
statement and additionally also encapsulate it in perf stat
which will read the power/energy-pkg/
PMU. The benchmark here is automatically repeated 10 times (-r 10
)
Results are similar to:
$ sudo perf stat -a -r 10 -e power/energy-pkg/ runuser -u gc -- sh -c "docker run --rm --init alpine_3.19.0 sysbench cpu run --cpu-max-prime=25000 --threads=8 --time=15 --events=0 --rate=0 --debug=off | grep total"
# 33783 Events
# 1018.81 Joules power/energy-pkg/ ( +- 0.19% )
$ sudo perf stat -a -r 10 -e power/energy-pkg/ runuser -u gc -- sh -c "docker run --rm --init alpine_3.18.5 sysbench cpu run --cpu-max-prime=25000 --threads=8 --time=15 --events=0 --rate=0 --debug=off | grep total"
# 34079 Events
# 973.22 Joules power/energy-pkg/ ( +- 0.06% )
- Event amount dropped by around 1%
- Energy increased by around 5%
So we no only have a performance regression, but also an energy increase.