• V
    sched: bias task wakeups to preferred semi-idle packages · 7eb52dfa
    Vaidyanathan Srinivasan 提交于
    Impact: tweak task wakeup to save power more agressively
    
    Preferred wakeup cpu (from a semi idle package) has been
    nominated in find_busiest_group() in the previous patch.  Use
    this information in sched_mc_preferred_wakeup_cpu in function
    wake_idle() to bias task wakeups if the following conditions
    are satisfied:
    
            - The present cpu that is trying to wakeup the process is
              idle and waking the target process on this cpu will
              potentially wakeup a completely idle package
            - The previous cpu on which the target process ran is
              also idle and hence selecting the previous cpu may
              wakeup a semi idle cpu package
            - The task being woken up is allowed to run in the
              nominated cpu (cpu affinity and restrictions)
    
    Basically if both the current cpu and the previous cpu on
    which the task ran is idle, select the nominated cpu from semi
    idle cpu package for running the new task that is waking up.
    
    Cache hotness is considered since the actual biasing happens
    in wake_idle() only if the application is cache cold.
    
    This technique will effectively move short running bursty jobs in
    a mostly idle system.
    
    Wakeup biasing for power savings gets automatically disabled if
    system utilisation increases due to the fact that the probability
    of finding both this_cpu and prev_cpu idle decreases.
    Signed-off-by: NVaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
    Acked-by: NBalbir Singh <balbir@linux.vnet.ibm.com>
    Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    7eb52dfa
sched_fair.c 41.5 KB