git: kernel - Reduce memory testing and early-boot zeroing.

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Jul 29 17:17:48 PDT 2016


commit bca42d4fa96208542f276825027831ba7573b9a4
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Fri Jul 29 13:29:03 2016 -0700

    kernel - Reduce memory testing and early-boot zeroing.
    
    * Reduce the amount of memory testing and early-boot zeroing that
      we do, improving boot times on systems with large amounts of memory.
    
    * Fix race in the page zeroing count.
    
    * Refactor the VM zeroidle code.  Instead of having just one kernel thread,
      have one on each cpu.
    
      This significantly increases the rate at which the machine can eat up
      idle cycles to pre-zero pages in the cold path, improving performance
      in the hot-path (normal) page allocations which request zerod pages.
    
    * On systems with a lot of cpus there is usually a little idle time (e.g.
      0.1%) on a few of the cpus, even under extreme loads.  At the same time,
      such loads might also imply a lot of zfod faults requiring zero'd pages.
    
      On our 48-core opteron we see a zfod rate of 1.0 to 1.5 GBytes/sec and
      a page-freeing rate of 1.3 - 2.5 GBytes/sec.  Distributing the page
      zeroing code and eating up these miniscule bits of idle improves the
      kernel's ability to provide a pre-zerod page (vs having to zero-it in
      the hot path) significantly.
    
      Under the synth test load the kernel was still able to provide 400-700
      MBytes/sec worth of pre-zerod pages whereas before this change the kernel
      was only able to provide 20 MBytes/sec worth of pre-zerod pages.

Summary of changes:
 sys/platform/pc64/x86_64/machdep.c | 59 +++++++++++++++++++++++++++-----------
 sys/vm/vm_contig.c                 |  2 --
 sys/vm/vm_meter.c                  | 18 ++++++++++--
 sys/vm/vm_page.c                   | 12 +++++---
 sys/vm/vm_page.h                   |  5 ++--
 sys/vm/vm_zeroidle.c               | 48 +++++++++++++++++++------------
 6 files changed, 97 insertions(+), 47 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/bca42d4fa96208542f276825027831ba7573b9a4


-- 
DragonFly BSD source repository



More information about the Commits mailing list