Hacker News new | ask | show | jobs
by gregburd 5197 days 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). I maintain a fork of portable 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_w...) as well as a few different allocator heap-fit algorithm choices.

It is licensed under the CDDL.

2 comments

There's a very interesting comparison between libumem (mtmalloc) and Hoard at http://www.oracle.com/technetwork/articles/servers-storage-d... (HN link: 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://www.facebook.com/notes/facebook-engineering/scalable-...

http://locklessinc.com/benchmarks_allocator.shtml

http://blog.reverberate.org/2009/02/20/one-malloc-to-rule-th...

Any writeups on the design and algorithms used?