sched: Ensure update_cfs_shares() is called for parents of continuously-running tasks
authorPeter Zijlstra <peterz@infradead.org>
Fri, 26 Jul 2013 21:48:42 +0000 (23:48 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 30 Jul 2013 20:14:37 +0000 (22:14 +0200)
commitbf0bd948d1682e3996adc093b43021ed391983e6
tree8a12aee445d19b290d42d15730a0d7b1972bd2b9
parente69f61862ab833e9b8d3c15b6ce07fd69f3bfecc
sched: Ensure update_cfs_shares() is called for parents of continuously-running tasks

We typically update a task_group's shares within the dequeue/enqueue
path.  However, continuously running tasks sharing a CPU are not
subject to these updates as they are only put/picked.  Unfortunately,
when we reverted f269ae046 (in 17bc14b7), we lost the augmenting
periodic update that was supposed to account for this; resulting in a
potential loss of fairness.

To fix this, re-introduce the explicit update in
update_cfs_rq_blocked_load() [called via entity_tick()].

Reported-by: Max Hailperin <max@gustavus.edu>
Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Paul Turner <pjt@google.com>
Link: http://lkml.kernel.org/n/tip-9545m3apw5d93ubyrotrj31y@git.kernel.org
Cc: <stable@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/fair.c