2022-10-26 Triage Log

An amazing week. We saw more wins than losses; I want to call out specifically the wins from removing attributes from metadata (up to 8.2% faster builds for 18 benchmarks) and from enabling LTO for rustc_driver.so (up to 9.6% faster builds for an epic 230 benchmarks, with zero regressions).

Triage done by @pnkfelix. Revision range: e0f8e60d..629a414d

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.7%[0.7%, 0.7%]2
Improvements ✅
(primary)
-4.3%[-9.4%, -0.4%]231
Improvements ✅
(secondary)
-4.4%[-9.5%, -0.5%]256
All ❌✅ (primary)-4.3%[-9.4%, -0.4%]231

2 Regressions, 6 Improvements, 2 Mixed; 2 of them in rollups 53 artifact comparisons made in total

Regressions

Add default trait implementations for “c-unwind” ABI function pointers #101263 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.9%[0.2%, 2.6%]19
Regressions ❌
(secondary)
1.9%[0.4%, 3.0%]23
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.9%[0.2%, 2.6%]19
  • already triaged; all doc perf regressions, and already deemed acceptable.

Rollup of 10 pull requests #103562 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.4%]43
Regressions ❌
(secondary)
0.5%[0.2%, 1.2%]25
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.3%[0.2%, 0.4%]43
  • all of the primary regressions (which seem small) are all in incr-patched scenarios. Most are also check builds, though there is some debug and opt mixed in as well.
  • hard to tell from the list of rolled up PR's which one(s) would be to blame here
  • w.r.t. the secondary benchmarks, the main contributor (in terms of the max regression observed) is deeply-nested-multi, which regressed by 0.74--1.2% depending on the scenario.
    • (In this case, the 1.2% regression is to a full build, not an incremental one.)
  • In any case, the sheer number of impacted benchmarks is large enough that this warrants further review. Not marking as triaged. I'll try to dig into it later.

Improvements

Use Set instead of Vec in transitive_relation #103214 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.6%[-0.7%, -0.6%]2
Improvements ✅
(secondary)
-1.2%[-1.6%, -0.6%]7
All ❌✅ (primary)-0.6%[-0.7%, -0.6%]2
  • as noted in PR description: “doesn't fix the underlying quadraticness but it makes it a lot faster to an extent where even doubling the amount of nested references still takes less than two seconds (50s on nightly).”

Remove more attributes from metadata #98450 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.3%[0.3%, 0.3%]1
Improvements ✅
(primary)
-2.7%[-8.2%, -0.2%]18
Improvements ✅
(secondary)
-5.5%[-8.4%, -0.8%]23
All ❌✅ (primary)-2.7%[-8.2%, -0.2%]18
  • This PR's comment+development history are pretty epic. :smile:
  • anyway, great work from @lqd and @GuillaumeGomez

stop using ty::UnevaluatedConst directly #103227 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.3%[-0.4%, -0.2%]10
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.3%[-0.4%, -0.2%]10

Enable LTO for rustc_driver.so #101403 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-4.2%[-9.6%, -0.4%]230
Improvements ✅
(secondary)
-4.0%[-9.5%, -0.4%]257
All ❌✅ (primary)-4.2%[-9.6%, -0.4%]230
  • Holy cow: 9.6% faster compiling diesel, 7% faster compiling serde, 1.3% faster bootstrap. Epic wins there.
  • there is perhaps concern that it caused #103538: “rustc-dev component recently became a lot bigger”

Rollup of 11 pull requests #103502 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
2.3%[2.3%, 2.3%]1
Improvements ✅
(primary)
-0.5%[-0.5%, -0.5%]1
Improvements ✅
(secondary)
-0.9%[-1.2%, -0.8%]6
All ❌✅ (primary)-0.5%[-0.5%, -0.5%]1

Perf improvements for effective visibility calculating #103158 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.4%[-0.5%, -0.3%]6
Improvements ✅
(secondary)
-0.6%[-2.0%, -0.2%]22
All ❌✅ (primary)-0.4%[-0.5%, -0.3%]6
  • libc build times improved by ~1% in ten scenarios

Mixed

Deny hashing ty/re/ct inference variables #103220 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.8%[0.5%, 1.2%]8
Improvements ✅
(primary)
-0.2%[-0.3%, -0.2%]2
Improvements ✅
(secondary)
-0.9%[-1.0%, -0.5%]9
All ❌✅ (primary)-0.2%[-0.3%, -0.2%]2
  • already triaged: “The perf changes are small and the wins balance out the losses. No need to stress on this one, I think.”

Remove ParamEnv from uninhabited query #102660 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
1.5%[1.2%, 1.7%]7
Improvements ✅
(primary)
-0.2%[-0.2%, -0.2%]2
Improvements ✅
(secondary)
-1.2%[-1.2%, -1.2%]3
All ❌✅ (primary)-0.2%[-0.2%, -0.2%]2
  • Not sure why this was flagged as Mixed rather than Improvement.
  • Marked as triaged.

Untriaged Pull Requests

Nags requiring follow up

TODO: Nags