Clean-First Dirty-Clustered (CFDC)
Clean-First Dirty-Clustered (CFDC) is a database buffer replacement policy combining clean-page preference with clustered dirty-page eviction.
CFDC separates a working region from a priority region. The latter has a clean queue and dirty-page clusters grouped by page-number range. Within a cluster, pages retain entry order, not address order. If no clean victim is available, eviction takes a page from the lowest-priority cluster. [1]
After a victim is selected, that cluster's priority becomes zero, encouraging subsequent evictions from it. This is not an immediate sorted whole-cluster write: the paper leaves batching and padding as future work. Maintaining cluster priorities also has a CPU cost. [1]
In the database experiment on a 32 GB SLC SATA SSD, CFDC flushed more pages than CFLRU but achieved higher throughput through cheaper page flushes. Neither write count nor hit ratio alone determines elapsed time. The tested device, workload and statically chosen window limit generalization; the paper does not establish superiority over every flash-aware policy. [1]
The paper first separates clean and dirty queues to remove clean-page searches while retaining its CFLRU baseline's hit and write behavior. This implementation improvement is separate from dirty clustering: CFDC adds cluster-based victim selection afterward. Fewer search steps alone do not establish a better eviction policy. [1]
Relations
- related
- Clean-First LRU (CFLRU), Least recently used replacement, Write-back cache, Locality of reference, Write combining
Limitations
- Logical page-number proximity does not expose physical NAND placement behind an FTL, so locality-based write savings remain device- and workload-dependent. [1]
Citations
Sources & caveats
- Historical database-buffer experiment; no modern-device speedup or replication is claimed.
- Hesela's accompanying accounting model implements only fixed-window CFLRU, not CFDC.
- The tested database engine was XTC and the SSD was a MTRON MSP-SATA7525. [1]