lkml.org 
[lkml]   [2013]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [patch v7 15/21] sched: pull all tasks from source group
Date
Hi Alex,

On Thu, 4 Apr 2013 10:00:56 +0800, Alex Shi wrote:
> In power balance, we hope some sched groups are fully empty to save
> CPU power of them. So, we want to move any tasks from them.
>
> Signed-off-by: Alex Shi <alex.shi@intel.com>
> ---
> kernel/sched/fair.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index f861427..0dd29f4 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -5105,7 +5105,9 @@ static struct rq *find_busiest_queue(struct lb_env *env,
> * When comparing with imbalance, use weighted_cpuload()
> * which is not scaled with the cpu power.
> */
> - if (capacity && rq->nr_running == 1 && wl > env->imbalance)
> + if (rq->nr_running == 0 ||
> + (!(env->flags & LBF_POWER_BAL) && capacity &&
> + rq->nr_running == 1 && wl > env->imbalance))

Just out of curious.

In load_balance(), we only move normal tasks, right?

Then shouldn't it check rq->cfs.h_nr_running rather than rq->nr_running?

Thanks,
Namhyung


> continue;
>
> /*
> @@ -5208,7 +5210,8 @@ redo:
>
> ld_moved = 0;
> lb_iterations = 1;
> - if (busiest->nr_running > 1) {
> + if (busiest->nr_running > 1 ||
> + (busiest->nr_running == 1 && env.flags & LBF_POWER_BAL)) {
> /*
> * Attempt to move tasks. If find_busiest_group has found
> * an imbalance but busiest->nr_running <= 1, the group is


\
 
 \ /
  Last update: 2013-04-04 09:01    [W:0.163 / U:0.968 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site