sched/nohz: Fix rq->cpu_load[] calculations
authorPeter Zijlstra <a.p.zijlstra@chello.nl>
Fri, 11 May 2012 15:31:26 +0000 (17:31 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 2 Aug 2012 13:37:38 +0000 (14:37 +0100)
commit1217fd87cfd53eab752837f19386e0a5594719d9
tree50c6a3748c32de07750c9a2180516192b2562260
parent2b2c3e47f0a98261d5d6ab7f61420fb4e479b472
sched/nohz: Fix rq->cpu_load[] calculations

commit 556061b00c9f2fd6a5524b6bde823ef12f299ecf upstream.

While investigating why the load-balancer did funny I found that the
rq->cpu_load[] tables were completely screwy.. a bit more digging
revealed that the updates that got through were missing ticks followed
by a catchup of 2 ticks.

The catchup assumes the cpu was idle during that time (since only nohz
can cause missed ticks and the machine is idle etc..) this means that
esp. the higher indices were significantly lower than they ought to
be.

The reason for this is that its not correct to compare against jiffies
on every jiffy on any other cpu than the cpu that updates jiffies.

This patch cludges around it by only doing the catch-up stuff from
nohz_idle_balance() and doing the regular stuff unconditionally from
the tick.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: pjt@google.com
Cc: Venkatesh Pallipadi <venki@google.com>
Link: http://lkml.kernel.org/n/tip-tp4kj18xdd5aj4vvj0qg55s2@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
[bwh: Backported to 3.2: adjust filenames and context; keep functions static]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
kernel/sched.c
kernel/sched_fair.c