* subhra mazumdar <subhra.mazumdar@xxxxxxxxxx> [2019-06-26 18:29:15]:We want the last assignment irrespective of it was an idle cpu or not since
Rotate the cpu search window for better spread of threads. This will ensureWhile rotating the cpu search window is good, not sure if this can find a
an idle cpu will quickly be found if one exists.
idle cpu quickly. The probability of finding an idle cpu still should remain
the same. No?
Signed-off-by: subhra mazumdar <subhra.mazumdar@xxxxxxxxxx>Shouldn't this assignment be outside the for loop.
---
kernel/sched/fair.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
@@ -6219,9 +6219,15 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
}
}
+ if (per_cpu(next_cpu, target) != -1)
+ target_tmp = per_cpu(next_cpu, target);
+ else
+ target_tmp = target;
+
time = local_clock();
- for_each_cpu_wrap(cpu, sched_domain_span(sd), target) {
+ for_each_cpu_wrap(cpu, sched_domain_span(sd), target_tmp) {
+ per_cpu(next_cpu, target) = cpu;
With the current code,
1. We keep reassigning multiple times.
2. The last assignment happes for idle_cpu and sometimes the
assignment is for non-idle cpu.