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
-
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