From: Hou Tao <houtao1@xxxxxxxxxx> Hi, The patch set aims to add a benchmark for bpf memory allocator to test both its alloc/free ratio and the memory usage. Patch #1 is a preparatory patch which moves bench specific metrics into union of structs, so newly-added benchmark can add metrics which doesn't fit with the existing one easily. Patch #2 is the benchmark patch. It tests the performance through the following steps: 1) find the inner array by using the cpu number as key 2) allocate at most 64 128-bytes-sized objects through bpf_obj_new() 3) stash these objectes into the inner array through bpf_kptr_xchg() 4) account the time used in step 1)~3) 5) calculate the performance in M/s: alloc_cnt * 1000 / alloc_tim_ns 6) calculate the memory usage by reading slub field in memory.stat file and get the final value after subtracting the base value. Please see individual patches for more details. And comments are always welcome. Hou Tao (2): selftests/bpf: Move bench specific metrics into union of structs selftests/bpf: Add benchmark for bpf memory allocator tools/testing/selftests/bpf/Makefile | 2 + tools/testing/selftests/bpf/bench.c | 13 +- tools/testing/selftests/bpf/bench.h | 22 +- .../selftests/bpf/benchs/bench_bpf_ma.c | 273 ++++++++++++++++++ .../selftests/bpf/benchs/bench_htab_mem.c | 10 +- .../bench_local_storage_rcu_tasks_trace.c | 10 +- .../selftests/bpf/progs/bench_bpf_ma.c | 222 ++++++++++++++ 7 files changed, 535 insertions(+), 17 deletions(-) create mode 100644 tools/testing/selftests/bpf/benchs/bench_bpf_ma.c create mode 100644 tools/testing/selftests/bpf/progs/bench_bpf_ma.c -- 2.29.2