diff options
author | alc <alc@FreeBSD.org> | 2013-05-12 16:50:18 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2013-05-12 16:50:18 +0000 |
commit | 7d20e37fb658b0e2cd7f3c13dac8022e0e866a21 (patch) | |
tree | f0a16a6164c2636942cacaa989a08f31dafdb3f4 /sys/vm/vm_reserv.h | |
parent | 6907881cb814953c545475a8a63e3afc402bd547 (diff) | |
download | FreeBSD-src-7d20e37fb658b0e2cd7f3c13dac8022e0e866a21.zip FreeBSD-src-7d20e37fb658b0e2cd7f3c13dac8022e0e866a21.tar.gz |
Refactor vm_page_alloc()'s interactions with vm_reserv_alloc_page() and
vm_page_insert() so that (1) vm_radix_lookup_le() is never called while the
free page queues lock is held and (2) vm_radix_lookup_le() is called at most
once. This change reduces the average time that the free page queues lock
is held by vm_page_alloc() as well as vm_page_alloc()'s average overall
running time.
Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/vm/vm_reserv.h')
-rw-r--r-- | sys/vm/vm_reserv.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/vm_reserv.h b/sys/vm/vm_reserv.h index a2b6647..4c142c7 100644 --- a/sys/vm/vm_reserv.h +++ b/sys/vm/vm_reserv.h @@ -48,7 +48,8 @@ vm_page_t vm_reserv_alloc_contig(vm_object_t object, vm_pindex_t pindex, u_long npages, vm_paddr_t low, vm_paddr_t high, u_long alignment, vm_paddr_t boundary); -vm_page_t vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex); +vm_page_t vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex, + vm_page_t mpred); void vm_reserv_break_all(vm_object_t object); boolean_t vm_reserv_free_page(vm_page_t m); void vm_reserv_init(void); |