lkml.org 
[lkml]   [2014]   [May]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 10/11] sched: move cfs task on a CPU with higher capacity
    Date
    If the CPU is used for handling lot of IRQs, trig a load balance to check if
    it's worth moving its tasks on another CPU that has more capacity

    Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
    ---
    kernel/sched/fair.c | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
    index e8a30f9..2501e49 100644
    --- a/kernel/sched/fair.c
    +++ b/kernel/sched/fair.c
    @@ -5948,6 +5948,13 @@ static bool update_sd_pick_busiest(struct lb_env *env,
    if (sgs->sum_nr_running > sgs->group_capacity)
    return true;

    + /*
    + * The group capacity is reduced probably because of activity from other
    + * sched class or interrupts which use part of the available capacity
    + */
    + if ((sg->sgp->power_orig * 100) > (sgs->group_power * env->sd->imbalance_pct))
    + return true;
    +
    if (sgs->group_imb)
    return true;

    @@ -7282,6 +7289,12 @@ static inline int nohz_kick_needed(struct rq *rq)

    if (nr_busy > 1)
    goto need_kick_unlock;
    +
    + if ((rq->cfs.h_nr_running >= 1)
    + && ((rq->cpu_power * sd->imbalance_pct) <
    + (rq->cpu_power_orig * 100)))
    + goto need_kick_unlock;
    +
    }

    sd = rcu_dereference(per_cpu(sd_asym, cpu));
    --
    1.9.1


    \
     
     \ /
      Last update: 2014-05-23 18:41    [W:4.441 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site