Date: Mon, 27 Mar 2017 16:26:37 +0000 From: Brooks Davis <brooks@freebsd.org> To: Slawa Olhovchenkov <slw@zxy.spb.ru> Cc: Alexander Tarasikov <alexander.tarasikov@gmail.com>, freebsd-hackers@freebsd.org Subject: Re: jmalloc in shared memory Message-ID: <20170327162637.GB59667@spindle.one-eyed-alien.net> In-Reply-To: <20170327135333.GD70430@zxy.spb.ru> References: <20170320131235.GB86500@zxy.spb.ru> <CAMChaFw2Z0zQ5mBgCGxt4Yigjaa-i5oTFJFgDtGHOy6t_DXcnw@mail.gmail.com> <20170327135333.GD70430@zxy.spb.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
--mP3DRpeJDSE+ciuQ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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: >=20 > > 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 > >=20 > > Hope this helps. >=20 > 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 --mP3DRpeJDSE+ciuQ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEcBAEBAgAGBQJY2T08AAoJEKzQXbSebgfAQJEIAIlsIw4RJmOAvYTQk4K5+rwS hSbCdySnQ46rlfHO5RKaVVklt4CF9Le4uxHYRUkPYttP7hzxebuulNN3nwK7CjEN GVlXX8RNmWfD5YeJTfpo93UPdArvooaMwGETtBUPWVdjxLEbWotb4RPsiRBXxA4Z F9JpLI/tcXnCWK4qaUR/Os1aZtZjfAGcavEvdmkZmGcu/cc++cw9X5zH3LSAaaUi tY3SLYws2ixptwzOhuliXV4voacOcDMvZN8W8a7d6Ug5J7F/pI0LJHt/5bGtx8J4 b59a+EnoGQRcou/yPt+v6zb0V4HKtTmpvdLEE7DsDJvsIT5wKVGjEaJl56RL8JE= =KqmF -----END PGP SIGNATURE----- --mP3DRpeJDSE+ciuQ--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170327162637.GB59667>