• M
    sched: Assign correct scheduling domain to 'sd_llc' · 5d4cf996
    Mel Gorman 提交于
    Commit 42eb088e (sched: Avoid NULL dereference on sd_busy) corrected a NULL
    dereference on sd_busy but the fix also altered what scheduling domain it
    used for the 'sd_llc' percpu variable.
    
    One impact of this is that a task selecting a runqueue may consider
    idle CPUs that are not cache siblings as candidates for running.
    Tasks are then running on CPUs that are not cache hot.
    
    This was found through bisection where ebizzy threads were not seeing equal
    performance and it looked like a scheduling fairness issue. This patch
    mitigates but does not completely fix the problem on all machines tested
    implying there may be an additional bug or a common root cause. Here are
    the average range of performance seen by individual ebizzy threads. It
    was tested on top of candidate patches related to x86 TLB range flushing.
    
    	4-core machine
    			    3.13.0-rc3            3.13.0-rc3
    			       vanilla            fixsd-v3r3
    	Mean   1        0.00 (  0.00%)        0.00 (  0.00%)
    	Mean   2        0.34 (  0.00%)        0.10 ( 70.59%)
    	Mean   3        1.29 (  0.00%)        0.93 ( 27.91%)
    	Mean   4        7.08 (  0.00%)        0.77 ( 89.12%)
    	Mean   5      193.54 (  0.00%)        2.14 ( 98.89%)
    	Mean   6      151.12 (  0.00%)        2.06 ( 98.64%)
    	Mean   7      115.38 (  0.00%)        2.04 ( 98.23%)
    	Mean   8      108.65 (  0.00%)        1.92 ( 98.23%)
    
    	8-core machine
    	Mean   1         0.00 (  0.00%)        0.00 (  0.00%)
    	Mean   2         0.40 (  0.00%)        0.21 ( 47.50%)
    	Mean   3        23.73 (  0.00%)        0.89 ( 96.25%)
    	Mean   4        12.79 (  0.00%)        1.04 ( 91.87%)
    	Mean   5        13.08 (  0.00%)        2.42 ( 81.50%)
    	Mean   6        23.21 (  0.00%)       69.46 (-199.27%)
    	Mean   7        15.85 (  0.00%)      101.72 (-541.77%)
    	Mean   8       109.37 (  0.00%)       19.13 ( 82.51%)
    	Mean   12      124.84 (  0.00%)       28.62 ( 77.07%)
    	Mean   16      113.50 (  0.00%)       24.16 ( 78.71%)
    
    It's eliminated for one machine and reduced for another.
    Signed-off-by: NMel Gorman <mgorman@suse.de>
    Signed-off-by: NPeter Zijlstra <peterz@infradead.org>
    Cc: Alex Shi <alex.shi@linaro.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Fengguang Wu <fengguang.wu@intel.com>
    Cc: H Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20131217092124.GV11295@suse.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
    5d4cf996
core.c 173.2 KB