aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched/fair.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-08-20 13:35:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-08-20 13:35:05 -0400
commit53795ced6e270fbb5cef7b527a71ffbb69657c78 (patch)
tree0e0532682837493bb84a38df10bc115521226c81 /kernel/sched/fair.c
parentf78602ab7cbc902559406d2e8e21517056708295 (diff)
parent8f6189684eb4e85e6c593cd710693f09c944450a (diff)
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fixes from Ingo Molnar. * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched: Fix migration thread runtime bogosity sched,rt: fix isolated CPUs leaving root_task_group indefinitely throttled sched,cgroup: Fix up task_groups list sched: fix divide by zero at {thread_group,task}_times sched, cgroup: Reduce rq->lock hold times for large cgroup hierarchies
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r--kernel/sched/fair.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index d0cc03b3e70b..c219bf8d704c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3387,6 +3387,14 @@ static int tg_load_down(struct task_group *tg, void *data)
3387 3387
3388static void update_h_load(long cpu) 3388static void update_h_load(long cpu)
3389{ 3389{
3390 struct rq *rq = cpu_rq(cpu);
3391 unsigned long now = jiffies;
3392
3393 if (rq->h_load_throttle == now)
3394 return;
3395
3396 rq->h_load_throttle = now;
3397
3390 rcu_read_lock(); 3398 rcu_read_lock();
3391 walk_tg_tree(tg_load_down, tg_nop, (void *)cpu); 3399 walk_tg_tree(tg_load_down, tg_nop, (void *)cpu);
3392 rcu_read_unlock(); 3400 rcu_read_unlock();
@@ -4293,11 +4301,10 @@ redo:
4293 env.src_rq = busiest; 4301 env.src_rq = busiest;
4294 env.loop_max = min(sysctl_sched_nr_migrate, busiest->nr_running); 4302 env.loop_max = min(sysctl_sched_nr_migrate, busiest->nr_running);
4295 4303
4304 update_h_load(env.src_cpu);
4296more_balance: 4305more_balance:
4297 local_irq_save(flags); 4306 local_irq_save(flags);
4298 double_rq_lock(this_rq, busiest); 4307 double_rq_lock(this_rq, busiest);
4299 if (!env.loop)
4300 update_h_load(env.src_cpu);
4301 4308
4302 /* 4309 /*
4303 * cur_ld_moved - load moved in current iteration 4310 * cur_ld_moved - load moved in current iteration