Re: Workaround for wrapping loadaverage

From: Herbert Poetzl
Date: Wed Nov 10 2004 - 18:33:48 EST


On Wed, Nov 10, 2004 at 06:07:25PM +1100, Nick Piggin wrote:
> Herbert Poetzl wrote:
> >On Tue, Nov 09, 2004 at 01:43:35AM +0100, Patrick Mau wrote:
> >
>
> >>We re-calculate the load every 5 seconds. I think it would be OK to
> >>use more bits/registers, it's not that frequently called.
> >
> >
> >hmm ...
> >
> > do_timer() -> update_times() -> calc_load()
> >
> >so not exactly every 5 seconds ...
>
> calc_load() -> messing with LOAD_FREQ -> once every 5 seconds, no?

usually yes ...

> I think doing 32/32 bit calculations would be fine.

agreed ...

> >but I agree that a higher resolution would be a good
> >idea ... also doing the calculation when the number
> >of running/uninterruptible processes has changed would
> >be a good idea ...
> >
>
> Apart from the problem Con pointed out, you'd need a fancier algorithm
> to calculate load because your interval isn't going to be fixed, so you
> need to factor that in when calculating the area under the 'curve'
> (loadavg).

yes, something like this:

update_loadavg(uint32_t load, int wsize, int delta, int n)
{
unsigned long long calc;

if (delta >= wsize)
return (n << FSHIFT);
calc = (delta * n) << FSHIFT;
calc += (wsize - delta) * load;
do_div(calc, wsize);
return calc;
}

> I think the good 'ol 5 seconds should be alright.

probably sufficient, yes ...

best,
Herbert

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