From: Alexei Starovoitov Date: Thu, 7 Aug 2025 16:17:03 +0000 (-0700) Subject: Merge branch 'bpf-use-vrealloc-in-bpf_patch_insn_data' X-Git-Tag: v6.18-rc1~175^2~116 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=15a3b798a0264aa160072754a3847f7585694ff9;p=thirdparty%2Fkernel%2Flinux.git Merge branch 'bpf-use-vrealloc-in-bpf_patch_insn_data' Eduard Zingerman says: ==================== bpf: use vrealloc() in bpf_patch_insn_data() Function bpf_patch_insn_data() uses vzalloc/vfree pair to allocate memory for updated insn_aux_data. These operations are expensive for big programs where a lot of rewrites happen, e.g. for pyperf180 test case. The pair can be replaced with a call to vrealloc in order to reduce the number of actual memory allocations. Perf stat w/o this patch: $ perf stat -B --all-kernel -r10 -- ./veristat -q pyperf180.bpf.o ... 2201.25 msec task-clock # 0.973 CPUs utilized ( +- 2.20% ) 188 context-switches # 85.406 /sec ( +- 9.29% ) 15 cpu-migrations # 6.814 /sec ( +- 5.64% ) 5 page-faults # 2.271 /sec ( +- 3.27% ) 4315057974 instructions # 1.28 insn per cycle # 0.33 stalled cycles per insn ( +- 0.03% ) 3366141387 cycles # 1.529 GHz ( +- 0.21% ) 1420810964 stalled-cycles-frontend # 42.21% frontend cycles idle ( +- 0.23% ) 1049956791 branches # 476.981 M/sec ( +- 0.03% ) 60591781 branch-misses # 5.77% of all branches ( +- 0.07% ) 2.2632 +- 0.0527 seconds time elapsed ( +- 2.33% ) Perf stat with this patch: 1227.15 msec task-clock # 0.963 CPUs utilized ( +- 2.27% ) 170 context-switches # 138.532 /sec ( +- 5.62% ) 2 cpu-migrations # 1.630 /sec ( +- 33.37% ) 5 page-faults # 4.074 /sec ( +- 4.47% ) 3312254304 instructions # 2.17 insn per cycle # 0.15 stalled cycles per insn ( +- 0.03% ) 1528944717 cycles # 1.246 GHz ( +- 0.31% ) 501475146 stalled-cycles-frontend # 32.80% frontend cycles idle ( +- 0.50% ) 730426891 branches # 595.222 M/sec ( +- 0.03% ) 17372363 branch-misses # 2.38% of all branches ( +- 0.16% ) 1.2744 +- 0.0301 seconds time elapsed ( +- 2.36% ) Changelog: v1: https://lore.kernel.org/bpf/20250806200928.3080531-1-eddyz87@gmail.com/T/#t v1 -> v2: - added missing memset(0) in adjust_insn_aux_data(), this fixes CI failure reported in [1]. [1] https://github.com/kernel-patches/bpf/actions/runs/16787563163/job/47542309875 ==================== Link: https://patch.msgid.link/20250807010205.3210608-1-eddyz87@gmail.com Signed-off-by: Alexei Starovoitov --- 15a3b798a0264aa160072754a3847f7585694ff9