Add Sieve implementation and Integrate Sieve into Cachebench #336
+1,071
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Sieve is a FIFO-based eviction algorithm recognized for its throughput and scalability. We’ve integrated Sieve as a new MMContainer option. During testing with key-value traces and synthetic traces using
cachebench
, Sieve demonstrated a comparable or higher hit ratio while achieving higher scalability compared to other algorithms.Testing Constraints:
Due to hardware limitations, we capped the amplification factor at 10 and set the cache size to 40GB (approximately 10% of the total cache footprint) and 10GB. The results are shown here:
40GB_t1_lru,lru2q,sieve_243.pdf
40GB_t20_lru,lru2q,sieve_195.pdf
10GB_t1_lru,lru2q,sieve_500.pdf
10GB_t1_lru,lru2q,sieve_195.pdf
Throughput Considerations:
Please note that throughput during testing was constrained by the CSV generator. In synthetic trace tests, Sieve achieves higher get rates and hit ratios:
8192MB_t48_lru,lru2q,sieve.pdf
How to Use Sieve:
To utilize Sieve, specify it as an allocator using
cachelib::SieveAllocator
.