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.