-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Description
Preliminary note: this may or may not be related to #43141, but just in case, I file this separately instead of piling up there.
I'm sorry I don't have much more fine-grained data at the moment, but -Ztime-passes, when multiple things are built in parallel (while building Firefox), is not entirely helpful, because it doesn't tell to which crate the interleaving numbers belong to.
Rust build times on Firefox are already bad with 1.18. Some of the most time consuming crates have build times that look like the following:
- 74.992975322 webrender
- 99.960699075 geckoservo
- 259.393332042 gkrust
- 259.639402886 gkrust_gtest
- 363.456949809 style
With the latest nightly as of writing (1.20.0-nightly (f85579d 2017-07-12)), those times become:
- 85.71714646 webrender
- 124.097890719 geckoservo
- 384.619852505 gkrust_gtest
- 396.106775997 gkrust
- 455.281318295 style
I'm trying to narrow it down to older nightlies, but it started badly, because I got an ICE building the style crate on the last 1.18.0 nightly (2017-04-29)
Those are times for --release with lto enabled (I have a separate bug to file about lto, but I don't think that's relevant to this regression).
Activity
glandium commentedon Jul 13, 2017
Mmmmm with 1.19.0-nightly (75b0568 2017-05-15):
With 1.19.0-nightly (d3abc80 2017-05-09):
There would seem to be different regression points for different things, and early in the 1.19 development, at that (I tried 75b0568 because of range given in #43141 )
Also note that the order in which the mentioned crates are built is webrender, style, geckoservo, gkrust, gkrust_gtest (the last two are interchangeable depending on timing), and are all happening sequentially because, to simplify things, they are a dependency chain (except webrender, which may build in parallel of style, but it's not like it would matter much).
Also note that this long tail of builds takes so long that by the time geckoservo starts to build after style, there's only that happening on the build machine (everything C++ that doesn't depend on rust is done), and in fact, style has been the only thing happening on the build machine for a while too...
glandium commentedon Jul 13, 2017
Note, I'm not excluding that as a counterpart, the resulting builds might have better code, but I haven't verified that (and I don't know which specific tests in the Firefox test suites would tell me that about the rust code)
alexcrichton commentedon Jul 13, 2017
cc @rust-lang/compiler
arielb1 commentedon Jul 13, 2017
@glandium
I remember that LLVM 4.0 introduced a 10% regression in LLVM passes time, but that was #40123 (merged Apr 24).
brson commentedon Jul 13, 2017
P-?
michaelwoerister commentedon Jul 17, 2017
It would be interesting to know if turning off LTO makes a difference here.
nikomatsakis commentedon Jul 17, 2017
More data points would also be useful -- how hard are they to gather?
glandium commentedon Jul 17, 2017
What kind of data points? Different versions? Different configurations?
michaelwoerister commentedon Jul 17, 2017
@glandium Different Rust versions, yes, and if possible, timings for specific passes.
michaelwoerister commentedon Jul 17, 2017
Some more questions:
./mach build
?servo
subdirectory but that did not seem to do anything)25 remaining items
alexcrichton commentedon Aug 11, 2017
@arielb1 I haven't had much time personally to look into the allocator-related regressions yet. Where'd you find the 5% number from, though? Is there perhaps a suspect commit on perf.rust-lang.org?
arielb1 commentedon Aug 13, 2017
@alexcrichton
That's from @glandium's numbers
style
was affected by #43572, but for the other crates it looks like about 5%nikomatsakis commentedon Aug 17, 2017
triage: P-medium
Discussed this in the @rust-lang/compiler meeting. We decided to downgrade this to P-medium, since the immediate problem has been resolved, though we will want to revisit (and perhaps upgrade priority again) in the future.
alexcrichton commentedon Aug 28, 2017
1.20 will soon be stable
cyplo commentedon Apr 15, 2018
Heya !
Some perf improvements landed in 2018, including incremental compilation, I wonder if they helped in this case ?
Enselic commentedon Sep 28, 2023
Triage: No one said it did not help, so let's assume it did! Closing.