From: Manfred Spraul <manfred@colorfullife.com>
To: dipankar@in.ibm.com
Cc: "Paul E. McKenney" <paulmck@us.ibm.com>,
Oleg Nesterov <oleg@tv-sign.ru>,
linux-kernel@vger.kernel.org, Linus Torvalds <torvalds@osdl.org>,
Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH 4/5] rcu: join rcu_ctrlblk and rcu_state
Date: Tue, 10 Jan 2006 21:44:56 +0100 [thread overview]
Message-ID: <43C41CC8.8000203@colorfullife.com> (raw)
In-Reply-To: <20060110180954.GA5387@in.ibm.com>
[I haven't read the diff, just a short comment]
Dipankar Sarma wrote:
>rcu_state came over from Manfred's RCU_HUGE patch IIRC. I don't
>think it is necessary to allocate rcu_state separately in the
>current mainline RCU code. So, the patch looks OK to me, but
>Manfred might see something that I am not seeing.
>
>
>
The two-level rcu code was never merged, I still plan to clean it up.
But the idea of splitting the control block and the state is used in the
current code:
- __rcu_pending() is the hot path, it only performs a read access to
rcu_ctrlblk.
- write accesses to the rcu_ctrlblk are really rare, they only happen
when a new batch is started. Especially: independant from the number of
cpus.
Write access to the rcu_state are common:
- each cpu must write once in each cycle to update it's cpu mask.
- The last cpu then completes the quiescent cycle.
The idea is that rcu_state is more or less write-only and rcu_state is
read-only. Theoretically, rcu_state could be shared in all cpus caches,
and there will be only one invalidate when a new batch is started. Thus
no cacheline trashing due to rcu_pending calls.
I think it would be safer to keep the two state counters in a separate
cacheline from the spinlock and the cpu mask, but I don't have any hard
numbers. IIRC the problems with the large SGI systems disappered, and
everyone was happy. No real benchmark comparisons were made.
--
Manfred
next prev parent reply other threads:[~2006-01-10 20:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-08 19:19 [PATCH 4/5] rcu: join rcu_ctrlblk and rcu_state Oleg Nesterov
2006-01-10 0:28 ` Paul E. McKenney
2006-01-10 0:43 ` Linus Torvalds
2006-01-10 2:54 ` Paul E. McKenney
2006-01-10 10:02 ` Srivatsa Vaddagiri
2006-01-10 18:09 ` Dipankar Sarma
2006-01-10 20:44 ` Manfred Spraul [this message]
2006-01-10 21:51 ` Paul E. McKenney
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=43C41CC8.8000203@colorfullife.com \
--to=manfred@colorfullife.com \
--cc=akpm@osdl.org \
--cc=dipankar@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@tv-sign.ru \
--cc=paulmck@us.ibm.com \
--cc=torvalds@osdl.org \
/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.