lkml.org 
[lkml]   [2013]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 10/22] sched: consider runnable load average in move_tasks
    Date
    Except using runnable load average in background, move_tasks is also
    the key functions in load balance. We need consider the runnable load
    average in it in order to the apple to apple load comparison.

    Signed-off-by: Alex Shi <alex.shi@intel.com>
    ---
    kernel/sched/fair.c | 11 ++++++++++-
    1 file changed, 10 insertions(+), 1 deletion(-)

    diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
    index 84a6517..cab62aa 100644
    --- a/kernel/sched/fair.c
    +++ b/kernel/sched/fair.c
    @@ -3967,6 +3967,15 @@ static unsigned long task_h_load(struct task_struct *p);

    static const unsigned int sched_nr_migrate_break = 32;

    +static unsigned long task_h_load_avg(struct task_struct *p)
    +{
    + u32 period = p->se.avg.runnable_avg_period;
    + if (!period)
    + return 0;
    +
    + return task_h_load(p) * p->se.avg.runnable_avg_sum / period;
    +}
    +
    /*
    * move_tasks tries to move up to imbalance weighted load from busiest to
    * this_rq, as part of a balancing operation within domain "sd".
    @@ -4002,7 +4011,7 @@ static int move_tasks(struct lb_env *env)
    if (throttled_lb_pair(task_group(p), env->src_cpu, env->dst_cpu))
    goto next;

    - load = task_h_load(p);
    + load = task_h_load_avg(p);

    if (sched_feat(LB_MIN) && load < 16 && !env->sd->nr_balance_failed)
    goto next;
    --
    1.7.12


    \
     
     \ /
      Last update: 2013-01-05 11:21    [W:3.081 / U:0.420 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site