Uh oh!
There was an error while loading. Please reload this page.
ci: Move dist-aarch64-linux to an aarch64 runner - #133809
Conversation
Kobzol
commented
Dec 3, 2024
First let's see if it works, and what's the time impact :) @bors try |
ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` try-job: dist-aarch64-linux
bors
commented
Dec 3, 2024
bors
commented
Dec 3, 2024
☀️ Try build successful - checks-actions |
Kobzol
commented
Dec 3, 2024
@bors try |
bors
commented
Dec 3, 2024
ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` try-job: dist-aarch64-linux
bors
commented
Dec 3, 2024
☀️ Try build successful - checks-actions |
Kobzol
commented
Dec 3, 2024
The cached duration now seems to be ~1h 20m. Before, it was approximately ~1h 50m, although on a free runner. |
mrkajetanp
commented
Dec 3, 2024
Before meaning when it was running on the x86 runner? That would make sense given that it had to build the whole cross-compiling toolchain first I suppose. |
Kobzol
commented
Dec 3, 2024
Yeah, before meaning when it was cross-compiling, and also running on a 4-core machine (vs now running on a 8-core machine). The costs of the ARM machine is quite different to us than the previous machine though, so we'll need to discuss this in the infra team. |
mrkajetanp
commented
Dec 3, 2024
Fair enough, best of luck! :) |
nikic
left a comment
There was a problem hiding this comment.
Our documented glibc baseline for aarch64 is 2.17, while this is switching to ubuntu 22.04, which is glibc 2.35.
Kobzol
commented
Dec 8, 2024
Ah, good point! To clarify, before |
mrkajetanp
commented
Dec 9, 2024
I can switch the build to CentOS, though are we sure that's a good idea given that it's now past its end of life? EOL for the CentOS 7 used in the x86 dist build was June 2024. Afaict all distros' versions that ship 2.17 are now past their EOL. |
Kobzol
commented
Dec 9, 2024
That is indeed an issue, although orthogonal to ARM, I suppose. @nikic CentOS 7 is indeed EOL since June 2024 (https://www.redhat.com/en/topics/linux/centos-linux-eol). Should we do https://blog.rust-lang.org/2022/08/01/Increasing-glibc-kernel-requirements.html again? Our HPC center has updated to glibc 2.28 last year, which I personally use as a litmus test to see where the current baseline is =D |
Debian Buster has glibc 2.28 and Extended LTS until 2029, how does trying that one sound? |
Kobzol
commented
Dec 9, 2024
The extended LTS is a commercial offering, if I understand correctly, we don't currently make use of any such extended variants. Created https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Increasing.20glibc.20baseline/near/486974115 to discuss this bump. |
nikic
commented
Dec 9, 2024
I don't think we really care whether the base image we use for building is EOL. Lack of security updates shouldn't have a material effect on our artifacts -- I don't think we're linking anything statically from the host that we aren't building ourselves? Like, stuff like openssl in cargo comes from a vendored build, and we even build our own zstd on these. The last time we bumped the glibc requirement it was because it was not possible to both target old glibc and build new LLVM with crosstool-ng. I expect we're still a bit off from hitting that problem again (maybe next time LLVM bumps requirements...) cc @cuviper who probably has opinions on both glibc baseline and our use of centos:7 base images :) |
mrkajetanp
commented
Dec 9, 2024
From what I understand it's commercial in that a 3rd party gets paid to backport security fixes and such, it's still free to use. Besides it's effectively an opt-in repo so we just use an older official Debian docker image, then if a security fix is needed it's just a matter of adding in the repo and running an update. Whether this is relevant or not is a different question - I imagine not - but it's slightly better than just using a completely dead version I suppose. Especially compared to CentOS where relying on an archive of old builds of a dead distro seems pretty dodgy if we can avoid it. |
mrkajetanp
commented
Dec 9, 2024
To clarify, the only concern I have here is that CentOS has been discontinued so I'm wondering whether it's still okay to rely on the repos being up. It's probably good to have at least a migration plan in case they get taken down. If we're confident that they'll stay available for the foreseeable future then there's no problem at all imo. |
Kobzol
commented
Dec 9, 2024
Based on https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Increasing.20glibc.20baseline, we're currently OK with using the EOL runner on CI, as we're not really using anything from it statically, we just use it to build the compiler and the stdlib. |
4122380 to
c7e5ebbComparemrkajetanp
commented
Dec 9, 2024
Fine by me, let's try the CentOS variant then :) |
Kobzol
commented
Dec 9, 2024
@bors try |
bors
commented
Dec 18, 2024
☀️ Try build successful - checks-actions |
Kobzol
commented
Dec 18, 2024
The duplication is not ideal, but at least it was balanced a bit by the small CI script cleanup :) @bors r+ rollup=never |
bors
commented
Dec 18, 2024
bors
commented
Dec 19, 2024
bors
commented
Dec 19, 2024
☀️ Test successful - checks-actions |
rust-timer
commented
Dec 19, 2024
Finished benchmarking commit (023521e): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)Results (primary -1.6%, secondary -3.4%)This 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.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 770.535s -> 770.305s (-0.03%) |
ionicmc-rs
commented
Dec 20, 2024
Well it seems this broke something (#134563) related to paging, should this be reverted or fixed. |
ionicmc-rs
commented
Dec 20, 2024
Is there a label for something that is |
Revert "Auto merge of rust-lang#133809 - mrkajetanp:ci-aarch64-dist, r=Kobzol" This reverts rust-lang#133809, as it produced broken aarch64 artifacts (rust-lang#134563). `@bors` p=1
Revert "Auto merge of #133809 - mrkajetanp:ci-aarch64-dist, r=Kobzol" This reverts rust-lang/rust#133809, as it produced broken aarch64 artifacts (rust-lang/rust#134563). `@bors` p=1
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
…=<try> ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
…=Kobzol ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
…=Kobzol ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
…=Kobzol ci: Move dist-aarch64-linux to an aarch64 runner Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on. r? `@Kobzol` Reland of rust-lang#133809 now that the higher page sizes are fixed. try-job: dist-aarch64-linux try-job: dist-x86_64-linux try-job: dist-i686-linux
Move the dist-aarch64-linux CI job to an aarch64 runner instead of cross-compiling it from an x86 one. This will make it possible to perform optimisations such as LTO, PGO and BOLT later on.
r? @Kobzol
try-job: dist-aarch64-linux
try-job: dist-x86_64-linux
try-job: dist-i686-linux