On Mon, Nov 29, 2021 at 2:39 PM Joanne Koong <joannekoong@xxxxxx> wrote: > > Add benchmark to measure the throughput and latency of the bpf_loop > call. > > Testing this on my dev machine on 1 thread, the data is as follows: > > nr_loops: 10 > bpf_loop - throughput: 198.519 ± 0.155 M ops/s, latency: 5.037 ns/op > > nr_loops: 100 > bpf_loop - throughput: 247.448 ± 0.305 M ops/s, latency: 4.041 ns/op > > nr_loops: 500 > bpf_loop - throughput: 260.839 ± 0.380 M ops/s, latency: 3.834 ns/op > > nr_loops: 1000 > bpf_loop - throughput: 262.806 ± 0.629 M ops/s, latency: 3.805 ns/op > > nr_loops: 5000 > bpf_loop - throughput: 264.211 ± 1.508 M ops/s, latency: 3.785 ns/op > > nr_loops: 10000 > bpf_loop - throughput: 265.366 ± 3.054 M ops/s, latency: 3.768 ns/op > > nr_loops: 50000 > bpf_loop - throughput: 235.986 ± 20.205 M ops/s, latency: 4.238 ns/op > > nr_loops: 100000 > bpf_loop - throughput: 264.482 ± 0.279 M ops/s, latency: 3.781 ns/op > > nr_loops: 500000 > bpf_loop - throughput: 309.773 ± 87.713 M ops/s, latency: 3.228 ns/op > > nr_loops: 1000000 > bpf_loop - throughput: 262.818 ± 4.143 M ops/s, latency: 3.805 ns/op > > From this data, we can see that the latency per loop decreases as the > number of loops increases. On this particular machine, each loop had an > overhead of about ~4 ns, and we were able to run ~250 million loops > per second. > > Signed-off-by: Joanne Koong <joannekoong@xxxxxx> > --- LGTM. Acked-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > tools/testing/selftests/bpf/Makefile | 4 +- > tools/testing/selftests/bpf/bench.c | 37 ++++++ > tools/testing/selftests/bpf/bench.h | 2 + > .../selftests/bpf/benchs/bench_bpf_loop.c | 105 ++++++++++++++++++ > .../bpf/benchs/run_bench_bpf_loop.sh | 15 +++ > .../selftests/bpf/benchs/run_common.sh | 15 +++ > .../selftests/bpf/progs/bpf_loop_bench.c | 26 +++++ > 7 files changed, 203 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/selftests/bpf/benchs/bench_bpf_loop.c > create mode 100755 tools/testing/selftests/bpf/benchs/run_bench_bpf_loop.sh > create mode 100644 tools/testing/selftests/bpf/progs/bpf_loop_bench.c [...]