From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Oleg Nesterov <oleg@redhat.com>,
mingo@kernel.org, linux-kernel@vger.kernel.org, tj@kernel.org,
john.stultz@linaro.org, dimitrysh@google.com, romlem@google.com,
ccross@google.com, tkjos@google.com
Subject: Re: [PATCH 2/2] locking/percpu-rwsem: Introduce bias knob
Date: Thu, 14 Jul 2016 12:29:59 -0700 [thread overview]
Message-ID: <20160714192959.GY7094@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160714192018.GM30154@twins.programming.kicks-ass.net>
On Thu, Jul 14, 2016 at 09:20:18PM +0200, Peter Zijlstra wrote:
> On Thu, Jul 14, 2016 at 08:43:51PM +0200, Oleg Nesterov wrote:
> >
> > Oh well... I personally do not think this is what we want... Can't
> > we just add the stupid rcu_sync_enter() into cgroup_init() at least
> > for now? Yes, this means the unnecessary .sync() at boot time, but
> > it will go away after cleanups I am going to send.
>
> Something like so then?
>
> ---
> --- a/include/linux/rcu_sync.h
> +++ b/include/linux/rcu_sync.h
> @@ -59,6 +59,7 @@ static inline bool rcu_sync_is_idle(stru
> }
>
> extern void rcu_sync_init(struct rcu_sync *, enum rcu_sync_type);
> +extern void rcu_sync_sabotage(struct rcu_sync *);
> extern void rcu_sync_enter(struct rcu_sync *);
> extern void rcu_sync_exit(struct rcu_sync *);
> extern void rcu_sync_dtor(struct rcu_sync *);
> --- a/kernel/cgroup.c
> +++ b/kernel/cgroup.c
> @@ -5609,6 +5609,8 @@ int __init cgroup_init(void)
> BUG_ON(cgroup_init_cftypes(NULL, cgroup_dfl_base_files));
> BUG_ON(cgroup_init_cftypes(NULL, cgroup_legacy_base_files));
>
> + rcu_sync_sabotage(&cgroup_threadgroup_rwsem.rss);
With a name like that...
> +
> get_user_ns(init_cgroup_ns.user_ns);
>
> mutex_lock(&cgroup_mutex);
> --- a/kernel/rcu/sync.c
> +++ b/kernel/rcu/sync.c
> @@ -83,6 +83,21 @@ void rcu_sync_init(struct rcu_sync *rsp,
> }
>
> /**
> + * rcu_sync_sabotage() - Sabotage a fresh rcu_sync instance
> + * @rsp: Pointer to rcu_sync structure to be sabotaged
> + *
> + * Must be called after rcu_sync_init() and before first use.
> + *
> + * Ensures rcu_sync_is_idle() returns false and rcu_sync_{enter,exit}() pairs
> + * turn into NO-OPs.
> + */
> +void rcu_sync_sabotage(struct rcu_sync *rsp)
> +{
> + rsp->gp_count++;
> + rsp->gp_state = !GP_IDLE;
??? A very strange way to say GP_PENDING. A new GP_DISABLED, perhaps?
Thanx, Paul
> +}
> +
> +/**
> * rcu_sync_enter() - Force readers onto slowpath
> * @rsp: Pointer to rcu_sync structure to use for synchronization
> *
>
next prev parent reply other threads:[~2016-07-14 19:29 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-14 18:25 [PATCH 0/2] locking/percpu-rwsem: Optimizations/tweaks Peter Zijlstra
2016-07-14 18:25 ` [PATCH 1/2] locking/percpu-rwsem: Optimize readers and reduce global impact Peter Zijlstra
2016-07-15 16:30 ` Oleg Nesterov
2016-07-15 19:47 ` Peter Zijlstra
2016-07-18 18:23 ` kbuild test robot
2016-07-18 22:51 ` kbuild test robot
2016-07-14 18:25 ` [PATCH 2/2] locking/percpu-rwsem: Introduce bias knob Peter Zijlstra
2016-07-14 18:37 ` Peter Zijlstra
2016-07-14 18:43 ` Oleg Nesterov
2016-07-14 18:56 ` Peter Zijlstra
2016-07-14 19:20 ` Peter Zijlstra
2016-07-14 19:29 ` Paul E. McKenney [this message]
2016-07-14 19:38 ` Peter Zijlstra
2016-07-14 19:54 ` Paul E. McKenney
2016-07-15 13:27 ` Oleg Nesterov
2016-07-15 13:39 ` Paul E. McKenney
2016-07-15 13:45 ` Oleg Nesterov
2016-07-15 15:38 ` Paul E. McKenney
2016-07-15 16:49 ` Oleg Nesterov
2016-07-15 18:01 ` Paul E. McKenney
2016-07-16 17:10 ` [PATCH] rcu_sync: simplify the state machine, introduce __rcu_sync_enter() Oleg Nesterov
2016-07-16 18:40 ` Oleg Nesterov
2016-07-18 11:54 ` Peter Zijlstra
2016-07-18 13:44 ` Oleg Nesterov
2016-07-19 20:50 ` Paul E. McKenney
2016-07-20 15:13 ` Oleg Nesterov
2016-07-20 20:58 ` Paul E. McKenney
2016-07-21 17:34 ` Oleg Nesterov
2016-07-20 17:16 ` Oleg Nesterov
2016-07-20 21:31 ` Paul E. McKenney
2016-07-21 17:34 ` Oleg Nesterov
2016-07-22 3:26 ` Paul E. McKenney
2016-07-25 17:01 ` Oleg Nesterov
2016-07-25 17:05 ` John Stultz
2016-07-25 17:26 ` Oleg Nesterov
2016-08-09 8:48 ` Peter Zijlstra
2016-07-25 17:49 ` Paul E. McKenney
2016-07-15 13:42 ` [PATCH 2/2] locking/percpu-rwsem: Introduce bias knob Oleg Nesterov
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=20160714192959.GY7094@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=ccross@google.com \
--cc=dimitrysh@google.com \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=romlem@google.com \
--cc=tj@kernel.org \
--cc=tkjos@google.com \
/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).