On 7/5/22 4:45 AM, Dave Marchevsky wrote:
This benchmark measures grace period latency and kthread cpu usage of RCU Tasks Trace when many processes are creating/deleting BPF local_storage. Intent here is to quantify improvement on these metrics after Paul's recent RCU Tasks patches [0]. Specifically, fork 15k tasks which call a bpf prog that creates/destroys task local_storage and sleep in a loop, resulting in many call_rcu_tasks_trace calls. To determine grace period latency, trace time elapsed between rcu_tasks_trace_pregp_step and rcu_tasks_trace_postgp; for cpu usage look at rcu_task_trace_kthread's stime in /proc/PID/stat. On my virtualized test environment (Skylake, 8 cpus) benchmark results demonstrate significant improvement: BEFORE Paul's patches: SUMMARY tasks_trace grace period latency avg 22298.551 us stddev 1302.165 us SUMMARY ticks per tasks_trace grace period avg 2.291 stddev 0.324 AFTER Paul's patches: SUMMARY tasks_trace grace period latency avg 16969.197 us stddev 2525.053 us SUMMARY ticks per tasks_trace grace period avg 1.146 stddev 0.178 Note that since these patches are not in bpf-next benchmarking was done by cherry-picking this patch onto rcu tree. [0]: https://lore.kernel.org/rcu/20220620225402.GA3842369@paulmck-ThinkPad-P17-Gen-1/ Signed-off-by: Dave Marchevsky <davemarchevsky@xxxxxx> Acked-by: Paul E. McKenney <paulmck@xxxxxxxxxx> Acked-by: Martin KaFai Lau <kafai@xxxxxx>
Looks like this still fails BPF CI on the gcc runners: https://github.com/kernel-patches/bpf/runs/7194224073?check_suite_focus=true https://github.com/kernel-patches/bpf/runs/7194224318?check_suite_focus=true [...] benchs/bench_local_storage_rcu_tasks_trace.c: In function 'kthread_pid_ticks': benchs/bench_local_storage_rcu_tasks_trace.c:115:2: error: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Werror=unused-result] 115 | fscanf(f, "%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %ld", &stime); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make: *** [Makefile:566: /home/actions-runner/_work/bpf/bpf/tools/testing/selftests/bpf/bench_local_storage_rcu_tasks_trace.o] Error 1 make: *** Waiting for unfinished jobs.... Error: Process completed with exit code 2. Thanks, Daniel