[RFC v2] slab_arena: Enhance slab_arena_create to support madvise hints
Cyrill Gorcunov
gorcunov at gmail.com
Mon May 13 13:30:32 MSK 2019
On Mon, May 13, 2019 at 01:06:42PM +0300, Vladimir Davydov wrote:
> >
> > +set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
> > +
> > +check_symbol_exists(MAP_ANON sys/mman.h TARANTOOL_SMALL_HAVE_MAP_ANON)
> > +check_symbol_exists(MAP_ANONYMOUS sys/mman.h TARANTOOL_SMALL_HAVE_MAP_ANONYMOUS)
> > +
> > +check_function_exists(madvise TARANTOOL_SMALL_HAS_MADVISE)
>
> HAS/HAVE - please be consistent in naming.
OK
> > +check_symbol_exists(MADV_NORMAL sys/mman.h TARANTOOL_SMALL_HAS_MADV_NORMAL)
> > +check_symbol_exists(MADV_DONTDUMP sys/mman.h TARANTOOL_SMALL_HAS_MADV_DONTDUMP)
>
> Do we really need to check all of that? Is a check for MADV_DONTDUMP not
> enough?
Well, strictly speaking we should check each definition we use, because I'm
not sure if MADV_NORMAL defined on other than linux environments.
> > +
> > +#ifdef TARANTOOL_SMALL_USE_MADVISE
> > + if (slab_flags & SLAB_ARENA_DONTDUMP)
> > + arena->madv_flag = MADV_DONTDUMP;
> > +#endif
>
> May be, better store slab_flags in arena and convert them to
> mmap/madvise flags when necessary? Would be one variable instead
> of two.
Sounds reasonable, will do.
> > +
> > +#ifdef TARANTOOL_SMALL_USE_MADVISE
> > + if (ptr && arena->madv_flag != MADV_NORMAL)
> > + madvise(ptr, arena->slab_size, arena->madv_flag);
> > +#endif
> > +
>
> I'd move this code to a helper function to avoid code duplication in
> slab_arena_create/slab_map.
OK
> >
> > +/**
> > + * Backward compatible flags to be used with slab_arena_create().
>
> Please elaborate the comment: explain how this backward compatibility
> hack works, what it's needed for.
Sure
Cyrill
More information about the Tarantool-patches
mailing list