5.3.3. Reducing Run-to-Run Variation (Hardware Settings for Optimal Performance Benchmarking) - 5.2 English - 57404

AOCL User Guide (57404)

Document ID
57404
Release Date
2025-12-29
Version
5.2 English

A test bench is included in the source code to benchmark the library’s performance, with instructions for running it provided here. Additionally, third-party benchmarks that can link to the library may also be used. Some fluctuation in compression and decompression times during benchmark runs is normal. The observed variance in performance is not due to non-deterministic elements in the algorithms or the benchmark. Instead, it is majorly due to the hardware environment.

To reduce these variations, consider the following helpful techniques:

  1. Clear the Caches: Clear the caches of the machine before running benchmarks to ensure consistent starting conditions.

  2. Isolate the Workload: Avoid running multiple workloads on the machine during benchmarking to prevent resource contention.

  3. Run Multiple Iterations: Perform ~50 iterations for single-threaded and ~100 for multi-threaded benchmarks, taking the best result to minimize anomalies.

  4. Disable SMT/Hyperthreading: Disable SMT/Hyperthreading to reduce variability caused by shared resources.

  5. Bind Processes to Cores: Use numactl to bind the benchmarking process to specific cores and memory nodes. For multi-threaded benchmarks, OpenMP affinity settings such as OMP_PROC_BIND can be used.