• P
    rcu: reduce the number of spurious RCU_SOFTIRQ invocations · d21670ac
    Paul E. McKenney 提交于
    Lai Jiangshan noted that up to 10% of the RCU_SOFTIRQ are spurious, and
    traced this down to the fact that the current grace-period machinery
    will uselessly raise RCU_SOFTIRQ when a given CPU needs to go through
    a quiescent state, but has not yet done so.  In this situation, there
    might well be nothing that RCU_SOFTIRQ can do, and the overhead can be
    worth worrying about in the ksoftirqd case.  This patch therefore avoids
    raising RCU_SOFTIRQ in this situation.
    
    Changes since v1 (http://lkml.org/lkml/2010/3/30/122 from Lai Jiangshan):
    
    o	Omit the rcu_qs_pending() prechecks, as they aren't that
    	much less expensive than the quiescent-state checks.
    
    o	Merge with the set_need_resched() patch that reduces IPIs.
    
    o	Add the new n_rp_report_qs field to the rcu_pending tracing output.
    
    o	Update the tracing documentation accordingly.
    Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
    Signed-off-by: NPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    d21670ac
rcutree.h 15.2 KB