summaryrefslogtreecommitdiff
path: root/kernel/sched
diff options
context:
space:
mode:
authorHao Jia <jiahao.os@bytedance.com>2022-12-16 09:24:05 +0300
committerPeter Zijlstra <peterz@infradead.org>2022-12-27 14:52:16 +0300
commitfeaed76376fd612b9450ad1251aec20a63ccfe92 (patch)
tree50aa3a24d6cc6ead328224a09fa179d35ac2bf8f /kernel/sched
parent904cbab71dda1689d41a240541179f21ff433c40 (diff)
downloadlinux-feaed76376fd612b9450ad1251aec20a63ccfe92.tar.xz
sched/numa: Stop an exhastive search if an idle core is found
In update_numa_stats() we try to find an idle cpu on the NUMA node, preferably an idle core. we can stop looking for the next idle core or idle cpu after finding an idle core. But we can't stop the whole loop of scanning the CPU, because we need to calculate approximate NUMA stats at a point in time. For example, the src and dst nr_running is needed by task_numa_find_cpu(). Signed-off-by: Hao Jia <jiahao.os@bytedance.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Mel Gorman <mgorman@techsingularity.net> Link: https://lore.kernel.org/r/20221216062406.7812-2-jiahao.os@bytedance.com
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/fair.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index d0e2a48a882b..aaff2092ffdf 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -1804,7 +1804,7 @@ static void update_numa_stats(struct task_numa_env *env,
ns->nr_running += rq->cfs.h_nr_running;
ns->compute_capacity += capacity_of(cpu);
- if (find_idle && !rq->nr_running && idle_cpu(cpu)) {
+ if (find_idle && idle_core < 0 && !rq->nr_running && idle_cpu(cpu)) {
if (READ_ONCE(rq->numa_migrate_on) ||
!cpumask_test_cpu(cpu, env->p->cpus_ptr))
continue;