Messages in this thread Patch in this message | | | Date | Sun, 23 Jan 2011 23:03:41 +0800 | From | Yong Zhang <> | Subject | [PATCH] sched: fix autogroup nice tune on UP |
| |
And there is another issue on UP when FAIR_GROUP_SCHED enabled.
--- From: Yong Zhang <yong.zhang0@gmail.com> Subject: [PATCH] sched: fix autogroup nice tune on UP
When on UP with FAIR_GROUP_SCHED enabled, tune shares only affect tg->shares, but is not reflected on tg->se->load, the reason is update_cfs_shares() do nothing on SMP. So let sched_group_set_shares() update tg->se->load directly for UP && FAIR_GROUP_SCHED.
This issue is found when enable autogroup, but also exists on cgroup.cpu on UP.
Signed-off-by: Yong Zhang <yong.zhang0@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Mike Galbraith <efault@gmx.de> --- kernel/sched.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/kernel/sched.c b/kernel/sched.c index 3ec2c6c..b8ed459 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -8483,8 +8483,8 @@ static DEFINE_MUTEX(shares_mutex); int sched_group_set_shares(struct task_group *tg, unsigned long shares) { - int i; - unsigned long flags; + int uninitialized_var(i); + unsigned long uninitialized_var(flags); /* * We can't change the weight of the root cgroup. @@ -8502,6 +8502,7 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) goto done; tg->shares = shares; +#ifdef CONFIG_SMP for_each_possible_cpu(i) { struct rq *rq = cpu_rq(i); struct sched_entity *se; @@ -8513,6 +8514,9 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) update_cfs_shares(group_cfs_rq(se), 0); raw_spin_unlock_irqrestore(&rq->lock, flags); } +#else + update_load_set(&tg->se[0]->load, shares); +#endif done: mutex_unlock(&shares_mutex); -- 1.7.1
| |