• Srikar Dronamraju's avatar
    sched/fair: Fix asym packing to select correct CPU · 1f621e02
    Srikar Dronamraju authored
    When asymmetric packing is set in the sched_domain and target CPU is
    busy, update_sd_pick_busiest() may not select the busiest runqueue.
    When target CPU is busy, find_busiest_group() will ignore checks for
    asym packing and may continue to load balance using the currently
    selected not-the-busiest runqueue as source runqueue.
    Selecting the busiest runqueue as source when the target CPU is busy,
    should result in achieving much better load balance.
    
    Also when target CPU is not busy and asymmetric packing is set in sd,
    select higher CPU as source CPU for load balancing.
    
    While doing this change, move the check to see if target CPU is busy
    into check_asym_packing().
    
    The extent of performance benefit from this change decreases with the
    increasing load. However there is benefit in undercommit as well as
    overcommit conditions.
    
    1. Record per second ebizzy (32 threads) on a 64 CPU power 7 box. (5 iterations)
    4.6.0-rc2
    	Testcase:         Min         Max         Avg      StdDev
    	  ebizzy:  5223767.00 10368236.00  7946971.00  1753094.76
    
    4.6.0-rc2+asym-changes
    	Testcase:         Min         Max         Avg      StdDev     %Change
    	  ebizzy:  8617191.00 13872356.00 11383980.00  1783400.89     +24.78%
    
    2. Record per second ebizzy (64 threads) on a 64 CPU power 7 box. (5 iterations)
    4.6.0-rc2
    	Testcase:         Min         Max         Avg      StdDev
    	  ebizzy:  6497666.00 18399783.00 10818093.20  4051452.08
    
    4.6.0-rc2+asym-changes
    	Testcase:         Min         Max         Avg      StdDev     %Change
    	  ebizzy:  7567365.00 19456937.00 11674063.60  4295407.48      +4.40%
    
    3. Record per second ebizzy (128 threads) on a 64 CPU power 7 box. (5 iterations)
    4.6.0-rc2
    	Testcase:         Min         Max         Avg      StdDev
    	  ebizzy: 37073983.00 40341911.00 38776241.80  1259766.82
    
    4.6.0-rc2+asym-changes
    	Testcase:         Min         Max         Avg      StdDev     %Change
    	  ebizzy: 38030399.00 41333378.00 39827404.40  1255001.86      +2.54%
    Signed-off-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Gautham R Shenoy <ego@linux.vnet.ibm.com>
    Cc: Michael Neuling <mikey@neuling.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/1459948660-16073-1-git-send-email-srikar@linux.vnet.ibm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    1f621e02
fair.c 226 KB