All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Rob Landley <rob@landley.net>
Cc: paulmck@linux.vnet.ibm.com, linux-kernel@vger.kernel.org,
	josh@joshtriplett.org, rostedt@goodmis.org,
	zhong@linux.vnet.ibm.com, khilman@linaro.org,
	geoff@infradead.org, tglx@linutronix.de
Subject: Re: [PATCH] nohz1: Documentation
Date: Mon, 18 Mar 2013 19:46:32 +0100	[thread overview]
Message-ID: <CAFTL4hybMf+9GjjyKRSEEp0x+wT7OwpKShE5sR_JqW24DGfKOw@mail.gmail.com> (raw)
In-Reply-To: <1363630390.15703.31@driftwood>

2013/3/18 Rob Landley <rob@landley.net>:
> On 03/18/2013 11:29:42 AM, Paul E. McKenney wrote:
> And really seems like it's kconfig help text?

It's more exhaustive than a Kconfig help. A Kconfig help text should
have the level of detail that describe the purpose and impact of a
feature, as well as some quick reference/pointer to the interface.

Deeper explanation which include implementation internals, finegrained
constraints, TODO list, detailed interface are better here.

>   The CONFIG_NO_HZ=y and CONFIG_NO_HZ_FULL=y options cause the kernel
>   to (respectively) avoid sending scheduling-clock interrupts to idle
>   processors, or to processors with only a single single runnable task.
>   You can disable this at boot time with kernel parameter "nohz=off".
>
>   This reduces power consumption by allowing processors to suspend more
>   deeply for longer periods, and can also improve some computationally
>   intensive workloads. The downside is coming out of a deeper sleep can
>   reduce realtime response to wakeup events.
>
>   This is split into two config options because the second isn't quite
>   finished and won't reliably deliver posix timer interrupts, perf
>   events, or do as well on CPU load balancing. The CONFIG_RCU_FAST_NO_HZ
>   option enables a workaround to force tick delivery every 4 jiffies to
>   handle RCU events. See the CONFIG_RCU_NOCB_CPU option for a different
>   workaround.

I really think we want to keep all the detailed explanations from
Paul's doc. What we need is not a quick reference but a very detailed
documentation.

>
>> +1.     It increases the number of instructions executed on the path
>> +       to and from the idle loop.
>
>
> This detail didn't get mentioned in my summary.

And it's an important point.

>
>
>> +5.     The LB_BIAS scheduler feature is disabled by adaptive ticks.
>
>
> I have no idea what that one is, my summary didn't mention it.

Nobody seem to know what that thing is, except probably the scheduler
warlocks :o)
All I know is that it's hard to implement without the tick. So I
disabled it in my tree.

>> +o      Some sources of OS jitter can currently be eliminated only by
>> +       constraining the workload.  For example, the only way to eliminate
>> +       OS jitter due to global TLB shootdowns is to avoid the unmapping
>> +       operations (such as kernel module unload operations) that result
>> +       in these shootdowns.  For another example, page faults and TLB
>> +       misses can be reduced (and in some cases eliminated) by using
>> +       huge pages and by constraining the amount of memory used by the
>> +       application.
>
>
> If you want to write a doc on reducing system jitter, go for it. This is
> a topic transition near the end of a document.
>
>
>> +o      At least one CPU must keep the scheduling-clock interrupt going
>> +       in order to support accurate timekeeping.
>
>
> How? You never said how to tell a processor _not_ to suppress interrupts
> when CONFIG_THE_OTHER_HALF_OF_NOHZ is enabled.

Ah indeed it would be nice to point out that there must be an online
CPU outside the value range of the nohz_mask=  boot parameter.

> I take it the problem is the value in the sysenter page won't get updated,
> so gettimeofday() will see a stale value until the CPU hog stops
> suppressing interrupts? I thought the first half of NOHZ had a way of
> dealing with that many moons ago? (Did sysenter cause a regression?)

With CONFIG_NO_HZ, there is always a tick running that updates GTOD
and jiffies as long as there is non-idle CPU. If every CPUs are idle
and one suddenly wakes up, GTOD and jiffies values are caught up.

With full dynticks we have a new problem: there can be a CPU using
jiffies of GTOD without running the tick (we are not idle so there can
be such users). So there must a ticking CPU somewhere.

> Rob

  reply	other threads:[~2013-03-18 18:46 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 [this message]
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
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=CAFTL4hybMf+9GjjyKRSEEp0x+wT7OwpKShE5sR_JqW24DGfKOw@mail.gmail.com \
    --to=fweisbec@gmail.com \
    --cc=geoff@infradead.org \
    --cc=josh@joshtriplett.org \
    --cc=khilman@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --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.