jmalloc in shared memory
Brooks Davis
brooks at freebsd.org
Mon Mar 27 16:36:23 UTC 2017
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.
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.
-- Brooks
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20170327/ab328650/attachment.sig>
More information about the freebsd-hackers
mailing list