[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1355127754-8444-17-git-send-email-alex.shi@intel.com>
Date: Mon, 10 Dec 2012 16:22:32 +0800
From: Alex Shi <alex.shi@...el.com>
To: rob@...dley.net, mingo@...hat.com, peterz@...radead.org
Cc: gregkh@...uxfoundation.org, andre.przywara@....com, rjw@...k.pl,
paul.gortmaker@...driver.com, akpm@...ux-foundation.org,
paulmck@...ux.vnet.ibm.com, linux-kernel@...r.kernel.org,
pjt@...gle.com, vincent.guittot@...aro.org
Subject: [PATCH 16/18] 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 all tasks from them.
Signed-off-by: Alex Shi <alex.shi@...el.com>
---
kernel/sched/fair.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index fe0ba07..27630ae 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4843,7 +4843,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->power_lb && capacity &&
+ rq->nr_running == 1 && wl > env->imbalance))
continue;
/*
@@ -4947,7 +4949,8 @@ redo:
ld_moved = 0;
lb_iterations = 1;
- if (busiest->nr_running > 1) {
+ if (busiest->nr_running > 1 ||
+ (busiest->nr_running == 1 && env.power_lb)) {
/*
* Attempt to move tasks. If find_busiest_group has found
* an imbalance but busiest->nr_running <= 1, the group is
--
1.7.5.1
--
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