On 2015-12-22 04:12, Duncan wrote:
Austin S. Hemmelgarn posted on Mon, 21 Dec 2015 08:36:02 -0500 as
excerpted:

On 2015-12-16 21:09, Christoph Anton Mitterer wrote:

On Tue, 2015-12-15 at 11:00 -0500, Austin S. Hemmelgarn wrote:

nodatacow only [avoids fragmentation] if the file is
pre-allocated, if it isn't, then it still ends up fragmented.

Hmm is that "it may end up fragmented" or a "it will definitely? Cause
I'd have hoped, that if nothing else had been written in the meantime,
btrfs would perhaps try to write next to the already allocated blocks.

If there are multiple files being written, then there is a relatively
high probability that they will end up fragmented if they are more than
about 64k and aren't pre-allocated.

Does the 30-second-by-default commit window (and similarly 30-second-
default dirty-flush-time at the VFS level) modify this at all?  It has
been my assumption that same-file writes accumulated during this time
should merge, increasing efficiency and decreasing fragmentation (both
with and without nocow), tho of course further writes outside this 30-
second window will likely trigger it, if other files have been written in
parallel or in the mean time.

I think it does, but not much, and it depends on the workload. I do notice less fragmentation on the filesystems I increase the commit window on, and more on ones I decrease it, but the difference is pretty small as long as you use something reasonable (I've never tested anything higher than 300, and I rarely go above 60). My guess based on what the commit window is for (namely, it's the amount of time the log tree gets updated before forcing a transaction to be committed) would be that it has less effect if stuff is regularly calling fsync().
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to