From: Dipankar Sarma <dipankar@in.ibm.com>
To: Jim Houston <jim.houston@comcast.net>
Cc: paulmck@us.ibm.com, linux-kernel@vger.kernel.org,
Manfred Spraul <manfred@colorfullife.com>,
Andrew Morton <akpm@osdl.org>,
William Lee Irwin III <wli@holomorphy.com>,
Jack Steiner <steiner@sgi.com>,
Jesse Barnes <jbarnes@engr.sgi.com>,
rusty@rustcorp.com.au
Subject: Re: [RFC&PATCH] Alternative RCU implementation
Date: Mon, 30 Aug 2004 23:08:53 +0530 [thread overview]
Message-ID: <20040830173853.GB4639@in.ibm.com> (raw)
In-Reply-To: <1093886020.984.238.camel@new.localdomain>
On Mon, Aug 30, 2004 at 01:13:41PM -0400, Jim Houston wrote:
> On Sun, 2004-08-29 at 20:43, Paul E. McKenney wrote:
> > Are these critical realtime processes user-mode only, or do they
> > also execute kernel code? If they are user-mode only, a much more
> > straightforward approach might be to have RCU pretend that they do
> > not exist.
> >
> > This approach would have the added benefit of keeping rcu_read_unlock()
> > atomic-instruction free. In some cases, the overhead of the atomic
> > exchange would overwhelm that of the read-side RCU critical section.
> >
> > Taking this further, if the realtime CPUs are not allowed to execute in
> > the kernel at all, you can avoid overhead from smp_call_function() and
> > the like -- and avoid confusing those parts of the kernel that expect to
> > be able to send IPIs and the like to the realtime CPU (or do you leave
> > IPIs enabled on the realtime CPU?).
>
> Our customers applications vary but, in general, the realtime processes
> will do the usual system calls to synchronize with other processes and
> do I/O.
>
> I considered tracking the user<->kernel mode transitions extending the
> idea of the nohz_cpu_mask. I gave up on this idea mostly because it
> required hooking into assembly code. Just extending the idea of this
> bitmap has its own scaling issues. We may have several cpus running
> realtime processes. The obvious answer is to keep the information in
> a per-cpu variable and pay the price of polling this from another cpu.
Tracking user<->kernel transitions and putting smarts in scheduler
about RCU is the right way to go IMO.
Anything that poll other cpus and has read-side overheads will likely
not be scalable. I think that is not the right way to go about solving
the issue of dependency on local timer interrupt. It is a worthy goal
and we need to do this anyway, but we need to do it right without
hurting the current advantages as much as possible.
> I know that I'm questioning one of your design goals for RCU by adding
> overhead to the read-side. I have read everything I could find on RCU.
> My belief is that the cost of the xchg() instruction is small
> compared to the cache benifit of freeing memory more quickly.
> I think it's more interesting to look at the impact of the xchg() at the
> level of an entire system call. Adding 30 nanoseconds to a open/close
> path that tasks 3 microseconds seems reasonable. It is hard to measure
> the benefit of reusing the a dcache entry more quickly.
>
> I would be interested in suggestions for testing. I would be very
> interested to hear how my patch does on a large machine.
I will get you some numbers on a large machine. But I remain opposed
to this approach. I believe it can be done without the read-side
overheads.
> I'm also trying to figure out if I need the call_rcu_bh() changes.
> Since my patch will recognize a grace periods as soon as any
> pending read-side critical sections complete, I suspect that I
> don't need this change.
Except that under a softirq flood, a reader in a different read-side
critical section may get delayed a lot holding up RCU. Let me know
if I am missing something here.
Thanks
Dipankar
next prev parent reply other threads:[~2004-08-30 17:44 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <m3brgwgi30.fsf@new.localdomain>
2004-08-30 0:43 ` [RFC&PATCH] Alternative RCU implementation Paul E. McKenney
2004-08-30 17:13 ` Jim Houston
2004-08-30 17:38 ` Dipankar Sarma [this message]
2004-09-01 0:10 ` Jim Houston
2004-09-01 0:57 ` Paul E. McKenney
2004-08-30 18:52 ` Paul E. McKenney
2004-08-31 3:22 ` Jim Houston
2004-09-01 3:53 ` Paul E. McKenney
2004-09-01 13:02 ` Jim Houston
2004-09-02 16:38 ` Paul E. McKenney
2004-09-02 18:54 ` Jim Houston
2004-09-02 21:20 ` Manfred Spraul
2004-09-03 1:19 ` Jim Houston
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=20040830173853.GB4639@in.ibm.com \
--to=dipankar@in.ibm.com \
--cc=akpm@osdl.org \
--cc=jbarnes@engr.sgi.com \
--cc=jim.houston@comcast.net \
--cc=linux-kernel@vger.kernel.org \
--cc=manfred@colorfullife.com \
--cc=paulmck@us.ibm.com \
--cc=rusty@rustcorp.com.au \
--cc=steiner@sgi.com \
--cc=wli@holomorphy.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