Re: [PATCH v3 bpf-next] selftests/bpf: Add benchmark for local_storage RCU Tasks Trace usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux