From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "Wang, Yalin" <Yalin.Wang@sonymobile.com>,
"'Kirill A. Shutemov'" <kirill@shutemov.name>,
"'arnd@arndb.de'" <arnd@arndb.de>,
"'linux-arch@vger.kernel.org'" <linux-arch@vger.kernel.org>,
"'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>,
"'linux@arm.linux.org.uk'" <linux@arm.linux.org.uk>,
"'linux-arm-kernel@lists.infradead.org'"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: [RFC] change non-atomic bitops method
Date: Tue, 03 Feb 2015 10:34:05 +0100 [thread overview]
Message-ID: <8761bjjq42.fsf@rasmusvillemoes.dk> (raw)
In-Reply-To: <20150202223851.f30768d0.akpm@linux-foundation.org> (Andrew Morton's message of "Mon, 2 Feb 2015 22:38:51 -0800")
On Tue, Feb 03 2015, Andrew Morton <akpm@linux-foundation.org> wrote:
>
> You aren't measuring the right thing. You should compare
>
> if (p[i] != x)
> p[i] = x;
>
> versus
>
> p[i] = x;
>
> and you should do this for two cases:
>
> a) p[i] == x
>
> b) p[i] != x
>
>
> The first code sequence will be slower when (p[i] != x) and faster when
> (p[i] == x).
>
>
> Next, we should instrument the kernel to work out the frequency of
> set_bit on an already-set bit.
>
> It is only with both these ratios that we can work out whether the
> patch is a net gain. My suspicion is that set_bit on an already-set
> bit is so rare that the patch will be a loss.
There's also the code-bloat issue to consider (instruction cache and all
that); the conditional versions will usually require three extra
instructions and an extra register. Also, the cache line might already
be dirty because of something in the surrounding code. Instruction cache
misses and larger stack footprint (from larger register pressure) won't
show up in a microbenchmark, so I think this needs a real-world example
to justify.
But even if one finds some hot spot that would benefit from the
conditional, that should simply be added explicitly there, instead of
pessimizing every other user. (A good example of that is 358eec18243a
("vfs: decrapify dput(), fix cache behavior under normal load")).
Rasmus
next prev parent reply other threads:[~2015-02-03 9:34 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-02 3:55 [RFC] change non-atomic bitops method Wang, Yalin
2015-02-02 3:55 ` Wang, Yalin
2015-02-02 18:53 ` Laura Abbott
2015-02-02 19:31 ` Uwe Kleine-König
2015-02-03 15:14 ` David Howells
2015-02-03 19:10 ` Uwe Kleine-König
2015-02-02 23:29 ` Andrew Morton
2015-02-02 23:29 ` Andrew Morton
2015-02-02 23:31 ` Russell King - ARM Linux
2015-02-02 23:31 ` Russell King - ARM Linux
2015-02-03 1:17 ` Kirill A. Shutemov
2015-02-03 2:13 ` Wang, Yalin
2015-02-03 5:42 ` Wang, Yalin
2015-02-03 5:42 ` Wang, Yalin
2015-02-03 6:38 ` Andrew Morton
2015-02-03 7:03 ` Wang, Yalin
2015-02-03 7:03 ` Wang, Yalin
2015-02-03 8:42 ` Wang, Yalin
2015-02-03 10:59 ` Andrew Morton
2015-02-09 8:18 ` Wang, Yalin
2015-02-09 20:34 ` Andrew Morton
2015-02-10 7:05 ` Wang, Yalin
2015-02-09 21:42 ` Rasmus Villemoes
2015-02-03 8:40 ` David Miller
2015-02-03 8:40 ` David Miller
2015-02-03 8:48 ` Andrew Morton
2015-02-03 8:48 ` Andrew Morton
2015-02-03 9:34 ` Rasmus Villemoes [this message]
2015-02-03 9:34 ` Rasmus Villemoes
2015-02-03 9:41 ` Wang, Yalin
2015-02-03 10:39 ` Kirill A. Shutemov
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=8761bjjq42.fsf@rasmusvillemoes.dk \
--to=linux@rasmusvillemoes.dk \
--cc=Yalin.Wang@sonymobile.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=kirill@shutemov.name \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.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