This PR adds the support for CacheLib working on ZNS SSD. With the chnages, the CacheLib is able to reduce the device-side write amplification (WA) and TCO in hybrid storage cache (DRAM and NVMe SSD).
For BlockCache object, the LOC region is configured to be aligned with the zone size, when the region is evicted, the zone is reclaimed (explicit reset command) as well, there is no valid data movement by GC. To enhance the performance, the PR also implements data striping approach. Multipe zones are grouped as a region and the data are striped into multiple slices then write into zones.
For BigHash, set is configured to align with ZNS SSD page size (e.g. 4KB). When the zone is filled with set, allocate a new zone to store sets. While all sets are evicted, the zone is reclaimed fore reuse.
The PR introduces a new class ZNSDevice in device layer to support ZNS SSD with regular block interface semantics.
This PR adds the support for CacheLib working on ZNS SSD. With the chnages, the CacheLib is able to reduce the device-side write amplification (WA) and TCO in hybrid storage cache (DRAM and NVMe SSD).
For BlockCache object, the LOC region is configured to be aligned with the zone size, when the region is evicted, the zone is reclaimed (explicit reset command) as well, there is no valid data movement by GC. To enhance the performance, the PR also implements data striping approach. Multipe zones are grouped as a region and the data are striped into multiple slices then write into zones.
For BigHash, set is configured to align with ZNS SSD page size (e.g. 4KB). When the zone is filled with set, allocate a new zone to store sets. While all sets are evicted, the zone is reclaimed fore reuse.
The PR introduces a new class ZNSDevice in device layer to support ZNS SSD with regular block interface semantics.