From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 5 Mar 2019 11:08:13 +0300 From: Konstantin Osipov Subject: Re: [tarantool-patches] [rfc 3/4] core/fiber: Put static watermark into stack to track its usage Message-ID: <20190305080813.GJ21955@chai> References: <20190302125524.279852704@gmail.com> <20190302130034.050488016@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190302130034.050488016@gmail.com> To: tarantool-patches@freelists.org Cc: gorcunov@gmail.com, vdavydov.dev@gmail.com List-ID: * Cyrill Gorcunov [19/03/03 23:25]: > We want to detect a situation where task in fiber is too eager for > stack and close to its exhausting. For this sake upon stack creation > we put 8 marks on last stack page with step of 128 bytes. Such params > allows us to fill ~1/4 of a page, which does seem reasonable but > we might change this params with time. > > Since the watermark position is permanent and some task is close > to stack limit we print about the situation once to not spam > a user much and stop putting the mark on recycling. > + /* > + * Initially we arm last page of a stack > + * to catch if we're getting close to > + * stack exhausting. > + */ > + if (stack_direction < 0) > + fiber->stack_wmark_ofl = fiber->stack; > + else > + fiber->stack_wmark_ofl = fiber->stack + fiber->stack_size - page_size; > + stack_put_wmark(fiber->stack_wmark_ofl); > +} Could you please incorporate some randomness when assigning this address? A simple pseudo-random number within range 0 ..page_size/2 would make me happy. -- Konstantin Osipov, Moscow, Russia, +7 903 626 22 32 http://tarantool.io - www.twitter.com/kostja_osipov