On Wed, Jul 01, 2015 at 12:07:30PM +0200, Peter Zijlstra wrote: > On Tue, Jun 30, 2015 at 02:48:30PM -0700, Paul E. McKenney wrote: > > From: "Paul E. McKenney" <paul...@linux.vnet.ibm.com> > > This seems like a good place to explain why this is a desirable thing, > no?
Good point. > Why would you want to limit this? Because the unconditional wakeup is a two-edges sword. It reduces the latency of normal RCU grace periods on the one hand, but it makes rcu_sched consume even more CPU on the other. Thanx, Paul > > Signed-off-by: Paul E. McKenney <paul...@linux.vnet.ibm.com> > > --- > > kernel/rcu/tree.c | 15 ++++++++++++--- > > 1 file changed, 12 insertions(+), 3 deletions(-) > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > index 308b6acb4260..247aa1120c4c 100644 > > --- a/kernel/rcu/tree.c > > +++ b/kernel/rcu/tree.c > > @@ -3505,10 +3505,19 @@ void synchronize_sched_expedited(void) > > !atomic_read(&rsp->expedited_need_qs)); > > > > rcu_exp_gp_seq_end(rsp); > > - mutex_unlock(&rnp->exp_funnel_mutex); > > smp_mb(); /* ensure subsequent action seen after grace period. */ > > - if (rsp->gp_kthread && rcu_gp_in_progress(rsp)) > > - wake_up(&rsp->gp_wq); > > + if (rsp->gp_kthread && rcu_gp_in_progress(rsp)) { > > + static unsigned long nextgp; > > + static unsigned long nextjiffy; > > + > > + if (time_after_eq(jiffies, nextgp) || > > + ULONG_CMP_GE(rsp->gpnum, nextgp)) { > > + nextgp = rsp->gpnum + 4; > > + nextjiffy = jiffies + 10; > > + wake_up(&rsp->gp_wq); > > + } > > + } > > + mutex_unlock(&rnp->exp_funnel_mutex); > > > > put_online_cpus(); > > } > > -- > > 1.8.1.5 > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/