sched: Avoid cputime scaling overflow
authorStanislaw Gruszka <sgruszka@redhat.com>
Tue, 30 Apr 2013 15:14:42 +0000 (17:14 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 30 Apr 2013 17:13:04 +0000 (19:13 +0200)
commit55eaa7c1f511af5fb6ef808b5328804f4d4e5243
treeaef918fd1c788ed508b32e0ca91905a0a907bec8
parent25f55d9d01ad7a7ad248fd5af1d22675ffd202c5
sched: Avoid cputime scaling overflow

Here is patch, which adds Linus's cputime scaling algorithm to the
kernel.

This is a follow up (well, fix) to commit
d9a3c9823a2e6a543eb7807fb3d15d8233817ec5 ("sched: Lower chances
of cputime scaling overflow") which commit tried to avoid
multiplication overflow, but did not guarantee that the overflow
would not happen.

Linus crated a different algorithm, which completely avoids the
multiplication overflow by dropping precision when numbers are
big.

It was tested by me and it gives good relative error of
scaled numbers. Testing method is described here:
http://marc.info/?l=linux-kernel&m=136733059505406&w=2

Originally-From: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: rostedt@goodmis.org
Cc: Dave Hansen <dave@sr71.net>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20130430151441.GC10465@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
kernel/sched/cputime.c