[PATCH 2/2] lib/core/fiber: Mark stack as unneeded on creation
Cyrill Gorcunov
gorcunov at gmail.com
Mon Mar 11 11:31:26 MSK 2019
On Mon, Mar 11, 2019 at 11:18:14AM +0300, Vladimir Davydov wrote:
> > diff --git a/src/lib/core/fiber.c b/src/lib/core/fiber.c
> > index f16ac873f..a1b261ad4 100644
> > --- a/src/lib/core/fiber.c
> > +++ b/src/lib/core/fiber.c
> > @@ -749,6 +749,14 @@ fiber_stack_create(struct fiber *fiber, size_t stack_size)
> > fiber->stack_id = VALGRIND_STACK_REGISTER(fiber->stack,
> > (char *)fiber->stack +
> > fiber->stack_size);
> > +#ifndef TARGET_OS_DARWIN
> > + /*
> > + * We don't expect the whole stack usage in regular
> > + * loads, lets try to minimize rss pressure if OS
> > + * allows us.
> > + */
> > + madvise(fiber->stack, fiber->stack_size, MADV_DONTNEED);
> > +#endif
>
> madvise on fiber creation doesn't make much sense without madvise on
> fiber recycling, because fat tasks will quickly fault-in that memory.
> I thought you were going to implement stack shrinking to some predefined
> size (say, allocate 1 MB max, shrink to 64 KB on recycle if watermark
> was overwritten), leaving only dynamic stack sizing for the future (i.e.
> estimating the optimal size to do madvise for basing on average fiber
> stack usage).
Ah. OK, will rework this.
More information about the Tarantool-patches
mailing list