From: Cyrill Gorcunov <gorcunov@gmail.com> To: Vladimir Davydov <vdavydov.dev@gmail.com> Cc: tml <tarantool-patches@freelists.org> Subject: Re: [PATCH 2/2] lib/core/fiber: Allow to extend default stack size Date: Wed, 27 Mar 2019 12:46:18 +0300 [thread overview] Message-ID: <20190327094618.GH20626@uranus.lan> (raw) In-Reply-To: <20190327093506.zsxzchje2un76rcp@esperanza> On Wed, Mar 27, 2019 at 12:35:06PM +0300, Vladimir Davydov wrote: > > diff --git a/src/lib/core/fiber.c b/src/lib/core/fiber.c > > index 922a0bfe8..d3cb18a15 100644 > > --- a/src/lib/core/fiber.c > > +++ b/src/lib/core/fiber.c > > @@ -107,18 +107,25 @@ pthread_t main_thread_id; > > static size_t page_size; > > static bool stack_growsdown; > > > > +/** Indices in fiber stack sizes (FSS) */ > > enum { > > + FSS_IDX_MINIMAL, > > + FSS_IDX_WATERMARK, > > + FSS_IDX_DEFAULT, > > +}; > > + > > +/** Fiber stack sizes */ > > +static size_t fiber_stack_size[] = { > > /* The minimum allowable fiber stack size in bytes */ > > - FIBER_STACK_SIZE_MINIMAL = 16384, > > + [FSS_IDX_MINIMAL] = 16384, > > + /* Stack size watermark in bytes */ > > + [FSS_IDX_WATERMARK] = 65536, > > /* Default fiber stack size in bytes */ > > - FIBER_STACK_SIZE_DEFAULT = 524288, > > - /* Stack size watermark in bytes. */ > > - FIBER_STACK_SIZE_WATERMARK = 65536, > > + [FSS_IDX_DEFAULT] = 524288, > > }; > > Please avoid unrelated changes. If you want to rename or refactor > something, do it in a separate patch to ease review. > > Anyway, I don't see much point in this change - in Tarantool code it's > common to use a enum for storing constants. These are not constants anymore since we're to ajust the values. > > +/** > > + * Initialize early parameters of the stack > > + * and setup default variables. > > + */ > > +static void > > +fiber_stack_init(void) > > +{ > > + static const char default_size_name[] = "FIBER_STACK_SIZE_DEFAULT"; > > There's a risk it may conflict with another environment variable. > At the very least, we should prefix it with TARANTOOL_. > > However, I don't think that using an environmental variable is a proper > way to go. After all, Tarantool is an application server so we typically > set system variables right from Lua code. > > Can we introduce a function in the fiber module for this? The tricky > part is that it should change the stack size of the calling fiber, > I guess. Yes, stacks are allocated earlier, and we simply can't adjust already allocated stack thus we might need to distinguish stack sizes between cord_main and new fibers. This gonna be hard and I would like to escape such complexity. Seriously, we should use a hard rule: every stack in the engine has the same size allocated. Lets think -- is there a chance we will have to provide more configurable settings for early init stage in future? If yes then we should invent early init stage for lua (or say some json fine in /etc). If no and there is no chance we might need something else in future, better to stick with simplier solution as environment variables.
next prev parent reply other threads:[~2019-03-27 9:46 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-03-19 19:38 [RFC 0/2] lib/core/fiber: Allow to extend stack size via env variable Cyrill Gorcunov 2019-03-19 19:38 ` [PATCH 1/2] lib/core/fiber: Rename stack_direction to stack_growsdown Cyrill Gorcunov 2019-03-27 9:35 ` Vladimir Davydov 2019-03-27 9:48 ` Cyrill Gorcunov 2019-03-27 10:20 ` Vladimir Davydov 2019-03-27 10:30 ` Cyrill Gorcunov 2019-03-19 19:38 ` [PATCH 2/2] lib/core/fiber: Allow to extend default stack size Cyrill Gorcunov 2019-03-27 9:35 ` Vladimir Davydov 2019-03-27 9:46 ` Cyrill Gorcunov [this message] 2019-03-27 10:15 ` Vladimir Davydov 2019-03-27 10:23 ` Cyrill Gorcunov 2019-04-01 17:41 ` Cyrill Gorcunov 2019-04-01 18:58 ` Konstantin Osipov 2019-04-01 19:19 ` Cyrill Gorcunov 2019-04-01 20:51 ` Konstantin Osipov 2019-04-01 22:05 ` Cyrill Gorcunov 2019-04-02 7:14 ` Konstantin Osipov 2019-04-02 8:09 ` Cyrill Gorcunov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190327094618.GH20626@uranus.lan \ --to=gorcunov@gmail.com \ --cc=tarantool-patches@freelists.org \ --cc=vdavydov.dev@gmail.com \ --subject='Re: [PATCH 2/2] lib/core/fiber: Allow to extend default stack size' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox