Subject: Re: time broken on current kernel
From: David Laight <firstname.lastname@example.org>
Date: 03/14/2003 16:12:03
On Fri, Mar 14, 2003 at 03:51:43PM +0000, Richard Earnshaw wrote:
> This is with a kernel from yesterday and a userland from the end of
> Running time on a bootstrap of gcc on my shark now prints
> real 31535.90
> user 634391.-58906
> sys 1077544.-49263
> The real time is correct, but the other two are complete garbage.
> What's up?
I suppose it could be related to me fixing the child times reported.
The old code did get it wrong!
$ sh -c '/bin/echo;ps -Octime -p $$'
on a fast(ish) system, note that CTIMEs < 1 tick are generated.
Is that a bug I spotted looking at the code in calcru - but didn't fix!
sec = p->p_rtime.tv_sec;
usec = p->p_rtime.tv_usec;
st = p->p_sticks;
ut = p->p_uticks;
it = p->p_iticks;
tot = st + ut + it;
u = (u_quad_t) sec * 1000000 + usec;
st = (u * st) / tot;
sp->tv_sec = st / 1000000;
sp->tv_usec = st % 1000000;
Now if real is 2^16, 'sec' is probably also 2^16,
so u = 2^16 * 2^20 = 2^36
tot ~= sec * stathz = 2^16 * 2^7 = 2^23 (for 128Hz statclok)
so u * st = 2^36 * 2^23 = 2^59
Getting all very close to 2^64...
David Laight: email@example.com