git: kernel - Improve VM fault performance for sequential access

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Jan 14 19:46:42 PST 2010


commit 768970b4fd5a55ad14ac037ab9bf530686f44db8
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Jan 14 19:40:14 2010 -0800

    kernel - Improve VM fault performance for sequential access
    
    * VM fault I/O pipelining was not working properly.
    
    * Temporarily fix pipelining by introducing PG_RAM, A read-ahead mark
      for vm_page_t, and adjust vm_fault to pass VM pages through to
      getpages calls if PG_RAM is set, even if they are fully valid.
    
    * Remove code in vnode_pager_generic_getpages() which shortcutted
      the operation when the requested page was fully valid.  This
      prevented read-aheads from being issued.
    
    * A more permanent solution is in the works (basically getting rid of
      the whole VM read-ahead/read-behind array entirely, just passing
      a single page through to vnode_pager_generic_getpages(), and
      letting the filesystem handle the read-ahead in a more efficient
      fashion.
    
    Reported-by: "Mikhail T." <mi+thun at aldan.algebra.com>

Summary of changes:
 sys/kern/vfs_cluster.c |   19 ++++++++++++++-----
 sys/sys/vnode.h        |    1 +
 sys/vm/vm_fault.c      |   22 +++++++++++++++++-----
 sys/vm/vm_page.h       |    1 +
 sys/vm/vnode_pager.c   |   27 ++++++++++-----------------
 5 files changed, 43 insertions(+), 27 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/768970b4fd5a55ad14ac037ab9bf530686f44db8


-- 
DragonFly BSD source repository





More information about the Commits mailing list