From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: NeilBrown <neilb@suse.com>,
Andrew Morton <akpm@linux-foundation.org>,
Florian Weimer <fweimer@redhat.com>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Josh Triplett <josh@joshtriplett.org>
Subject: Re: [PATCH - resend] VFS: use synchronize_rcu_expedited() in namespace_unlock()
Date: Thu, 4 Oct 2018 21:08:12 -0700 [thread overview]
Message-ID: <20181005040812.GT2674@linux.ibm.com> (raw)
In-Reply-To: <20181005014002.GS32577@ZenIV.linux.org.uk>
On Fri, Oct 05, 2018 at 02:40:02AM +0100, Al Viro wrote:
> On Fri, Oct 05, 2018 at 11:27:37AM +1000, NeilBrown wrote:
> >
> > The synchronize_rcu() in namespace_unlock() is called every time
> > a filesystem is unmounted. If a great many filesystems are mounted,
> > this can cause a noticable slow-down in, for example, system shutdown.
> >
> > The sequence:
> > mkdir -p /tmp/Mtest/{0..5000}
> > time for i in /tmp/Mtest/*; do mount -t tmpfs tmpfs $i ; done
> > time umount /tmp/Mtest/*
> >
> > on a 4-cpu VM can report 8 seconds to mount the tmpfs filesystems, and
> > 100 seconds to unmount them.
> >
> > Boot the same VM with 1 CPU and it takes 18 seconds to mount the
> > tmpfs filesystems, but only 36 to unmount.
> >
> > If we change the synchronize_rcu() to synchronize_rcu_expedited()
> > the umount time on a 4-cpu VM drop to 0.6 seconds
> >
> > I think this 200-fold speed up is worth the slightly high system
> > impact of using synchronize_rcu_expedited().
> >
> > Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> (from general rcu perspective)
> > Signed-off-by: NeilBrown <neilb@suse.com>
> > ---
> >
> > I posted this last October, then again last November (cc:ing Linus)
> > Paul is happy enough with it, but no other response.
> > I'm hoping it can get applied this time....
>
> Umm... IIRC, the last one got sidetracked on the other thing in the series...
> <checks> that was s_anon stuff. I can live with this one; FWIW, what kind
> of load would trigger the impact of the change? Paul?
You lost me with "what kind of load would trigger the impact of the
change?", but if you are asking about the downside, that would be IPIs
sent from each call to synchronize_rcu_expedited(). But people with
things like real-time workloads that therefore don't like those IPIs
have a number of options:
1. Boot with rcupdate.rcu_normal=1, which converts all calls to
synchronize_rcu_expedited() to synchronize_rcu(). This of
course loses the performance gain, but this can be a good
tradeoff for real-time workloads.
2. Build with CONFIG_NO_HZ_FULL=y and boot with nohz_full= to
cover the CPUs running your real-time workload. Then
as long as there is only one runnable usermode task per
nohz_full CPU, synchronize_rcu_expedited() will avoid sending
IPIs to any of the nohz_full CPUs.
3. Don't do unmounts while your real-time application is running.
Probably other options as well, but those are the ones that come
immediately to mind.
If I missed the point of your question, please help me understand
what you are asking for.
Thanx, Paul
next prev parent reply other threads:[~2018-10-05 11:05 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-26 2:26 [PATCH] VFS: use synchronize_rcu_expedited() in namespace_unlock() NeilBrown
2017-10-26 12:27 ` Paul E. McKenney
2017-10-26 13:50 ` Paul E. McKenney
2017-10-27 0:45 ` NeilBrown
2017-10-27 1:24 ` Paul E. McKenney
2017-11-27 11:27 ` Florian Weimer
2017-11-27 14:41 ` Paul E. McKenney
2017-11-28 22:17 ` NeilBrown
2018-10-05 1:27 ` [PATCH - resend] " NeilBrown
2018-10-05 1:40 ` Al Viro
2018-10-05 2:53 ` NeilBrown
2018-10-05 4:08 ` Paul E. McKenney [this message]
2018-11-29 23:33 ` [PATCH - resend*2] " NeilBrown
2018-11-29 23:52 ` Al Viro
2018-11-30 1:09 ` NeilBrown
2018-11-06 3:15 ` [PATCH - resend] " NeilBrown
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=20181005040812.GT2674@linux.ibm.com \
--to=paulmck@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=fweimer@redhat.com \
--cc=josh@joshtriplett.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.com \
--cc=viro@ZenIV.linux.org.uk \
/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;
as well as URLs for NNTP newsgroup(s).