From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Jamie Lokier <jamie@shareable.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>,
linux-kernel@vger.kernel.org
Subject: Re: NFS client problems in 2.4.18 to 2.4.20
Date: Sun, 7 Sep 2003 11:18:10 -0400 [thread overview]
Message-ID: <16219.19506.659542.990013@charged.uio.no> (raw)
In-Reply-To: <20030907142727.GG19977@mail.jlokier.co.uk>
>>>>> " " == Jamie Lokier <jamie@shareable.org> writes:
> A real problem is the rule of having a fixed number of
> retransmits before an operation fails with a "soft" moount.
> This is wrong for NFS, now that rtt is estimated dynamically.
> The "soft operation fail" imeout should have a minimum absolute
> time, like 30 seconds or so. It should also have a maximum
> (for systems where the estimated rtt is 10 seconds). This
> should be independent of the rtt estimate.
> - server responds to cached requests within 10 microseconds
> - uncached requests take 10 seconds to respond (spinning up CD,
> seeking on tape HFS, or just ordinary disk/swap
> contention).
This is not an issue for tapes, etc. NFS has an alternative mechanisms
for dealing with this in the form of the NFSERR_JUKEBOX error.
However for disks I agree that you do have 'large' variations between
the cached and uncached case. Should latency really be much larger
than 1/10 second for a 32k read though?
> The fundamental error is assuming that all NFS requests take
> about the same time to server, and delays are caused by the
> network. This isn't true especially on a LAN. Delays for NFS
> are typically caused by I/O, and vary by 6 orders of magnitude
> from request to request.
If it was merely a case of random error, then we wouldn't have a
problem at all. The RTT code does make an estimate of the error on the
the measurement. The problem is that there is a large tail in the
graph of round trip time vs. number of events due to these disk
spinups, etc...
However retransmissions compensate somewhat because they impose a
geometric increase in the timeout value. i.e. The for the first
transmission the timeout == the rto, then the retransmissions follow
2*rto, 4*rto, 8*rto,...
Part of the problem in the Linux case is therefore that we have a too
low default value for 'retrans'. The kernel default is '5' (same as
for Solaris, however the mount program still overrides that default
with a value of '3'. This implies that for soft mounts, we never wait
longer than 15*rto before we time out (well - 7*rto actually since the
code in xdr_adjust_timeout() actually appears to confuse number of
retransmissions with the number of transmissions).
By setting 'retrans=6' (5 + 1 to compensate for the bug), therefore,
people can ensure that we retry for at least 6 seconds before timing
out. The question is: is this an adequate default?
Cheers,
Trond
next prev parent reply other threads:[~2003-09-07 15:18 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-05 20:44 Joshua Weage
2003-09-05 21:51 ` Trond Myklebust
2003-09-06 16:29 ` Joshua Weage
2003-09-06 17:09 ` Trond Myklebust
2003-09-06 21:22 ` Joshua Weage
2003-09-06 23:14 ` Jamie Lokier
2003-09-07 1:54 ` Trond Myklebust
2003-09-07 2:02 ` Trond Myklebust
2003-09-07 14:27 ` Jamie Lokier
2003-09-07 15:18 ` Trond Myklebust [this message]
2003-09-07 15:42 ` Jamie Lokier
2003-09-07 16:03 ` Trond Myklebust
2003-09-10 18:37 ` Wouter Vlothuizen
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=16219.19506.659542.990013@charged.uio.no \
--to=trond.myklebust@fys.uio.no \
--cc=jamie@shareable.org \
--cc=linux-kernel@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
all inboxes | Powered by JetHome®