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

Evaluate Profile-Guided Optimization (PGO) #430

Open
zamazan4ik opened this issue Jul 6, 2023 · 2 comments
Open

Evaluate Profile-Guided Optimization (PGO) #430

zamazan4ik opened this issue Jul 6, 2023 · 2 comments
Assignees
Labels
enhancement New feature or request

Comments

@zamazan4ik
Copy link

Hi!

Recently I tested a lot of software with PGO and measured the performance improvements from PGO - the results are here. Since my results show interesting improvements on a lot of databases (including key-value stores like Redis) I think it would be a good idea to measure PGO effects on Cachegrand as well. If the results will show an improvement - would be great to see a note in the documentation about PGO.

@danielealbano
Copy link
Owner

Hi @zamazan4ik,

Yes, PGO is a very interesting topic, in cachegrand we do a fair amount of manual optimizations unrolling loops and using ad-hoc attributes to optimize the branching of the hot path but of course it can really help a lot to do it.

The issue though is that cachegrand codebase tries to minimize the branching in the hotpath, favouring small hashtables, and most of the time is spent during I/O on the kernel side.

It is fair to say though that having a generalized memtier run on a bunch of different commands might lead to some generalized performance improvements so I will definitely give it a try.

Thanks for bringing it up!

@danielealbano danielealbano self-assigned this Jul 6, 2023
@danielealbano danielealbano added the enhancement New feature or request label Jul 6, 2023
@zamazan4ik
Copy link
Author

Thanks a lot for your comment!

It is fair to say though that having a generalized memtier run on a bunch of different commands might lead to some generalized performance improvements so I will definitely give it a try.

Even if it doesn't bring a "generalized" improvement, it can bring a higher improvement on one specific workload. It's still a good result for some users. E.g. in this case they could estimate that for some specific workload, Cachegrand could be optimized further with PGO. Even if in this case you cannot provide an optimized binary to your users - they would be able to do PGO optimization on their own workload, based on PGO notes from Cachegrand documentation.

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

No branches or pull requests

2 participants