diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2020-06-25 08:34:03 +0300 |
---|---|---|
committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2020-07-01 00:18:56 +0300 |
commit | b23d7a5f4a07af02343cdd28fe1f7488bac3afda (patch) | |
tree | c775987b3e84915ec4c22a410f65c8c145ee70ce /tools/wmi/Makefile | |
parent | 10464b4aa605ef93c937452f442e74cc0a4a6ceb (diff) | |
download | linux-b23d7a5f4a07af02343cdd28fe1f7488bac3afda.tar.xz |
ring-buffer: speed up buffer resets by avoiding synchronize_rcu for each CPU
On a 144 thread system, `perf ftrace` takes about 20 seconds to start
up, due to calling synchronize_rcu() for each CPU.
cat /proc/108560/stack
0xc0003e7eb336f470
__switch_to+0x2e0/0x480
__wait_rcu_gp+0x20c/0x220
synchronize_rcu+0x9c/0xc0
ring_buffer_reset_cpu+0x88/0x2e0
tracing_reset_online_cpus+0x84/0xe0
tracing_open+0x1d4/0x1f0
On a system with 10x more threads, it starts to become an annoyance.
Batch these up so we disable all the per-cpu buffers first, then
synchronize_rcu() once, then reset each of the buffers. This brings
the time down to about 0.5s.
Link: https://lkml.kernel.org/r/20200625053403.2386972-1-npiggin@gmail.com
Tested-by: Anton Blanchard <anton@ozlabs.org>
Acked-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'tools/wmi/Makefile')
0 files changed, 0 insertions, 0 deletions