Re: nfs server issues

Rick Macklem <[email protected]> Sat, 4 Jul 2026 06:25:46 -0700
Newsgroups gmane.os.freebsd.devel.file-systems
Message-ID <CAM5tNy7dQ9P8HQWes_cFu4HzU5FWNQ1ZzL4jFUO1zPYqr3V7Pg@mail.gmail.com>
On Sat, Jul 4, 2026 at 6:18 AM Rick Macklem <[email protected]> wrote:
>
> On Sat, Jul 4, 2026 at 1:05 AM Richard Purdie
> <[email protected]> wrote:
> >
> > On Fri, 2026-07-03 at 20:22 -0700, Rick Macklem wrote:
> > > Another thing you can do that might give you a hint w.r.t. what is
> > > going on is to repeatedly do..
> > > # nfsstat -E -s
> > > - and look to see what operations are being done frequently.
> > > (If you see lots of FreeStateID's happening, I think that is a known
> > > bug in the Linux client that was only fixed fairly recently, for
> > > example.)
> >
> > I've pasted the current numbers after the system reset below. What
> > would be considered "lots"? :)
> >
> > Unfortunately we're going to struggle to change the linux kernels
> > connecting to this as those differing versions are part of our test
> > setup.
> >
> > Cheers,
> >
> > Richard
> >
> > nfsstat -E -s
If you "nfsstat -E -s -z >> stats.log" in a loop, doing it once/sec or once
every few seconds and then run that when the server misbehaves, you
might see some ops. ratcheting up quickly, which would give you a hint
w.r.t. what is causing the problem?
(It's more the rate of the ops than the # of them that is useful.)

rick

> > Server Info:
> >       Getattr      Setattr       Lookup     Readlink         Read        Write
> >   17354100116   1674996998   5136769057        40544  18429670397    986443058
> >        Create       Remove       Rename         Link      Symlink        Mkdir
> >             0     98646613    119865835     17071853            0            0
> >         Rmdir      Readdir     RdirPlus       Access        Mknod       Fsstat
> >             0   1655544711            0   4129535844            0            0
> >        FSinfo     pathConf       Commit      LookupP      SetClId    SetClIdCf
> >             0            0      8723436            0            0            0
> >          Open     OpenAttr    OpenDwnGr     OpenCfrm    DelePurge       DelRet
> >   33736862240            0           16            0            0            0
> >         GetFH         Lock        LockT        LockU        Close       Verify
> >    3212316334    620514754            0     91450845   1343565521            0
> You'll notice that the # of Opens is far higher than # of Closes, but
> that is normal,
> since an Open can be done to upgrade from ro->rw and that does not result in
> a new Open StateID.
>
> >       NVerify        PutFH     PutPubFH    PutRootFH        Renew    RestoreFH
> >             0  72840514777            0         2939            0     17071831
> >        SaveFH      Secinfo   RelLockOwn     V4Create
> >     136947415            0            0       771785
> > BackChannelCtBindConnToSes   ExchangeID   CreateSess  DestroySess  FreeStateID
> >             0           45         2951         1538         1437     87475206
> >   GetDirDeleg   GetDevInfo   GetDevList layoutCommit    LayoutGet LayoutReturn
> >           468            0            0            0            0            0
> >  SecInfNoName     Sequence       SetSSV  TestStateID    WantDeleg  DestroyClId
> >          1445  72791198609            0         1318            0         9210
> >  ReclaimCompl
> >          1489
> >      Allocate         Copy   CopyNotify   Deallocate     IOAdvise  LayoutError
> >             0         9713            0         4666            0            0
> >   LayoutStats  OffloadCncl  OffloadStat     ReadPlus         Seek    WriteSame
> >             0            0            0          112        48469            0
> >         Clone   GetExtattr   SetExtattr  ListExtattr    RmExtattr
> >            14            0            0        65153            0
> > Server:
> >       Clients    OpenOwner        Opens    LockOwner        Locks       Delegs
> >            44           50        15677          186          186            0
> Having 15K Opens hanging around shouldn't be a big issue. (A NFSv4.2 Open
> is not a POSIX open, it is a form of Windows lock done by Windows when an
> open is done.) Other than it being a fairly busy server, nothing
> really stands out
> when I look at the above.
>
> Having said that, increasing the hash table sizes cannot hurt. (The FreeBSD
> defaults assume the smallest system with minimal resources, like an arm7
> board.)
>
> To do so, add lines like:
> vfs.nfsd.sessionhashsize=N
> vfs.nfsd.clienthashsize=N
> vfs.nfsd.statehashsize=N
> vfs.nfsd.fhhashsize=N
> to the server's /boot/loader.conf.
> (Bumping vfs.nfsd.clienthashsize doesn't make much sense, since you
> only have 44 of them.)
> --> They take affect when the server is rebooted. (Having the other 3
>      in the thousands is harmless.)
>
> Also, if you
> # nfsstat -m
> on the clients, you should see what is actually being used w.r.t.
> mount options.
> In particular, avoid "soft" and "intr" if at all possible. (The dangling
> Opens might be because an RPC doing the Close times out or get
> terminated by a signal in the client?)
> As for rsize/wsize. Larger values improve per client performance,
> but could increase mbuf cluster usage and server load. (The default
> should be 128K, which is the basic ZFS record size. If it is larger
> than that, you might want to try dropping it to 128K by either setting
> nfs_server_maxio in /etc/rc.conf to 128K (takes affect when rebooted)
> or via the wsize mount option in the clients.
>
> The mystery for me is why writes stop working?
> Maybe running "top" when the server is misbehaving will give you
> a hint? (It shows things like wired memory.) Doing
> # vmstat -z | fgrep mbuf
> will show you how many mbufs are being used. If you are running
> out of mbuf clusters, that could cause write problems.
>
> Good luck with it, rick
>
> >       Layouts
> >             0
> > Server Cache Stats:
> >        Inprog     Non-idem       Misses    CacheSize      TCPPeak
> >             0            0            0            0            0