|
|
|
|
|
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. |
|
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...