Re: [RFC 0/2] Optimize the idle CPU search

From: Subhra Mazumdar
Date: Tue Jul 09 2019 - 02:49:42 EST

On 7/9/19 11:08 AM, Parth Shah wrote:

On 7/9/19 5:38 AM, Subhra Mazumdar wrote:
On 7/8/19 10:24 AM, Parth Shah wrote:
When searching for an idle_sibling, scheduler first iterates to search for
an idle core and then for an idle CPU. By maintaining the idle CPU mask
while iterating through idle cores, we can mark non-idle CPUs for which
idle CPU search would not have to iterate through again. This is especially
true in a moderately load system

Optimize idle CPUs search by marking already found non idle CPUs during
idle core search. This reduces iteration count when searching for idle
CPUs, resulting in lower iteration count.

I believe this can co-exist with latency-nice? We can derive the 'nr' in
select_idle_cpu from latency-nice and use the new mask to iterate.

I agree, can be done with latency-nice.

Maybe something like below?
smt = nr_cpus / nr_cores
nr = smt + (p->latency_nice * (total_cpus-smt) / max_latency_nice)

This limits lower bounds to 1 core and goes through all the cores if
latency_nice is maximum for a task.
Yes I had similar in mind.