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