Use SIS_CORE to disable idle core search. For some workloads select_idle_core becomes a scalability bottleneck, removing it improves throughput. Also there are workloads where disabling it can hurt latency, so need to have an option.
Signed-off-by: subhra mazumdar <subhra.mazum...@oracle.com> --- kernel/sched/fair.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 849c7c8..35a076e 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6464,9 +6464,11 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target) if (!sd) return target; - i = select_idle_core(p, sd, target); - if ((unsigned)i < nr_cpumask_bits) - return i; + if (sched_feat(SIS_CORE)) { + i = select_idle_core(p, sd, target); + if ((unsigned)i < nr_cpumask_bits) + return i; + } i = select_idle_cpu(p, sd, target); if ((unsigned)i < nr_cpumask_bits) -- 2.9.3