DragonFly commits List (threaded) for 2008-06
DragonFly BSD
DragonFly commits List (threaded) for 2008-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

cvs commit: src/sys/vfs/hammer hammer.h hammer_btree.c hammer_cursor.c hammer_flusher.c hammer_inode.c hammer_io.c hammer_object.c hammer_ondisk.c hammer_vfsops.c hammer_vnops.c


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 12 Jun 2008 17:25:33 -0700 (PDT)

dillon      2008/06/12 17:25:33 PDT

DragonFly src repository

  Modified files:
    sys/vfs/hammer       hammer.h hammer_btree.c hammer_cursor.c 
                         hammer_flusher.c hammer_inode.c 
                         hammer_io.c hammer_object.c 
                         hammer_ondisk.c hammer_vfsops.c 
                         hammer_vnops.c 
  Log:
  HAMMER 54D/Many: Performance tuning.
  
  * Remove major barriers to write performance and fix hicups revealed by
    blogbench.
  
    Change the HAMMER reclaim-delay algorithm to operate like a FIFO instead
    of as a free-for-all.  The idea of introducing a dynamic delay helped some,
    but the addition of the wakeup FIFO allows burst completions by the flusher
    to immediately wakeup processes that were waiting for the reclaim count to
    drain.  The result is far, far smoother operation.
  
  * Remove a major blocking conflict between the buffer cache daemon and
    HAMMER.  The buffer cache was getting stuck on trying to overwrite dirty
    records that had already been queued to the flusher.  The flusher might
    not act on the record(s) for a long period of time, causing the buffer
    cache daemon to stall.
  
    Fix the problem by properly using the HAMMER_RECF_INTERLOCK_BE flag,
    which stays on only for a very short period of time, instead of testing
    the record's flush state (record->flush_state), which can stay in
    the HAMMER_FST_FLUSH state for a very long time.
  
  * The parent B-Tree node does not need to be locked when inserting
    into the child.
  
  * Use the new B_AGE semantics to keep meta-data intact longer.  This results
    in another big improvement in random read and write performance.
  
  Revision  Changes    Path
  1.83      +14 -8     src/sys/vfs/hammer/hammer.h
  1.52      +24 -3     src/sys/vfs/hammer/hammer_btree.c
  1.29      +13 -2     src/sys/vfs/hammer/hammer_cursor.c
  1.26      +7 -0      src/sys/vfs/hammer/hammer_flusher.c
  1.74      +100 -76   src/sys/vfs/hammer/hammer_inode.c
  1.40      +6 -5      src/sys/vfs/hammer/hammer_io.c
  1.67      +13 -20    src/sys/vfs/hammer/hammer_object.c
  1.56      +7 -1      src/sys/vfs/hammer/hammer_ondisk.c
  1.47      +1 -3      src/sys/vfs/hammer/hammer_vfsops.c
  1.69      +4 -5      src/sys/vfs/hammer/hammer_vnops.c


http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer.h.diff?r1=1.82&r2=1.83&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_btree.c.diff?r1=1.51&r2=1.52&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_cursor.c.diff?r1=1.28&r2=1.29&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_flusher.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_inode.c.diff?r1=1.73&r2=1.74&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_io.c.diff?r1=1.39&r2=1.40&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_object.c.diff?r1=1.66&r2=1.67&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_ondisk.c.diff?r1=1.55&r2=1.56&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vfsops.c.diff?r1=1.46&r2=1.47&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/hammer/hammer_vnops.c.diff?r1=1.68&r2=1.69&f=u



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]