• Andrew Morton's avatar
    [PATCH] sched: balance-on-clone · 8c8cfc36
    Andrew Morton authored
    From: Ingo Molnar <mingo@elte.hu>
    
    Implement balancing during clone().  It does the following things:
    
    - introduces SD_BALANCE_CLONE that can serve as a tool for an
      architecture to limit the search-idlest-CPU scope on clone().
      E.g. the 512-CPU systems should rather not enable this.
    
    - uses the highest sd for the imbalance_pct, not this_rq (which didnt
      make sense).
    
    - unifies balance-on-exec and balance-on-clone via the find_idlest_cpu()
      function. Gets rid of sched_best_cpu() which was still a bit
      inconsistent IMO, it used 'min_load < load' as a condition for
      balancing - while a more correct approach would be to use half of the
      imbalance_pct, like passive balancing does.
    
    - the patch also reintroduces the possibility to do SD_BALANCE_EXEC on
      SMP systems, and activates it - to get testing.
    
    - NOTE: there's one thing in this patch that is slightly unclean: i
      introduced wake_up_forked_thread. I did this to make it easier to get
      rid of this patch later (wake_up_forked_process() has lots of
      dependencies in various architectures). If this capability remains in
      the kernel then i'll clean it up and introduce one function for
      wake_up_forked_process/thread.
    
    - NOTE2: i added the SD_BALANCE_CLONE flag to the NUMA CPU template too.
      Some NUMA architectures probably want to disable this.
    8c8cfc36
sched.c 95.2 KB