MEMORYALLOCATORS(9) NetBSD Kernel Developer's Manual MEMORYALLOCATORS(9)
memoryallocators -- introduction to kernel memory allocators
The NetBSD kernel provides several memory allocators, each with different characteristics and purpose. This document summarizes the main differ- ences between them. The Kmem Allocator The kmem allocator is modelled after an interface of similar name imple- mented in Solaris. This is main general purpose allocator in the kernel. It is implemented on-top of the vmem(9) resource allocator (beyond the scope of this document), meaning it will be using pool_cache(9) inter- nally to speed-up common (small) sized allocations. It requires no setup, but cannot be used from interrupt context. See kmem(9) for more details. The Pool Allocator The pool(9) allocator is a fixed-size memory allocator. It requires set- up (to initialize a memory pool) and is interrupt-safe. See pool(9) for more details. The Pool Cache Allocator The pool cache allocator works on-top of the pool(9) allocator, also allowing fixed-size allocation only, requires setup, and is interrupt- safe. The pool cache allocator is expected to be faster than other allocators, including the ``normal'' pool allocator. In the future this allocator is expected to have a per-CPU cache. See pool_cache(9) for more details. The UVM Kernel Memory Allocator This is a low-level memory allocator interface. It allows variable-sized allocations in multiples of PAGE_SIZE, and can be used to allocate both wired and pageable kernel memory. See uvm(9) for more details.
intro(9), kmem(9), pool(9), pool_cache(9), uvm(9), vmem(9)
Elad Efrat <elad@NetBSD.org> YAMAMOTO Takashi <yamt@NetBSD.org> NetBSD 8.1 August 3, 2009 NetBSD 8.1
You can also request any man page by name and (optionally) by section: