-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Consider using LTO + PGO + Bolt #592
Comments
Thank you for suggesting this enhancement. Definitely something we gonna explore in the future. By the way, we already use "-flto" in our release pipeline. Having said that, based on my experience with Dragonfly, the majority of the CPU there is spent in the kernel, especially with higher throughput. Another (much smaller) part is spent around Boost.Fibers. I yet need to see the use-case where Dragonfly can benefit from these optimzations. |
I just finished benchmarking Redis with PGO - link. I think these results can be useful for DragonflyDB too. |
I did some testing of PGO applied to DragonflyDB. Test environment
Tested configurationsI have tested the following DragonflyDB configurations:
As a PGO technique, I use BenchmarkI use ResultsAll configurations are benchmarked on the same machine, with the same DragonflyDB configuration, multiple times, etc. The results are shown in Release
Release + PGO
Maybe on some other loads the win will be bigger. Also, didn't test BOLT ( |
We use LTO today, and currently do not plan to use PGO/Bolt |
Did you search GitHub Issues and GitHub Discussions First?
Yes, no results.
Is your feature request related to a problem? Please describe.
Not a problem - an opportunity.
Describe the solution you'd like
DragonflyDB right now does not support building with more advanced optimization techniques like PGO and BOLT. This tooling has an increasing adoption in the community as a tool to additionally optimize programs. With this tooling, there is a huge chance to gain even more performance "for free".
Here I suggest considering an option at least to play with LTO + PGO + Bolt pipeline (or any combination of them) and test, does it give a performance to the project or not. If yes, would be awesome to have prebuilt binaries with more advanced optimization from the scratch. Also, for the users will be helpful to have the ability to tweak manually their own binaries to their own workloads with the integrated into the build scripts functionality.
Also, there are some caveats to consider like:
Links:
The text was updated successfully, but these errors were encountered: