• Paul E. McKenney's avatar
    rcu: Reduce expedited GP memory contention via per-CPU variables · df5bd514
    Paul E. McKenney authored
    Currently, the piggybacked-work checks carried out by sync_exp_work_done()
    atomically increment a small set of variables (the ->expedited_workdone0,
    ->expedited_workdone1, ->expedited_workdone2, ->expedited_workdone3
    fields in the rcu_state structure), which will form a memory-contention
    bottleneck given a sufficiently large number of CPUs concurrently invoking
    either synchronize_rcu_expedited() or synchronize_sched_expedited().
    
    This commit therefore moves these for fields to the per-CPU rcu_data
    structure, eliminating the memory contention.  The show_rcuexp() function
    also changes to sum up each field in the rcu_data structures.
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    df5bd514
tree.c 140 KB