From: Andrew Morton <akpm@linux-foundation.org>
To: Christoph Lameter <clameter@sgi.com>
Cc: Hugh Dickins <hugh@veritas.com>, Nick Piggin <npiggin@suse.de>,
dgc@sgi.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] Optimize compound_head() by avoiding a shared page flag
Date: Fri, 6 Apr 2007 22:23:36 -0700 [thread overview]
Message-ID: <20070406222336.4dcdd663.akpm@linux-foundation.org> (raw)
In-Reply-To: <20070405223657.21698.32754.sendpatchset@schroedinger.engr.sgi.com>
On Thu, 5 Apr 2007 15:36:57 -0700 (PDT) Christoph Lameter <clameter@sgi.com> wrote:
> Unalias PG_tail for performance reasons
>
> If PG_tail is an alias then we need to check PageCompound before PageTail.
> This is particularly bad because the slab and others have to use these tests
> in performance critical paths.
>
> This patch uses one of the freed up software suspend flags that is defined
> next to PG_compound.
I get a reject from this because it is dependent upon later patches. As
the Official Protector Of Page Flags, I'm going to drop it.
Did you investigate
static inline int page_tail(struct page *page)
{
return ((page->flags & (PG_compound|PG_tail)) == (PG_compound|PG_tail));
}
and
static inline int page_tail(struct page *page)
{
return unlikely(PageCompound(page)) && unlikely(PageTail(page));
}
?
In the latter case we _should_ have a not-taken branch to not-inline code.
If the compiler doesn't do that, we can make the PageTail() test an
out-of-line function. Or make the whole thing an uninlined function.
More work needed, please. I don't expect that a not-taken branch to
not-inline code is worth a new page flag. Especially as it does not
actually reduce the number of branch decisions in the common case.
(I'm assuming in all of this that !PageCompound() is the very common case
with slub. If that is not true, we need to talk).
next prev parent reply other threads:[~2007-04-07 5:23 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-05 22:36 [PATCH 1/2] Make page->private usable in compound pages V1 Christoph Lameter
2007-04-05 22:36 ` [PATCH 2/2] Optimize compound_head() by avoiding a shared page flag Christoph Lameter
2007-04-07 5:23 ` Andrew Morton [this message]
2007-04-07 22:16 ` Christoph Lameter
2007-04-07 22:51 ` Andrew Morton
2007-04-08 0:21 ` Christoph Lameter
2007-04-08 1:25 ` Andrew Morton
2007-04-08 1:32 ` Christoph Lameter
2007-04-08 1:48 ` Andrew Morton
2007-04-09 17:22 ` Christoph Lameter
2007-04-09 18:09 ` Christoph Lameter
2007-04-09 18:45 ` Andrew Morton
2007-04-09 18:49 ` Christoph Lameter
2007-04-09 22:05 ` Christoph Lameter
2007-04-05 23:43 ` [PATCH 1/2] Make page->private usable in compound pages V1 Andrew Morton
2007-04-06 17:01 ` Christoph Lameter
2007-04-06 20:04 ` Andrew Morton
2007-04-06 20:28 ` Christoph Lameter
2007-04-06 19:46 ` Christoph Lameter
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=20070406222336.4dcdd663.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=clameter@sgi.com \
--cc=dgc@sgi.com \
--cc=hugh@veritas.com \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@suse.de \
/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