git: kernel - Improve physio performance
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Jul 16 23:30:21 PDT 2016
commit 2f0acc22b5ce1dd94f2d01c149a7b1bf0d8eb707
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Jul 16 23:15:19 2016 -0700
kernel - Improve physio performance
* See http://apollo.backplane.com/DFlyMisc/nvme_sys03.txt
* Hash the pbuf system. This chops down spin-lock collisions
at high transaction rates (>150K IOPS) by 1000x.
* Implement a pbuf with pre-allocated kernel memory that we
copy into, avoiding page table manipulations and thus
avoiding system-wide invltlb/invlpg IPIs.
* This increases NVMe IOPS tests with three cards from
150K-200K IOPS to 950K IOPS using physio (random read,
4K blocks, from urandom-filled partition, with many
process threads, from 3 NVMe cards in parallel).
* Further adjustments to the vkernel build.
Summary of changes:
sys/dev/raid/vinum/vinum.c | 2 +-
sys/kern/kern_physio.c | 62 ++---
sys/kern/subr_param.c | 8 +-
sys/platform/pc64/x86_64/machdep.c | 19 +-
sys/platform/vkernel64/include/pmap.h | 2 -
sys/platform/vkernel64/platform/pmap.c | 23 +-
sys/platform/vkernel64/x86_64/autoconf.c | 22 +-
sys/sys/buf.h | 11 +-
sys/vfs/nfs/nfs_subs.c | 2 +-
sys/vfs/smbfs/smbfs_vfsops.c | 2 +-
sys/vfs/ufs/ffs_rawread.c | 3 +-
sys/vm/swap_pager.c | 8 +-
sys/vm/vm_pager.c | 437 ++++++++++++++++++++++---------
sys/vm/vnode_pager.c | 2 +-
14 files changed, 402 insertions(+), 201 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/2f0acc22b5ce1dd94f2d01c149a7b1bf0d8eb707
--
DragonFly BSD source repository
More information about the Commits
mailing list