tests: benchmark: improve benchmark scalability accuracy
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 31 Mar 2021 14:27:32 +0000 (10:27 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 31 Mar 2021 14:31:38 +0000 (10:31 -0400)
commitb670e9e80fd344432cb56e3c168b60103acd77d0
tree9a90eb3b2503033d3a201565e73d0cfd48e42622
parent035d76882df8f333e828ada2ed328c38169dccdd
tests: benchmark: improve benchmark scalability accuracy

Testing with a fixed number of loops per-thread only works if the
workload is distributed perfectly across CPUs. For instance, if a lock
is held in the workload (e.g. internally by open() and close()), those
may cause starvation of some threads, and therefore cause the benchmark
to be wrong because it will wait for the slowest thread to complete its
loops.

It is also not good for testing overcommit of threads vs cpus.

Change the test to report the number of loops performed in a given wall
time, and use this to report the average and std.dev. of tracing
overhead per event on each active CPU.

Change the benchmark workload to be only CPU-bound and not generate
system calls to minimize the inherent non-scalability of the workload
(e.g. locks held within the kernel).

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I5245f36831875bd9f87854618a4ed0cb31e56a4d
tests/benchmark/README
tests/benchmark/bench.c
tests/benchmark/ptime
tests/benchmark/test_benchmark
This page took 0.025009 seconds and 4 git commands to generate.