Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753027AbbF3VtC (ORCPT ); Tue, 30 Jun 2015 17:49:02 -0400 Received: from e32.co.us.ibm.com ([32.97.110.150]:55340 "EHLO e32.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753159AbbF3Vsh (ORCPT ); Tue, 30 Jun 2015 17:48:37 -0400 X-Helo: d03dlp03.boulder.ibm.com X-MailFrom: paulmck@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: mingo@kernel.org, laijs@cn.fujitsu.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, dvhart@linux.intel.com, fweisbec@gmail.com, oleg@redhat.com, bobby.prani@gmail.com, "Paul E. McKenney" Subject: [PATCH RFC tip/core/rcu 5/5] rcu: Limit expedited helping to every 10 ms or every 4th GP Date: Tue, 30 Jun 2015 14:48:30 -0700 Message-Id: <1435700910-9104-5-git-send-email-paulmck@linux.vnet.ibm.com> X-Mailer: git-send-email 1.8.1.5 In-Reply-To: <1435700910-9104-1-git-send-email-paulmck@linux.vnet.ibm.com> References: <20150630214805.GA7795@linux.vnet.ibm.com> <1435700910-9104-1-git-send-email-paulmck@linux.vnet.ibm.com> X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15063021-0005-0000-0000-00001338406E Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1295 Lines: 42 From: "Paul E. McKenney" Signed-off-by: Paul E. McKenney --- 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 majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/