decaying average for %CPU

From: Albert Cahalan
Date: Thu Oct 16 2003 - 21:51:06 EST


The UNIX standard requires that Linux provide
some measure of a process's "recent" CPU usage.
Right now, it isn't provided. You might run a
CPU hog for a year, stop it ("kill -STOP 42")
for a few hours, and see that "ps" is still
reporting 99.9% CPU usage. This is because the
kernel does not provide a decaying average.

Another OS uses a fixed-point decaying average,
with this sort of representation:
0x8000 is 100%
0x2000 is 25%
0x0000 is 0%

Anybody have a version of the algorithm that...

* works with traditional 100 HZ ticks
* works with exact (TSC-based) accounting
* lets a thread-group sum to well over 100%
* doesn't require updates to idle processes

???

I'm thinking it would be nice to have the
binary point be between a pair of 32-bit ints.
That might allow for great range w/o doing
lots of "long long" operations, but I haven't
worked out the details.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/