git: BIOQ - Create a more sophisticated bursting mechanic for writes.
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Aug 19 23:38:05 PDT 2009
commit 4afeea0db0b1a8e6b5132e06a39111a64ad2487e
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed Aug 19 23:27:58 2009 -0700
BIOQ - Create a more sophisticated bursting mechanic for writes.
* Add sysctls:
vfs.bioq_reorder_minor_interval
vfs.bioq_reorder_minor_bytes
vfs.bioq_reorder_burst_interval
vfs.bioq_reorder_burst_bytes
* Reads are prioritized over writes. Every N (minor_interval) reads
up to (minor_bytes) worth of writes are allowed in order to avoid
complete write starvation (which is just as bad as complete read
starvation).
* If a large amount of write data is queued to devices the related
buffer cache buffers will be locked. This is not a good place to
be as any readers trying to access those buffers will then also
block.
When the amount of data is excessive the (burst_interval) and
(burst_bytes) comes into play. This primarily helps HAMMER
flush cycles.
* Try to keep vfs.hirunningspace reasonably bounded. We do not want
too large a value because of the above buffer locking issue. On
the flip side, we can have large numbers of delayed-write dirty buffers
sitting around because they aren't locked.
* When the buffer cache is hitting hidirtybufspace the buffer daemons
now try to keep the vfs.runningbufspace at hirunningspace levels
instead of lorunningspace levels in order to trigger the bioq's
bursting mode.
Summary of changes:
sys/dev/disk/nata/ata-queue.c | 4 +-
sys/kern/subr_disk.c | 83 +++++++++++++++++++++++++++++++----------
sys/kern/vfs_bio.c | 77 ++++++++++++++++++++++++++++----------
sys/sys/buf.h | 7 ++-
4 files changed, 127 insertions(+), 44 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4afeea0db0b1a8e6b5132e06a39111a64ad2487e
--
DragonFly BSD source repository
More information about the Commits
mailing list