git: hammer2 - performance, stabilization
Matthew Dillon
dillon at crater.dragonflybsd.org
Tue Nov 5 22:54:06 PST 2013
commit 3f5b8b3b1546a3803bad2d997deefa0f4e30549d
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Nov 5 22:49:44 2013 -0800
hammer2 - performance, stabilization
* Add hysteresis to anything calling H2's strategy functions. Because
the BIOs are queued to a thread and compression might be required,
it is possible for buffer flushes to queue thousands of BIOs to the
thread all at once. This can result in thousands of locked BUFs which
then stall frontend code.
Stall strategy calls (typically the buffer flush code) after queueing
a BIO when the number of pending file BIOs exceeds vfs.hammer2.flush_pipe,
whos value defaults to 100. Hysteresis is set at 3/4ths the value so
a maximum efficiency pipeline is maintained.
* Do not try to update blockrefs in an inode when the inode is flagged
DIRECTDATA. This case can occur when a hardlink is shifted up to a
higher directory. The original inode is converted into an OBJT_HARDLINK
object which has no file data. Fixes a panic.
Summary of changes:
sys/vfs/hammer2/hammer2.h | 8 ++++++
sys/vfs/hammer2/hammer2_flush.c | 34 ++++++++------------------
sys/vfs/hammer2/hammer2_vfsops.c | 53 ++++++++++++++++++++++++++++++++++++++++
sys/vfs/hammer2/hammer2_vnops.c | 5 +++-
4 files changed, 75 insertions(+), 25 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/3f5b8b3b1546a3803bad2d997deefa0f4e30549d
--
DragonFly BSD source repository
More information about the Commits
mailing list