HAMMER 54/Many: Performance tuning
authorMatthew Dillon <dillon@dragonflybsd.org>
Wed, 11 Jun 2008 22:33:21 +0000 (22:33 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Wed, 11 Jun 2008 22:33:21 +0000 (22:33 +0000)
commita99b9ea2729780861bdde497d539d2f2684bda26
tree3020043d24046fc9f6f616519436b792b9d44f5a
parent46191a90997d17b9a23d8ab7e6e2eb5f2d278132
HAMMER 54/Many: Performance tuning

* Implement hammer_vop_bmap().

* Implement cluster_read() support.  This should jump up linear read
  performance almost to the platter speed.  I get 100 MB/sec testing
  vs 35 MB/sec previously.

* Do a better job kicking an inode into the flusher when writing
  sequentially.  This hops up write rate at least +50%.  It isn't
  quite able to run at the platter speed due to B-Tree overheads
  which will be addressed in a later patch.

* Do not create data fragments at the ends of files greater then 16K, use
  a full 16K block.  The reason is that fragments in HAMMER are allocated
  out of a wholely different zone and we do not want to lose the chance of
  making the tail end of the file contiguous.

  Files less then 16K still use data fragments.

* Fix a machine lockup related to an interrupt race with biodone() and
  insertions and deltions from hmp->lose_list.

* Fix a memory exhaustion issue.

Reported-by: Francois Tigeot <ftigeot@wolfpond.org> (machine lockup)
Credit-also: Jonathan Stuart on the 0 byte sized file bug fix.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_cursor.c
sys/vfs/hammer/hammer_flusher.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_io.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_ondisk.c
sys/vfs/hammer/hammer_recover.c
sys/vfs/hammer/hammer_vfsops.c
sys/vfs/hammer/hammer_vnops.c