Re: Reading about CoW architecture / Performance Limits

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 10, 2017 at 08:07:39AM +0100, Christian Theune wrote:
> Hi,
> 
> As XFS is gaining CoW support I’d like to understand the
> implementation on a specific aspect: we’re using CoW for making disk
> image backups as image files in btrfs. This has proven prohibitive
> once the chain of CoW reflinks grows too long and everything becomes
> too fragmented. btrfs has improved in some places but the issue still
> persists.

As in making snapshots of a disk image via something like
"cp --reflink=always a.img a.img.20170110" ?

> We’re currently considering to move away from CoW filesystems for our
> use case and implement a higher level strategy. I now wonder whether
> XFS will have the same issue or whether the architecture is different
> in a significant way that will avoid prohibitive performance
> regressions on long CoW chains (think: hundreds to a few thousand).

The primary strategies XFS uses to combat fragmentation are a
combination of reusing the delayed allocation mechanism to defer CoW
block allocation as long as possible in the hopes of being able to make
larger requests; and implementing the "CoW extent size hint" (default 32
blocks or 128K) which rounds the start and end of an allocation request
to the nearest $cowextsize boundary.  So for example if you write to 32
adjacent shared blocks in random order, they'll end up on disk with a
single 128K extent, if possible.

Note also that XFS only performs CoW if the block is shared, so if you
write the same shared block in a file 20 times, the first write goes to
a new block and the next 19 overwrite that new block.  There will not be
another CoW unless you reflink the file again.

> I would appreciate a pointer where to look at - I’m a coder but
> following kernel code to understand architecture hasn’t been
> successful/efficient for me in the past …

You might try reading the huge comment blocks in fs/xfs/xfs_reflink.c.

--D

> 
> Kind regards,
> Christian
> 
> --
> Christian Theune · ct@xxxxxxxxxxxxxxx · +49 345 219401 0
> Flying Circus Internet Operations GmbH · http://flyingcircus.io
> Forsterstraße 29 · 06112 Halle (Saale) · Deutschland
> HR Stendal HRB 21169 · Geschäftsführer: Christian. Theune, Christian. Zagrodnick
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux