lkml.org 
[lkml]   [2011]   [Jun]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [GIT PULL rcu/urgent] fixes for slowdowns and softlockup
On Tue, Jun 14, 2011 at 09:41:07PM -0700, Paul E. McKenney wrote:
> Hello, Ingo,
>
> This pull request fixes a softlockup and a severe performance regression.

Resending, this time copying LKML and a few additional people.
For those for whom this is a duplicate, please accept my apologies.

Thanx, Paul

> Shaohua Li debugged a performance regression and found that RCU's shiny
> new real-time kthreads were causing excessive lock contention in the
> scheduler on large systems, resulting in severe performance regressions.
> Shaohua also provided a patch that converts the RCU core back to softirq,
> but still uses a real-time kthread to invoke the callbacks. This allows
> RCU priority boosting to work, while greatly reducing the stress on
> the scheduler. Shaohua's patch was tested by Alex Shi and Sasha Levin.
>
> What was intended to be a code-cleanup patch fixes a softlockup
> problem reported by Daniel J Blueman. The problem was that the RCU
> priority boosting kthread would not necessarily be awakened in a timely
> fashion. Because kthreads are created in TASK_UNINTERRUPTIBLE state,
> if a newly created kthread is left alone for more than two minutes,
> softlockup warnings will be issued. This problem was fixed by the
> code simplification -- because the binding of this kthread is only a
> performance optimization, we can awaken it before any of its CPUs are
> fully online, which eliminates the delay that could otherwise lead to
> the softlockup.
>
> These changes are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu.git rcu/urgent
>
> Thanx, Paul
>
> ------------------>
>
> Paul E. McKenney (1):
> rcu: Simplify curing of load woes
>
> Shaohua Li (1):
> rcu: Use softirq to address performance regression
>
> Documentation/filesystems/proc.txt | 1 +
> include/linux/interrupt.h | 1 +
> include/trace/events/irq.h | 3 +-
> kernel/rcutree.c | 88 ++++++++++++++++-------------------
> kernel/rcutree.h | 1 +
> kernel/rcutree_plugin.h | 20 ++++----
> kernel/softirq.c | 2 +-
> tools/perf/util/trace-event-parse.c | 1 +
> 8 files changed, 57 insertions(+), 60 deletions(-)


\
 
 \ /
  Last update: 2011-06-15 17:01    [W:0.087 / U:0.672 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site