Files
linux/kernel
Suresh Siddha aa68c0327e sched: Use group weight, idle cpu metrics to fix imbalances during idle
Commit: aae6d3ddd8 upstream

Currently we consider a sched domain to be well balanced when the imbalance
is less than the domain's imablance_pct. As the number of cores and threads
are increasing, current values of imbalance_pct (for example 25% for a
NUMA domain) are not enough to detect imbalances like:

a) On a WSM-EP system (two sockets, each having 6 cores and 12 logical threads),
24 cpu-hogging tasks get scheduled as 13 on one socket and 11 on another
socket. Leading to an idle HT cpu.

b) On a hypothetial 2 socket NHM-EX system (each socket having 8 cores and
16 logical threads), 16 cpu-hogging tasks can get scheduled as 9 on one
socket and 7 on another socket. Leaving one core in a socket idle
whereas in another socket we have a core having both its HT siblings busy.

While this issue can be fixed by decreasing the domain's imbalance_pct
(by making it a function of number of logical cpus in the domain), it
can potentially cause more task migrations across sched groups in an
overloaded case.

Fix this by using imbalance_pct only during newly_idle and busy
load balancing. And during idle load balancing, check if there
is an imbalance in number of idle cpu's across the busiest and this
sched_group or if the busiest group has more tasks than its weight that
the idle cpu in this_group can pull.

Reported-by: Nikhil Rao <ncrao@google.com>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1284760952.2676.11.camel@sbsiddha-MOBL3.sc.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Mike Galbraith <efault@gmx.de>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-02-17 15:37:28 -08:00
..
2010-08-13 13:19:50 -07:00
2009-12-18 14:03:52 -08:00
2009-06-24 00:02:38 -04:00
2011-02-17 15:37:19 -08:00
2009-09-18 09:48:52 -07:00
2008-10-16 11:21:30 -07:00
2011-02-17 15:37:19 -08:00
2009-08-29 14:10:07 +02:00
2008-07-28 14:37:38 +02:00
2009-09-19 13:13:17 -07:00
2009-05-15 07:56:24 -05:00
2011-02-17 15:37:19 -08:00
2009-07-24 10:53:29 +02:00
2010-07-05 11:10:31 -07:00
2009-01-14 18:09:02 +01:00
2009-06-18 13:03:56 -07:00
2009-10-29 08:56:20 +10:30
2008-09-02 19:21:40 -07:00
2010-05-26 14:29:18 -07:00
2009-10-07 08:11:20 +02:00
2009-09-23 07:39:41 -07:00
2008-02-06 10:41:02 -08:00
2011-02-17 15:37:19 -08:00
2009-07-12 14:03:27 -07:00
2009-09-23 18:13:10 -07:00
2011-02-17 15:37:19 -08:00
2009-06-18 13:03:55 -07:00