Re: [PATCH v3] sched/fair: Skip sched_balance_running cmpxchg when balance is not due

From: K Prateek Nayak
Date: Sun Nov 09 2025 - 22:58:59 EST


Hello Shrikanth,

On 11/7/2025 2:27 PM, Shrikanth Hegde wrote:
>>>   @@ -11768,6 +11784,13 @@ static int sched_balance_rq(int this_cpu, struct rq *this_rq,
>>>           goto out_balanced;
>>>       }
>>>   +    if (idle != CPU_NEWLY_IDLE && (sd->flags & SD_SERIALIZE)) {
>
> Can you also try removing "idle != CPU_NEWLY_IDLE" and see the workload behavior?
> If workloads don't observe regression, it might be worth serializing it too.

P.S. In one of my previous testing, I had tested only serialized for
!env.idle (__CPU_NOT_IDLE) and I didn't spot any difference in my
benchmark runs compared to always serializing.

I believe the "max_newidle_lb_cost" along with the plethora of
need_resched() checks we have help bail out of newidle balance if
there is a wakeup on the same CPU.

Idle balance too was okay with a greater number of search. If the
first CPU of group fails to pull any task and remains idle, all
the other idle CPUs simply bail out at should_we_balance() which
is probably why there was no difference in the set of benchmarks I
tested.

Serializing all shouldn't make it any worse that what we have now
so I don't mind either.

--
Thanks and Regards,
Prateek