• Meelap Shah's avatar
    knfsd: nfsd4: vary maximum delegation limit based on RAM size · c2f1a551
    Meelap Shah authored
    Our original NFSv4 delegation policy was to give out a read delegation on any
    open when it was possible to.
    
    Since the lifetime of a delegation isn't limited to that of an open, a client
    may quite reasonably hang on to a delegation as long as it has the inode
    cached.  This becomes an obvious problem the first time a client's inode cache
    approaches the size of the server's total memory.
    
    Our first quick solution was to add a hard-coded limit.  This patch makes a
    mild incremental improvement by varying that limit according to the server's
    total memory size, allowing at most 4 delegations per megabyte of RAM.
    
    My quick back-of-the-envelope calculation finds that in the worst case (where
    every delegation is for a different inode), a delegation could take about
    1.5K, which would make the worst case usage about 6% of memory.  The new limit
    works out to be about the same as the old on a 1-gig server.
    
    [akpm@linux-foundation.org: Don't needlessly bloat vmlinux]
    [akpm@linux-foundation.org: Make it right for highmem machines]
    Signed-off-by: default avatar"J. Bruce Fields" <bfields@citi.umich.edu>
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c2f1a551
nfs4state.c 88.3 KB