  Log-structured storage has been widely deployed in various domains of storage
systems, yet its garbage collection incurs write amplification (WA) due to the
rewrites of live data. We show that there exists an optimal data placement
scheme that minimizes WA using the future knowledge of block invalidation time
(BIT) of each written block, yet it is infeasible to realize in practice. We
propose a novel data placement algorithm for reducing WA, SepBIT, that aims to
infer the BITs of written blocks from storage workloads and separately place
the blocks into groups with similar estimated BITs. We show via both
mathematical and production trace analyses that SepBIT effectively infers the
BITs by leveraging the write skewness property in practical storage workloads.
Trace analysis and prototype experiments show that SepBIT reduces WA and
improves I/O throughput, respectively, compared with state-of-the-art data
placement schemes. SepBIT is currently deployed to support the log-structured
block storage management at Alibaba Cloud.
