Messages in this thread Patch in this message | | | From | Hao Jia <> | Subject | [PATCH 1/2] sched/numa: Stop an exhastive search if an idle core is found | Date | Fri, 21 Oct 2022 14:15:57 +0800 |
| |
In update_numa_stats() we try to find an idle cpu on the NUMA node, preferably an idle core. When we find an idle core, we can stop searching.
Signed-off-by: Hao Jia <jiahao.os@bytedance.com> --- kernel/sched/fair.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index e4a0b8bd941c..b7cbec539c77 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1792,7 +1792,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; @@ -1801,6 +1801,9 @@ static void update_numa_stats(struct task_numa_env *env, ns->idle_cpu = cpu; idle_core = numa_idle_core(idle_core, cpu); + /* If we find an idle core, stop searching. */ + if (idle_core >= 0) + ns->idle_cpu = idle_core; } } rcu_read_unlock(); @@ -1808,9 +1811,6 @@ static void update_numa_stats(struct task_numa_env *env, ns->weight = cpumask_weight(cpumask_of_node(nid)); ns->node_type = numa_classify(env->imbalance_pct, ns); - - if (idle_core >= 0) - ns->idle_cpu = idle_core; } static void task_numa_assign(struct task_numa_env *env, -- 2.37.0
| |