git: kernel - Enhance buffer flush and cluster_write linearity
dillon at crater.dragonflybsd.org
Tue Jun 28 19:00:17 PDT 2016
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Tue Jun 28 18:52:29 2016 -0700
kernel - Enhance buffer flush and cluster_write linearity
* flushbufqueues() was iterating between cpus, taking only one buffer off
of each cpu's queue. This forced non-linearly on-flush, messing up
sequential performance for HAMMER1 and HAMMER2. For HAMMER2 this also
caused physical blocks to be allocated out of order.
Add sysctl vfs.flushperqueue to specify the number of buffers to flush
per cpu before iterating the pcpu queue. Default 1024.
* cluster_write() no longer requires that a buffer be VOP_BMAP()'d
successfully in order to issue writes. This effects HAMMER2, which does
not assign physical device blocks until the logical buffer is actually
flushed to the backend device.
* Fixes non-linearity problems for buffer daemon flushbufqueues() calls,
and for cluster_write() with or without write_behind.
Summary of changes:
sys/kern/vfs_bio.c | 27 +++++++++++++++++----------
sys/kern/vfs_cluster.c | 19 ++++++++++++++++---
2 files changed, 33 insertions(+), 13 deletions(-)
DragonFly BSD source repository
More information about the Commits