Re: [PATCH v2 06/13] fork: Add generic vmalloced stack support

From: Andy Lutomirski
Date: Mon Jun 20 2016 - 12:36:39 EST


On Mon, Jun 20, 2016 at 6:36 AM, Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> On Fri 17-06-16 13:00:42, Andy Lutomirski wrote:
>> If CONFIG_VMAP_STACK is selected, kernel stacks are allocated with
>> vmalloc_node.
>
> I like this! It also reduces demand for higher order (order-2) pages
> considerably which is a great plus on its own. I would be little bit
> worried about the performance because vmalloc wasn't the fastest one
> AFAIR. Have you tried to measure that?

It seems to add about 1.5Âs to pthread_create+join on my laptop. (On
an unmodified, stripped-down kernel, it took about 7Âs before. On a
Fedora system, the baseline is much worse.) I think that most of the
overhead is because vmalloc allocates one page at a time, which means
that it won't use a higher order page even if one is sitting on a
freelist.

I can imagine better integration with the page allocator in which
higher order pages are used if readily available. Similarly, vfree
could free pages that happen to be aligned and consecutive as a unit
to avoid the overhead of merging them back together one at a time.

But I'm not planning on doing any of this myself any time soon. I
just want to get the code working and merged.

--Andy