lkml.org 
[lkml]   [2016]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: sched: tweak select_idle_sibling to look for idle threads
    On Mon, May 02, 2016 at 04:50:04PM +0200, Mike Galbraith wrote:
    > On Mon, 2016-05-02 at 10:46 +0200, Peter Zijlstra wrote:
    > 5226 /*
    > 5227 * If there are idle cores to be had, go find one.
    > 5228 */
    > 5229 if (sched_feat(IDLE_CORE) && test_idle_cores(target)) {
    > 5230 i = select_idle_core(p, target);
    > 5231 if ((unsigned)i < nr_cpumask_bits)
    > 5232 return i;
    > 5233
    > 5234 /*
    > 5235 * Failed to find an idle core; stop looking for one.
    > 5236 */
    > 5237 clear_idle_cores(target);
    > 5238 }
    > 5239 #if 1
    > 5240 for_each_cpu(i, cpu_smt_mask(target)) {
    > 5241 if (idle_cpu(i))
    > 5242 return i;
    > 5243 }
    > 5244
    > 5245 return target;
    > 5246 #endif

    And yes, I have a variant of that, that does indeed work way better than
    scanning the whole LLC domain for idle threads.

    If you want a laugh, modify select_idle_core() to remember the last idle
    thread it encounters and have it return that when it fails to find an
    idle core.. I'm still stumped to explain why it behaves the way it does.

    \
     
     \ /
      Last update: 2016-05-02 17:21    [W:3.235 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site