public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Jamie Lokier <jamie@shareable.org>
Cc: Ulrich Drepper <drepper@redhat.com>,
	Arjan van de Ven <arjan@infradead.org>,
	akpm@linux-foundation.org, hugh@veritas.com, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, briangrant@google.com,
	cgd@google.com, mbligh@google.com,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: pthread_create() slow for many threads; also time to revisit 64b context switch optimization?
Date: Fri, 15 Aug 2008 18:03:38 +0200	[thread overview]
Message-ID: <20080815160338.GI27955@elte.hu> (raw)
In-Reply-To: <20080815155457.GA5210@shareable.org>


* Jamie Lokier <jamie@shareable.org> wrote:

> > how about this then?
> 
> > +#define MAP_64BIT_STACK 0x20000         /* give out 32bit addresses on old CPUs */
> 
> I think the flag makes sense but it's name is confusing - 64BIT for a 
> flag which means "maybe request 32-bit stack"!  Suggest:
> 
> +#define MAP_STACK       0x20000         /* 31bit or 64bit address for stack, */
> +                                        /* whichever is faster on this CPU */

ok. I've applied the patch below to tip/x86/urgent.

> Also, is this _only_ useful for thread stacks, or are there other 
> memory allocations where 31-bitness affects execution speed on old 
> P4s?

just about anything i guess - but since those CPUs do not really matter 
anymore in terms of bleeding-edge performance, what we care about is the 
intended current use of this flag: thread stacks.

	Ingo

-------------------->
>From 4812c2fddc7f5a3a4480d541a4cb2b7e4ec21dcb Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Wed, 13 Aug 2008 18:02:18 +0200
Subject: [PATCH] x86: add MAP_STACK mmap flag

as per this discussion:

   http://lkml.org/lkml/2008/8/12/423

Pardo reported that 64-bit threaded apps, if their stacks exceed the
combined size of ~4GB, slow down drastically in pthread_create() - because
glibc uses MAP_32BIT to allocate the stacks. The use of MAP_32BIT is
a legacy hack - to speed up context switching on certain early model
64-bit P4 CPUs.

So introduce a new flag to be used by glibc instead, to not constrain
64-bit apps like this.

glibc can switch to this new flag straight away - it will be ignored
by the kernel. If those old CPUs ever matter to anyone, support for
it can be implemented.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 include/asm-x86/mman.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/include/asm-x86/mman.h b/include/asm-x86/mman.h
index c1682b5..e5852b5 100644
--- a/include/asm-x86/mman.h
+++ b/include/asm-x86/mman.h
@@ -12,6 +12,7 @@
 #define MAP_NORESERVE	0x4000		/* don't check for reservations */
 #define MAP_POPULATE	0x8000		/* populate (prefault) pagetables */
 #define MAP_NONBLOCK	0x10000		/* do not block on IO */
+#define MAP_STACK	0x20000		/* give out 32bit stack addresses on old CPUs */
 
 #define MCL_CURRENT	1		/* lock all current mappings */
 #define MCL_FUTURE	2		/* lock all future mappings */

  reply	other threads:[~2008-08-15 16:04 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <af8810200808121736q76640cc1kb814385072fe9b29@mail.gmail.com>
2008-08-13  0:45 ` pthread_create() slow for many threads; also time to revisit 64b context switch optimization? Pardo
2008-08-13 10:44   ` Ingo Molnar
2008-08-13 13:35     ` Arjan van de Ven
2008-08-13 14:21       ` Ulrich Drepper
2008-08-13 14:25         ` Ingo Molnar
2008-08-13 14:36           ` Ulrich Drepper
2008-08-13 15:10             ` Ingo Molnar
2008-08-13 15:21               ` Ulrich Drepper
2008-08-13 15:40                 ` Ingo Molnar
2008-08-13 15:55                   ` Ulrich Drepper
2008-08-13 16:02                     ` Ingo Molnar
2008-08-15 15:54                       ` Jamie Lokier
2008-08-15 16:03                         ` Ingo Molnar [this message]
2008-08-15 17:13                         ` Ulrich Drepper
2008-08-15 17:19                           ` Ingo Molnar
2008-08-15 17:23                             ` Ulrich Drepper
2008-08-15 19:00                               ` Ingo Molnar
2008-08-13 17:09                     ` Linus Torvalds
2008-08-13 18:04                       ` Ulrich Drepper
2008-08-13 18:16                         ` Arjan van de Ven
2008-08-13 18:22                           ` Ulrich Drepper
2008-08-13 16:05                 ` H. Peter Anvin
2008-08-13 20:42               ` Andi Kleen
2008-08-13 20:56                 ` Andrew Morton
2008-08-13 21:46                   ` Andi Kleen
2008-08-15 12:43                 ` Ingo Molnar
2008-08-15 13:33                   ` Andi Kleen
2008-08-21 16:35 Leon Bottou

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=20080815160338.GI27955@elte.hu \
    --to=mingo@elte.hu \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@infradead.org \
    --cc=briangrant@google.com \
    --cc=cgd@google.com \
    --cc=drepper@redhat.com \
    --cc=hpa@zytor.com \
    --cc=hugh@veritas.com \
    --cc=jamie@shareable.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mbligh@google.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox