• NeilBrown's avatar
    nfsd: degraded slot-count more gracefully as allocation nears exhaustion. · 2030ca56
    NeilBrown authored
    This original code in nfsd4_get_drc_mem() would hand out 30
    slots (approximately NFSD_MAX_MEM_PER_SESSION bytes at slightly
    over 2K per slot) to each requesting client until it ran out
    of space, then it would possibly give one last client a reduced
    allocation, then fail the allocation.
    
    Since commit de766e57 ("nfsd: give out fewer session slots as
    limit approaches") the last 90 slots to be given to about 12
    clients with quickly reducing slot counts (better than just 3
    clients).  This still seems unnecessarily hasty.
    A subsequent patch allows over-allocation so every client gets
    at least one slot, but that might be a bit restrictive.
    
    The requested number of nfsd threads is the best guide we have to the
    expected number of clients, so use that - if it is at least 8.
    
    256 threads on a 256Meg machine - which is a lot for a tiny machine -
    would result in nfsd_drc_max_mem being 2Meg, so 8K (3 slots) would be
    available for the first client, and over 200 clients would get more
    than 1 slot.  So I don't think this change will be too debilitating on
    poorly configured machines, though it does mean that a sensible
    configuration is a little more important.
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    2030ca56
nfs4state.c 201 KB