From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
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,
oleg@redhat.com, bobby.prani@gmail.com
Subject: Re: [PATCH tip/core/rcu] Do not keep timekeeping CPU tick running for non-nohz_full= CPUs
Date: Mon, 21 Jul 2014 10:33:06 -0700 [thread overview]
Message-ID: <20140721173306.GA8690@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140721170459.GP3935@laptop>
On Mon, Jul 21, 2014 at 07:04:59PM +0200, Peter Zijlstra wrote:
> On Mon, Jul 21, 2014 at 08:57:41AM -0700, Paul E. McKenney wrote:
> > On Sun, Jul 20, 2014 at 10:34:17PM +0200, Peter Zijlstra wrote:
> > > On Sun, Jul 20, 2014 at 04:47:59AM -0700, Paul E. McKenney wrote:
> > > > So we really have to have -all- the CPUs be idle to turn off the timekeeper.
> > >
> > > That seems to be pretty unavoidable any which way around.
> >
> > Hmmm... The exception would be the likely common case where none of
> > the CPUs are flagged as nohz_full= CPUs. If we handled that case as
> > if CONFIG_NO_HZ_FULL=n, we would have handled almost all of
> > the problem.
>
> You mean that is not currently the case? Yes that seems like a fairly
> sane thing to do.
Hard to say -- need to see where Frederic is putting the call to
rcu_sys_is_idle(). On the RCU side, I could potentially lower overhead
by checking tick_nohz_full_enabled() in a few functions.
> > > > This won't make the battery-powered embedded guys happy...
> > > >
> > > > Other thoughts on this? We really should not be setting
> > > > CONFIG_NO_HZ_FULL_SYSIDLE by default until this is solved.
> > >
> > > What are those same guys doing with nohz_full to begin with?
> >
> > If CONFIG_NO_HZ_FULL_SYSIDLE=y is the default, my main concern is for
> > people who didn't really want it, and who thus did not set the nohz_full=
> > boot parameter. Hence my suggestion above that we treat that case as
> > if CONFIG_NO_HZ_FULL=n (and thus also as if CONFIG_NO_HZ_FULL_SYSIDLE=n).
>
> ack
>
> > There have been some people saying that they want only a subset of
> > their CPUs in nohz_full= state, and these guys seem to want to run a
> > mixed workload. For example, they have HPC (or RT) workloads on the
> > nohz_full= CPUs, and also want normal high-throughput processing on the
> > remaining CPUs. If software was trivial (and making other unlikely
> > assumptions about the perfection of the world and the invalidity of
> > Murphy's lawy), we would want the timekeeping CPU to be able to move
> > among the non-nohz_full= CPUs.
>
> Yeah, I don't see a problem with that, but then I'm not entirely sure
> why we use RCU to track system idle state.
Because RCU needs to do very similar tracking to deal with dyntick-idle
CPUs and the various types of RCU grace periods.
> > However, this should be a small fraction of the users, and many of
> > these guys would probably be open to making a few changes. Thus, a
> > less-proactive approach should allow us to solve their actual problems, as
> > opposed to the problems that we speculate that they might encounter. ;-)
>
> But you still haven't talked about the battery people... I don't think
> nohz_full is something they should care about / use.
For all I know, they might care, but it is all speculative at this point.
The possible use cases would be if they were needing some HPC-style
computations for some misbegotten mobile implementation of some
misbegotten game.
So as far as I know at this point, the common case for the battery-powered
guys is that they don't want unconditional scheduling-clock interrupts
on CPU 0 when CPU 0 is idle, and that case is covered by our discussion
above.
Thanx, Paul
next prev parent reply other threads:[~2014-07-21 17:33 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-19 16:53 [PATCH tip/core/rcu] Do not keep timekeeping CPU tick running for non-nohz_full= CPUs Paul E. McKenney
2014-07-19 17:19 ` Josh Triplett
2014-07-19 18:01 ` Frederic Weisbecker
2014-07-19 18:28 ` Peter Zijlstra
2014-07-20 0:35 ` Frederic Weisbecker
2014-07-20 11:47 ` Paul E. McKenney
2014-07-20 20:34 ` Peter Zijlstra
2014-07-21 15:57 ` Paul E. McKenney
2014-07-21 17:04 ` Peter Zijlstra
2014-07-21 17:33 ` Paul E. McKenney [this message]
2014-07-23 16:23 ` Frederic Weisbecker
2014-07-23 16:31 ` Paul E. McKenney
2014-07-23 16:50 ` Frederic Weisbecker
2014-07-23 15:57 ` Frederic Weisbecker
2014-07-20 22:12 ` Frederic Weisbecker
2014-07-21 15:59 ` Paul E. McKenney
2014-07-23 16:02 ` Frederic Weisbecker
2014-07-24 4:24 ` Mike Galbraith
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=20140721173306.GA8690@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=bobby.prani@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.