summaryrefslogtreecommitdiffstats
path: root/kernel/time
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2012-08-20 11:26:57 +0200
committerIngo Molnar <mingo@kernel.org>2012-09-04 14:30:18 +0200
commitf319da0c6894fcf55e21320e40506418a2aad629 (patch)
treed1ae1cb6eb190e9feb6b9122bd62091cf6095809 /kernel/time
parent5b716ac728bcc01b1f2a7ed6e437196602237c27 (diff)
downloadop-kernel-dev-f319da0c6894fcf55e21320e40506418a2aad629.zip
op-kernel-dev-f319da0c6894fcf55e21320e40506418a2aad629.tar.gz
sched: Fix load avg vs cpu-hotplug
Rabik and Paul reported two different issues related to the same few lines of code. Rabik's issue is that the nr_uninterruptible migration code is wrong in that he sees artifacts due to this (Rabik please do expand in more detail). Paul's issue is that this code as it stands relies on us using stop_machine() for unplug, we all would like to remove this assumption so that eventually we can remove this stop_machine() usage altogether. The only reason we'd have to migrate nr_uninterruptible is so that we could use for_each_online_cpu() loops in favour of for_each_possible_cpu() loops, however since nr_uninterruptible() is the only such loop and its using possible lets not bother at all. The problem Rabik sees is (probably) caused by the fact that by migrating nr_uninterruptible we screw rq->calc_load_active for both rqs involved. So don't bother with fancy migration schemes (meaning we now have to keep using for_each_possible_cpu()) and instead fold any nr_active delta after we migrate all tasks away to make sure we don't have any skewed nr_active accounting. Reported-by: Rakib Mullick <rakib.mullick@gmail.com> Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1345454817.23018.27.camel@twins Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/time')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud