DragonFlyBSD/src 567a639sys/platform/pc64/include pmap.h, sys/platform/pc64/x86_64 pmap.c

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.
DeltaFile
+454-1,117sys/platform/pc64/x86_64/pmap.c
+8-10sys/platform/pc64/include/pmap.h
+8-8sys/vm/vm_map.c
+5-0sys/vm/vm_fault.c
+2-0sys/vm/vm_object.c
+1-1sys/vm/vm_object.h
+478-1,1366 files

UnifiedSplitRaw