All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.