public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@redhat.com>
To: bfields@fieldses.org
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH v2 0/8] nfsd: duplicate reply cache overhaul
Date: Mon,  4 Feb 2013 08:17:59 -0500	[thread overview]
Message-ID: <1359983887-28535-1-git-send-email-jlayton@redhat.com> (raw)

This is the second posting of the remaining unmerged patches in this
set. There are a number of differences from the first set:

- The bug in the checksum patch has been fixed.

- A hard cap on the number of DRC entries is retained, but it's larger
  than the original cap, and scales with the amount of low memory in
  the machine.

- A shrinker is still registered, but it will now only free entries
  that are expired or are over the max number of entries.

Our QA group has been reporting on and off for the last several years
about occasional failures in testing, especially on UDP. When we go to
look at traces, we see a missing reply from a server on a non-idempotent
request. The client then retransmits the request and the server tries to
redo it instead of just sending the DRC entry.

With an instrumented kernel on the server and a synthetic reproducer, we
found that it's quite easy to hammer the server so fast that DRC entries
get flushed out long before a retransmit can come in.

This patchset is a first pass at fixing this. Instead of simply keeping
a cache of the last 1024 entries, it allows nfsd to grow and shrink the
DRC dynamically.

While most of us will probably say "so what" when it comes to UDP
failures, it's a potential problem on connected transports as well. I'm
also inclined to try and fix things that screw up the people that are
helping us test our code.

I'd like to see this merged for 3.9 if possible...

Jeff Layton (8):
  nfsd: always move DRC entries to the end of LRU list when updating
    timestamp
  nfsd: track the number of DRC entries in the cache
  nfsd: dynamically allocate DRC entries
  nfsd: remove the cache_disabled flag
  nfsd: when updating an entry with RC_NOCACHE, just free it
  nfsd: add recurring workqueue job to clean the cache
  nfsd: register a shrinker for DRC cache entries
  nfsd: keep a checksum of the first 256 bytes of request

 fs/nfsd/cache.h    |   5 +
 fs/nfsd/nfscache.c | 271 ++++++++++++++++++++++++++++++++++++++++-------------
 2 files changed, 209 insertions(+), 67 deletions(-)

-- 
1.7.11.7


             reply	other threads:[~2013-02-04 13:18 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-04 13:17 Jeff Layton [this message]
2013-02-04 13:18 ` [PATCH v2 1/8] nfsd: always move DRC entries to the end of LRU list when updating timestamp Jeff Layton
2013-02-04 13:18 ` [PATCH v2 2/8] nfsd: track the number of DRC entries in the cache Jeff Layton
2013-02-04 13:18 ` [PATCH v2 3/8] nfsd: dynamically allocate DRC entries Jeff Layton
2013-02-04 13:18 ` [PATCH v2 4/8] nfsd: remove the cache_disabled flag Jeff Layton
2013-02-04 13:18 ` [PATCH v2 5/8] nfsd: when updating an entry with RC_NOCACHE, just free it Jeff Layton
2013-02-04 13:18 ` [PATCH v2 6/8] nfsd: add recurring workqueue job to clean the cache Jeff Layton
2013-02-04 13:18 ` [PATCH v2 7/8] nfsd: register a shrinker for DRC cache entries Jeff Layton
2013-02-04 13:18 ` [PATCH v2 8/8] nfsd: keep a checksum of the first 256 bytes of request Jeff Layton
2013-02-04 15:54   ` J. Bruce Fields
2013-02-04 16:16     ` Jeff Layton
2013-02-04 20:20   ` J. Bruce Fields
2013-02-05 14:55     ` J. Bruce Fields
2013-02-05 15:51       ` Jeff Layton
2013-02-04 15:56 ` [PATCH v2 0/8] nfsd: duplicate reply cache overhaul J. Bruce Fields
2013-02-04 18:07 ` [PATCH 9/8] nfsd: handle arbitrary page array layouts in nfsd_cache_crc Jeff Layton
2013-02-04 18:18   ` J. Bruce Fields
2013-02-05 15:15 ` [PATCH v2 0/8] nfsd: duplicate reply cache overhaul J. Bruce Fields
2013-02-05 15:58   ` Jeff Layton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1359983887-28535-1-git-send-email-jlayton@redhat.com \
    --to=jlayton@redhat.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox