]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
sched_ext: Take NUMA node into account when allocating per-CPU cpumasks
authorLi RongQing <lirongqing@baidu.com>
Mon, 10 Feb 2025 08:52:25 +0000 (16:52 +0800)
committerTejun Heo <tj@kernel.org>
Mon, 10 Feb 2025 17:20:13 +0000 (07:20 -1000)
per-CPU cpumasks are dominantly accessed from their own local CPUs,
so allocate them node-local to improve performance.

Signed-off-by: Li RongQing <lirongqing@baidu.com>
Acked-by: Changwoo Min <changwoo@igalia.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
kernel/sched/ext.c

index b2378e29f45aa47614ba477481ee87aa77cd53cc..90a66a2a43d5c42f96c0fe9d436597a3c14162e3 100644 (file)
@@ -5998,15 +5998,16 @@ void __init init_sched_ext_class(void)
 
        for_each_possible_cpu(cpu) {
                struct rq *rq = cpu_rq(cpu);
+               int  n = cpu_to_node(cpu);
 
                init_dsq(&rq->scx.local_dsq, SCX_DSQ_LOCAL);
                INIT_LIST_HEAD(&rq->scx.runnable_list);
                INIT_LIST_HEAD(&rq->scx.ddsp_deferred_locals);
 
-               BUG_ON(!zalloc_cpumask_var(&rq->scx.cpus_to_kick, GFP_KERNEL));
-               BUG_ON(!zalloc_cpumask_var(&rq->scx.cpus_to_kick_if_idle, GFP_KERNEL));
-               BUG_ON(!zalloc_cpumask_var(&rq->scx.cpus_to_preempt, GFP_KERNEL));
-               BUG_ON(!zalloc_cpumask_var(&rq->scx.cpus_to_wait, GFP_KERNEL));
+               BUG_ON(!zalloc_cpumask_var_node(&rq->scx.cpus_to_kick, GFP_KERNEL, n));
+               BUG_ON(!zalloc_cpumask_var_node(&rq->scx.cpus_to_kick_if_idle, GFP_KERNEL, n));
+               BUG_ON(!zalloc_cpumask_var_node(&rq->scx.cpus_to_preempt, GFP_KERNEL, n));
+               BUG_ON(!zalloc_cpumask_var_node(&rq->scx.cpus_to_wait, GFP_KERNEL, n));
                init_irq_work(&rq->scx.deferred_irq_work, deferred_irq_workfn);
                init_irq_work(&rq->scx.kick_cpus_irq_work, kick_cpus_irq_workfn);