Re: [PATCH 13/15] knfsd: Simplify NFS duplicate replay cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2018-10-03 at 13:14 -0400, J . Bruce Fields wrote:
> On Mon, Oct 01, 2018 at 10:41:55AM -0400, Trond Myklebust wrote:
> > Simplify the duplicate replay cache by initialising the
> > preallocated
> > cache entry, so that we can use it as a key for the cache lookup.
> > 
> > Note that the 99.999% case we want to optimise for is still the one
> > where the lookup fails, and we have to add this entry to the cache,
> > so preinitialising should not cause a performance penalty.
> > 
> > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
> > ---
> >  fs/nfsd/cache.h    |  6 +--
> >  fs/nfsd/nfscache.c | 94 ++++++++++++++++++++++------------------
> > ------
> >  2 files changed, 47 insertions(+), 53 deletions(-)
> > 
> > diff --git a/fs/nfsd/cache.h b/fs/nfsd/cache.h
> > index b7559c6f2b97..bd77d5f6fe53 100644
> > --- a/fs/nfsd/cache.h
> > +++ b/fs/nfsd/cache.h
> > @@ -24,13 +24,13 @@ struct svc_cacherep {
> >  	unsigned char		c_state,	/* unused, inprog,
> > done */
> >  				c_type,		/* status, buffer
> > */
> >  				c_secure : 1;	/* req came from
> > port < 1024 */
> > -	struct sockaddr_in6	c_addr;
> >  	__be32			c_xid;
> > -	u32			c_prot;
> > +	__wsum			c_csum;
> >  	u32			c_proc;
> > +	u32			c_prot;
> >  	u32			c_vers;
> >  	unsigned int		c_len;
> > -	__wsum			c_csum;
> > +	struct sockaddr_in6	c_addr;
> >  	unsigned long		c_timestamp;
> >  	union {
> >  		struct kvec	u_vec;
> 
> Unless I've missed something subtle--I'll move this chunk into the
> next
> patch.--b.

Nothing too subtle. The only reason for keeping it in this patch is
because even with the current code, most of the comparisons hit the
c_xid and possibly sometimes the c_csum, so those are the main fields
that you want to try to keep in the same cache line.


-- 
Trond Myklebust
Linux NFS client maintainer, Hammerspace
trond.myklebust@xxxxxxxxxxxxxxx






[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux