• Paul E. McKenney's avatar
    rcu: Make rcu_gp_cleanup() more accurately predict need for new GP · fb31340f
    Paul E. McKenney authored
    Currently, rcu_gp_cleanup() scans the rcu_node tree in order to reset
    state to reflect the end of the grace period.  It also checks to see
    whether a new grace period is needed, but in a number of cases, rather
    than directly cause the new grace period to be immediately started, it
    instead leaves the grace-period-needed state where various fail-safes
    can find it.  This works fine, but results in higher contention on the
    root rcu_node structure's ->lock, which is undesirable, and contention
    on that lock has recently become noticeable.
    
    This commit therefore makes rcu_gp_cleanup() immediately start a new
    grace period if there is any need for one.
    
    It is quite possible that it will later be necessary to throttle the
    grace-period rate, but that can be dealt with when and if.
    Reported-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Tested-by: default avatarNicholas Piggin <npiggin@gmail.com>
    fb31340f
tree.h 19.7 KB