NFS client/buffer cache deadlock

Brian Fundakowski Feldman green at freebsd.org
Wed Apr 27 11:34:36 PDT 2005


On Wed, Apr 27, 2005 at 07:15:23PM +0200, Marc Olzheim wrote:
> On Wed, Apr 27, 2005 at 12:08:57PM -0400, Brian Fundakowski Feldman wrote:
> > > Yes, a single writev(). Just like in the kern/79207 PR.
> > > 
> > > It doesn't have to be superfast (why would I use NFS otherwise), just as
> > > long as it's threadsafe / atomic.
> > 
> > Alright, this will do synchronous, instead of short, writes (also,
> > of course, not deadlock the system) if you are trying to use an
> > excessively large buffer size.
> > 
> > <http://green.homeunix.org/~green/nfs_client.deadlock.patch>
> > <http://green.homeunix.org/~green/nfs_client.deadlock.HEAD.patch>
> 
> Great! This seems to do the trick and isn't that slow (about 2.8 MB/sec
> over 100 MBit, writing 600 * 1MB, 4.x gets about 5.5 MB/sec on the same
> system); it's fast enough for me and more importantly, it doesn't lock
> the system down anymore. ;-)
> 
> Thanks a lot!

Alright, thanks for helping with this :-) Do you think you can find
a way to tell if in 4.x you're actually using NFSv3/transactions?  I
would really like to know why 4.x isn't deadlocking, and that's the
most plausible explanation I can think of right now.

The behavior could also be totally different due to nfsiod, lack thereof,
or its settings.  Are you running nfsiod on 4.x, and if so, how many?
On 5.x+ the default maximum of nfsiods is 20.

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green at FreeBSD.org                               \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\


More information about the freebsd-stable mailing list