• Rik van Riel's avatar
    sched: Call select_idle_sibling() when not affine_sd · 8bf21433
    Rik van Riel authored
    On smaller systems, the top level sched domain will be an affine
    domain, and select_idle_sibling is invoked for every SD_WAKE_AFFINE
    wakeup. This seems to be working well.
    
    On larger systems, with the node distance between far away NUMA nodes
    being > RECLAIM_DISTANCE, select_idle_sibling is only called if the
    waker and the wakee are on nodes less than RECLAIM_DISTANCE apart.
    
    This patch leaves in place the policy of not pulling the task across
    nodes on such systems, while fixing the issue that select_idle_sibling
    is not called at all in certain circumstances.
    
    The code will look for an idle CPU in the same CPU package as the
    CPU where the task ran previously.
    Signed-off-by: default avatarRik van Riel <riel@redhat.com>
    Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
    Cc: morten.rasmussen@arm.com
    Cc: george.mccollister@gmail.com
    Cc: ktkhai@parallels.com
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Mike Galbraith <umgwanakikbuti@gmail.com>
    Link: http://lkml.kernel.org/r/20140514114037.2d93266f@annuminas.surriel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    8bf21433
fair.c 199 KB