vm: Introduce vm_page_alloc_nofree_domain
This patch adds a reservation-aware bump allocator intended for
allocating NOFREE pages. The main goal of this change is to reduce the
long-term fragmentation issues caused by pages that are never freed during runtime.
The vm_page_alloc_nofree_domain routine hands out 0-order pages from
a preallocated superpage. Once an active NOFREE superpage fills up, the
routine will try to allocate a new one and discard the old one.
This routine will get invoked whenever VM_ALLOC_NOFREE is passed to
vm_page_alloc_noobj or vm_page_alloc.
Differential Revision: https://reviews.freebsd.org/D45863
Reviewed by: alc, kib, markj
Tested by: alc