Re: What's the benefit of COW without checksum?

Chris Mason
2010-01-26T19:07:05Z

On Tue, Jan 26, 2010 at 03:15:08PM +0800, Zhu Yanhai wrote:
> Hi Chris,
> According to my understanding, COW in Btrfs services for 1) snapshots
> capacities 2) keeping checksum consistent with FS data,
> that's why nodatacow implies nodatasum. And COW will still happen for
> snapshots even under 'nodatacow'.
>
> So could you please tell me what can we get from COW if not computing
> checksum (nodatasum)? That's to say, if some user decides to
> disable checksum, do you think it's fine for him to just mount with
> 'nodatacow'? Or there's still some reason for him to use bare 'nodatasum'?

COW does have advantages in some workloads, basically where you end up
putting fresh data modifications close to each other. This is
especially true on some ssds that work best when writing large groups of
contiguous data.

Mail server workloads often benefit from cow as well. Especially with
the intel crc32c extensions, the checksumming is becoming less and less
expensive on modern hardware. I don't expect many people to turn it
off.

nodatacow on the other hand has a big impact on database workloads. The
random over-write performance goes down significantly when cow is on
because the extents become very small and the amount of metadata needed
to track them becomes very large.

So, nodatacow is likely to be used often, while nodatasum is probably
only going to be used by people trying to figure out how big the impact
of checksumming is on performance.

-chris