Curve is a sandbox project hosted by the CNCF Foundation. It's cloud-native, high-performance, and easy to operate. Curve is an open-source distributed storage system for block and shared file storage.
In the original ARC paper, there was no explanation of how Remove should be handled when the cache is full. The Remove operation would have a side effect on subsequent Put operations when the cache is not full, which is still evicting items even though it's clear that there is no need to evict when the cache is not full.
Now, code has been added to check if the cache is full to avoid performance degradation.
Also fix c_, it should be max_count.
Also add unittest.
What problem does this PR solve?
Issue Number: #2962
Problem Summary:
What is changed and how it works?
What's Changed:
How it Works:
Side effects(Breaking backward compatibility? Performance regression?):
Check List
[ ] Relevant documentation/comments is changed or added
[ ] I acknowledge that all my contributions will be made under the project's license
In the original ARC paper, there was no explanation of how Remove should be handled when the cache is full. The Remove operation would have a side effect on subsequent Put operations when the cache is not full, which is still evicting items even though it's clear that there is no need to evict when the cache is not full.
Now, code has been added to check if the cache is full to avoid performance degradation.
Also fix c_, it should be max_count. Also add unittest.
What problem does this PR solve?
Issue Number: #2962
Problem Summary:
What is changed and how it works?
What's Changed:
How it Works:
Side effects(Breaking backward compatibility? Performance regression?):
Check List