about summary refs log tree commit diff
path: root/src/ci/pgo.sh
AgeCommit message (Collapse)AuthorLines
2023-03-02Remove dead pgo.sh fileNikita Popov-230/+0
This has been replaced by stage-build.py.
2022-10-09Use BOLT in x64 dist CI to optimize LLVMJakub Beránek-5/+34
2022-07-28bump rustc-perf commitJane Losare-Lusby-2/+2
2022-07-24Revert "Revert "Use ICF (identical code folding) for building rustc""Jubilee Young-0/+4
This reverts commit rust-lang/rust@45575d23f316af7476ccd0a895234ac59c47a6be, thereby enabling identical code folding again.
2022-07-18Revert "Use ICF (identical code folding) for building rustc"Jakub Beránek-4/+0
2022-07-17Use LLD linker for compiling rustc on Linux x64 and use ICF for binary size ↵Jakub Beránek-0/+4
optimization
2022-07-11introduce PGO on the `dist-x86_64-msvc` builderRémy Rakic-12/+46
This adds windows-specific behavior into the PGO script, and enables it on CI.
2022-07-11make linux PGO script more genericRémy Rakic-39/+70
This extracts the linux-isms into variables, so that the script can be extended to do PGO on windows. These variables will be overriden in a few spots, in windows-specific blocks.
2022-05-28Add PID to LLVM PGO profiles generated in CI and measure PGO statisticsJakub Beránek-10/+36
2022-05-23Add bitmaps and diesel to `rustc` PGO benchmarksJakub Beránek-1/+2
2022-05-17Add PID to rustc PGO profiles generated in CIJakub Beránek-1/+5
2022-04-11CI: do not compile libcore twice when performing LLVM PGOJakub Beránek-6/+0
2022-04-07Update rustc-perf version used in CI and also the corresponding PGO benchmarksJakub Beránek-7/+12
2022-03-08Create a function for gathering profiles and run only Full benchmarks in ↵Jakub Beránek-39/+38
LLVM PGO
2022-03-07Gather more profile data for LLVM PGOJakub Beránek-10/+28
2022-02-06Build libcore as 2021 in a few more placesScott McMurray-8/+8
The `Cargo.toml` has `edition = "2021"`, so that's what these command lines should use too.
2021-10-14Move LLVM profiling to a separate phase of compilationMark Rousskov-8/+30
2021-08-24PGO for LLVM builds on x86_64-unknown-linux-gnu in CIMark Rousskov-49/+47
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.
2021-07-10Use clang 12.0.1 on dist-x86_64/i686-linuxNikita Popov-1/+1
The LLD + ThinLTO __morestack bug has been fixed in 12.0.1, so we can now update our clang version. This also means that we no longer need to build Python 2.
2021-06-28Add inflate to pgojackh726-3/+5
2021-05-10update perf version used for PGORalf Jung-1/+1
2021-04-24update rustc-perf version that is used for PGORalf Jung-1/+1
2021-02-09ci: allow unstable features in some PGO benchmarksPietro Albini-2/+4
2021-01-30Revert "Auto merge of #81489 - nikic:x86-64-dist-update, r=Mark-Simulacrum"Nikita Popov-1/+1
This reverts commit cb6787ae82d388045cdf6b5dc73787d828d91feb, reversing changes made to 0248c6f178ab3a4d2ec702b7d418ff8375ab0515.
2021-01-28Update Python and Clang on x86 dist imagesNikita Popov-1/+1
LLVM 12 no longer builds with Python 2, so install Python 3 in preparatin. However, Clang 10 does not build with Python 3, so we need update to Clang 11 as well, which supports both. Unfortunately, doing so results in errors while linking the libLLVM.so into other binaries: > __morestack: invalid needed version 2 This is fixed by using LLD instead. Possibly this is due to a binutils linker bug, but updating to the latest binutils version does not fix it.
2021-01-25ci: use the monorepo's lockfile when building cargo for pgo profilingPietro Albini-0/+14
2020-12-22Utilize PGO for rustc linux dist buildsMark Rousskov-0/+47
This implements support for applying PGO to the rustc compilation step (not standard library or any tooling, including rustdoc). Expanding PGO to more tools is not terribly difficult but will involve more work and greater CI time commitment. For the same reason of avoiding greater time commitment, this currently avoids implementing for platforms outside of x86_64-unknown-linux-gnu, though in practice it should be quite simple to extend over time to more platforms. The initial implementation is intentionally minimal here to avoid too much work investment before we start seeing wins for a subset of Rust users. The choice of workloads to profile here is somewhat arbitrary, but the general rationale was to aim for a small set that largely avoided time regressions on perf.rust-lang.org's full suite of crates. The set chosen is libcore, cargo (and its dependencies), and a few ad-hoc stress tests from perf.rlo. The stress tests are arguably the most controversial, but they benefit those cases (avoiding regressions) and do not really remove wins from other benchmarks. The primary next step after this PR lands is to implement support for PGO in LLVM. It is unclear whether we can afford a full LLVM rebuild in CI, though, so the approach taken there may need to be more staggered. rustc-only PGO seems well affordable on linux at least, giving us up to 20% wall time wins on some crates for 15 minutes of extra CI time (1 hour up from 45 minutes). The PGO data is uploaded to allow others to reuse it if attempting to reproduce the CI build or potentially, in the future, on other platforms where an off-by-one strategy is used for dist builds at minimal performance cost.