From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: rcu@vger.kernel.org, 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@joelfernandes.org,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Subject: Re: [PATCH tip/core/rcu 2/2] rcu: Check for wakeup-safe conditions in rcu_read_unlock_special()
Date: Wed, 3 Apr 2019 09:25:50 -0700 [thread overview]
Message-ID: <20190403162550.GB14111@linux.ibm.com> (raw)
In-Reply-To: <20190403095046.GD4038@hirez.programming.kicks-ass.net>
On Wed, Apr 03, 2019 at 11:50:46AM +0200, Peter Zijlstra wrote:
> On Tue, Apr 02, 2019 at 06:18:53AM -0700, Paul E. McKenney wrote:
> > On Tue, Apr 02, 2019 at 09:09:53AM +0200, Peter Zijlstra wrote:
> > > On Mon, Apr 01, 2019 at 10:22:57AM -0700, Paul E. McKenney wrote:
>
> > > > Or am I missing something that gets the scheduler on the job faster?
> > >
> > > Oh urgh, yah. So normally we only twiddle with the need_resched state:
> > >
> > > - while preempt_disabl(), such that preempt_enable() will reschedule
> > > - from interrupt context, such that interrupt return will reschedule
> > >
> > > But the usage here 'violates' those rules and then there is an
> > > unspecified latency between setting the state and it getting observed,
> > > but no longer than 1 tick I would think.
> >
> > In general, yes, which is fine (famous last words) for normal grace
> > periods but not so good for expedited grace periods.
> >
> > > I don't think we can go NOHZ with need_resched set, because the moment
> > > we hit the idle loop with that set, we _will_ reschedule.
> >
> > Agreed, and I believe that transitioning to usermode execution also
> > gives the scheduler a chance to take action.
> >
> > The one exception to this is when a nohz_full CPU running in nohz_full
> > mode does a system call that decides to execute for a very long time.
> > Last I checked, the scheduling-clock interrupt did -not- get retriggered
> > in this case, and the delay could be indefinite, as in bad even for
> > normal grace periods.
>
> Right, there is that.
>
> > > So in that respect the irq_work suggestion I made would fix things
> > > properly.
> >
> > But wouldn't the current use of set_tsk_need_resched(current) followed by
> > set_preempt_need_resched() work just as well in that case? The scheduler
> > would react to these at the next scheduler-clock interrupt on their
> > own, right? Or am I being scheduler-naive again?
>
> Well, you have that unspecified delay. By forcing the (self) interrupt
> you enforce a timely response.
Good point! I will give this a go, thank you!
Thanx, Paul
next prev parent reply other threads:[~2019-04-03 16:26 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-29 18:26 [PATCH RFC tip/core/rcu 0/2] Real-time elimination of RCU_SOFTIRQ Paul E. McKenney
2019-03-29 18:26 ` [PATCH tip/core/rcu 1/2] rcu: Enable elimination of Tree-RCU softirq processing Paul E. McKenney
2019-03-29 18:26 ` [PATCH tip/core/rcu 2/2] rcu: Check for wakeup-safe conditions in rcu_read_unlock_special() Paul E. McKenney
2019-04-01 8:32 ` Peter Zijlstra
2019-04-01 17:22 ` Paul E. McKenney
2019-04-01 19:03 ` Paul E. McKenney
2019-04-02 7:09 ` Peter Zijlstra
2019-04-02 13:18 ` Paul E. McKenney
2019-04-03 9:50 ` Peter Zijlstra
2019-04-03 16:25 ` Paul E. McKenney [this message]
2019-04-04 19:49 ` 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=20190403162550.GB14111@linux.ibm.com \
--to=paulmck@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=edumazet@google.com \
--cc=fweisbec@gmail.com \
--cc=jiangshanlai@gmail.com \
--cc=joel@joelfernandes.org \
--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=rcu@vger.kernel.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.