Messages in this thread | | | From | Joel Fernandes <> | Date | Tue, 01 May 2018 16:44:37 +0000 | Subject | Re: [PATCH RFC v5 5/6] tracepoint: Make rcuidle tracepoint callers use SRCU |
| |
On Tue, May 1, 2018 at 7:24 AM Steven Rostedt <rostedt@goodmis.org> wrote:
> On Mon, 30 Apr 2018 18:42:03 -0700 > Joel Fernandes <joelaf@google.com> wrote:
> > In recent tests with IRQ on/off tracepoints, a large performance > > overhead ~10% is noticed when running hackbench. This is root caused to > > calls to rcu_irq_enter_irqson and rcu_irq_exit_irqson from the > > tracepoint code. Following a long discussion on the list [1] about this, > > we concluded that srcu is a better alternative for use during rcu idle. > > Although it does involve extra barriers, its lighter than the sched-rcu > > version which has to do additional RCU calls to notify RCU idle about > > entry into RCU sections. > > > > In this patch, we change the underlying implementation of the > > trace_*_rcuidle API to use SRCU. This has shown to improve performance > > alot for the high frequency irq enable/disable tracepoints.
> Can you post some numbers?
Here are some numbers (which I'll also include in the next series spin):
With a run of the following 30 times on a single core x86 Qemu instance with 1GB memory: hackbench -g 4 -f 2 -l 3000
Completion times in seconds. CONFIG_PROVE_LOCKING=y.
No patches (without this series) Mean: 3.048 Median: 3.025 Std Dev: 0.064
With Lockdep using irq tracepoints with RCU implementation: Mean: 3.451 (-11.66 %) Median: 3.447 (-12.22%) Std Dev: 0.049
With Lockdep using irq tracepoints with SRCU implementation: Mean: 3.020 (I would consider the improvement against the "without this series" case as just noise). Median: 3.013 Std Dev: 0.033
thanks,
- Joel
| |