rcu: Adaptive dyntick-idle preparation
authorPaul E. McKenney <paul.mckenney@linaro.org>
Wed, 30 Nov 2011 23:41:14 +0000 (15:41 -0800)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 11 Dec 2011 18:32:10 +0000 (10:32 -0800)
commitf23f7fa1c8effca19b52b98fc71016109d21db59
treee669b1b0cd96820949dd9deee1e5113fd667fb36
parentdff1672d9199fffddb58fa7970ccf59005fc35f3
rcu: Adaptive dyntick-idle preparation

If there are other CPUs active at a given point in time, then there is a
limit to what a given CPU can do to advance the current RCU grace period.
Beyond this limit, attempting to force the RCU grace period forward will
do nothing but consume energy burning CPU cycles.

Therefore, this commit takes an adaptive approach to RCU_FAST_NO_HZ
preparations for idle.  It pushes the RCU core state machine for
two cycles unconditionally, and then it will push from zero to three
additional cycles, but only as long as the RCU core has work for this
CPU to do immediately.  The rcu_pending() function is used to check
whether the RCU core has such work.

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcutree_plugin.h