From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751449AbdAWTez (ORCPT ); Mon, 23 Jan 2017 14:34:55 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:42910 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751248AbdAWTex (ORCPT ); Mon, 23 Jan 2017 14:34:53 -0500 Date: Mon, 23 Jan 2017 11:34:45 -0800 From: "Paul E. McKenney" To: Josh Triplett Cc: linux-kernel@vger.kernel.org, mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, 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 Subject: Re: [PATCH v2 tip/core/rcu 07/18] rcu: Add long-term CPU kicking Reply-To: paulmck@linux.vnet.ibm.com References: <20170118025316.GB2042@linux.vnet.ibm.com> <1484708037-2523-7-git-send-email-paulmck@linux.vnet.ibm.com> <20170121204255.ojlqgfk6lh7lac76@x> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170121204255.ojlqgfk6lh7lac76@x> User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 17012319-0028-0000-0000-000006DB445E X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00006485; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000200; SDB=6.00811657; UDB=6.00395748; IPR=6.00589074; BA=6.00005084; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00014017; XFM=3.00000011; UTC=2017-01-23 19:34:50 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17012319-0029-0000-0000-000032F5120D Message-Id: <20170123193445.GI28085@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-01-23_15:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1612050000 definitions=main-1701230253 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jan 21, 2017 at 12:42:55PM -0800, Josh Triplett wrote: > On Tue, Jan 17, 2017 at 06:53:46PM -0800, Paul E. McKenney wrote: > > Commit d2db185bfee8 ("rcu: Remove short-term CPU kicking") removed > > frequent calls to resched_cpu(), which means that the only time > > resched_cpu() is invoked is after an RCU CPU stall warning. Although > > this is good from an avoid-IPIs perspective, we should try to break > > things loose -before- splatting. This commit therefore starts invoking > > resched_cpu() for each holdout at each force-quiescent-state interval > > that is more than halfway through the stall-warning interval. > > Just realized an issue with this commit message: you're referring to > what now appears as patch 8 in the past tense as something already done, > and with a commit ID that probably doesn't work anymore. You need to > rephrase this to describe how it leads to a *subsequent* change rather > than fixing something already changed. > > With the commit message fixed: > Reviewed-by: Josh Triplett Good point! It now reads as follows: ------------------------------------------------------------------------ This commit prepares for the removal of short-term CPU kicking (in a subsequent commit). It does so by starting to invoke resched_cpu() for each holdout at each force-quiescent-state interval that is more than halfway through the stall-warning interval. ------------------------------------------------------------------------ Does that work? Thanx, Paul > > Signed-off-by: Paul E. McKenney > > > > > --- > > kernel/rcu/tree.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > index 83bf054e194e..0e61b62e3f4a 100644 > > --- a/kernel/rcu/tree.c > > +++ b/kernel/rcu/tree.c > > @@ -1225,6 +1225,12 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp, > > rdp->rsp->gp_start + 2 * jiffies_till_sched_qs) || > > ULONG_CMP_GE(jiffies, rdp->rsp->gp_start + jiffies_till_sched_qs)) > > resched_cpu(rdp->cpu); /* Force CPU into scheduler. */ > > + /* > > + * If more than halfway to RCU CPU stall-warning time, do > > + * a resched_cpu() to try to loosen things up a bit. > > + */ > > + if (jiffies - rdp->rsp->gp_start > rcu_jiffies_till_stall_check() / 2) > > + resched_cpu(rdp->cpu); > > > > return 0; > > } > > -- > > 2.5.2 > > >