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 using Profile-Guided Optimization (PGO) and LLVM BOLT #1131

Open
zamazan4ik opened this issue Oct 29, 2023 · 0 comments
Open

Evaluate using Profile-Guided Optimization (PGO) and LLVM BOLT #1131

zamazan4ik opened this issue Oct 29, 2023 · 0 comments

Comments

@zamazan4ik
Copy link

Hi! A few days ago I read the article about PostgresML migration from Python to Rust. I was especially interested in your performance results since I have an additional idea of how it's possible to potentially improve the PostgresML performance.

Recently I checked Profile-Guided Optimization (PGO) improvements on multiple projects - the results are available here. According to the tests, PGO helps with achieving better performance in many software applications like databases, compilers, network applications, etc. I think trying to optimize PostgresML with PGO can be a good idea.

I can suggest the following action points:

  • Perform PGO benchmarks on PostgresML. If it shows improvements - add a note to the documentation about possible improvements in PostgresML's performance with PGO. PGO documentation examples in different projects you can find here.
  • Providing an easier way (e.g. via a build option) to build PostgresML with PGO can be helpful for the end-users and maintainers since they will be able to optimize PostgresML according to their own workloads.
  • Optimize pre-built PostgresML binaries with PGO.

Testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too (Clang and Rustc already use BOLT as an addition to PGO) but I recommend starting from the usual PGO.

For the Rust projects, I recommend starting with cargo-pgo. More details about PGO support in Rust can be found in the official docs.

Here are some examples of how PGO optimization is integrated in other projects:

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

No branches or pull requests

1 participant