-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Try to enable PGO #25500
Comments
Thanks for sharing the idea, overall PGO sounds good to me. |
Yep, I've seen the discussion about LTO. I just didn't want to mix the discussion about LTO and PGO into the same issue. If you think that the issue about PGO should be discussed as yet another default compiler flag - feel free to mention it in #4159. However, I recommend to track it separately since PGO requires a little bit more work around it. |
I've added the comment to link a related issue/PR so that when someone attempts to build with PGO this may help them. |
I just finished some Profile-Guided Optimization (PGO) benchmarks for Envoy and want to share my results. Test environment
Benchmark setupAn idea of how to do the benchmark I got from the Rathole benchmark guide for HTTP load. So I implemented the same benchmark for Envoy: As a benchmark tool, I use Nighthawk with this command line: Envoy was tested with this command line:
Optimization stepsRelease Envoy is built with Envoy PGO is built in the following steps:
In the last step, there is one tricky place - you need to somehow mount your PGO profile into the container since here I used the Docker build configuration. I resolved it by putting this line to the root ResultsIn short, I get the following RPS results from Nighthawk:
More detailed reports from Nighthawk are available here:
According to the tests, PGO helps a lot with optimizing Envoy's performance (from latency and throughput perspectives). Possible further stepsI can suggest the following action points:
Maybe testing Post-Link Optimization techniques (like LLVM BOLT) would be interesting too but I recommend starting from the usual PGO. Found caveats / interesting details
Useful linksMuch more results about PGO, its results on different kinds of software, possible caveats, PGO tricky moments, and much more you can find in my repo here. |
Title: Enable PGO for Envoy
Description:
Profile-Guided Optimization (PGO) allows gaining additional performance for the software since it uses runtime profile information to perform more advanced optimization during the compilation process. I guess it could be useful for Envoy.
Possible steps:
Possible future steps for improving:
[optional Relevant Links:]
The text was updated successfully, but these errors were encountered: