[dm-devel] [RFC] dm-thin: Heuristic early chunk copy before COW

Eric Wheeler dm-devel at lists.ewheeler.net
Wed Mar 8 18:17:51 UTC 2017


Hello all,

For dm-thin volumes that are snapshotted often, there is a performance 
penalty for writes because of COW overhead since the modified chunk needs 
to be copied into a freshly allocated chunk.

What if we were to implement some sort of LRU for COW operations on 
chunks? We could then queue chunks that are commonly COWed within the 
inter-snapshot interval to be background copied immediately after the next 
snapshot. This would hide the latency and increase effective throughput 
when the thin device is written by its user since only the meta data would 
need an update because the chunk has already been copied.

I can imagine a simple algorithm where the COW increments the chunk LRU by 
2, and decrements the LRU by 1 for all stored LRUs when the volume is 
snapshotted. After the snapshot, any LRU>0 would be queued for early copy.

The LRU would be in memory only, probably stored in a red/black tree. 
Pre-copied chunks would not update on-disk meta data unless a write occurs 
to that chunk. The allocator would need to be updated to ignore chunks 
that are in the LRU list which have been pre-copied (perhaps except in the 
case of pool free space exhaustion).

Does this sound viable?

--
Eric Wheeler




More information about the dm-devel mailing list