-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Enable PGO for LLVM on x86_64-unknown-linux-gnu in CI #87940
Conversation
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit b3771e03a433c2cce572d4f039e891d759243343 with merge e0143fd4632a9cb683a86475c0ef60f1e05399d2... |
💔 Test failed - checks-actions |
This comment has been minimized.
This comment has been minimized.
b3771e0
to
56493a3
Compare
@bors try |
⌛ Trying commit 56493a33fe1013ea02fc39fff2f608526d945668 with merge 9bb62366c0301aee13828ecc85dd5f45fc117919... |
☀️ Try build successful - checks-actions |
Queued 9bb62366c0301aee13828ecc85dd5f45fc117919 with parent 362e0f5, future comparison URL. |
Finished benchmarking try commit (9bb62366c0301aee13828ecc85dd5f45fc117919): comparison url. Summary: This change led to significant mixed results 🤷 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. Next Steps: If you can justify the regressions found in this perf run, please indicate this with @bors rollup=never |
56493a3
to
e786812
Compare
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit e78681221bdd84dc8a8015722ac88cda6ead5ada with merge 5a8fff39d29259612bca8313679d03695e0c4fed... |
@bors try- try |
⌛ Trying commit 5ab3c65c01c791610b60d12e3092f69608cc057c with merge 1c2981c1e35355691fecc49c175621e7b7170641... |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
@bors retry |
⌛ Trying commit 926931d9603931dbdc1d77b14549c99a92074025 with merge 148f4b24096abff7e78ff2df8dbbfe1c13a2718d... |
☀️ Try build successful - checks-actions |
926931d
to
c5dbe58
Compare
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit c5dbe5882e753f72a065a8a7b3386bffab1d3f37 with merge b8cc94067a73f2558b2ee1050882b7bdc0545a8b... |
☀️ Try build successful - checks-actions |
Queued b8cc94067a73f2558b2ee1050882b7bdc0545a8b with parent dfe5fd0, future comparison URL. |
RUN curl -LS -o perf.zip https://github.com/rust-lang/rustc-perf/archive/$PERF_COMMIT.zip | ||
RUN unzip perf.zip && mv rustc-perf-$PERF_COMMIT rustc-perf |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You may want to do this in a single RUN
command removing perf.zip
afterwards to reduce the image size. Docker creates a new layer for each RUN
command AFAIK.
Finished benchmarking try commit (b8cc94067a73f2558b2ee1050882b7bdc0545a8b): comparison url. Summary: This change led to significant mixed results 🤷 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. Next Steps: If you can justify the regressions found in this perf run, please indicate this with @bors rollup=never |
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit 754c39c7ccd4c8a89ba1b6789d563fa38b62b362 with merge 9b6451fdf3633e1c4602c1645ca577abd8efdb32... |
☀️ Try build successful - checks-actions |
Queued 9b6451fdf3633e1c4602c1645ca577abd8efdb32 with parent c0490a2, future comparison URL. |
Finished benchmarking try commit (9b6451fdf3633e1c4602c1645ca577abd8efdb32): comparison url. Summary: This change led to significant mixed results 🤷 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. Next Steps: If you can justify the regressions found in this perf run, please indicate this with @bors rollup=never |
This shows up to 5% less instruction counts on multiple benchmarks, and up to 19% wins on the -j1 wall times for rustc self-compilation. We can afford to spend the extra cycles building LLVM essentially once more for the x86_64-unknown-linux-gnu CI build today. The builder finishes in around 50 minutes on average, and this adds just 10 more minutes. Given the sizeable improvements in compiler performance, this is definitely worth it.
754c39c
to
dd9a970
Compare
Going to close this in favor of a new PR to ease discussion & review, given the large number of comments here. |
Particularly for optimized builds, rustc spends a good amount of time in LLVM
builds, so it is hopeful that this will be worthwhile.
We can likely afford to spend the extra cycles building LLVM 1-2 times per CI
build today on x86_64-unknown-linux-gnu: the builder finishes in around 50
minutes, whereas our long pole is around 2-3 hours. For try builds this is less
clear, but we will see what the impact is in this PR.
r? @ghost for now while we run perf -- and I still need to polish the code into less ad-hoc reuse of the rust pgo options for LLVM.