[CPUFREQ] Avoid the ondemand cpufreq governor to use a too high frequency for stats.
commitdf8b59be0976c56820453730078bef99a8d1dbda
authorDave Jones <davej@redhat.com>
Tue, 20 Sep 2005 19:39:35 +0000 (20 12:39 -0700)
committerDave Jones <davej@redhat.com>
Tue, 20 Sep 2005 19:39:35 +0000 (20 12:39 -0700)
treea836bfc1588a20ca997b878bac82188240a471af
parentc90eef84b8f5c7416cb99ab6907896f2dd392b4d
[CPUFREQ] Avoid the ondemand cpufreq governor to use a too high frequency for stats.

The problem is in the ondemand governor, there is a periodic measurement
of the CPU usage. This CPU usage is updated by the scheduler after every
tick (basically, by adding 1 either to "idle" or to "user" or to
"system"). So if the frequency of the governor is too high, the stat
will be meaningless (as mostly no number have changed).

So this patch checks that the measurements are separated by at least 10
ticks. It means that by default, stats will have about 5% error (20
ticks). Of course those numbers can be argued but, IMHO, they look sane.
The patch also includes a small clean-up to check more explictly the
result of the conversion from ns to µs being null.

Let's note that (on x86) this has never been really needed before 2.6.13
because HZ was always 1000. Now that HZ can be 100, some CPU might be
affected by this problem. For instance when HZ=100, the centrino ,which
has a 10µs transition latency, would lead to the governor allowing to
read stats every tick (10ms)!

Signed-off-by: Eric Piel <eric.piel@tremplin-utc.net>
Signed-off-by: Dave Jones <davej@redhat.com>
drivers/cpufreq/cpufreq_ondemand.c