rcu: Make rcu_nocb_wait_gp() check if GP already requested
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 1 May 2018 18:07:23 +0000 (11:07 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 12 Jul 2018 22:38:42 +0000 (15:38 -0700)
commitab5e869c1f7aa30a1210f5e8a277758b0599609f
tree2bb9514ce8374622c314371cfeaaf9ed82b9f079
parent7a1d0f23ad70cd4813bf4b72735ea2c26a4f53fe
rcu: Make rcu_nocb_wait_gp() check if GP already requested

This commit makes rcu_nocb_wait_gp() check rdp->gp_seq_needed to see
if the current CPU already knows about the needed grace period having
already been requested.  If so, it avoids acquiring the corresponding
leaf rcu_node structure's ->lock, thus decreasing contention.  This
optimization is intended for cases where either multiple leader rcuo
kthreads are running on the same CPU or these kthreads are running on
a non-offloaded (e.g., housekeeping) CPU.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
[ paulmck: Move lock release past "if" as suggested by Joel Fernandes. ]
[ paulmck: Fix caching of furthest-future requested grace period. ]
kernel/rcu/tree.c
kernel/rcu/tree_plugin.h