Skip to content

ci: build and test with s390x-resolute runner - #1227

Open
marcoieni wants to merge 1 commit into
mainfrom
test-canonical-s390x-runner
Open

ci: build and test with s390x-resolute runner#1227
marcoieni wants to merge 1 commit into
mainfrom
test-canonical-s390x-runner

Conversation

@marcoieni

@marcoieni marcoieni commented Jul 2, 2026

Copy link
Copy Markdown
Member

We'd like to this add new s390x runner to compiler-builtins.

This new runner is provided by Canonical. After some iteration alongside with Canonical folks, the large runner offers hardware spec similar to the existing s390x provided by IBM and delivers similar build times.

Moreover, it runs on ubuntu-26.04 rather than ubuntu-24.04, and it features a Github integration more friendly to t-infra, since the related Github App requires less permissions to run.

We don't need to remove the s390x IBM runners right now. We propose having both s390x runners running side by side for a while and circle back after a few PRs, sticking with the Canonical one afterwards if everything goes well.

@tgross35
tgross35 force-pushed the test-canonical-s390x-runner branch from fb7b7a2 to 19be4b4 Compare July 9, 2026 03:58
@tgross35

tgross35 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

(rebased to pick up 5ef80b3 and see where it's getting stuck)

Comment thread .github/workflows/main.yaml Outdated
# os: ["self-hosted", "linux", "riscv64"]
- target: riscv64gc-unknown-linux-gnu
os: ubuntu-24.04
- target: s390x-resolute-medium-rust

@tgross35 tgross35 Jul 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh - this needs to be the actual rust target

View changes since the review

@marcoieni
marcoieni force-pushed the test-canonical-s390x-runner branch from 19be4b4 to d3e02e9 Compare July 9, 2026 10:02
@marcoieni

Copy link
Copy Markdown
Member Author

the new runner might be slow due to the cache miss, I want to try to push a new commit to check how it behaves with the cache hit.

@tgross35

tgross35 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

It's building nextest from source since there's no binary for this arch, which is taking extra long too (though seems like the ubuntu-24.04-s390x image is reasonably fast?). If trying again with cache doesn't speed things up much, it might be worth an if: to disable on this runner at

- uses: taiki-e/install-action@7a79fe8c3a13344501c80d99cae481c1c9085912 # v2.81.10
with:
tool: nextest@0.9.131
.

(edit: install-action actually has fallback: none)

@marcoieni

Copy link
Copy Markdown
Member Author

we might ask Canonical if they can install cargo next test on the runner for us so that it is always available. Although we might not be able to pin the version 🤔

@tgross35

tgross35 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

I'm fine without an exact version as long as it's relatively recent, the pinning is mostly for Zizmor rather than needing specific features

@marcoieni

Copy link
Copy Markdown
Member Author

Actually if we want to control the version, we could cache it 👀

Btw, there wasn't a cache hit even in the second run because I think the cache is populated only from the main branch.

This Canonical runner seems slower than the IBM one because to run cargo install of cargo nextest, it takes almost four times more.
So I assume there's no reason to merge this PR, since the s390x architecture is already covered by the ibm runner, right?

See:
image
image

@tgross35

tgross35 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Actually if we want to control the version, we could cache it 👀

Just building once then putting it on ci-mirrors? That does sound nice 🤔. The nextest maintainers have been pretty open to adding arches if they get the CI resources, maybe we should ask if they'd apply to the IBM program.

Btw, there wasn't a cache hit even in the second run because I think the cache is populated only from the main branch.

I would have expected this to work, but the inner workings of GHA cache are a complete mystery to me 🙂

This Canonical runner seems slower than the IBM one because to run cargo install of cargo nextest, it takes almost four times more. So I assume there's no reason to merge this PR, since the s390x architecture is already covered by the ibm runner, right?

Up to you for what you're trying to get. If you wanted a persistent job to keep testing then we can figure out what to do with nextest, but the existing s390x job covers things well so it's also fine to close.

@marcoieni

Copy link
Copy Markdown
Member Author

Just building once then putting it on ci-mirrors? That does sound nice 🤔

I was thinking more of caching the artifacts in github actions cache. It's easier and requires less maintenance. Similar to how we cache cargo artifacts now.

The nextest maintainers have been pretty open to adding arches if they get the CI resources, maybe we should ask if they'd apply to the IBM program.

this is also an option!

@tgross35

tgross35 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

I thought rust-cache takes care of those since it should cache the bin dir (I think?), but it also looks like the other s390x job had to rebuild. Hmm

@marcoieni

Copy link
Copy Markdown
Member Author

I think the issue is the order of the steps, since the rust-cache action runs after the install action.

@ubiratansoares

Copy link
Copy Markdown
Contributor

Aside caching, I found an interesting data point from this workflow run : it seems the IBM Runners have a significantly bigger CPU compared with the Canonical resolute-medium ones : 8 cores (vs 4 cores), bigger CPU caches, etc. I got this information by expanding logs from this step in both jobs.

I'd not be surprised if the IBM runner has bigger numbers for other hardware parameters like RAM/Disk sizes, IO perf, etc. That could explain the difference between the two jobs executions, at least partially.

@ubiratansoares
ubiratansoares force-pushed the test-canonical-s390x-runner branch 2 times, most recently from 62ee24c to 1e4d4b4 Compare August 11, 2026 17:11
@ubiratansoares ubiratansoares changed the title test canonical s390x runner ci: build and test with s390x-resolute runner Aug 11, 2026
@ubiratansoares
ubiratansoares marked this pull request as ready for review August 11, 2026 17:57

@tgross35 tgross35 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like time is comparable to the other s390 job now. Thanks!

View changes since this review

We'd like to this add new `s390x` runner to `compiler-builtins`.

This new runner is provided by Canonical. After some iteration alongside
with Canonical folks, the `large` runner offers hardware spec similar to
the existing s390x provided by IBM and [delivers similar build
times](https://github.com/rust-lang/compiler-builtins/actions/runs/31516313575/job/93862267593?pr=1227).

Moreover, it runs on ubuntu-26.04 rather than ubuntu-24.04, and it
features a Github integration more friendly to `t-infra`, since the
related Github App requires less permissions to run.

We don't need to remove the s390x IBM runners right now. We propose
having both s390x runners running side by side for a while and circle
back after a few PRs, sticking with the Canonical one afterwards if
everything goes well.
@tgross35
tgross35 force-pushed the test-canonical-s390x-runner branch from 1e4d4b4 to 1549528 Compare August 12, 2026 18:17
@tgross35
tgross35 enabled auto-merge (rebase) August 12, 2026 18:18
@tgross35
tgross35 disabled auto-merge August 12, 2026 18:41
@tgross35

Copy link
Copy Markdown
Contributor

Actually I guess that one was fast because the cache was available, for this cold build it's taking a very long time. I think I'd like to wait for #1253 which should get rid of the time spent building nextest (cc @Gelbpunkt)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants