On Sun, Aug 09, 2020 at 01:11:36PM -0400, Chuck Lever wrote: > Hi Bruce- > > I noticed that one of my tests takes about 4x longer on NFSv4.0 than > it does on NFSv3 or NFSv4.[12]. As an initial stab at the cause, I'm > seeing lots of these: Oops, looks obvious in retrospect, but I didn't think of it. In the 4.1+ case, sessions mean that we know which client every operation comes from. In the 4.0 case that only works for operations that take a stateid or something else we can link back to a client. That means in the 4.0 case delegations are less useful, since they have to be broken on any (non-truncating) setattr, any link/unlink, etc., even if the operation comes from the same client--the server doesn't have a way to know that. Maybe the change to give out read delegations even on write opens probably just isn't worth in the 4.0 case. --b. > > <...>-283894 [003] 4060.507314: nfs4_xdr_status: > task:51308@5 xid=0x1ec806a9 error=-10008 (DELAY) > operation=34 <...>-283894 [003] 4060.507338: nfs4_setattr: > error=-10008 (DELAY) fileid=00:27:258012 fhandle=0x25ef273d > stateid=0:0x7bd5c66f <...>-283982 [006] 4060.508134: > nfs4_state_mgr: hostname=klimt.ib clp > state=CHECK_LEASE|0x4020 NFSv4-6239 [007] 4060.508137: > nfs4_cb_recall: error=0 (OK) fileid=00:27:258012 > fhandle=0x25ef273d stateid=1:0x910c8d4c dstaddr=klimt.ib > > The workload is the git regression suite, which I run like this on a > single client: > > --- mount test export --- > > $ cd /mnt; rm -rf git*; tar zvxf ~/Downloads/git-2.23.0.tar.gz > > --- remount test export --- > > $ cd /mnt/git*; make clean; make -j12 > > --- remount test export --- > > $ cd /mnt/git*; make -j12 test > > -- Chuck Lever > >