Re: RCU related performance regression in 3.3

From: Pascal Chapperon
Date: Fri May 18 2012 - 10:48:13 EST


Le 18/05/2012 14:14, Paul E. McKenney a Ãcrit :
On Fri, May 18, 2012 at 01:01:41PM +0200, Pascal Chapperon wrote:
Le 15/05/2012 00:32, Paul E. McKenney a Ãcrit :
On Fri, May 04, 2012 at 04:14:42PM -0700, Paul E. McKenney wrote:
On Fri, May 04, 2012 at 11:41:13PM +0200, Pascal Chapperon wrote:
Le 04/05/2012 17:04, Paul E. McKenney a Ãcrit :
On Fri, May 04, 2012 at 04:42:54PM +0200, Pascal Chapperon wrote:
Le 01/05/2012 17:45, Paul E. McKenney a Ãcrit :

Here is my RCU_FAST_NO_HZ patch stack on top of v3.4-rc4.

Or you can pull branch fnh.2012.05.01a from:

git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git

Thanx, Paul

I applied your global patch on top of v3.4-rc4. But the slowdown is
worse than before : boot sequence took 80s instead 20-30s (12s for
initramfs instead of 2s).

I'll send you rcu tracing log in a second mail.

Hmmm... Well, I guess I am glad that I finally did something that
had an effect, but I sure wish that the effect had been in the other
direction!

Just to make sure I understand: the difference between the 20-30s and
the 80s is exactly the patch I sent you?

Thanx, Paul


Yes. Exactly same kernel config as in previous results, I applied
your patch against v3.4-rc4, and sorry, the result is exactly what I
said;
I saw that your global patch was quite huge, and addresses things which
are not directly related with the initial patch (commit
7cb92499000e3c86dae653077b1465458a039ef6); maybe a side effect?

However, I'm ready to try this patch on my smaller laptop which
supports well CONFIG_FAST_NO_HZ=y and systemd, if you think it can
help ?

Another thought: this issue as nothing to do with i7 Hyper-threading
capacities ? (as I test core2duo, Pentium ulv in same conditions and I
don't encountered any slowdown ?)

Well, one possibility is that your setup starts the jiffies counter
at some interesting value. The attached patch (also against v3.4-rc4)
applies a bit more paranoia to the initialization to handle this
and other possibilities.

This patchset fixes the problem where RCU_FAST_NO_HZ's timers were
being ignored due to the dyntick-idle code having already calculated
the CPU's wakeup time (which I sent earlier, mistakenly offlist), but
also fixes a botched check in my workaround.

Could you please try it out? This patch is against 3.4-rc4.

Thanx, Paul

Hi Paul,

< + if (!rcu_cpu_has_nonlazy_callbacks(cpu))
---
+ if (rcu_cpu_has_nonlazy_callbacks(cpu))

I was a little disappointed by the previous patch (boot sequence still
took 72 s.), but this one makes a huge difference ;-)
Slowdown during boot or shutdown with CONFIG_RCU_FAST_NO_HZ has
disappeared (~ 10 attempts) :
# systemd-analyze
Startup finished in 1990ms (kernel) + 1174ms (initramfs) + 3121ms
(userspace) = 6285ms
.

Very good! And thank you very much for all your testing efforts and
for bearing with me through this!

Does this mean that I can add your Tested-by?

Yes: the results are good and stable, at least for my hardware.
I tried with both a standard fedora 16 kernel configuration and a custom
one (hardware optimized, preempted, etc...) and this on over more 20
attempts.
With or without FAST_NO_HZ makes no difference now.


Do you want the rcu tracing log for this patch ?

Could you please? Just in case there is some other surprise that
I should know about that might not be visible. ;-)

Thanx, Paul
I'll send you the logs in a second mail (offlist).

Pascal


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/