Message ID | 20231221141501.3588586-1-houtao@huaweicloud.com (mailing list archive) |
---|---|
Headers | show |
Series | bpf: Add benchmark for bpf memory allocator | expand |
On 12/21/2023 10:14 PM, Hou Tao wrote: > From: Hou Tao <houtao1@huawei.com> > > 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. Ping? It seems the patch set has been removed from PR queue of kernel-patches/bpf, but I want to get some feedback before posting a v2 (need to update the benchmark result due to the merge of "bpf: Reduce memory usage for bpf_global_percpu_ma" patch set). > > 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 >
On Thu, Dec 21, 2023 at 10:14:59PM +0800, Hou Tao wrote: > From: Hou Tao <houtao1@huawei.com> > > 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 lgtm Acked-by: Jiri Olsa <jolsa@kernel.org> jirka > > 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 >
From: Hou Tao <houtao1@huawei.com> 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