git: kernel - VM rework part 11 - Core pmap work to remove terminal PVs
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue May 21 10:26:27 PDT 2019
commit 567a6398ff240e51859411e86413d3fa7ac9b2fe
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri May 17 23:18:11 2019 -0700
kernel - VM rework part 11 - Core pmap work to remove terminal PVs
* Remove pv_entry_t belonging to terminal PTEs. The pv_entry's for
PT, PD, PDP, and PML4 remain. This reduces kernel memory use for
pv_entry's by 99%.
The pmap code now iterates vm_object->backing_list (of vm_map_backing
structures) to run-down pages for various operations.
* Remove vm_page->pv_list. This was one of the biggest sources of
contention for shared faults. However, in this first attempt I
am leaving all sorts of ref-counting intact so the contention has
not been entirely removed yet.
* Current hacks:
- Dynamic page table page removal currently disabled because the
vm_map_backing scan needs to be able to deterministically
run-down PTE pointers. Removal only occurs at program exit.
- PG_DEVICE_IDX probably isn't being handled properly yet.
- Shared page faults not yet optimized.
* So far minor improvements in performance across the board.
This is realtively unoptimized. The buildkernel test improves
by 2% and the zero-fill fault test improves by around 10%.
Kernel memory use is improved (reduced) enormously.
Summary of changes:
sys/platform/pc64/include/pmap.h | 18 +-
sys/platform/pc64/x86_64/pmap.c | 1569 +++++++++++---------------------------
sys/vm/vm_fault.c | 5 +
sys/vm/vm_map.c | 16 +-
sys/vm/vm_object.c | 2 +
sys/vm/vm_object.h | 2 +-
6 files changed, 477 insertions(+), 1135 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/567a6398ff240e51859411e86413d3fa7ac9b2fe
--
DragonFly BSD source repository
More information about the Commits
mailing list