Allocators: Difference between revisions

No edit summary
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
* [http://rtportal.upv.es/rtmalloc/ TLSF] - The Two-Level Segregate Fit allocator from the [http://www.gii.upv.es/ Industrial Informatics and Real-Time Systems Group]
As of 2023, [[Glibc]] uses [https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c ptmalloc2] aka Doug Lea's malloc with arena modifications by Wolfram Gloger. It's critical to know that allocations equal to or larger than <tt>MMAP_THRESHOLD</tt> (by default 128KiB) will be serviced by anonymous <tt>[[mmap]]</tt>.
** [http://rtportal.upv.es/rtmalloc/node/7 Paper list] - Check out 2008's "A constant-time dynamic storage allocator for real-time systems"
 
==Multiprocessing-suitable dropins==
* [http://www.hoard.org/ Hoard] - Emery Berger's multiprocessor-geared allocator, a drop-in <tt>malloc(3)</tt> replacement
* [http://goog-perftools.sourceforge.net/doc/tcmalloc.html TCMalloc] - Google's "Thread-Caching malloc", another <tt>malloc(3)</tt> drop-in for multiprocessing
* [https://github.com/mjansson/rpmalloc rpmalloc] the Rampant Pixel Mallocator, lock-free, 16-byte aligned
==Realtime-suitable dropins==
* "[http://rtportal.upv.es/rtmalloc/ TLSF - The Two-Level Segregate Fit allocator]" from the [http://www.gii.upv.es/ Industrial Informatics and Real-Time Systems Group]


==Arena==
==Arena==
Line 6: Line 12:
==Slab==
==Slab==
* Jeff Bonwick's [http://citeseer.ist.psu.edu/bonwick94slab.html classic 1994 creation], first published in the context of the SunOS 5.4 kernel
* Jeff Bonwick's [http://citeseer.ist.psu.edu/bonwick94slab.html classic 1994 creation], first published in the context of the SunOS 5.4 kernel
* Bonwick and Adams extended slab in "[http://www.usenix.org/event/usenix01/bonwick.html Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources]," from USENIX 2001.
** Vmem: Fast, general backend store for slab, claimed to be "the first allocator that can satisfy allocations and frees of any size in guaranteed constant time."
** Magazines: Per-CPU memory allocators and caching scheme


===Linux kernel variants===
===Linux kernel variants===
Line 25: Line 34:


==References==
==References==
* Bonwick and Adams, "[http://www.usenix.org/event/usenix01/bonwick.html Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources]" from USENIX 2001
* [http://memoryallocators.com/ MemoryAllocators.com] is replete with good information
* Joseph Attardi and Neelakanth Nadgir's "[http://developers.sun.com/solaris/articles/multiproc/multiproc.html A Comparison of Memory Allocators in Multiprocessors]", Sun Developer Network June 2003
* Schneider, Antonopoulos and Nikolopoulos, "[http://www.ics.forth.gr/~dsn/papers/ismm06.pdf Scalable Locality-Conscious Multithreaded Memory Allocation]", ISMM 2006.
* Masmano, Ripoll et al, "[http://rtportal.upv.es/rtmalloc/node/69 A constant-time dynamic storage allocator for real-time systems], ''Realtime Systems'' Vol. 40 Num. 2, November 2008.
* Great page reagrding [http://g.oswego.edu/dl/html/malloc.html dlalloc], Doug Lea's allocator
* Wilson, Johnstone, Neely, Boles, "Dynamic Storage Allocation: A Survey and Critical Review"