Object caching is a great use case for SSDs but it comes with a big device write amplification penalty - often as much as 50%  of the capacity is reserved for over-provising to reduce the impact of this on conventional SSDs.
There is a great opportunity to adress this problem using zoned storage, as the garbage collection can be co-designed with the cache eviction policy.
Objects stored in flash caches have a limited life time and a common approach to eviction is to simply throw out the oldest objects in the cache to free space. Conventional drives have no notion of how old objects are and are not allowed to just throw out data out of erase units on the drive to reclaim space. If the garbage collection of the drive data is done cooperatively with a ZNS cache FTL on the host however, objects can be chosen to be evicted in stead of relocated when space is reclaimed.
To get there, we will need an ZNS cache FTL and an interface between the FTL and the cache implementation for indicating which LBAS that should be re-located or invalidated to minimize write amplification.
How could this be implemented? What options do we have? A ZNS Cache userspace library? A cache block device?
The user/integration point of this I have in mind would be Cachelib , what other potential users do we have?
This is a great opportunity to work together on a common solution for several use cases and vendors, pushing the eco-system forward!
|I agree to abide by the anti-harassment policy||Yes|