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>