-
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
[WIP] Use static linking for compiling rustc
in CI
#97154
Conversation
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit fae59708ce35cf3c5d73eb288d6f1e0c5aac546a with merge 5c22ec7abed954d09c1f8726f66edc9e8173f918... |
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
This comment has been minimized.
This comment has been minimized.
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit 7811e21b019c83921b74d3a2c74c5d31ba9b8200 with merge 6b2bb5ee1378aa8d489d0eff1da01da0f9aa8818... |
💔 Test failed - checks-actions |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit b102ee0ad53a9bd005dcf33ec937d6cba40ca7e5 with merge fdf1a1206ce846c514c1902ab8f9d492612432ec... |
This comment has been minimized.
This comment has been minimized.
☀️ Try build successful - checks-actions |
Queued fdf1a1206ce846c514c1902ab8f9d492612432ec with parent b5caa5a, future comparison URL. |
Finished benchmarking commit (fdf1a1206ce846c514c1902ab8f9d492612432ec): comparison url. Instruction count
Max RSS (memory usage)Results
CyclesResults
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 may lead to changes in compiler perf. Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @bors rollup=never Footnotes |
@bors try @rust-timer queue |
rustc
in CIrustc
in CI
[PERF] Enable LTO for rustc_driver.so Alternative to rust-lang#97154 This enables LTO'ing dylibs behind a feature flag and uses this feature for compiling rustc_driver.so.
Enable LTO for rustc_driver.so Alternative to rust-lang#97154 This enables LTO'ing dylibs behind a feature flag and uses this feature for compiling rustc_driver.so.
☔ The latest upstream changes (presumably #101403) made this pull request unmergeable. Please resolve the merge conflicts. |
I think that we got enough information out of this one. Static linking brings nontrivial improvements for small-ish crates thanks to removing dynamic function resolution, but otherwise it doesn't seem that beneficial now that we can do LTO on |
12ef7a2
to
67160f1
Compare
Reopening to test performance after LTO. @bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit 67160f1 with merge 5305dffdea152e2e6a82f9d20d37392d1e5e051e... |
The job Click to see the possible cause of the failure (guessed by this bot)
|
☀️ Try build successful - checks-actions |
Queued 5305dffdea152e2e6a82f9d20d37392d1e5e051e with parent 2efb0cd, future comparison URL. |
Finished benchmarking commit (5305dffdea152e2e6a82f9d20d37392d1e5e051e): comparison URL. Overall result: ❌✅ regressions and improvements - ACTION NEEDEDBenchmarking 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 may lead to changes in compiler perf. Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @bors rollup=never Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
|
Good, as expected, the gains come mostly from avoiding dynamic linking, but there are not large improvements for larger benchmarks. (The |
I noticed that
rustc
was (probably) being compiled only with thin-local crate LTO (according to https://doc.rust-lang.org/rustc/codegen-options/index.html#lto). Let's see what happens if we compile it with full thin/fat LTO.Current status:
rustc
- perf resultslibrustc_driver.so
(from this PR) - perf resultsr? @ghost