Date: Mon, 27 Mar 2017 19:44:24 +0300 From: Slawa Olhovchenkov <slw@zxy.spb.ru> To: Brooks Davis <brooks@freebsd.org> Cc: Alexander Tarasikov <alexander.tarasikov@gmail.com>, freebsd-hackers@freebsd.org Subject: Re: jmalloc in shared memory Message-ID: <20170327164424.GE70430@zxy.spb.ru> In-Reply-To: <20170327162637.GB59667@spindle.one-eyed-alien.net> References: <20170320131235.GB86500@zxy.spb.ru> <CAMChaFw2Z0zQ5mBgCGxt4Yigjaa-i5oTFJFgDtGHOy6t_DXcnw@mail.gmail.com> <20170327135333.GD70430@zxy.spb.ru> <20170327162637.GB59667@spindle.one-eyed-alien.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Mar 27, 2017 at 04:26:37PM +0000, Brooks Davis wrote: > On Mon, Mar 27, 2017 at 04:53:33PM +0300, Slawa Olhovchenkov wrote: > > On Mon, Mar 27, 2017 at 03:27:31PM +0200, Alexander Tarasikov wrote: > > > > > Hi Slawa, > > > I'm not sure jemalloc is supposed to be used this way, but you should > > > be able to achieve this functionality in two ways: > > > 1. Editing jemalloc's allocator ("src/pages.c") to allocate in your > > > region instead of calling mmap() > > > 2. Hook mmap() and brk(), sbrk() with LD_PRELOAD and provide > > > implementations that will allocate in the shared memory > > > > > > Hope this helps. > > > > I am don't need to redirect ALL allocations in the shared memory. > > I am need only do it for selected structures. > > For example, I am need create red-black tree and update it (in shared > > memory). For this, I am need create own memory management in this > > region or use existing memory management tool (for allocate, > > dealloacate and tracks chunks) worked for dedicated segment only. > > JEMalloc is almost certainly overkill for this application. It sounds > likely you're allocating fixed sized objects (or at least not too many > of them). For that, a simple slab allocator should do the trick. I am planed to allocate (and free) also strings. JEMalloc already present in libc. I am mean JEMalloc allow to create arena/some_other_stuff and point this stuff in call. > Alterntively, rtld contains a simple pooled malloc that's not hard > to adapt to random backing stores (libexec/rtld-elf/malloc.c). I've > got version adapted for CHERI with pluggable storage backends at > https://github.com/CTSRD-CHERI/cheribsd/tree/master/lib/libmalloc_simple. > It wouldn't be too hard turn it back into portable C. Thanks, I am discover this.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170327164424.GE70430>