FreeBSD の kmem_arena、 kernel_arena、と kva_alloc2014年10月02日 20時42分22秒

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 から出てくるらしい。