From: "J. Bruce Fields" <bfields@fieldses.org>
To: Daire Byrne <daire@dneg.com>
Cc: NeilBrown <neilb@suse.de>, Patrick Goetz <pgoetz@math.utexas.edu>,
linux-nfs <linux-nfs@vger.kernel.org>
Subject: Re: parallel file create rates (+high latency)
Date: Fri, 11 Feb 2022 10:59:49 -0500 [thread overview]
Message-ID: <20220211155949.GA4941@fieldses.org> (raw)
In-Reply-To: <CAPt2mGNXq==1KUskF3U6-CDeoX57=d7NW4Qn_esDqarf9bTBaw@mail.gmail.com>
On Thu, Feb 10, 2022 at 06:19:09PM +0000, Daire Byrne wrote:
> I had a quick attempt at updating Neil's patch for mainline but I
> quickly got stuck and confused. It looks like fs/namei.c in particular
> underwent major changes and refactoring from v5.7+.
>
> If there is ever any interest in updating this and getting it into
> mainline, I'm more than willing to test it with production loads. I
> just lack the skills to update it myself.
>
> It definitely solves a big problem for us, but I also suspect we may
> be the only ones with this problem.
It benefits anyone trying to do a lot of creates in a on an NFS
filesystem where the network round trip time is significant. That
doesn't seem so weird. And even if the case is a little weird, just
having a case and clear numbers to show the improvement is a big help.
I haven't had the chance to read Neil's patch or work out what the issue
with the namei changes.
Al Viro is the expert on VFS locking. I was sure I'd seen him speculate
about what would be needed to make parallel directory modifications
possible, but I spent some time mining old mail and didn't find that.
I think the path forward would be to update Neil's patch, add your
performance data, send it to Al and linux-fsdevel, and see if we can get
some idea what remains to be done to get this right.
--b.
>
> Cheers,
>
> Daire
>
>
> On Tue, 8 Feb 2022 at 18:48, Daire Byrne <daire@dneg.com> wrote:
> >
> > On Wed, 26 Jan 2022 at 02:57, J. Bruce Fields <bfields@fieldses.org> wrote:
> > >
> > > On Wed, Jan 26, 2022 at 11:02:16AM +1100, NeilBrown wrote:
> > > > On Wed, 26 Jan 2022, J. Bruce Fields wrote:
> > > > > On Tue, Jan 25, 2022 at 03:15:42PM -0600, Patrick Goetz wrote:
> > > > > > So the directory is locked while the inode is created, or something
> > > > > > like this, which makes sense.
> > > > >
> > > > > It accomplishes a number of things, details in
> > > > > https://www.kernel.org/doc/html/latest/filesystems/directory-locking.html
> > > >
> > > > Just in case anyone is interested, I wrote this a while back:
> > > >
> > > > http://lists.lustre.org/pipermail/lustre-devel-lustre.org/2018-November/008177.html
> > > >
> > > > it includes a patch to allow parallel creates/deletes over NFS (and any
> > > > other filesystem which adds support).
> > > > I doubt it still applies, but it wouldn't be hard to make it work if
> > > > anyone was willing to make a strong case that we would benefit from
> > > > this.
> >
> > Well, I couldn't resist quickly testing Neil's patch. I found it
> > applied okay to v5.6.19 with minimal edits.
> >
> > As before, without the patch, parallel file creates in a single
> > directory with 1000 threads topped out at an aggregate of 3 creates/s
> > over a 200ms link. With the patch it jumps up to 1,200 creates/s.
> >
> > So a pretty dramatic difference. I can't say if there are any other
> > side effects or regressions as I only did this simple test.
> >
> > It's great for our super niche workloads and use case anyway.
> >
> > Daire
> >
> >
> > > Neato.
> > >
> > > Removing the need to hold an exclusive lock on the directory across
> > > server round trips seems compelling to me....
> > >
> > > I also wonder: why couldn't you fire off the RPC without any locks, then
> > > wait till you get a reply to take locks and update your local cache?
> > >
> > > OK, for one thing, calls and replies and server processing could all get
> > > reordered. We'd need to know what order the server processed operations
> > > in, so we could process replies in the same order.
> > >
> > > --b.
next prev parent reply other threads:[~2022-02-11 15:59 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-23 23:53 parallel file create rates (+high latency) Daire Byrne
2022-01-24 13:52 ` Daire Byrne
2022-01-24 19:37 ` J. Bruce Fields
2022-01-24 20:10 ` Daire Byrne
2022-01-24 20:50 ` J. Bruce Fields
2022-01-25 12:52 ` Daire Byrne
2022-01-25 13:59 ` J. Bruce Fields
2022-01-25 15:24 ` Daire Byrne
2022-01-25 15:30 ` Chuck Lever III
2022-01-25 21:50 ` Patrick Goetz
2022-01-25 21:58 ` Chuck Lever III
2022-01-25 21:59 ` Bruce Fields
2022-01-25 22:11 ` Patrick Goetz
2022-01-25 22:41 ` Daire Byrne
2022-01-25 23:01 ` Patrick Goetz
2022-01-25 23:25 ` Daire Byrne
2022-01-25 21:15 ` Patrick Goetz
2022-01-25 21:20 ` J. Bruce Fields
2022-01-26 0:02 ` NeilBrown
2022-01-26 0:28 ` Daire Byrne
2022-01-26 2:57 ` J. Bruce Fields
2022-02-08 18:48 ` Daire Byrne
2022-02-10 18:19 ` Daire Byrne
2022-02-11 15:59 ` J. Bruce Fields [this message]
2022-02-17 19:50 ` Daire Byrne
2022-02-18 7:46 ` NeilBrown
2022-02-21 13:59 ` Daire Byrne
2022-04-25 13:00 ` Daire Byrne
2022-04-25 13:22 ` J. Bruce Fields
2022-04-25 15:24 ` Daire Byrne
2022-04-25 16:02 ` J. Bruce Fields
2022-04-25 16:47 ` Daire Byrne
2022-04-26 1:36 ` NeilBrown
2022-04-26 12:29 ` Daire Byrne
2022-04-28 5:46 ` NeilBrown
2022-04-29 7:55 ` Daire Byrne
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=20220211155949.GA4941@fieldses.org \
--to=bfields@fieldses.org \
--cc=daire@dneg.com \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=pgoetz@math.utexas.edu \
/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