Five reasons to start releasing your software for ARM64

Andy Lo-A-Foe
4 min readJul 9, 2020

--

Today when you write software that is bound for the cloud it is pretty safe to assume it will be scheduled on a compute node that is running the x86_64 instruction set. Intel has been king for decades. AMD is making great steps at carving out a big piece of the (Intel) pie with their magnificent EPYC Rome platform. However, arm64 might be in a postion to take the cake and run with it. Here are five reasons why I think it is a good idea to seriously consider building and releasing your software for arm64

1. AWS Graviton2

In December 2019 Amazon announced new general purpose compute instances based on their in-house Graviton2 processor. These instances provide comparable or higher performance than the AMD Epyc at 10–15% cheaper costs. Compared to Intel Xeon instance types the price difference is even larger, 30–35%. Anandtech has a great in-depth article on this. Having the ability to run your workloads on these instance types can have significant impact on your bottom-line. Investing in generating arm64 might pay for itself very quickly so good reason to investigate.

Graviton2 CPU image

Recently Microsoft Azure announced pipeline support for Linux/ARM64. I predict Google will come with an ARM64 offering in the next 1–3 years.

2. Apple Silicon

In June 2020 Apple announced the start of a two-year transition period to their own Apple Silicon chips for theMac line. While the mobile world (both Android and iOS) is pretty much 100% ARM there has alway been speculation the dominance of x86_64 in the cloud is also in part because developers basically only have x86_64 systems at their disposal for writing, compiling and testing software. If your development pipeline is running on a specific instruction set it makes sense to also have your production on the same platform. With the disproportionate popularity of Macs amongst developers things will start looking very different in 2–3 years time. I think this development alone is probably going to be one of the biggest catalysts in getting more common software available for arm64

Apple Silicon

3. Docker Buildx

Docker, the defacto packaging format for cloud software has recently released an experimental feature called Docker Buildx. This makes it almost trivial to target multiple platforms as part of your Docker build stage. While today arm64 builds run at 20–25% of speed as the instruction must be emulated on your AMD/Intel setup the world will be flipped on your next ARM Mac. Probably good to start discovering those arm64 build blockers. On a recent pet-project to get TTN data visualized on Grafana running on a k3s RPI4 cluster it took only a couple of minutes to set up linux/arm64 Docker builds using BuildX and a BuildX Github Action recipe.

4. Raspberry PI 4 8GB

Freshly ordered

Speaking of Raspberry PIs, the RPI foundation finally released the long rumored to exist 8GB variant of this incredible DIY platform. With the 8GB variant available it is now actually practical to start running multi node k8s (I mean.. k3s!) clusters on your desktop that can actually run meaningful workloads. Sadly today you’ll mostly run into the following error when trying to deploy stuff on your arm64 cluster

 exec user process caused "exec format error"

Having better out of the box support for arm64 especially as the RPI foundation has also released the first beta of Raspberry Pi OS 64-bit will surely help. I have to admit this point is here purely for selfish reasons:

4-node cluster running Rapsberry PI 64-bit OS and Rancher K3s

I’m tired of all the Docker Yak shaving that needs to happen to get stuff running on this beauty.

5. Fujitsu A64FX

Contrasting the RPI4, today the fastest supercomputer in the world is an arm64 system. From mobile, to desktop, to cloud to supercomputers, ARM64 will be dominating the entire spectrum of compute in the next decade. Get your software ready for the future..

Image of supercomputer Fugaku

Thanks for reading.

--

--