git: kernel - VM rework part 13 - Core pmap work, stabilize & optimize
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue May 21 10:26:27 PDT 2019
commit e32fb2aa5ec45f533085d913b32f3b5b441047fe
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun May 19 12:59:49 2019 -0700
kernel - VM rework part 13 - Core pmap work, stabilize & optimize
* Refactor the vm_page_hash hash again to get a better distribution.
* I tried to only hash shared objects but this resulted in a number of
edge cases where program re-use could miss the optimization.
* Add a sysctl vm.page_hash_vnode_only (default off). If turned on,
only vm_page's associated with vnodes will be hashed. This should
generally not be necessary.
* Refactor vm_page_list_find2() again to avoid all duplicate queue
checks. This time I mocked the algorithm up in userland and twisted
it until it did what I wanted.
* VM_FAULT_QUICK_DEBUG was accidently left on, turn it off.
* Do not remove the original page from the pmap when vm_fault_object()
must do a COW. And just in case this is ever added back in later,
don't do it using pmap_remove_specific() !!! Use pmap_remove_pages()
to avoid the backing scan lock.
vm_fault_page() will now do this removal (for procfs rwmem), the normal
vm_fault will of course replace the page anyway, and the umtx code
uses different recovery mechanisms now and should be ok.
* Optimize vm_map_entry_shadow() for the situation where the old
object is no longer shared. Get rid of an unnecessary transient
kmalloc() and vm_object_hold_shared().
Summary of changes:
sys/vm/vm_fault.c | 49 +++++++-----------
sys/vm/vm_map.c | 9 ++--
sys/vm/vm_page.c | 129 ++++++++++++++++++++++++++++++++++--------------
test/debug/vmpageinfo.c | 2 +-
4 files changed, 116 insertions(+), 73 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/e32fb2aa5ec45f533085d913b32f3b5b441047fe
--
DragonFly BSD source repository
More information about the Commits
mailing list