From: "J. Bruce Fields" <bfields@fieldses.org>
To: Simon Peter <simon.peter@gmx.de>
Cc: nfs@lists.sourceforge.net, "Talpey, Thomas" <Thomas.Talpey@netapp.com>
Subject: Re: Delays on "first" access to a NFS mount
Date: Wed, 7 Mar 2007 15:29:49 -0500 [thread overview]
Message-ID: <20070307202949.GH26553@fieldses.org> (raw)
In-Reply-To: <20070307194418.97fee0ec.simon.peter@gmx.de>
On Wed, Mar 07, 2007 at 07:44:18PM +0100, Simon Peter wrote:
> > > just verified that the server indeed spins up all disks before
> > > answering the request. I thus suspect it is somehow checking all
> > > exports whenever any one export is accessed. Is this correct
> > > behaviour?
> > Hm. If you have the nfs-utils source, you can see there's a loop in
> > nfs-utils/utils/mountd/cache.c:nfsd_fh()
> > that stats the root of each export, in two places; the first it looks
> > like you shouldn't hit if you don't have the mountpoint export option
> > set:
>
> Correct. This one is never hit in my case.
>
> > The second is to figure out which filesystem the filehandle that you
> > passed in that getattr is for:
> > if (stat(exp->m_export.e_path, &stb) != 0)
> > continue;
>
> This is where the wait for the respective disk to spin up occurs.
OK, cool, so we understand the problem.
> > Could we cache the stat information in the export and then
> > double-check it if necessary when there's a match? Or is there some
> > way we could get the kernel to keep that cached for us?
>
> I could certainly cook up a patch for mountd to cache that information
> on its own. I don't have too much clue about how the kernel does its
> cacheing, though. If it's useful to do that directly in mountd, I
> could get my hands on it.
There's two caches involved:
- the filesystem caches attributes so that subsequent stat's of
the exported directory can be answered without having to go to
disk. I guess it's not suprising that that wouldn't be cached
anymore if you hadn't touched the filesystem in a long time.
Though there's one point I'm unclear on: are the directories
you're exporting mountpoints? That's the normal
configuration, and in that case I would've thought the inode
for that directory would be pinned in memory so the stat
wouldn't have to go to disk. I'm probably missing something.
- the filehandle->export mapping that this function tells the
kernel about is cached by nfsd for a half-hour. That time is
set a little later in nfsd_fh:
qword_printint(f, time(0)+30*60);
I don't think there would be any harm to just changing that
time(0)+30*60 to 0x7FFFFFFF (== never expire)--nfs-utils
should be invalidating that cache explicitly whenever it's
needed. Maybe that should be the default.
--b.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2007-03-07 20:29 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-07 10:23 Delays on "first" access to a NFS mount Simon Peter
2007-03-07 12:38 ` Talpey, Thomas
2007-03-07 13:22 ` Simon Peter
2007-03-07 15:06 ` Simon Peter
2007-03-07 15:10 ` Simon Peter
2007-03-07 15:42 ` J. Bruce Fields
2007-03-07 18:44 ` Simon Peter
2007-03-07 20:29 ` J. Bruce Fields [this message]
2007-03-07 21:46 ` Simon Peter
2007-03-07 22:05 ` J. Bruce Fields
2007-03-07 23:19 ` Simon Peter
2007-03-07 22:09 ` Neil Brown
2007-03-08 15:49 ` Simon Peter
2007-03-09 13:02 ` Simon Peter
2007-03-09 14:59 ` J. Bruce Fields
2007-03-07 20:31 ` Talpey, Thomas
2007-03-07 20:50 ` J. Bruce Fields
2007-03-07 21:07 ` Talpey, Thomas
2007-03-07 21:17 ` J. Bruce Fields
2007-03-07 21:23 ` Talpey, Thomas
2007-03-07 21:54 ` J. Bruce Fields
2007-03-07 22:37 ` Neil Brown
2007-03-07 23:06 ` J. Bruce Fields
2007-03-07 23:39 ` Neil Brown
2007-03-08 5:14 ` J. Bruce Fields
2007-03-08 5:42 ` Neil Brown
2007-03-08 13:43 ` Olaf Kirch
2007-03-08 21:27 ` J. Bruce Fields
2007-03-09 15:02 ` Olaf Kirch
2007-03-16 21:47 ` Christoph Hellwig
2007-03-16 21:54 ` J. Bruce Fields
2007-03-16 21:57 ` Christoph Hellwig
2007-03-07 23:24 ` J. Bruce Fields
2007-03-07 23:51 ` Neil Brown
2007-03-08 4:36 ` J. Bruce Fields
2007-03-08 13:27 ` Olaf Kirch
2007-03-08 21:46 ` J. Bruce Fields
2007-03-07 22:15 ` Neil Brown
2007-03-07 21:40 ` Simon Peter
2007-03-07 22:17 ` Neil Brown
2007-03-07 22:36 ` Talpey, Thomas
2007-03-07 22:48 ` Neil Brown
2007-03-07 22:56 ` Talpey, Thomas
2007-03-07 22:12 ` Neil Brown
2007-03-07 22:23 ` J. Bruce Fields
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=20070307202949.GH26553@fieldses.org \
--to=bfields@fieldses.org \
--cc=Thomas.Talpey@netapp.com \
--cc=nfs@lists.sourceforge.net \
--cc=simon.peter@gmx.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.