4 ms·
Hoard is fine, but if we're going to start talking about various scalable memory allocators designed for concurrent, multi-core/cpu systems then... libumem is
by gregburd 15y ago
Hoard is fine, but if we're going to start talking about various scalable memory allocators designed for concurrent, multi-core/cpu systems then...
libumem is the user space slab memory allocator first available in Solaris 9 (SunOS 5.4) now the default allocator on Solaris (and Illumos, SmartOS, OpenIndiana, etc.). There is a fork of libumem that has been ported to other popular operating systems, such as Linux, Windows and *BSD systems (including Darwin/OSX) by OmniTI (https://labs.omniti.com/labs/portableumem https://labs.omniti.com/labs/portableumem). I maintain a fork of portable libumem (https://github.com/gburd/libumem https://github.com/gburd/libumem) that includes changes made by Joyent as part of their ongoing work to improve SmartOS.
I have deployed this allocator to dozens of production systems to improve the performance of highly concurrent memory-intensive applications (such as Riak) and found it to be an excellent, stable and fast allocator.
In addition to fast allocations it includes excellent statistics and memory leak detection (https://blogs.oracle.com/pnayak/entry/finding_memory_leaks_within_solaris https://blogs.oracle.com/pnayak/entry/finding_memory_leaks_w...) as well as a few different allocator heap-fit algorithm choices.
It is licensed under the CDDL.
- scott_s 15y agoAny writeups on the design and algorithms used?
- vgnet 15y agoThere's a very interesting comparison between libumem (mtmalloc) and Hoard at http://www.oracle.com/technetwork/articles/servers-storage-dev/mem-alloc-1557798.html http://www.oracle.com/technetwork/articles/servers-storage-d... (HN link: https://news.ycombinator.com/item?id=3755621 https://news.ycombinator.com/item?id=3755621). How do you view this class of allocators to tcmalloc, jemalloc, ptmalloc3, etc., specially in the concurrent multi-cpu scenario? Here's what I'll be reading on allocators tonight, any further suggestions (following all the links in comments is part of the deal)? http://en.wikipedia.org/wiki/C_dynamic_memory_allocation http://en.wikipedia.org/wiki/C_dynamic_memory_allocation http://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919 http://www.facebook.com/notes/facebook-engineering/scalable-... http://locklessinc.com/benchmarks_allocator.shtml http://locklessinc.com/benchmarks_allocator.shtml http://blog.reverberate.org/2009/02/20/one-malloc-to-rule-them-all/ http://blog.reverberate.org/2009/02/20/one-malloc-to-rule-th...