mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 03:40:04 +00:00
644bf7b598
* Features: - Low metadata overhead (just 4 bytes per object) - O(1) Alloc/Free - except when we have to call system page allocator to get additional memory. - Very low fragmentation: In all tests, xvmalloc memory usage is within 12% of "Ideal". - Pool based allocator: Each pool can grow and shrink. - It maps pages only when required. So, it does not hog vmalloc area which is very small on 32-bit systems. SLUB allocator could not be used due to fragmentation issues: http://code.google.com/p/compcache/wiki/AllocatorsComparison Data here shows kmalloc using ~43% more memory than TLSF and xvMalloc is showed ~2% more space efficiency than TLSF (due to smaller metadata). Creating various kmem_caches can reduce space efficiency gap but still problem of being limited to low memory exists. Also, it depends on allocating higher order pages to reduce fragmentation - this is not acceptable for ramzswap as it is used under memory crunch (its a swap device!). SLOB allocator could not be used do to reasons mentioned here: http://lkml.org/lkml/2009/3/18/210 * Implementation: It uses two-level bitmap search to find free list containing block of correct size. This idea is taken from TLSF (Two-Level Segregate Fit) allocator and is well explained in its paper (see [Links] below). * Limitations: - Poor scalability: No per-cpu data structures (work in progress). [Links] 1. Details and Performance data: http://code.google.com/p/compcache/wiki/xvMalloc http://code.google.com/p/compcache/wiki/xvMallocPerformance 2. TLSF memory allocator: home: http://rtportal.upv.es/rtmalloc/ paper: http://rtportal.upv.es/rtmalloc/files/MRBC_2008.pdf Signed-off-by: Nitin Gupta <ngupta@vflare.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
||
---|---|---|
.. | ||
altpciechdma | ||
android | ||
arlan | ||
asus_oled | ||
b3dfg | ||
comedi | ||
cx25821 | ||
dream | ||
dst | ||
echo | ||
et131x | ||
frontier | ||
go7007 | ||
hv | ||
iio | ||
line6 | ||
mimio | ||
netwave | ||
octeon | ||
otus | ||
p9auth | ||
panel | ||
phison | ||
poch | ||
pohmelfs | ||
quatech_usb2 | ||
ramzswap | ||
rar | ||
rt2860 | ||
rt2870 | ||
rt3070 | ||
rt3090 | ||
rtl8187se | ||
rtl8192e | ||
rtl8192su | ||
sep | ||
serqt_usb2 | ||
slicoss | ||
strip | ||
udlfb | ||
usbip | ||
vme | ||
vt6655 | ||
vt6656 | ||
wavelan | ||
winbond | ||
wlan-ng | ||
Kconfig | ||
Makefile | ||
staging.c |