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 574cb14..33fbc47 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

Reply via email to