Re: decaying average for %CPU

From: Nick Piggin
Date: Thu Oct 16 2003 - 22:26:15 EST




Albert Cahalan wrote:

On Thu, 2003-10-16 at 22:56, Nick Piggin wrote:

Albert Cahalan wrote:


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.

I think the kernel provides enough info for userspace to do
the job, doesn't it?


I'm pretty sure not. Linux provides:

per-process start time
current time
per-process total (lifetime) CPU usage
units of time measurement (awkwardly)
boot time


But your userspace program can calculate deltas in the total
CPU statistics. Yep, its in /proc/stat.


From that you can compute %CPU over the whole
life of the process. This does not meet the
requirements of the UNIX standard.

What we do for load average is about right,
except that per-process values can't all get
updated at the same time. So the algorithm
needs to be adjusted a bit to allow for that


load average is not CPU load though


-
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/