Date: Fri, 14 Jul 1995 16:07:49 +1000 From: Bruce Evans <bde@zeta.org.au> To: bugs@FreeBSD.ORG, dillon@blob.best.net Subject: Re: Think we finally found the 'all processes block' bug Message-ID: <199507140607.QAA32577@godzilla.zeta.org.au>
index | next in thread | raw e-mail
> The ps shows up with a whole bunch of processes waiting on newbuf
> and an even larger contingent of processes waiting on ufslk2.
> Delving into the nbuf initialization code, in i386/i386/machdep.c,
> I noticed:
> if (nbuf == 0) {
> nbuf = 30;
> if( physmem > 1024)
> nbuf += min((physmem - 1024) / 12, 1024);
> }
> nswbuf = min(nbuf, 128);
> I believe the min is supposed to be a max, though this does not really
> solve the lockout condition... I have no idea how the lockout is occuring,
The min really is supposed to be a min (it should be imin - min is for
unsigned variables). There has to be a limit and the system should recover
gracefully when the limit is reached.
> but I believe that increasing the number of buffers will reduce the
> rate of occurance (currently the machine crashes about once a day with
> this bug).
To debug the problem you might want to decrease the limit so that the system
crashes once per second :-).
> Could the clustering code have something to do with the lockout? It
> could also be that the processes waiting on ufslk2 are creating the buffer
> shortfall and causding the 'newbuf' sleep problem.
The latter is more likely.
Bruce
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507140607.QAA32577>
