From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 11 Mar 2019 11:18:14 +0300 From: Vladimir Davydov Subject: Re: [PATCH 2/2] lib/core/fiber: Mark stack as unneeded on creation Message-ID: <20190311081814.lq3ginhx3rayjwul@esperanza> References: <20190307213146.1476-1-gorcunov@gmail.com> <20190307213146.1476-3-gorcunov@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190307213146.1476-3-gorcunov@gmail.com> To: Cyrill Gorcunov Cc: tml , Konstantin Osipov List-ID: On Fri, Mar 08, 2019 at 12:31:46AM +0300, Cyrill Gorcunov wrote: > Since we've increased the default stack size we hope > the whole 512K won't be used for regular loads thus > we mark the stack area as unneeded to minimize rss > pressure. > > Note we do this on fiber creation at the moment, more > detailed stack usage analisys will be implemented in > another patch series later. > > Closes #3418 > --- > src/lib/core/fiber.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > 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).