git: kernel - VM rework part 11 - Core pmap work to remove terminal PVs

Matthew Dillon dillon at
Tue May 21 10:26:27 PDT 2019

commit 567a6398ff240e51859411e86413d3fa7ac9b2fe
Author: Matthew Dillon <dillon at>
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(-)

DragonFly BSD source repository

More information about the Commits mailing list