sched: Check if we got a shallowest_idle_cpu before searching for least_loaded_cpu
authorYao Dongdong <yaodongdong@huawei.com>
Tue, 28 Oct 2014 04:08:06 +0000 (04:08 +0000)
committerIngo Molnar <mingo@kernel.org>
Tue, 4 Nov 2014 06:17:51 +0000 (07:17 +0100)
Idle cpu is idler than non-idle cpu, so we needn't search for least_loaded_cpu
after we have found an idle cpu.

Signed-off-by: Yao Dongdong <yaodongdong@huawei.com>
Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/1414469286-6023-1-git-send-email-yaodongdong@huawei.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/fair.c

index ec32c26d7fb60182567a4ad8bda61d3391626253..d03d76de7aff427bcd2edde868f4322548092520 100644 (file)
@@ -4641,7 +4641,7 @@ find_idlest_cpu(struct sched_group *group, struct task_struct *p, int this_cpu)
                                latest_idle_timestamp = rq->idle_stamp;
                                shallowest_idle_cpu = i;
                        }
-               } else {
+               } else if (shallowest_idle_cpu == -1) {
                        load = weighted_cpuload(i);
                        if (load < min_load || (load == min_load && i == this_cpu)) {
                                min_load = load;