From owner-freebsd-hackers@freebsd.org Mon Mar 27 16:44:27 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 43C7DD207ED for ; Mon, 27 Mar 2017 16:44:27 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F1834913; Mon, 27 Mar 2017 16:44:26 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.86 (FreeBSD)) (envelope-from ) id 1csXkm-0000mC-4J; Mon, 27 Mar 2017 19:44:24 +0300 Date: Mon, 27 Mar 2017 19:44:24 +0300 From: Slawa Olhovchenkov To: Brooks Davis Cc: Alexander Tarasikov , freebsd-hackers@freebsd.org Subject: Re: jmalloc in shared memory Message-ID: <20170327164424.GE70430@zxy.spb.ru> References: <20170320131235.GB86500@zxy.spb.ru> <20170327135333.GD70430@zxy.spb.ru> <20170327162637.GB59667@spindle.one-eyed-alien.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170327162637.GB59667@spindle.one-eyed-alien.net> User-Agent: Mutt/1.5.24 (2015-08-30) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Mar 2017 16:44:27 -0000 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.