AWS Graviton2: ARM on Cloud

Written by Francisco Gimeno

For many years, ARM processors were considered a lower-end option. However, in the last 15 years, things have changed – mobile processors have been dominated by ARM.

The actual specification (ARMv9) was recently released on March 31st, 2021. The previous version (ARMv8) is being used in 85% of smartphones in the world.

There have been three main milestones in the development of ARM v8 for general computing: 

  • Raspberry PI demonstrated that a little PC could pack immense horsepower
  • The introduction of the Graviton machine by AWS (now Graviton2)
  • Apple Laptops with the M1 SoC (including an ARM processor inside)

We will probably see the new generation of ARM processors coming from these companies in the upcoming months. The key point now is that they’re not considered low-end options anymore. Apple M1 has beaten a significant number of Intel x86 desktop processors in several benchmarks, and it was just designed for laptops. Likewise, Graviton2 has a powerful processor, but it is also significantly more power-efficient and translated into significant cost discounts. For specific workloads, there could be a savings of 40% for the same performance. By the way, the name of the processors used by AWS Graviton2 is Neoverse N1.

What are the benefits of using ARM?

ARM uses a RISC architecture, and it has been designed to be modular and embeddable. Indeed, the actual processors are more likely to be System on a Chip (SoC). Technically, the benefit of these configurations is reduced power consumption and latency, which means less electricity (and lower cooling requirements) and more performance.

Other design considerations like fixed-size instructions allow simpler processor implementations and more predictable # instructions per cycle than x86 (CISC).

One of the most significant issues to address when running a Datacenter system is the performance/watt ratio. One of the most important bills in a Datacenter is electricity. For the cloud, it means that Compute costs are practically proportional to the power consumed.

What are the challenges of running ARM?

Adopting ARM architecture is not so straightforward. Here are some of the challenges you’ll face when moving to ARM:

  • Binaries need to be recompiled. For GNU/Linux, that shouldn’t be a problem, as they have been maintaining multiple architectures for years. All the toolchains used for the compilation are even supporting cross-compilation. Java has also been available for ARM for a long time.
  • Not all the portfolio of applications are available. That could be a concern for private software. Check with your vendors.
  • Most of the Opensource toolings are available already for ARM, in projects like Debian and Docker (+50,000 images available for ARM)
  • The Reduced Instruction Set could seem to be a problem for workload requiring specific instructions. However, this has been solved by designing a modular processor architecture. Furthermore, the new ARMv9 has introduced specific instructions for Machine Learning (SVE2) and Security (CCA). Keep up-to-date with the latest versions, including performance optimizations.

What does this mean for my cloud computing usage?

The ARM architecture is a very mature solution. Today, the reduced power consumption means that cloud providers will be able to provide significant discounts in various workloads. Why not for all the workloads? Well, it’s not possible to easily compare two different architectures for multiple different workloads. Some architecture will be more suited for one kind of job.

However, some use cases have been measured (M6g vs. M5), showing a significant performance/price advantage for Graviton2, and you can plan your migration today:

  • Open Source databases (MySQL, PostgreSQL) and RDS
  • Nginx (for instance, for Reverse proxy)
  • Memcache
  • BERT ML inference and Amazon EMR
  • ElastiCache

Finally, another exciting case is the use of Graviton2 instance families in your existing Kubernetes cluster. If you’re using EKS, it is as easy as creating a NodeGroup using any Graviton Instance Type and loading the ARM jobs to the cluster. It’s even possible having some pods running x86 and other pods using ARM.

For more strategies on optimizing your cloud, schedule a call with our cloud experts or drop us an email at