From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Christoph Lameter <cl@linux.com>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Rob Landley <rob@landley.net>,
linux-kernel@vger.kernel.org, josh@joshtriplett.org,
zhong@linux.vnet.ibm.com, khilman@linaro.org,
geoff@infradead.org, tglx@linutronix.de
Subject: Re: [PATCH] nohz1: Documentation
Date: Thu, 21 Mar 2013 13:50:54 -0700 [thread overview]
Message-ID: <20130321205054.GI3637@linux.vnet.ibm.com> (raw)
In-Reply-To: <0000013d8e8d24fd-d2931c45-2722-46d1-8b47-2ef11e21096d-000000@email.amazonses.com>
On Thu, Mar 21, 2013 at 08:04:08PM +0000, Christoph Lameter wrote:
> On Thu, 21 Mar 2013, Paul E. McKenney wrote:
>
> > > Yeah doing that right now but I'd like to see it handled without manual
> > > intervention.
> >
> > Given that RCU has no idea where you want them to run, some manual
> > intervention would most likely be required even if RCU spawned them
> > dynamically, right?
>
> If rcuoXX is a SCHED_OTHER process/thread then the kernel will move it to
> another processor from the one running the SCHED_FIFO task. There would be
> no manual intervention required.
Assuming that the SCHED_FIFO task was running at the time that RCU
decided to spawn the kthread, and assuming that there was at least
one CPU not running a SCHED_FIFO task, agreed. But these assumptions
do not hold in general.
> > So, again, removing scheduling-clock interrupts in more situations is
> > a good future enhancement.
>
> The point here is that the check for a single runnable process is wrong
> because it accounts for tasks in all scheduling classes.
Incomplete, yes. Only a starting point, yes. Wrong, no.
> It would be better to check if there is only one runnable task in the
> highest scheduling class. That would work and defer the SCHED_OTHER kernel
> threads for the SCHED_FIFO thread.
Agreed, that would be better. Hopefully we will handle that and other
similar cases at some point.
> I am wondering how you actually can get NOHZ to work right? There is
> always a kernel thread that is scheduled in a couple of ticks.
>
> I guess what will happens with this patchset is:
>
> 1. SCHED_FIFO thread begins to run. There is only a single runnable task
> so adaptive tick mode is enabled.
Yep.
> 2. After 2 seconds or so some or other thing needs to run (keventd thread
> needs to run vm statistics f.e.). It becomes runnable. nr_running > 1.
> Adaptive tick mode is disabled? Occurs on my system. Or is there some
> other trick to avoid kernel threads becoming runnable?
Yes, adaptive tick mode would be disabled at that point.
> 3. Now there are 2 runnable processes. The SCHED_FIFO thread continues to
> run with the tick. The kernel thread is also runnable but will not be
> given cpu time since the SCHED_FIFO thread has priority?
Yep.
> So the SCHED_FIFO thread enjoys 2 seconds of no tick time and then ticks
> occur uselessly from there on?
If the SCHED_FIFO thread never sleeps at all, this would be the outcome.
On the other hand, if the SCHED_FIFO thread never sleeps at all, the
various per-CPU kthreads are deferred forever, which might not be so
good long term.
If the SCHED_FIFO thread does sleep at some point, the SCHED_OTHER threads
would run, the CPU would go idle, and then when the SCHED_OTHER thread
started up again, it would start up in adaptive-idle mode.
> I have not been able to consistently get the tick switched off with
> the nohz patchset. How do others use nohz? Is it only usable for short
> periods of less than 2 seconds?
I believe that many other SCHED_FIFO users run their SCHED_FIFO threads
in short bursts to respond to some real-time event. They would not tend
to have a SCHED_FIFO thread with a busy period exceeding two seconds,
and therefore would be less likely to encounter this issue.
So, how long of busy periods are you contemplating for your SCHED_FIFO
threads? Is it possible to tune/adjust the offending per-CPU ktheads
to wake up less frequently than that time?
Thanx, Paul
next prev parent reply other threads:[~2013-03-21 20:51 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-18 16:29 [PATCH] nohz1: Documentation Paul E. McKenney
2013-03-18 18:13 ` Rob Landley
2013-03-18 18:46 ` Frederic Weisbecker
2013-03-18 19:59 ` Rob Landley
2013-03-18 20:48 ` Frederic Weisbecker
2013-03-18 22:25 ` Paul E. McKenney
2013-03-20 23:32 ` Steven Rostedt
2013-03-20 23:55 ` Paul E. McKenney
2013-03-21 0:27 ` Steven Rostedt
2013-03-21 2:22 ` Paul E. McKenney
2013-03-21 10:16 ` Borislav Petkov
2013-03-21 15:18 ` Paul E. McKenney
2013-03-21 16:00 ` Borislav Petkov
2013-03-21 15:45 ` Arjan van de Ven
2013-03-21 17:18 ` Paul E. McKenney
2013-03-21 17:41 ` Arjan van de Ven
2013-03-21 18:02 ` Paul E. McKenney
2013-03-22 18:37 ` Kevin Hilman
2013-03-22 19:25 ` Paul E. McKenney
2013-03-22 4:59 ` Rob Landley
2013-03-21 18:01 ` Frederic Weisbecker
2013-03-21 18:26 ` Paul E. McKenney
2013-03-21 16:08 ` Christoph Lameter
2013-03-21 17:15 ` Paul E. McKenney
2013-03-21 18:39 ` Christoph Lameter
2013-03-21 18:58 ` Paul E. McKenney
2013-03-21 20:04 ` Christoph Lameter
2013-03-21 20:42 ` Frederic Weisbecker
2013-03-21 21:02 ` Christoph Lameter
2013-03-21 21:06 ` Frederic Weisbecker
2013-03-21 20:50 ` Paul E. McKenney [this message]
2013-03-22 14:38 ` Christoph Lameter
2013-03-22 16:28 ` Paul E. McKenney
2013-03-25 14:31 ` Christoph Lameter
2013-03-25 14:37 ` Frederic Weisbecker
2013-03-25 15:18 ` Christoph Lameter
2013-03-25 15:20 ` Frederic Weisbecker
2013-03-22 9:52 ` Mats Liljegren
2013-03-22 19:01 ` Kevin Hilman
2013-03-21 18:44 ` Steven Rostedt
2013-03-21 18:53 ` Christoph Lameter
2013-03-21 19:16 ` Steven Rostedt
2013-03-21 18:59 ` 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=20130321205054.GI3637@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=cl@linux.com \
--cc=fweisbec@gmail.com \
--cc=geoff@infradead.org \
--cc=josh@joshtriplett.org \
--cc=khilman@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rob@landley.net \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=zhong@linux.vnet.ibm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).