Master branch and 3.0 release branch performance & disk use fixes
dillon at apollo.backplane.com
Tue May 1 19:21:05 PDT 2012
The following fixes have gone into master and also been MFC'd to the
release branch (commitids for master):
kernel - Fix degenerate cluster_write() cases
HAMMER VFS - Only set B_CLUSTEROK on 64K buffers
This fixes a serious performance issue which we introduced when we
turned on the cluster buf code in HAMMER. The code inadvertently
removed a file EOF check that caused fragmentory writes to the
end of a file to immediately flush to disk, greatly reducing filesystem
performance by causing excessive writes to disk as well as temporary
blocking conditions due to the I/O in progress.
Since HAMMER does allocate-on-flush this also caused bloated
filesystem space usage. The space would be recovered automatically
by the nightly hammer cleanup code but in the mean time could eat a
huge amount of space (4x to 25x) when writing out a file.
There was also a 'zeros in file' bug reported for HAMMER which I
believe these commits should get rid of.
<dillon at backplane.com>
More information about the Kernel