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

Roadmap of upcoming major features #404

Closed
3 of 7 tasks
jrosdahl opened this issue May 1, 2019 · 22 comments
Closed
3 of 7 tasks

Roadmap of upcoming major features #404

jrosdahl opened this issue May 1, 2019 · 22 comments

Comments

@jrosdahl
Copy link
Member

jrosdahl commented May 1, 2019

What's this?

This issue tracks major features that I (@jrosdahl) would like to see for ccache in the future. The tasks are roughly in a logical implementation order, but many can be worked on in parallel.

I will split the tasks to separate issues when time allows.

Roadmap

@afbjorklund
Copy link
Contributor

I am obviously in favor of 1, 2 and 3, since I suggested them. There are other checksums and other compressions, but those two are the best ones for the purpose IMHO. Should also mention that just like gzip, lz4f also has a "HC" option (like --best) that allows for recompressing for smaller size. The decompression speed is the same, it is only the compression speed that differs between the "levels".

@afbjorklund
Copy link
Contributor

The main purpose of the memcached backend is to be able to share cache over network between different computers. If you just want to put your cache in memory, you can use /dev/shm (ramdisk) already today. The choice of memcached for this is because it has been around for long and because it is fastest, but it does have some drawbacks like a 1M maxmum value size limit (worked around by splitting up data...)

@jrosdahl
Copy link
Member Author

jrosdahl commented May 2, 2019

I am obviously in favor of 1, 2 and 3, since I suggested them.

Great!

Just for the record, I have been considering single-result files for a long time. Bullet 2 and 3 are indeed inspired by your work and ideas, thanks!

There are other checksums and other compressions, but those two are the best ones for the purpose IMHO

Yes, I have made a similar evaluation and came to the same conclusion (using LZ4 for a ccache-like tool at work).

The main purpose of the memcached backend is to be able to share cache over network between different computers.

Of course.

@afbjorklund

This comment has been minimized.

@afbjorklund
Copy link
Contributor

@pavsa

This comment has been minimized.

@pavsa

This comment has been minimized.

@afbjorklund

This comment has been minimized.

@afbjorklund
Copy link
Contributor

afbjorklund commented May 5, 2019

For stats, see #168 (and I'm sure the whole "stats" system could use a similar overhaul to the .result)
@jrosdahl mentions that he has some secret special plans for improving cleanup, so maybe stats too ?

One long outstanding feature is to have stats per-build in addition to per-cache, mentioned in #262
So having multiple stats would be a good idea to plan, if designing a "stats" file replacement / addition.

@pavsa

This comment has been minimized.

@afbjorklund

This comment has been minimized.

@pavsa

This comment has been minimized.

@afbjorklund

This comment has been minimized.

@pavsa

This comment has been minimized.

@jrosdahl

This comment has been minimized.

@jonesmz
Copy link

jonesmz commented Nov 14, 2019

Another candidate for distribute object caching, in addition to memcached, would be the Ceph rados object storage api

@afbjorklund
Copy link
Contributor

Another candidate for distribute object caching, in addition to memcached, would be the Ceph radios object storage api

The workaround for now would be to use CephFS, but it could be interesting to compare that with using librados instead

@jonesmz
Copy link

jonesmz commented Nov 14, 2019

I expect that the largest difference would come from avoiding the FUSE filesystem layer, with the second largest savings coming from skipping the metadata server.

@afbjorklund
Copy link
Contributor

afbjorklund commented Nov 15, 2019

I expect that the largest difference would come from avoiding the FUSE filesystem layer, with the second largest savings coming from skipping the metadata server.

Please open a separate feature request about this, so that the discussion can be moved there...

@iveqy
Copy link

iveqy commented Sep 8, 2020

If I understand it correctly memcached is limited by RAM size while redis support cluster of redis instances. Even if memcached is faster/more mature it seems as it is easier to implement redis from a ccache perspective for large workloads. Or do I miss something?

@afbjorklund
Copy link
Contributor

If I understand it correctly memcached is limited by RAM size while redis support cluster of redis instances. Even if memcached is faster/more mature it seems as it is easier to implement redis from a ccache perspective for large workloads. Or do I miss something?

Please move discussion to a separate issue, thanks. (it was easier, but the libmemcached implementation had optimizations)

@jrosdahl
Copy link
Member Author

jrosdahl commented Jun 6, 2021

I'm closing this tracking issue now since it's obsolete. See also discussion in #414 and the Storage backends project.

@jrosdahl jrosdahl closed this as completed Jun 6, 2021
@jrosdahl jrosdahl removed the feature New or improved feature label Jun 6, 2021
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

5 participants