diff options
author | 2018-04-10 21:17:56 -0700 | |
---|---|---|
committer | 2018-05-15 10:29:07 -0700 | |
commit | 9036c2ffd596261d2067fc2d693dc4f0d7a51214 (patch) | |
tree | d17b25e148a4d22f6e309617bbdbf5cde5dc45aa /tools/perf/scripts/python/export-to-postgresql.py | |
parent | Linux 4.17-rc1 (diff) | |
download | wireguard-linux-9036c2ffd596261d2067fc2d693dc4f0d7a51214.tar.xz wireguard-linux-9036c2ffd596261d2067fc2d693dc4f0d7a51214.zip |
rcu: Improve non-root rcu_cbs_completed() accuracy
When rcu_cbs_completed() is invoked on a non-root rcu_node structure,
it unconditionally assumes that two grace periods must complete before
the callbacks at hand can be invoked. This is overly conservative because
if that non-root rcu_node structure believes that no grace period is in
progress, and if the corresponding rcu_state structure's ->gpnum field
has not yet been incremented, then these callbacks may safely be invoked
after only one grace period has completed.
This change is required to permit grace-period start requests to use
funnel locking, which is in turn permitted to reduce root rcu_node ->lock
contention, which has been observed by Nick Piggin. Furthermore, such
contention will likely be increased by the merging of RCU-bh, RCU-preempt,
and RCU-sched, so it makes sense to take steps to decrease it.
This commit therefore improves the accuracy of rcu_cbs_completed() when
invoked on a non-root rcu_node structure as described above.
Reported-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Nicholas Piggin <npiggin@gmail.com>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions