[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <tencent_9C541313B9B3C381AB950BC531F6C627ED05@qq.com>
Date: Thu, 15 Jan 2026 11:19:56 +0800
From: wujing <realwujing@...com>
To: Alexei Starovoitov <alexei.starovoitov@...il.com>
Cc: wujing <realwujing@...com>,
Kumar Kartikeya Dwivedi <memxor@...il.com>,
ast@...nel.org,
daniel@...earbox.net,
andrii@...nel.org,
john.fastabend@...il.com,
martin.lau@...ux.dev,
eddyz87@...il.com,
song@...nel.org,
yonghong.song@...ux.dev,
kpsingh@...nel.org,
sdf@...ichev.me,
haoluo@...gle.com,
jolsa@...nel.org,
bpf@...r.kernel.org,
linux-kernel@...r.kernel.org,
Qiliang Yuan <yuanql9@...natelecom.cn>
Subject: Re: [PATCH bpf-next] bpf/verifier: implement slab cache for verifier state list
Hi Alexei,
On Wed, Jan 14, 2026 at 07:59:44AM -0800, Alexei Starovoitov wrote:
> > ### Interpretation of Results
> > The comparison results clearly demonstrate the performance advantages of the optimization:
>
> This is not your analysis. This is AI generated garbage that you didn't even bother to filter.
> pw-bot: cr
I refute these claims.
1. "This is not your analysis":
The summary was written by me. I manually extracted the key performance gains (e.g., arena_strsearch -47%) from the raw logs to assist the review process.
2. "AI generated garbage":
The data is real. I spent half a day yesterday compiling the kernel and running `veristat` locally. The numbers are authentic measurements from my environment (Debian 6.19.0-rc5+ x86_64).
3. "didn't even bother to filter":
I distinctly filtered the full output to focus on the significant changes. To prove this, I have attached the full raw logs and the complete comparison table below.
Please check the data. It is real.
The numbers are real measurements from my dev environment.
Environment:
Kernel: Debian 6.19.0-rc5+ x86_64
Tools: tools/testing/selftests/bpf/veristat
I ran the following commands manually:
1. Baseline collection:
$ ./veristat -e file,prog,verdict,duration,insns,states,peak_states,mem_peak -o csv arena_strsearch.bpf.o bpf_flow.bpf.o bpf_gotox.bpf.o bpf_loop.bpf.o > baseline_stats.csv
2. Patched kernel collection:
$ ./veristat -e file,prog,verdict,duration,insns,states,peak_states,mem_peak -o csv arena_strsearch.bpf.o bpf_flow.bpf.o bpf_gotox.bpf.o bpf_loop.bpf.o > patched_stats.csv
3. Comparison:
$ ./veristat -C baseline_stats.csv patched_stats.csv
I have appended three sections below to fully document my work:
1. My manual summary of the significant performance improvements (which formed the basis of my previous analysis).
2. The full auto-generated comparison output from veristat.
3. The raw data logs from both runs.
---
1. Manually Summarized Key Improvements
(These are the specific cases where the slab cache optimization showed the most impact)
Program Duration (Baseline) Duration (Patched) Improvement
------------------------------ ------------------- ------------------ -----------
arena_strsearch 121 us 64 us -47.11%
bpf_loop:stack_check 747 us 469 us -37.22%
bpf_loop:test_prog 519 us 386 us -25.63%
bpf_loop:prog_null_ctx 202 us 162 us -19.80%
---
2. Full Comparison Output (veristat -C baseline_stats.csv patched_stats.csv)
File Program Verdict (A) Verdict (B) Verdict (DIFF) Duration (A) (us) Duration (B) (us) Duration (DIFF) Insns (A) Insns (B) Insns (DIFF) States (A) States (B) States (DIFF) Peak states (A) Peak states (B) Peak states (DIFF)
--------------------- ------------------------------ ----------- ----------- -------------- ----------------- ----------------- ------------------- --------- --------- ------------ ---------- ---------- ------------- --------------- --------------- ------------------
arena_strsearch.bpf.o arena_strsearch failure failure MATCH 121 64 -57 (-47.11%) 20 20 +0 (+0.00%) 2 2 +0 (+0.00%) 2 2 +0 (+0.00%)
bpf_flow.bpf.o _dissect success success MATCH 479 446 -33 (-6.89%) 211 211 +0 (+0.00%) 13 13 +0 (+0.00%) 13 13 +0 (+0.00%)
bpf_flow.bpf.o flow_dissector_0 success success MATCH 2433 2393 -40 (-1.64%) 1461 1461 +0 (+0.00%) 68 68 +0 (+0.00%) 68 68 +0 (+0.00%)
bpf_flow.bpf.o flow_dissector_1 success success MATCH 2727 2717 -10 (-0.37%) 1567 1567 +0 (+0.00%) 59 59 +0 (+0.00%) 59 59 +0 (+0.00%)
bpf_flow.bpf.o flow_dissector_2 success success MATCH 2057 2061 +4 (+0.19%) 1244 1244 +0 (+0.00%) 56 56 +0 (+0.00%) 56 56 +0 (+0.00%)
bpf_flow.bpf.o flow_dissector_3 success success MATCH 2290 2282 -8 (-0.35%) 1498 1498 +0 (+0.00%) 57 57 +0 (+0.00%) 57 57 +0 (+0.00%)
bpf_flow.bpf.o flow_dissector_4 success success MATCH 341 320 -21 (-6.16%) 259 259 +0 (+0.00%) 4 4 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_flow.bpf.o flow_dissector_5 success success MATCH 656 651 -5 (-0.76%) 416 416 +0 (+0.00%) 21 21 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o big_jump_table success success MATCH 32 30 -2 (-6.25%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o one_jump_two_maps success success MATCH 32 30 -2 (-6.25%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o one_map_two_jumps success success MATCH 31 30 -1 (-3.23%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o one_switch success success MATCH 40 39 -1 (-2.50%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o one_switch_non_zero_sec_off success success MATCH 32 33 +1 (+3.12%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o simple_test_other_sec success success MATCH 32 34 +2 (+6.25%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o two_switches success success MATCH 32 30 -2 (-6.25%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o use_nonstatic_global1 success success MATCH 30 34 +4 (+13.33%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o use_nonstatic_global2 success success MATCH 33 51 +18 (+54.55%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o use_nonstatic_global_other_sec success success MATCH 31 32 +1 (+3.23%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o use_static_global1 success success MATCH 31 30 -1 (-3.23%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o use_static_global2 success success MATCH 32 31 -1 (-3.12%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_gotox.bpf.o use_static_global_other_sec success success MATCH 31 31 +0 (+0.00%) 2 2 +0 (+0.00%) 0 0 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_loop.bpf.o prog_invalid_flags success success MATCH 230 208 -22 (-9.57%) 50 50 +0 (+0.00%) 5 5 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_loop.bpf.o prog_nested_calls success success MATCH 546 530 -16 (-2.93%) 145 145 +0 (+0.00%) 19 19 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_loop.bpf.o prog_non_constant_callback success success MATCH 203 200 -3 (-1.48%) 41 41 +0 (+0.00%) 5 5 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_loop.bpf.o prog_null_ctx success success MATCH 202 162 -40 (-19.80%) 22 22 +0 (+0.00%) 3 3 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_loop.bpf.o stack_check success success MATCH 747 469 -278 (-37.22%) 325 325 +0 (+0.00%) 25 25 +0 (+0.00%) 0 0 +0 (+0.00%)
bpf_loop.bpf.o test_prog success success MATCH 519 386 -133 (-25.63%) 64 64 +0 (+0.00%) 7 7 +0 (+0.00%) 0 0 +0 (+0.00%)
---
3. Raw Data: baseline_stats.csv (Unpatched)
file_name,prog_name,verdict,duration,total_insns,total_states,peak_states,mem_peak
arena_strsearch.bpf.o,arena_strsearch,failure,121,20,2,2,0
bpf_flow.bpf.o,_dissect,success,479,211,13,13,0
bpf_flow.bpf.o,flow_dissector_0,success,2433,1461,68,68,0
bpf_flow.bpf.o,flow_dissector_1,success,2727,1567,59,59,0
bpf_flow.bpf.o,flow_dissector_2,success,2057,1244,56,56,0
bpf_flow.bpf.o,flow_dissector_3,success,2290,1498,57,57,0
bpf_flow.bpf.o,flow_dissector_4,success,341,259,4,4,0
bpf_flow.bpf.o,flow_dissector_5,success,656,416,21,21,0
bpf_gotox.bpf.o,big_jump_table,success,32,2,0,0,0
bpf_gotox.bpf.o,one_jump_two_maps,success,32,2,0,0,0
bpf_gotox.bpf.o,one_map_two_jumps,success,31,2,0,0,0
bpf_gotox.bpf.o,one_switch,success,40,2,0,0,0
bpf_gotox.bpf.o,one_switch_non_zero_sec_off,success,32,2,0,0,0
bpf_gotox.bpf.o,simple_test_other_sec,success,32,2,0,0,0
bpf_gotox.bpf.o,two_switches,success,32,2,0,0,0
bpf_gotox.bpf.o,use_nonstatic_global1,success,30,2,0,0,0
bpf_gotox.bpf.o,use_nonstatic_global2,success,33,2,0,0,0
bpf_gotox.bpf.o,use_nonstatic_global_other_sec,success,31,2,0,0,0
bpf_gotox.bpf.o,use_static_global1,success,31,2,0,0,0
bpf_gotox.bpf.o,use_static_global2,success,32,2,0,0,0
bpf_gotox.bpf.o,use_static_global_other_sec,success,31,2,0,0,0
bpf_loop.bpf.o,prog_invalid_flags,success,230,50,5,5,0
bpf_loop.bpf.o,prog_nested_calls,success,546,145,19,19,0
bpf_loop.bpf.o,prog_non_constant_callback,success,203,41,5,5,0
bpf_loop.bpf.o,prog_null_ctx,success,202,22,3,3,0
bpf_loop.bpf.o,stack_check,success,747,325,25,25,0
bpf_loop.bpf.o,test_prog,success,519,64,7,7,0
Raw Data: patched_stats.csv (Patched)
file_name,prog_name,verdict,duration,total_insns,total_states,peak_states,mem_peak
arena_strsearch.bpf.o,arena_strsearch,failure,64,20,2,2,0
bpf_flow.bpf.o,_dissect,success,446,211,13,13,0
bpf_flow.bpf.o,flow_dissector_0,success,2393,1461,68,68,0
bpf_flow.bpf.o,flow_dissector_1,success,2717,1567,59,59,0
bpf_flow.bpf.o,flow_dissector_2,success,2061,1244,56,56,0
bpf_flow.bpf.o,flow_dissector_3,success,2282,1498,57,57,0
bpf_flow.bpf.o,flow_dissector_4,success,320,259,4,4,0
bpf_flow.bpf.o,flow_dissector_5,success,651,416,21,21,0
bpf_gotox.bpf.o,big_jump_table,success,30,2,0,0,0
bpf_gotox.bpf.o,one_jump_two_maps,success,30,2,0,0,0
bpf_gotox.bpf.o,one_map_two_jumps,success,30,2,0,0,0
bpf_gotox.bpf.o,one_switch,success,39,2,0,0,0
bpf_gotox.bpf.o,one_switch_non_zero_sec_off,success,33,2,0,0,0
bpf_gotox.bpf.o,simple_test_other_sec,success,34,2,0,0,0
bpf_gotox.bpf.o,two_switches,success,30,2,0,0,0
bpf_gotox.bpf.o,use_nonstatic_global1,success,34,2,0,0,0
bpf_gotox.bpf.o,use_nonstatic_global2,success,51,2,0,0,0
bpf_gotox.bpf.o,use_nonstatic_global_other_sec,success,32,2,0,0,0
bpf_gotox.bpf.o,use_static_global1,success,30,2,0,0,0
bpf_gotox.bpf.o,use_static_global2,success,31,2,0,0,0
bpf_gotox.bpf.o,use_static_global_other_sec,success,31,2,0,0,0
bpf_loop.bpf.o,prog_invalid_flags,success,208,50,5,5,0
bpf_loop.bpf.o,prog_nested_calls,success,530,145,19,19,0
bpf_loop.bpf.o,prog_non_constant_callback,success,200,41,5,5,0
bpf_loop.bpf.o,prog_null_ctx,success,162,22,3,3,0
bpf_loop.bpf.o,stack_check,success,469,325,25,25,0
bpf_loop.bpf.o,test_prog,success,386,64,7,7,0
Best regards,
wujing
Powered by blists - more mailing lists