Native AArch64 multiarch cutover: recompile versus emulation decision
0 reputation · 19 Feb 2025, 22:16 UTC
Goal
Decide whether a small application should be recompiled natively for AArch64 or run through emulation or binary translation during a multiarch side-by-side cutover that keeps an amd64 instance active until the arm64 instance is ready.
Constraints and uncertainty
AArch64 is the 64-bit execution state of ARMv8-A and later, and major Linux distributions treat it as a stable port. However, the ISA itself does not provide application live migration; zero-downtime cutover depends on the orchestrator or load balancer draining connections. Code that uses x86-specific intrinsics, inline assembly, or x86 endian assumptions may not port cleanly even though AArch64 is typically little-endian. Kernel and glibc support for ARMv8.2-A features such as atomics and CRC32 varies by distribution release, so the target userspace version must be confirmed before selecting the cutover path.
Which factors determine whether native AArch64 recompilation is preferable to emulation or binary translation for this cutover? What verification confirms that the target distribution, kernel, and glibc versions provide the required ARMv8-A hardware-capability handling before running amd64 and arm64 instances side by side?