HAMMER 28A/many: Translation and write performance optimizations
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 10 Feb 2008 18:58:23 +0000 (18:58 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 10 Feb 2008 18:58:23 +0000 (18:58 +0000)
commit34d829f7812a187a49168cbf616eae8ddf7b184f
tree0d981d1093e0a487ae2f61ad88b48c94cd7cdf30
parent9fe8385f8695f264f30bc61eb2e95191cb3de12c
HAMMER 28A/many: Translation and write performance optimizations

* Cache a buffer's virtual (zoneX->zone2) translation to avoid unnecessary
  re-translations when a hot-cached buffer is available.

* Use the sequential heuristic provided by the kernel to detect sequential
  writes and call bawrite() instead bdwrite() in such cases.  This
  prevents the buffer cache from hitting slow fallback cases and
  completely solves the write performance issue.

  Note that the undo fifo is not yet in place and performance will drop
  slightly once it is, but what you see now is basically what you're gonna
  get in the final.

* Performance is now on par with UFS.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_blockmap.c
sys/vfs/hammer/hammer_io.c
sys/vfs/hammer/hammer_ondisk.c
sys/vfs/hammer/hammer_vnops.c