Chapter 7. Noncontiguous Memory Allocation
It is preferable when dealing with large amounts of memory to use physically contiguous pages in memory both for cache-related and memory-access-latency reasons. Unfortunately, due to external fragmentation problems with the buddy allocator, this is not always possible. Linux provides a mechanism through vmalloc()
where noncontiguous physical memory can be used that is contiguous in virtual memory.
An area is reserved in the virtual address space between VMALLOC_START
and VMALLOC_END
. The location of VMALLOC_START
depends on the amount of available physical memory, but the region will always be at least VMALLOC_RESERVE
in size, which on the x86 is 128MiB. The exact size of the region is discussed in
Get Understanding the Linux® Virtual Memory Manager now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.