• Paul E. McKenney's avatar
    rcu: Make expedited RCU CPU selection avoid unnecessary stores · 65963d24
    Paul E. McKenney authored
    This commit reworks the first loop in sync_rcu_exp_select_cpus()
    to avoid doing unnecssary stores to other CPUs' rcu_data
    structures.  This speeds up that first loop by roughly a factor of
    two on an old x86 system.  In the case where the system is mostly
    idle, this loop incurs a large fraction of the overhead of the
    synchronize_rcu_expedited().  There is less benefit on busy systems
    because the overhead of the smp_call_function_single() in the second
    loop dominates in that case.
    
    However, it is not unusual to do configuration chances involving
    RCU grace periods (both expedited and normal) while the system is
    mostly idle, so this optimization is worth doing.
    
    While we are in the area, this commit also adds parentheses to arguments
    used by the for_each_leaf_node_possible_cpu() macro.
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    65963d24
rcu.h 15.1 KB