2020-12-24 Triage Log

Major event this week is landing PGO for rustc (on x86_64-unknown-linux-gnu). We expect other platforms to follow but further investigation will be needed, especially for cross-compiled platforms. We expect to add LLVM PGO as well.

Triage done by @simulacrum. Revision range: e1cce06e4ff5206daf397e1dcf91ed53653be171..c34c015fe2710caf53ba7ae9d1644f9ba65a6f74

3 Regressions, 5 Improvements

Regressions

Rollup of 11 pull requests #80105

  • Moderate regression in instruction counts (up to 3.4% on full builds of match-stress-enum-check)
  • Due to implementing if let guards in #79051

Revert “cg_llvm: fewer_names in uncached_llvm_type#80122

  • Very large regression in instruction counts (up to 424.2% on incr-patched: println builds of regression-31157-debug)
  • Hopefully temporary fix until LLVM patches are applied. Fairly unfortunate, though, to lose this much performance.

or_patterns: implement :pat edition-specific behavior #80100

  • Moderate regression in instruction counts (up to 1.3% on incr-unchanged builds of deep-vector-check)
  • Most likely overeagerly queries edition of spans. Left ask for moving that to be lazy.

Improvements

Make BoundRegion have a kind of BoungRegionKind #80163

  • Moderate improvement in instruction counts (up to -2.1% on full builds of clap-rs-check)
  • Looks like faster mostly due to a smaller argument size

rustc_query_system: explicitly register reused dep nodes #80177

  • Moderate improvement in instruction counts (up to -2.4% on incr-unchanged builds of match-stress-enum-check)
  • Almost entirely incremental-only change, as expected.

Turn quadratic time on number of impl blocks into linear time #78317

  • Moderate improvement in instruction counts (up to -2.0% on incr-unchanged builds of packed-simd-check)

rustc_query_system: reduce dependency graph memory usage #79589

  • Moderate improvement in instruction counts (up to -2.3% on incr-unchanged builds of packed-simd-check)

Utilize PGO for rustc linux dist builds #80262

  • Very large improvement in instruction counts (up to -12.2% on full builds of externs-debug)
  • Large regression in instruction counts (up to 7.4% on incr-unchanged builds of many-assoc-items-check)
  • Instruction counts are not the main target of PGO, and wall times are showing the expected 5-20% wins. Note that we expect to improve performance even further by applying PGO to LLVM as well.

Nags requiring follow up