git: hammer2 - Refactor bulkfree
Matthew Dillon
dillon at crater.dragonflybsd.org
Sun Aug 30 14:26:08 PDT 2015
commit 125966e80c1aba734d3d5f12a8fcfde2bbcdb018
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Aug 30 14:17:35 2015 -0700
hammer2 - Refactor bulkfree
* Change the bulkfree scan from breadth-first to depth-first. This
improves disk performance significantly (~2x) and is also needed for the
duplicate-detection feature.
* Create an 8-way set-associative hash table similar to what the live
dedup code uses. Record the data_off for elements we have processed
and detect if a duplicate is encountered so we do not have to re-process
the duplicate subtree.
Also prioritize the table based on the aggregate bottom-up inode count
to reduce the chance that a top-level duplicate (aka snapshot) will get
kicked out of the hash table.
* Clean up the hammer2_chain_scan() API, making it more bref-centric
which allows us to avoid instantiating chain structures for leaf
entities. This significantly improves performance and increases
flexibility.
* Manual page adjustments for kern.maxvnodes settings suggestions.
Summary of changes:
sbin/hammer/hammer.8 | 18 +-
sbin/hammer2/hammer2.8 | 21 +++
sys/vfs/hammer2/hammer2.h | 13 +-
sys/vfs/hammer2/hammer2_bulkfree.c | 338 ++++++++++++++++++++++++-------------
sys/vfs/hammer2/hammer2_chain.c | 173 ++++++++++---------
sys/vfs/hammer2/hammer2_flush.c | 4 +-
sys/vfs/hammer2/hammer2_strategy.c | 20 +++
sys/vfs/hammer2/hammer2_vfsops.c | 38 +++--
8 files changed, 401 insertions(+), 224 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/125966e80c1aba734d3d5f12a8fcfde2bbcdb018
--
DragonFly BSD source repository
More information about the Commits
mailing list