git: kernel - Reduce memory testing and early-boot zeroing.
dillon at crater.dragonflybsd.org
Fri Jul 29 17:17:48 PDT 2016
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(-)
DragonFly BSD source repository
More information about the Commits