• Suresh Siddha's avatar
    [PATCH] sched: fix newly idle load balance in case of SMT · 9439aab8
    Suresh Siddha authored
    In the presence of SMT, newly idle balance was never happening for
    multi-core and SMP domains (even when both the logical siblings are
    idle).
    
    If thread 0 is already idle and when thread 1 is about to go to idle,
    newly idle load balance always think that one of the threads is not idle
    and skips doing the newly idle load balance for multi-core and SMP
    domains.
    
    This is because of the idle_cpu() macro, which checks if the current
    process on a cpu is an idle process. But this is not the case for the
    thread doing the load_balance_newidle().
    
    Fix this by using runqueue's nr_running field instead of idle_cpu(). And
    also skip the logic of 'only one idle cpu in the group will be doing
    load balancing' during newly idle case.
    Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    9439aab8
sched.c 159 KB