Messages in this thread | | | Date | Thu, 11 Nov 2004 00:31:57 +0100 | From | Herbert Poetzl <> | Subject | Re: Workaround for wrapping loadaverage |
| |
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@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |