[PATCH v2] box/memtx: Allow to skip tuple memory from coredump

Vladimir Davydov vdavydov.dev at gmail.com
Wed May 15 15:45:58 MSK 2019


On Tue, May 14, 2019 at 01:20:53AM +0300, Cyrill Gorcunov wrote:
> In case if there are huge amount of tuples the whole
> memory goes to coredump file even if we don't need it
> for problem investigation. In result coredump may
> blow up to gigabytes in size.
> 
> Lets allow to exclude this memory from dumping via
> box.cfg::strip_core boolean parameter.
> 
> Note that the tuple's arena is used not only for tuples
> themselves but for memtx->index_extent_pool and
> memtx->iterator_pool as well, so they are affected
> too.
> 
> Fixes #3509
> 
> @TarantoolBot document
> Title: Document box.cfg.strip_core
> 
> When Tarantool runs under a heavy load the memory allocated
> for tuples may be very huge in size and to eliminate this
> memory from being present in `coredump` file the `box.cfg.strip_core`
> parameter should be set to `true`.
> 
> The default value is `false`.
> ---
> v2:
>  - Use strip_core name for box parameter
>  - Pass cfg_geti directly to functions
>  - vy_mem_env_create for now left as it was,
>    simply because we can't use cfg_geti there
>    (linking with library fails), I think we can
>    address it on top later

Please patch all places to use the new API. This better be done in a
separate patch. Call it "Update small submodule". Then I will squash
submodule sha update in it once we are done.

I checked - it turns out that SLAB_DONTDUMP path in madvise_checked is
executed even if box.cfg.strip_core is false. Looks like flags aren't
initialized properly somewhere. Please fix.

Please double-check (manually) that this new option does reduce core
size. Try setting box.cfg.memtx_memory, writing some data to a space,
then increasing box.cfg.memtx_memory, writing more, crashing the app,
and checking that the core size is significantly smaller with strip_core
set.

Also, as I mentioned in the comment to the previous patch, we should
emit a warning in case MADV_DONTDUMP is unavailable while strip_core is
set. This probably better be done here, in Tarantool, using say_warn.



More information about the Tarantool-patches mailing list