What's the difference between kmem_arena and kernel_arena? との質問が hackers メーリングリストにされた。
返答は、
kmem_arena is used for the kernel malloc() and page-sized uma allocations.
kernel_arena is used by miscellaneous other kernel needs, e.g. for kernel stacks of threads, as the backing for kva_alloc() etc.
との事。とは言っても、これでもかなり分かりづらい。
カーネルコードを見ると、kmem_alloc と kva_alloc に良く出くわす。kmem_alloc が UMA を基にした固定長のメモリ管理領域で、kva_alloc は kernel_arena から出てくるらしい。
セコメントをする