All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org, mingo@kernel.org,
	jiangshanlai@gmail.com, dipankar@in.ibm.com,
	akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
	josh@joshtriplett.org, tglx@linutronix.de, rostedt@goodmis.org,
	dhowells@redhat.com, edumazet@google.com, fweisbec@gmail.com,
	oleg@redhat.com, joel.opensrc@gmail.com
Subject: Re: [PATCH tip/core/rcu 01/22] sched: Make non-production PREEMPT cond_resched() help Tasks RCU
Date: Mon, 23 Apr 2018 05:40:00 -0700	[thread overview]
Message-ID: <20180423124000.GL26088@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180423085127.GR4064@hirez.programming.kicks-ass.net>

On Mon, Apr 23, 2018 at 10:51:27AM +0200, Peter Zijlstra wrote:
> On Sun, Apr 22, 2018 at 07:32:06PM -0700, Paul E. McKenney wrote:
> > In CONFIG_PREEMPT=y kernels, cond_resched() is a complete no-op, and
> > thus cannot help advance Tasks-RCU grace periods.  However, such grace
> > periods are only an issue in non-production benchmarking runs of the
> > Linux kernel.  This commit therefore makes cond_resched() invoke
> > rcu_note_voluntary_context_switch() for kernels implementing Tasks RCU
> > even in CONFIG_PREEMPT=y kernels.
> 
> I'm confused.. why is having this conditional on TRACEPOINT_BENCHMARK a
> sane idea?

Because the TRACEPOINT_BENCHMARK tests are insane, so a similar
level of insanity is required to make things work.  Plus having this
be unconditional would not be good for performance, as 0day has been
telling me frequently over the past couple of years.

All that aside, I am very open to ideas.  What would you suggest?

							Thanx, Paul

> > Reported-by: Steven Rostedt <rostedt@goodmis.org>
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > ---
> >  include/linux/sched.h | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/include/linux/sched.h b/include/linux/sched.h
> > index b3d697f3b573..fe8f7178a22d 100644
> > --- a/include/linux/sched.h
> > +++ b/include/linux/sched.h
> > @@ -1617,6 +1617,12 @@ static inline int test_tsk_need_resched(struct task_struct *tsk)
> >   */
> >  #ifndef CONFIG_PREEMPT
> >  extern int _cond_resched(void);
> > +#elif defined(CONFIG_TRACEPOINT_BENCHMARK)
> > +static inline int _cond_resched(void)
> > +{
> > +	rcu_note_voluntary_context_switch(current);
> > +	return 0;
> > +}
> >  #else
> >  static inline int _cond_resched(void) { return 0; }
> >  #endif
> > -- 
> > 2.5.2
> > 
> 

  reply	other threads:[~2018-04-23 12:38 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-23  2:31 [PATCH tip/core/rcu 0/22] Miscellaneous fixes for v4.18 Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 01/22] sched: Make non-production PREEMPT cond_resched() help Tasks RCU Paul E. McKenney
2018-04-23  8:51   ` Peter Zijlstra
2018-04-23 12:40     ` Paul E. McKenney [this message]
2018-04-23 13:47       ` Steven Rostedt
2018-04-23 14:10         ` Peter Zijlstra
2018-04-23 14:35           ` Steven Rostedt
2018-04-23 15:47             ` Paul E. McKenney
2018-04-23 19:12               ` Paul E. McKenney
2018-04-23 14:03       ` Peter Zijlstra
2018-04-23  2:32 ` [PATCH tip/core/rcu 02/22] rcu: Inline rcu_preempt_do_callback() into its sole caller Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 03/22] rcu: Don't allocate rcu_nocb_mask if no one needs it Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 04/22] rcu: Call wake_nocb_leader_defer() with 'FORCE' when nocb_q_count is high Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 05/22] rcu: Remove deprecated RCU debugfs tracing code Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 06/22] rcu: Rename cond_resched_rcu_qs() to cond_resched_tasks_rcu_qs() Paul E. McKenney
2018-04-23  8:53   ` Peter Zijlstra
2018-04-23 12:32     ` Paul E. McKenney
2018-04-23 12:48       ` Peter Zijlstra
2018-04-23 13:12         ` Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 07/22] softirq: Eliminate unused cond_resched_softirq() macro Paul E. McKenney
2018-04-23  8:54   ` Peter Zijlstra
2018-04-23 13:25     ` Eric Dumazet
2018-04-23 19:10       ` Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 08/22] rcu: Move __rcu_read_lock() and __rcu_read_unlock() to tree_plugin.h Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 09/22] rcu: Update rcu_bind_gp_kthread() header comment Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 10/22] rcu: Declare rcu_eqs_special_set() in public header Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 11/22] srcu: Add cleanup_srcu_struct_quiesced() Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 12/22] nvme: Avoid flush dependency in delete controller flow Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 13/22] rcu: Exclude near-simultaneous RCU CPU stall warnings Paul E. McKenney
2018-05-03 18:22   ` Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 14/22] rcu: Add leaf-node macros Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 15/22] doc: Ensure whatisRCU.txt actually says what RCU is Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 16/22] EXP: rcu: Add debugging info to assertion Paul E. McKenney
2018-05-03 18:23   ` Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 17/22] EXP: rcu: Abstract addition of debugging information " Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 18/22] EXP: rcu: Add ->boost_tasks " Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 19/22] EXP: rcu: Add debugging info to other assertion Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 20/22] EXP rcu: Add ->qsmask to assertion Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 21/22] EXP rcu: Add checks for setting ->gp_flags Paul E. McKenney
2018-04-23  2:32 ` [PATCH tip/core/rcu 22/22] rcu: Use the proper lockdep annotation in dump_blkd_tasks() Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180423124000.GL26088@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=dipankar@in.ibm.com \
    --cc=edumazet@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jiangshanlai@gmail.com \
    --cc=joel.opensrc@gmail.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.