-
-
Notifications
You must be signed in to change notification settings - Fork 34
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
Comments
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! |
Thanks a lot for your comment!
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. |
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.
The text was updated successfully, but these errors were encountered: