Skip to content
Book Open access

io.stream: cgroup-Granular FDP for Unmodified Workloads

Sep 2026 · Proceedings of the 18th ACM Workshop on Hot Topics in Storage and File Systems · 0 citations · 4 references

Abstract

NVMe Flexible Data Placement (FDP) lets a host steer writes into separate device reclaim units so that data with similar lifetime is erased together, cutting write amplification and the cost of over-provisioning. Linux now carries FDP placement through block-layer write streams, but the only way to set one demands application cooperation: a per-I/O stream on direct I/O via io_uring, leaving FDP out of reach for the unmodified, buffered-I/O workloads that dominate most deployments. We propose io.stream, a new file in the cgroup v2 I/O controller that turns the cgroup—the unit at which systems are deployed, and whose label already rides every data write bio even under buffered writeback—into the placement producer. An operator who can name its tenants’ relative lifetimes assigns a placement stream to a cgroup, and the kernel stamps every data write from that cgroup with the corresponding FDP placement identifier—no application change, on any I/O path. We implement it in Linux 7.0 in roughly 300 lines. Evaluating across raw, ext4, and xfs paths, we find io.stream holds the write-amplification factor (WAF) at an optimal 1.0 when tenants are fully isolated, and drives it down as the user data is partitioned along lifetime—including on four unmodified containers. When cgroups outnumber the device’s streams, what matters is the mapping’s coherence, not its stream count: a lifetime-aware many-to-one collapse matches per-cgroup isolation with a fraction of the streams, while a lifetime-oblivious one can leave WAF no better than no FDP at all. Supplying this coherence online is the policy question io.stream opens.

Read PDF

We use cookies to run the site and, with your consent, for analytics and to show ads. See our Cookie Policy.