Skip site navigation (1)Skip section navigation (2)
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>

next in thread | raw e-mail | index | archive | help
>    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



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