Re: x86: 4kstacks default

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Andi Kleen
Date: Sunday, April 20, 2008 - 10:26 am

Daniel Hazelton wrote:


Ok, perhaps we can settle this properly. Like historicans. We study the
original sources.

The primary resource is the original commit adding the 4k stack code.
You cannot find this in latest git because it predates 2.6.12, but it is
available in one of the historic trees imported from BitKeeper like
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git

Here's the log:
commit 95f238eac82907c4ccbc301cd5788e67db0715ce
Author: Andrew Morton <akpm@osdl.org>
Date:   Sun Apr 11 23:18:43 2004 -0700

    [PATCH] ia32: 4Kb stacks (and irqstacks) patch

    From: Arjan van de Ven <arjanv@redhat.com>

    Below is a patch to enable 4Kb stacks for x86. The goal of this is to

    1) Reduce footprint per thread so that systems can run many more threads
       (for the java people)

    2) Reduce the pressure on the VM for order > 0 allocations. We see
real life
       workloads (granted with 2.4 but the fundamental fragmentation
issue isn't
       solved in 2.6 and isn't solvable in theory) where this can be a
problem.
       In addition order > 0 allocations can make the VM "stutter" and
give more
       latency due to having to do much much more work trying to defragment

...
<<

This gives us two reasons as you can see, one of them many threads
and another mostly only relevant to 2.4

Now I was also assuming that nobody took (1) really serious and
attacked (2) in earlier thread; in particular in

http://article.gmane.org/gmane.linux.kernel/665584

Actually the real reason the 4K stacks were introduced IIRC was that
the VM is not very good at allocation of order > 0 pages and that only
using order 0 and not order 1 in normal operation prevented some stalls.

This rationale also goes back to 2.4 (especially some of the early 2.4
VMs were not very good) and the 2.6 VM is generally better and on
x86-64 I don't see much evidence that these stalls are a big problem
(but then x86-64 also has more lowmem).
<<

This was corrected by Ingo who was one of the primary authors of the patch:

http://thread.gmane.org/gmane.linux.kernel/665420:

no, the primary motivation Arjan and me started working on 4K stacks and
implemented it was what Denys mentioned: i had a testcase that ran
50,000 threads before it ran out of memory - i wanted it to run 100,000
threads. The improved order-0 behavior was just icing on the cake.

	Ingo
<<

and then from Arjan:

http://thread.gmane.org/gmane.linux.kernel/665420


well that and the fact that RH had customers who had major issues at
fewer threads
with 8Kb versus fragmentation.
<<

So both the primary authors of the patch state that 50k threads
was the main reason. I didn't believe it at first either, but after
these forceful corrections I do now.

You're totally wrong when you call it a straw man.

-Andi

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: x86: 4kstacks default, Andrew Morton, (Fri Apr 18, 2:29 pm)
Re: x86: 4kstacks default, Ingo Molnar, (Sat Apr 19, 7:23 am)
Re: x86: 4kstacks default, Oliver Pinter, (Sat Apr 19, 7:35 am)
Re: x86: 4kstacks default, Shawn Bohrer, (Sat Apr 19, 7:59 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sat Apr 19, 8:19 am)
Re: x86: 4kstacks default, Oliver Pinter, (Sat Apr 19, 8:42 am)
Re: x86: 4kstacks default, Andrew Morton, (Sat Apr 19, 10:49 am)
Re: x86: 4kstacks default, Arjan van de Ven, (Sat Apr 19, 11:00 am)
Re: x86: 4kstacks default, Ingo Molnar, (Sat Apr 19, 11:33 am)
Re: x86: 4kstacks default, Stefan Richter, (Sat Apr 19, 12:10 pm)
Re: x86: 4kstacks default, Eric Sandeen, (Sat Apr 19, 6:56 pm)
Re: x86: 4kstacks default, Eric Sandeen, (Sat Apr 19, 7:36 pm)
Re: x86: 4kstacks default, Eric Sandeen, (Sat Apr 19, 8:29 pm)
Re: x86: 4kstacks default, Arjan van de Ven, (Sat Apr 19, 11:11 pm)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 12:42 am)
Re: x86: 4kstacks default, Alan Cox, (Sun Apr 20, 1:06 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 1:09 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 1:51 am)
Re: x86: 4kstacks default, Alan Cox, (Sun Apr 20, 2:36 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 3:44 am)
Re: x86: 4kstacks default, Alan Cox, (Sun Apr 20, 4:02 am)
Re: x86: 4kstacks default, Alan Cox, (Sun Apr 20, 4:37 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 4:54 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 5:18 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 5:27 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 5:32 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 5:36 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 5:37 am)
Re: x86: 4kstacks default, Willy Tarreau, (Sun Apr 20, 5:47 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 6:06 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 6:21 am)
Re: x86: 4kstacks default, Mark Lord, (Sun Apr 20, 6:22 am)
Re: x86: 4kstacks default, Mark Lord, (Sun Apr 20, 6:27 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 6:30 am)
Re: x86: 4kstacks default, Willy Tarreau, (Sun Apr 20, 6:34 am)
Re: x86: 4kstacks default, Willy Tarreau, (Sun Apr 20, 6:38 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 7:04 am)
Re: x86: 4kstacks default, Eric Sandeen, (Sun Apr 20, 7:05 am)
Re: x86: 4kstacks default, Eric Sandeen, (Sun Apr 20, 7:09 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 7:19 am)
Re: x86: 4kstacks default, Willy Tarreau, (Sun Apr 20, 7:20 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 7:21 am)
Re: x86: 4kstacks default, Eric Sandeen, (Sun Apr 20, 7:40 am)
Re: x86: 4kstacks default, Eric Sandeen, (Sun Apr 20, 7:56 am)
Re: x86: 4kstacks default, Arjan van de Ven, (Sun Apr 20, 8:41 am)
Re: x86: 4kstacks default, Daniel Hazelton, (Sun Apr 20, 8:44 am)
Re: x86: 4kstacks default, Adrian Bunk, (Sun Apr 20, 9:03 am)
Re: x86: 4kstacks default, Jörn, (Sun Apr 20, 9:41 am)
Re: x86: 4kstacks default, Chris Wedgwood, (Sun Apr 20, 9:59 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 10:19 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 10:26 am)
Re: x86: 4kstacks default, Jörn, (Sun Apr 20, 10:43 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 11:19 am)
Re: x86: 4kstacks default, Arjan van de Ven, (Sun Apr 20, 11:48 am)
Re: x86: 4kstacks default, Arjan van de Ven, (Sun Apr 20, 11:50 am)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 1:01 pm)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 1:09 pm)
Re: x86: 4kstacks default, Jörn, (Sun Apr 20, 1:32 pm)
Re: x86: 4kstacks default, Jörn, (Sun Apr 20, 1:35 pm)
Re: x86: 4kstacks default, Daniel Hazelton, (Sun Apr 20, 1:43 pm)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 2:40 pm)
Re: x86: 4kstacks default, Andrew Morton, (Sun Apr 20, 2:45 pm)
Re: x86: 4kstacks default, Andrew Morton, (Sun Apr 20, 2:50 pm)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 2:51 pm)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 2:55 pm)
Re: x86: 4kstacks default, Bernd Eckenfels, (Sun Apr 20, 3:17 pm)
Re: x86: 4kstacks default, Arjan van de Ven, (Sun Apr 20, 3:33 pm)
Re: x86: 4kstacks default, Arjan van de Ven, (Sun Apr 20, 3:33 pm)
Re: x86: 4kstacks default, David Chinner, (Sun Apr 20, 3:53 pm)
Re: x86: 4kstacks default, Andi Kleen, (Sun Apr 20, 4:16 pm)
Re: x86: 4kstacks default, Avi Kivity, (Sun Apr 20, 4:48 pm)
Re: x86: 4kstacks default, Daniel Hazelton, (Sun Apr 20, 6:45 pm)
Re: x86: 4kstacks default, Eric Sandeen, (Sun Apr 20, 8:06 pm)
Re: x86: 4kstacks default, Alexander E. Patrakov, (Sun Apr 20, 8:30 pm)
Re: x86: 4kstacks default, Arjan van de Ven, (Sun Apr 20, 10:53 pm)
Re: x86: 4kstacks default, Denys Vlasenko, (Mon Apr 21, 12:45 am)
Re: x86: 4kstacks default, Andi Kleen, (Mon Apr 21, 12:51 am)
Re: x86: 4kstacks default, Andi Kleen, (Mon Apr 21, 2:55 am)
Re: x86: 4kstacks default, Eric Sandeen, (Mon Apr 21, 6:29 am)
Re: x86: 4kstacks default, Ingo Molnar, (Mon Apr 21, 7:29 am)
Re: x86: 4kstacks default, Ingo Molnar, (Mon Apr 21, 7:31 am)
Re: x86: 4kstacks default, Daniel Hazelton, (Mon Apr 21, 10:34 am)
Re: x86: 4kstacks default, Denys Vlasenko, (Mon Apr 21, 12:51 pm)
Re: x86: 4kstacks default, Denys Vlasenko, (Mon Apr 21, 1:28 pm)
Re: x86: 4kstacks default, David Chinner, (Mon Apr 21, 6:28 pm)
[PATCH] xfs: do not pass size into kmem_free, it's unused, Denys Vlasenko, (Mon Apr 21, 7:33 pm)
[PATCH] xfs: do not pass unused params to xfs_flush_pages, Denys Vlasenko, (Mon Apr 21, 8:03 pm)
[PATCH] xfs: remove unused parameter of xfs_qm_dqpurge, Denys Vlasenko, (Tue Apr 22, 2:42 am)
Re: x86: 4kstacks default, Denys Vlasenko, (Tue Apr 22, 5:48 am)
Re: x86: 4kstacks default, Adrian Bunk, (Tue Apr 22, 6:01 am)
[PATCH] xfs: expose no-op xfs_put_perag(), Denys Vlasenko, (Tue Apr 22, 6:46 am)
Re: x86: 4kstacks default, Denys Vlasenko, (Tue Apr 22, 6:51 am)
Re: [PATCH] xfs: expose no-op xfs_put_perag(), Eric Sandeen, (Tue Apr 22, 7:08 am)
Re: [PATCH] xfs: #define out unused parameters , Denys Vlasenko, (Tue Apr 22, 10:50 am)
Re: x86: 4kstacks default, Romano Giannetti, (Tue Apr 22, 11:20 am)
Re: [PATCH] xfs: #define out unused parameters , Denys Vlasenko, (Tue Apr 22, 1:46 pm)
Re: [PATCH] xfs: expose no-op xfs_put_perag(), David Chinner, (Tue Apr 22, 4:16 pm)
Re: x86: 4kstacks default, Denys Vlasenko, (Tue Apr 22, 10:03 pm)
Re: x86: 4kstacks default, Daniel Hazelton, (Tue Apr 22, 10:21 pm)
Re: x86: 4kstacks default, david, (Tue Apr 22, 10:25 pm)
Re: x86: 4kstacks default, Benjamin Herrenschmidt, (Tue Apr 22, 10:27 pm)
Re: x86: 4kstacks default, Daniel Hazelton, (Tue Apr 22, 10:41 pm)
Re: x86: 4kstacks default, Romano Giannetti, (Wed Apr 23, 12:46 am)
Re: [PATCH] xfs: remove unused parameter of xfs_qm_dqpurge, Christoph Hellwig, (Wed Apr 23, 1:18 am)
Re: x86: 4kstacks default, Helge Hafting, (Wed Apr 23, 1:57 am)
Re: x86: 4kstacks default, Helge Hafting, (Wed Apr 23, 2:13 am)
Re: x86: 4kstacks default, Stefan Richter, (Wed Apr 23, 4:24 am)
Re: x86: 4kstacks default, Romano Giannetti, (Wed Apr 23, 5:15 am)
Re: x86: 4kstacks default, Lennart Sorensen, (Wed Apr 23, 8:59 am)
Re: x86: 4kstacks default, David Chinner, (Wed Apr 23, 4:29 pm)
Re: x86: 4kstacks default, David Chinner, (Wed Apr 23, 4:36 pm)
Re: x86: 4kstacks default, Arjan van de Ven, (Wed Apr 23, 5:45 pm)
Re: x86: 4kstacks default, Benjamin Herrenschmidt, (Wed Apr 23, 5:56 pm)
Re: x86: 4kstacks default, Christoph Hellwig, (Thu Apr 24, 2:52 am)
Re: x86: 4kstacks default, Peter Zijlstra, (Thu Apr 24, 5:25 am)
Re: x86: 4kstacks default, Chris Mason, (Thu Apr 24, 8:41 am)
Re: x86: 4kstacks default, Eric Sandeen, (Thu Apr 24, 8:46 am)
Re: x86: 4kstacks default, Alexander van Heukelum, (Thu Apr 24, 11:30 am)
Re: x86: 4kstacks default, Jörn, (Sun Apr 27, 12:27 pm)
Re: x86: 4kstacks default, Denys Vlasenko, (Sun Apr 27, 4:02 pm)
Re: x86: 4kstacks default, Eric Sandeen, (Sun Apr 27, 4:08 pm)
Re: x86: 4kstacks default, Denys Vlasenko, (Sun Apr 27, 5:00 pm)
Re: x86: 4kstacks default, Bill Davidsen, (Mon Apr 28, 10:56 am)
Re: x86: 4kstacks default, Bill Davidsen, (Mon Apr 28, 11:38 am)