Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jan 2004 04:03:13 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Kris Kennaway <kris@obsecurity.org>
Cc:        current@freebsd.org
Subject:   Re: unusually high load averages
Message-ID:  <20040131030718.I602@gamplex.bde.org>
In-Reply-To: <20040129231521.GA68516@xor.obsecurity.org>
References:  <200401292134.i0TLYSfD019841@Espresso.NEEBU.Net> <20040129231521.GA68516@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 29 Jan 2004, Kris Kennaway wrote:

> On Fri, Jan 30, 2004 at 12:08:17AM +0100, Melvyn Sopacua wrote:
> > On Thursday 29 January 2004 22:34, Jake Khuon wrote:
> >
> > > I'm noticing some unusually high load averages even though nothing seems to
> > > be taking up much CPU.  This started happening with a recent cvsup (last
> > > night).  Anyone know what might be causing this?
> >
> > You are actually seeing > 0.00% CPU/WCPU, cause with me everything is zero,
> > allthough I know for sure that's not true.
>
> You both forgot to mention which scheduler you're using.  This is
> important.

It's easy enough to list the bugs for each scheduler and to determine the
scheduler (and the approximate kernel source version) by observing the bugs:

0.00% CPU/WCPU:
This indicates a 4BSD scheduler with the bug that I fixed recently.  The
bug lived for almost a month.

CPU always the same as WCPU:
This indicates a ULE scheduler and certain bugs.  ULE doesn't maintain
all the statistics related to the old scheduler or provide alternatives
(it just fakes some), and statistics programs blindly display all the
old statistics.

High load average despite only idle processes running:
This seems to be scheduler-independent.  Running top to watch the load
average raises the load average by about 0.1.  I think the problem is
that loadav() is now a kthread that restarted by a timeout, so it now
sees a herd of other processes that are restarted by the same timeout.
Previously it was run as a timeout and other threads were put on the
run queue by a timeout; the ordering of the timeouts was hopefully
random so that loadav() saw the correct number of processes restarted
by timeouts, on average.  Now loadav() sees all lower priority processes
that are restarted by the same timeout (since they are all restarted but
loadav() runs first).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040131030718.I602>