Re: [PATCH][RFC] 4K stacks default, not a debug thing any more...?

Rene Herman
2007-07-15T17:47:32Z

On 07/15/2007 07:17 PM, Bodo Eggert wrote:

> Matt Mackall <mpm@selenic.com> wrote:
>> On Fri, Jul 13, 2007 at 03:20:54PM +0200, Rene Herman wrote:
>
>>> As far as I'm aware, the actual reason for 4K stacks is that after the
>>> system has been up and running for some time getting "1 physically
>>> contiguous pages" becomes significantly easier than 2 which wouldn't be
>>> arbitrary.
>>
>> If there are exactly two free pages in the system, the odds of them
>> being buddies (ie adjacent AND properly aligned) is quite small. The
>> available page pool has to grow quite a bit before the availability of
>> order-1 page pairs approaches 100%.
>
> If there are exactly two free pages in a system, the odds of starting any
> program are not very good. You'll have to swap, and if you do, you can swap
> two more pages in order to free enough RAM for the stack.

A thread's kernel stack is a kernel allocation. If you'd fail to allocate it
you'd supposedly _already_ have swapt out everything that could be swapped out.

Moreoveover -- literally two pages free was hardly his point. The point is
just that (with a page being the allocation unit) single page allocations
are guaranteed to succeed if _any_ memory is free, while two adjacent (yes,
and stacksize aligned) pages will be pretty hard to get by once the system
has been up and running for some time.

Rene.