Faster and Smaller qcow2 Files With Subcluster-based Allocation
summary
Adds sub-cluster allocation via new extended L2 entries that split large qcow2 clusters into independently allocatable sub-clusters, reducing copy-on-write and image bloat while keeping L2 metadata small. Tests show up to ~10x higher IOPS and real-world peaks of ~12–13k IOPS when sub-cluster size matches 4k requests, and random-write images drop from 1.6 GB (64k clusters) to far smaller sizes. Feature is in the QEMU repo, targets v5.2, and requires building from source to test.
AI-written summary · about
chapters (22)
- 0:00Intro
- 0:17The qcow2 file format
- 1:06Structure of a qcow2 file
- 1:53copy-on-write means more I/O
- 3:18copy-on-write means more used space
- 4:58Decreasing the cluster size
- 5:23Smaller clusters mean more metadata
- 6:12The L1 table
- 7:20L2 metadata size
- 7:41Accessing L2 metadata
- 8:57Reference counts
- 9:29The overhead of having to allocate clusters
- 10:09The situation so far
- 10:55Subcluster allocation: what it looks like
- 11:17L2 tables in details
- 11:52Extended L2 entries
- 12:27Two use cases for subcluster allocation
- 13:03less copy-on-write means faster I/O
- 14:08less copy-on-write means less used space
- 14:36larger clusters mean less metadata
- 16:48Implementation status
- 17:43Acknowledgments
related talks
25mExploring Intel Sub-Page Protection in Context of Live Migration
21mNVMe Emulation Performance Optimization
25mStreamlined Efficiency: Unshackling Kubernetes Image Volumes for Rapid AI Model...
40mAchieving the Ultimate Performance with KVM
25mXen and XenServer Storage Performance
20mBackground Snapshots in QEMU: Towards Asynchronous Revert
38mExploring Distributed Caching for Faster GPU Training with NVMe, GDS, and RDMA
26mAnalysis of AMD HW-assisted vIOMMU Implementation and Performance
