Energy Benchmarking Tool (Alpha)
Tool for benchmarking the energy consumption of programs.
Idle energy consumption and energy consumed by data generation are not included in the results.
A new benchmark builder is created with EnergyTool::new()
.
A benchmark of function bench_fn
with data data_fn
can be started with benchmark(bench_fn, data_fn)
.
This function returns a JSON of measurement data.
use EnergyTool;
let builder = new;
let json = builder.benchmark;
Some programs are too short-running to provide accurate energy measurement results.
To avoid this, the benchmark can be repeated a fixed number of type between measurements: with_runs_per_measurement
.
Or it can be repeated until some amount of time has passed: with_min_measurement_duration
.
By default, benchmarks are run for at least 100ms.
let builder = new.with_runs_per_measurement;
let builder = new.with_min_measurement_duration;
The benchmark results can directly be written to a file:
let file = & create?;
let builder = new.write_to_file;
Idle consumption is always computed beforehand, and is subtracted from the results. The default duration is one minute, however it can be increased with:
let builder = new.with_idle_duration;
Features
We support multiple measuring devices.
Currently, we support the features rapl
and ina
.
For AMD users, RAPL can be read by adding the amd
flag.