Skip to content

Commit

Permalink
rcu: Segregate rcu_state fields to improve cache locality
Browse files Browse the repository at this point in the history
The fields in the rcu_state structure that are protected by the
root rcu_node structure's ->lock can share a cache line with the
fields protected by ->onofflock.  This can result in excessive
memory contention on large systems, so this commit applies
____cacheline_internodealigned_in_smp to the ->onofflock field in
order to segregate them.

Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Dimitri Sivanich <sivanich@sgi.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
  • Loading branch information
Dimitri Sivanich authored and Paul E. McKenney committed Sep 23, 2012
1 parent b626c1b commit b402b73
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion kernel/rcutree.h
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,8 @@ struct rcu_state {

/* End of fields guarded by root rcu_node's lock. */

raw_spinlock_t onofflock; /* exclude on/offline and */
raw_spinlock_t onofflock ____cacheline_internodealigned_in_smp;
/* exclude on/offline and */
/* starting new GP. */
struct rcu_head *orphan_nxtlist; /* Orphaned callbacks that */
/* need a grace period. */
Expand Down

0 comments on commit b402b73

Please sign in to comment.