Skip site navigation (1)Skip section navigation (2)
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>