[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1364654108-16307-17-git-send-email-alex.shi@intel.com>
Date: Sat, 30 Mar 2013 22:35:03 +0800
From: Alex Shi <alex.shi@...el.com>
To: mingo@...hat.com, peterz@...radead.org, tglx@...utronix.de,
akpm@...ux-foundation.org, arjan@...ux.intel.com, bp@...en8.de,
pjt@...gle.com, namhyung@...nel.org, efault@....de
Cc: vincent.guittot@...aro.org, gregkh@...uxfoundation.org,
preeti@...ux.vnet.ibm.com, viresh.kumar@...aro.org,
linux-kernel@...r.kernel.org, alex.shi@...el.com
Subject: [patch v6 16/21] sched: pull all tasks from source group
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@...el.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 adccdb8..d25fb3b 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -5115,7 +5115,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))
continue;
/*
@@ -5218,7 +5220,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
--
1.7.12
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists