Evaluate using Profile-Guided Optimization (PGO) and Post-Link Optimization (PLO) #1074
zamazan4ik
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi!
Recently I did many Profile-Guided Optimization (PGO) benchmarks on multiple projects (including many databases like PostgreSQL, ClickHouse, Redis, MongoDB, etc.) - the results are available here, database-related results could be checked here. That's why I think it's worth trying to apply PGO to Readyset to improve the application performance/reduce CPU usage.
I can suggest the following things to do:
Here are some examples of how PGO is already integrated into other projects' build scripts:
configure
scriptHere are some examples of how PGO-related documentation could look like in the project:
After PGO, I can suggest evaluating PLO with LLVM BOLT as an additional optimization step after PGO.
Below are listed some LLVM BOLT results:
For trying PGO I recommend using cargo-pgo project.
cargo-pgo
supports both PGO and PLO optimizations (via LLVM BOLT). However, I recommend starting with PGO - it's much more stable compiler optimization compared to BOLT.I found the issue about the benchmark roadmap - #432 . So probably will be a good idea to wait for the benchmark suite stabilization, and only after that try to apply PGO/PLO to Readyset.
I will be happy to answer all your questions about PGO/PLO.
Beta Was this translation helpful? Give feedback.
All reactions