From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org, 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, rostedt@goodmis.org,
dhowells@redhat.com, edumazet@google.com, dvhart@linux.intel.com,
fweisbec@gmail.com, oleg@redhat.com, bobby.prani@gmail.com,
Clark Williams <clark.williams@gmail.com>
Subject: Re: [PATCH tip/core/rcu 4/7] rcu: Unify boost and kthread priorities
Date: Fri, 31 Oct 2014 09:42:30 -0700 [thread overview]
Message-ID: <20141031164229.GY5718@linux.vnet.ibm.com> (raw)
In-Reply-To: <20141031162210.GV23531@worktop.programming.kicks-ass.net>
On Fri, Oct 31, 2014 at 05:22:10PM +0100, Peter Zijlstra wrote:
> On Wed, Oct 29, 2014 at 09:16:02AM -0700, Paul E. McKenney wrote:
>
> > > Also, should we look at running this stuff as deadline in order to
> > > provide interference guarantees etc.. ?
> >
> > Excellent question! I have absolutely no idea what the answer might be.
> >
> > Taking the two sets of kthreads separately...
> >
> > rcub/N: This is for RCU priority boosting. In the preferred common case,
> > these never wake up ever. When they do wake up, all they do is
> > cause blocked RCU readers to get priority boosted. I vaguely
> > recall something about inheritance of deadlines, which might
> > work here. One concern is what happens if the deadline is
> > violated, as this isn't really necessarily an error condition
> > in this case -- we don't know how long the RCU read-side critical
> > section will run once awakened.
>
> Yea, this one is 'hard'. How is this used today? From the previous email
> we've learnt that the default is FIFO-1, iow. it will preempt
> SCHED_OTHER but not much more. How is this used in RT systems, what are
> the criteria for actually changing this?
The old way is to update CONFIG_RCU_BOOST_PRIO and rebuild your kernel,
but a recent commit from Clark Williams provides a boot parameter that
allows this priority to be changed more conveniently.
> Increase until RCU stops spilling stalled warns, but not so far that
> your workload fails?
Well, you are supposed to determine the highest RT priority at which
your workload might run CPU-bound tasks, and set the boost priority
at some level above that. My model of RCU priority boosting is that
it should be used to make inadvertent high-priority infinite loops
easier to debug, but others might have different approaches.
> Not quite sure how to translate that into dl speak :-), the problem of
> course is that if a DL task starts to trigger the stalls we need to do
> something.
Indeed! ;-)
> > rcuc/N: This is the softirq replacement in -rt, but in mainline all it
> > does is invoke RCU callbacks. It might make sense to give it a
> > deadline of something like a few milliseconds, but we would need
> > to temper that if there were huge numbers of callbacks pending.
> > Or perhaps have it claim that its "unit of work" was some fixed
> > number of callbacks or emptying the list, whichever came first.
> > Or maybe have its "unit of work" also depend on the number of
> > callbacks pending.
>
> Right, so the problem is if we give it insufficient time it will never
> catch up on running the callbacks, ie. more will come in than we can
> process and get out.
Yep, which can result in OOM.
> So if it works by splicing a callback list to a local list, then runs
> until completion and then either immediately starts again if there's
> new work, or goes to sleep waiting for more, _then_ we can already
> assign it DL parameters with the only caveat being the above issue.
>
> The advantage being indeed that if there are 'many' callbacks pending,
> we'd only run a few, sleep, run a few more, etc.. due to the CBS until
> we're done. This smooths out peak interference at the 'cost' of
> additional delays in actually running the callbacks.
>
> We should be able to detect the case where more and work piles on and
> the actual running does not appear to catch up, but I'm not sure what to
> do about it, seeing how system stability is at risk.
I could imagine having a backup SCHED_FIFO task that handled the
case where callbacks were piling up, but synchronizing it with the
SCHED_DEADLINE task while avoiding callback misordering could be a bit
"interesting". (Recall that callback misordering messes up rcu_barrier().)
> Certainly something to think about..
No argument here! ;-)
Thanx, Paul
next prev parent reply other threads:[~2014-10-31 16:42 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-28 22:22 [PATCH tip/core/rcu 0/7] Real-time updates for 3.19 Paul E. McKenney
2014-10-28 22:22 ` [PATCH tip/core/rcu 1/7] init/Kconfig: move RCU_NOCB_CPU dependencies to choice Paul E. McKenney
2014-10-28 22:22 ` [PATCH tip/core/rcu 2/7] rcu: Move RCU_BOOST variable declarations, eliminating #ifdef Paul E. McKenney
2014-10-28 22:22 ` [PATCH tip/core/rcu 3/7] rcu: Avoid IPIing idle CPUs from synchronize_sched_expedited() Paul E. McKenney
2014-10-29 10:59 ` Peter Zijlstra
2014-10-29 15:56 ` Paul E. McKenney
2014-10-28 22:22 ` [PATCH tip/core/rcu 4/7] rcu: Unify boost and kthread priorities Paul E. McKenney
2014-10-29 11:01 ` Peter Zijlstra
2014-10-29 16:16 ` Paul E. McKenney
2014-10-31 16:22 ` Peter Zijlstra
2014-10-31 16:42 ` Paul E. McKenney [this message]
2014-10-31 16:51 ` Peter Zijlstra
2014-10-31 16:57 ` Paul E. McKenney
2014-10-28 22:23 ` [PATCH tip/core/rcu 5/7] rcu: Remove redundant TREE_PREEMPT_RCU config option Paul E. McKenney
2014-10-28 22:23 ` [PATCH tip/core/rcu 6/7] rcu: Kick rcuo kthreads after their CPU goes offline Paul E. McKenney
2014-10-28 22:23 ` [PATCH tip/core/rcu 7/7] rcu: Fix for rcuo online-time-creation reorganization bug 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=20141031164229.GY5718@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=bobby.prani@gmail.com \
--cc=clark.williams@gmail.com \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=dvhart@linux.intel.com \
--cc=edumazet@google.com \
--cc=fweisbec@gmail.com \
--cc=josh@joshtriplett.org \
--cc=laijs@cn.fujitsu.com \
--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.