rcu: Throttle rcu_try_advance_all_cbs() execution causes visibleslowdown in ftrace switching

From: Petr Mladek
Date: Fri Nov 01 2013 - 13:19:51 EST


Hi,

I am doing some clean up in x86 ftrace code. I check the performance by
switching between different tracers and by enabling and disabling them.

The operation has started to be much slower after rebasing on the
kernel tip tree. Bisecting has shown that the difference was caused by
the commit c229828ca6bc62d6c654 (rcu: Throttle
rcu_try_advance_all_cbs() execution)

The following times are from Intel 2xCore i7-3770 CPU @ 3.40GHz when
calling the attached test script (time ./test-ftrace). It 100x switches
between "function" and "nop" tracer. It also enables and disables the
tracer each time.

Results with the commit c229828ca6bc62d6c654:

real 0m49.393s 0m49.632s 0m49.359s
user 0m0.004s 0m0.000s 0m0.004s
sys 0m0.996s 0m0.880s 0m0.892s


Results after reverting the commit c229828ca6bc62d6c654:

real 0m35.320s 0m35.687s 0m35.920s
user 0m0.004s 0m0.004s 0m0.000s
sys 0m1.140s 0m1.208s 0m1.152s


I might do some more debugging on Monday. I wonder if you have any
hints or ideas.

Best Regards,
Petr

Attachment: test-ftrace
Description: application/shellscript