All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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 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.