<div dir="ltr"><span style="font-size:12.8000001907349px">Does your use case allow you to wrap the allocator and keep a side table which supports iteration, or can you trace allocation activity and post-process it?</span><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">=> This is what I have implemented currently but this does not scale for multithreaded programs due to locking issues. I was pondering over idea of not doing any book keeping myself and use jemalloc data structures ( and efficient low level locking ) for my purpose. </span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Is this not possible even when all my metadata objects ( which hold user allocation base and extent ) are fixed sized and allocated from a separate arena ? I was under the impression that I should be able to mask and find out offsets within chunk->region->pages and find out objects. As my objects are all fixed size, they would be contiguous in memory. Is this valid understanding ? </span></div><div><span style="font-size:12.8000001907349px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 24, 2015 at 11:16 PM, Jason Evans <span dir="ltr"><<a href="mailto:jasone@canonware.com" target="_blank">jasone@canonware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div class="h5">On Mar 24, 2015, at 6:53 AM, SNL <<a href="mailto:snl20465@gmail.com" target="_blank">snl20465@gmail.com</a>> wrote:<div><blockquote type="cite"><div><div dir="ltr"><div>If this is not possible ( I see an old post which says jemalloc does not have this infra but that was back in 2012 ). Is it possible to iterate over just an arena and dump all allocations in it  ? Basically, I have memory pool implemented on top of jemalloc which holds metadata about all other allocations jemalloc does, if I can iterate over this arena and get hold of metadata, I can get hold of each allocation as well. </div><div><br></div><div>Any thoughts would be appreciated. </div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 24, 2015 at 5:28 PM, SNL <span dir="ltr"><<a href="mailto:snl20465@gmail.com" target="_blank">snl20465@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div>My use case is to walk through all live allocations ( the ones which are not freed yet) of all sizes the program ever made and dump it as the end of the program or on demand. I have looked at stats but I want something with even more details. Basically, the function should be able to iterate through all arenas and print details on following lines:<div><br></div><div>arena = 1 base = 0x7fd7beb88800 size = 15 bytes etc<br clear="all"><div><br></div><div>Is there any api in jemalloc which already does subset of this  ? Any pointers will be helpful. </div></div></div></blockquote></div></div></div></div></blockquote></div><br></div></div><div>jemalloc doesn't support iteration over live allocations, and it's unlikely to ever directly support iteration, because the feature imposes nontrivial additional complexity for limited benefit.  The closest thing under consideration is <a href="https://github.com/jemalloc/jemalloc/issues/203" target="_blank">https://github.com/jemalloc/jemalloc/issues/203</a>, but I don't plan to work on that until at least next year.</div><div><br></div><div>Does your use case allow you to wrap the allocator and keep a side table which supports iteration, or can you trace allocation activity and post-process it?</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Jason</div></font></span></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><br>Cheers,<br>Sunny. <br></div>
</div>