Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal to Integrate SIEVE Eviction Algorithm #164

Open
yazhuo opened this issue Dec 25, 2023 · 11 comments
Open

Proposal to Integrate SIEVE Eviction Algorithm #164

yazhuo opened this issue Dec 25, 2023 · 11 comments

Comments

@yazhuo
Copy link

yazhuo commented Dec 25, 2023

Hi there,

Our team (@1a1a11a) has developed a new cache eviction algorithm, called SIEVE. It’s simple, efficient, and scalable.

Why SIEVE could be a great addition:

  • Simplicity: Integrating SIEVE is straightforward, usually needing to change less than 20 lines of code on average.
  • Efficiency: On skewed workloads, which are typical in web caching scenarios, SIEVE is top-notch.
  • Cache Primitive: SIEVE is not just another algorithm; it's a primitive that could enhance or replace LRU/FIFO queues in advanced systems like LeCaR, TwoQ, ARC, and S3-FIFO.

Welcome to dive into the details on our website sievecache.com and on our SIEVE blog.

We would love to explore the possibility of integrating SIEVE into golang-lru. We believe it could be a beneficial addition to the library and the community.

Looking forward to your feedback!

@venkatsvpr
Copy link

I have been using golang-lru repo for many years now. Thanks everyone who contributed.

I read the Sieve paper and it is super cool. I would like to volunteer to integrate sieve into golang-lru.

Thanks!

cc - @yazhuo

@1a1a11a
Copy link

1a1a11a commented Jan 15, 2024

Awesome! Let us know if you need any help or have any question. :)

@yazhuo
Copy link
Author

yazhuo commented Jan 15, 2024

@venkatsvpr Great to hear from you! Thanks for your support.

Btw, I think it might be better to integrate SIEVE in an opt-in manner.

@venkatsvpr
Copy link

Thanks @1a1a11a @yazhuo

Yes - Agree!

@venkatsvpr
Copy link

Hi folks, @irenarindos @mgaffney @paskal

Want to touch base with you to see if the proposal make sense to you.

Thanks!

@mgaffney
Copy link
Member

Hi!

We are interested in seeing a more detailed proposal. Keep in mind that any proposed changes should not change the default behavior or characteristics of the current v2 implementation (meaning using SIEVE would have to be optional). We could then gather feedback from users and consider making it the default in the next revision (v3).

@venkatsvpr
Copy link

Hi @mgaffney Thanks for getting back.

I have added two New methods (NewSieve and NewSieveWithEvict) which would work with SIEVE evicition.

Please take a look at this PR and add your comments.

@mgaffney
Copy link
Member

@venkatsvpr that PR is not for this repo

@venkatsvpr
Copy link

venkatsvpr commented Jan 18, 2024

Yes. Let me complete the PR and send out another PR for this repo. Thanks!

@venkatsvpr
Copy link

venkatsvpr commented Jan 25, 2024

I've updated the PR #169

Please take a look.mgaffney

Also, if & when there is a v3 version, It'd be great with the change the New signature. This would make us future proof the new changes we might have. (like sieve)

@venkatsvpr
Copy link

venkatsvpr commented Feb 5, 2024

@mgaffney Did you get a chance to check out the PR #169
Let me know if I can be of any help.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants