Skip to contentSkip to conversation

sched:skip loop non-idle cpus after find an idle cpu while find_idlest_cpu

PATCH In review Yao Dongdong 2 participants 4 messages Oct 27, 2014 Scheduler

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sched:skip loop non-idle cpus after find an idle cpu while find_idlest_cpu

Idle cpu is idler than non-idle cpu, so we needn't loop non-idle cpus after find an idle cpu.

Signed-off-by [email protected]
---
 kernel/sched/fair.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/sched/fair.c +1 -1
index 0b069bf..2445a23 100644
@@ -4446,7 +4446,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;

--
1.8.0.1

#1 lore raw
Quoted 2 lines · Yao Dongdong

Idle cpu is idler than non-idle cpu, so we needn't loop non-idle cpus after find an idle cpu.

While this check looks good,
I dont see how we are avoiding a loop?

Are you suggesting that we break of the for loop once we set shallowest_idle_cpu?

Signature · 2 lines
Thanks and Regards
Srikar
Quoted 27 lines
Signed-off-by [email protected]
---
 kernel/sched/fair.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
kernel/sched/fair.c +1 -2
index 0b069bf..2445a23 100644
@@ -4446,7 +4446,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;
--

1.8.0.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Signature · 2 lines
Thanks and Regards
Srikar Dronamraju
#2 lore raw
Quoted 10 lines · Srikar Dronamraju
Quoted 2 lines · Yao Dongdong

Idle cpu is idler than non-idle cpu, so we needn't loop non-idle cpus after find an idle cpu.

While this check looks good,
I dont see how we are avoiding a loop?

Are you suggesting that we break of the for loop once we set shallowest_idle_cpu?

Thanks for your review.

I agree that the submit message is a bit misleading, what this patch do is just avoiding search for least_loaded_cpu in non-idle cpus.

sched:add check of shallowest_idle_cpu before search for least_loaded_cpu

Idle cpu is idler than non-idle cpu, so we needn't search for least_loaded_cpu after we have found an idle cpu.

what about this?

Thanks,
Yao Dongdong

Reviewed-by
#3 lore raw
Quoted 13 lines · Yao Dongdong
Quoted 10 lines · Srikar Dronamraju
Quoted 2 lines · Yao Dongdong

Idle cpu is idler than non-idle cpu, so we needn't loop non-idle cpus after find an idle cpu.

While this check looks good,
I dont see how we are avoiding a loop?

Are you suggesting that we break of the for loop once we set shallowest_idle_cpu?

Thanks for your review.

Quoted 8 lines

I agree that the submit message is a bit misleading, what this patch do is just avoiding search for least_loaded_cpu in non-idle cpus.

sched:add check of shallowest_idle_cpu before search for least_loaded_cpu

Idle cpu is idler than non-idle cpu, so we needn't search for least_loaded_cpu after we have found an idle cpu.

Looks good for me.

Signature · 2 lines
Thanks and Regards
Srikar Dronamraju