Re: Workaround for wrapping loadaverage
From: Andrew Morton
Date: Mon Nov 08 2004  18:48:01 EST
(PLease don't remove people from Cc:. Just do replytoall).
Patrick Mau <mau@xxxxxxxxxxxxx> wrote:
>
> On Mon, Nov 08, 2004 at 01:27:07AM 0800, Andrew Morton wrote:
> > Patrick Mau <mau@xxxxxxxxxxxxx> wrote:
> > >
> > > We can only account for 1024 runnable processes, since we have 22 bits
> > > precision, I would like to suggest a patch to calc_load in kernel/timer.c
> >
> > It's better than wrapping to zero...
> >
> > Why do we need 11 bits after the binary point?
>
> I tried various other combinations, the most interesting alternative was
> 8 bits precision. The exponential values would be:
>
> 1 / e (5/60) * 256
> 235.53
>
> 1 / e (5/300) * 256
> 251.76
>
> 1 / e (5/900) * 256
> 254.58
>
> If you would use 236, 252 and 255 the last to load calculations would
> get optimized into register shifts during calculation. The precision
> would be bad, but I personally don't mind loosing the fraction.
What would be the impact on the precision if we were to use 8 bits of
fraction?
An upper limit of 1024 tasks sounds a bit squeezy. Even 8192 is a bit
uncomfortable. Maybe we should just reimplement the whole thing, perhaps
in terms of tuples of 32bit values: 32 bits each side of the binary point?

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