Skip to content

vms-959: native arm64 runners — kill the QEMU-emulation wall on 26 toolchain jobs - #671

Merged
baron-3dl merged 1 commit into
mainfrom
work/vms-fb8-arm64
Aug 20, 2026
Merged

baron-3dl merged 1 commit into
mainfrom
work/vms-fb8-arm64

Conversation

@baron-3dl

Copy link
Copy Markdown
Contributor

What

The toolchain-cluster CI wall (~8 min) is cold rebuilds run under arm64 QEMU emulation on x86_64 runners. Measured: dcl-native 472s emulated vs its native twin dcl-native-x86_64 42s — same script, same assertions, ~10× purely from emulation. 26 jobs register docker/setup-qemu-action + docker run --platform linux/arm64.

Change

The repo is public, so GitHub's free hosted ubuntu-24.04-arm runners are available with zero org/infra setup. On a native arm64 host, --platform linux/arm64 runs natively (no QEMU in the path) and setup-qemu becomes a harmless no-op. So: flip runs-on: ubuntu-latestubuntu-24.04-arm on exactly the 26 jobs that contain linux/arm64. The 58 x86_64/generic jobs are untouched (byte-identical).

Coverage

Unchanged. These are the aarch64 activation proofs — running them on real arm64 hardware is a strictly better proof than emulating aarch64 on x86_64. This PR's own run measures the speedup (it touches ci.yml → toolchain filter forces the 26 jobs to run).

Expected: each ~250–470s job → ~40–90s; toolchain-cluster wall ~8min → ~1.5–2min.

Notes

⚠ Coordinate

Shared infra. Notifying VAX/Alpha/GCC lanes; GCC lane asked to confirm filters before the finer-path-filter branch (that's a separate later PR — this one changes runners only, no filter change). Hold merge for lane ack + green-by-SHA pre-merge run.

🤖 Generated with Claude Code

…ll the emulation wall

MEASURED root cause (scoping): the ~8-minute toolchain-cluster wall is not
"cold rebuilds" — it is cold rebuilds run under ARM64 QEMU EMULATION on x86_64
runners. The identical proof runs ~10x slower emulated: dcl-native 472s vs its
native twin dcl-native-x86_64 42s (same script, same assertions). 26 jobs
register docker/setup-qemu-action and `docker run --platform linux/arm64`.

The repo is PUBLIC, so GitHub's free hosted `ubuntu-24.04-arm` runners are
available with zero org/infra setup. On a native arm64 host, `--platform
linux/arm64` runs NATIVELY (platform == host, no QEMU in the path) and the
setup-qemu step becomes a harmless no-op. So the change is minimal and safe:
flip `runs-on: ubuntu-latest` -> `ubuntu-24.04-arm` on exactly the 26 jobs that
contain `linux/arm64`. The 58 x86_64/generic jobs are untouched (byte-identical).

Coverage is UNCHANGED — these are the aarch64 activation proofs; running them on
real arm64 hardware is a strictly better proof than emulating aarch64 on x86_64.
Expected: each ~250-470s job -> ~40-90s; the toolchain-cluster wall ~8min ->
~1.5-2min.

Follow-up (not here): the now-pointless setup-qemu step in each converted job is
a ~10s no-op that can be pruned once this is proven green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@baron-3dl
baron-3dl merged commit bf285f7 into main Aug 20, 2026
86 checks passed
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.

1 participant