Messages in this thread Patch in this message | | | From | Vaidyanathan Srinivasan <> | Subject | [PATCH v7 3/8] sched: favour lower logical cpu number for sched_mc balance | Date | Thu, 18 Dec 2008 23:26:16 +0530 |
| |
Just in case two groups have identical load, prefer to move load to lower logical cpu number rather than the present logic of moving to higher logical number.
find_busiest_group() tries to look for a group_leader that has spare capacity to take more tasks and freeup an appropriate least loaded group. Just in case there is a tie and the load is equal, then the group with higher logical number is favoured. This conflicts with user space irqbalance daemon that will move interrupts to lower logical number if the system utilisation is very low.
Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> ---
kernel/sched.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/kernel/sched.c b/kernel/sched.c index 16897ab..0b9bbbd 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -3264,7 +3264,7 @@ find_busiest_group(struct sched_domain *sd, int this_cpu, */ if ((sum_nr_running < min_nr_running) || (sum_nr_running == min_nr_running && - first_cpu(group->cpumask) < + first_cpu(group->cpumask) > first_cpu(group_min->cpumask))) { group_min = group; min_nr_running = sum_nr_running; @@ -3280,7 +3280,7 @@ find_busiest_group(struct sched_domain *sd, int this_cpu, if (sum_nr_running <= group_capacity - 1) { if (sum_nr_running > leader_nr_running || (sum_nr_running == leader_nr_running && - first_cpu(group->cpumask) > + first_cpu(group->cpumask) < first_cpu(group_leader->cpumask))) { group_leader = group; leader_nr_running = sum_nr_running;
| |