git: kernel - Fix performance issue due to buffer fragmentation

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Feb 21 22:41:05 PST 2013


commit 923b8527bc9e4b1e308949f0d95bc09a87798772
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Feb 21 22:32:11 2013 -0800

    kernel - Fix performance issue due to buffer fragmentation
    
    * Systems with a lot of memory have very large buffer pools.  Defragmenting
      these pools can be expensive.  Often the buffer_map becomes full well
      before the bufspace actually hits its limits.  Filesystems such as HAMMER
      which use large buffer sizes (64K) are more likely to cause the problem.
    
      The result is extremely bad I/O performance for data not in the buffer
      cache which requires a new buffer to be instantiated.
    
    * To solve this we double the size of the buffer_map's KVA area on
      64-bit systems while leaving the maximum buffer space allowed the
      same.  The larger virtual space greatly reduces KVA allocation
      failures due to fragmentation.
    
    * This solves significant performance issues on monster with its 64G
      of ram, but should improve performance on any 64-bit system by
      reducing buffer cache defrag iterations.
    
    * Also fix a possible intermediate value overflow in vlrureclaim().

Summary of changes:
 sys/kern/vfs_mount.c                     |  8 ++++++--
 sys/platform/pc64/x86_64/machdep.c       | 10 ++++++++--
 sys/platform/vkernel64/x86_64/autoconf.c |  4 ++--
 3 files changed, 16 insertions(+), 6 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/923b8527bc9e4b1e308949f0d95bc09a87798772


-- 
DragonFly BSD source repository



More information about the Commits mailing list