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