Amazon Web Services (AWS), the leading public cloud solutions vendor, has taken the unprecedented move of producing its own server processors based on the Arm architecture, called AWS Graviton. These Arm-powered servers are available for customers to use in Amazon EC2 virtual machine instances.
AWS Graviton is the first generation of a years-long effort for Amazon. Amazon acquired semiconductor development firm Annapurna Labs in 2015, after working with the company to develop custom silicon to offload EC2 orchestration tasks from the server CPU to external chips, to allow the main CPU to be dedicated to the compute tasks of AWS customers.
Here’s a comprehensive briefing on how Arm processors differ from Intel or AMD processors, how this server processor differs from similar processors found in mobile devices, how this move impacts the public cloud and on-premises markets, and potential business cases for Arm servers on EC2.
SEE: Data center automation research report 2018: Despite growth in data, automation adoption remains slow (Tech Pro Research)
What is an Arm server, and how is it different from traditional servers?
Arm is the name of an instruction set architecture (ISA) created by Arm Holdings, a company founded in the UK 1990, and acquired by Japanese telecom company SoftBank in 2016. Arm Holdings does not directly produce CPUs, instead, they license the Arm ISA to companies that produce CPUs to fit their needs.
The Arm ISA is very extensible, and is used in billions of devices. The Qualcomm Snapdragon and Apple’s A-series system-on-a-chip (SoC) found in practically all smartphones sold in North America are implementations of the Arm ISA, as is the Broadcom SoC found in the Raspberry Pi. Arm is also ubiquitous in Internet of Things (IoT) and embedded applications, such as drive controllers, smart sensors, and car navigation systems.
While these examples cover relatively low-power Arm devices, AWS Graviton is a higher-power design, and marks the first time the Arm ISA is commercially available in servers, at this scale, for public cloud markets.
Arm servers are not a wildly different paradigm from what your organization already uses. AWS Graviton (EC2 A1) uses the same Linux kernel, and the same popular Linux distributions popular in enterprises. Migrating from x86-64—the ISA used in Intel and AMD CPUs—does require certain adjustments to be made to get your workloads operating on EC2 A1 instances. At launch, Amazon Linux 2, Red Hat Enterprise Linux (RHEL), Ubuntu, and ECS optimized machine images are available, with additional distributions forthcoming. It is unclear if Microsoft will make available Windows 10 Server for Graviton, though a port of Windows 10 Server for Arm (specifically, the Qualcomm Centriq 2400) was announced in 2017 but seemingly never commercialized.
SEE: First beta of Red Hat Enterprise Linux 8 now available with security updates, new features (TechRepublic)
Arm and x86-64 ISAs are designed in fundamentally different ways, and do not share binary compatibility. This requires every program running on EC2 A1 to be compiled for Arm. Much of this work is already done for you. Amazon notes in a press release, “Most applications that make use of open source software like Apache HTTP Server, Perl, PHP, Ruby, Python, NodeJS, and Java easily run on multiple processor architectures due to the support of Linux based operating systems.”
As such, if you use primarily open source packages, use applications in scripted languages, or compile your own applications from source, migrating to A1 should be easy.
Why do Arm servers on AWS matter?
AWS Graviton offers an unprecedented level of choice in public cloud deployments, and is likely to bring with it substantial cost savings for EC2 users, particularly over time.
Using the Arm ISA in servers has been tried before, though not at this scale, for public cloud markets. Scaleway C1 used quad-core Marvell Arm v7 CPUs as VPS replacements, and some datacenter operators offered Raspberry Pi colocation services as a side business to cater to programmers and hobbyists. Fundamentally, these rely on smartphone-class SoCs, which are suitable for low-end tasks, such as a small business homepages and mail servers, though would struggle in high-performance workloads.
AWS Graviton is more of a direct competitor to Cavium ThunderX2 and Qualcomm Centriq 2400, both of which are server platforms based on the Arm v8 ISA. The key difference between Graviton and these existing CPUs is that Amazon is only offering Graviton in EC2, while Cavium and Qualcomm sell their CPUs and reference designs to server vendors, which offer solutions based on that technology for on-premises computing.
SEE: Vendor comparison: Microsoft Azure, Amazon AWS, and Google Cloud (Tech Pro Research)
Amazon’s support of Arm for servers impacts the entire Arm server market and ecosystem, providing a much needed shot of adrenaline during a time of uncertainty. In May, reports claimed that Qualcomm Datacenter Technologies (QDT) was preparing to stop development of Centriq processors, with QDT president Anand Chandrasekher leaving the company days later, and 280 employees laid off the next month. The wide availability of Arm servers is important for developers to optimize toolchains and programs for Arm.
In a wider sense, Amazon has dealt a huge blow to Intel’s dominance in the data center. As the largest public cloud services provider, Amazon is a trendsetter for the industry. Likewise, their purchasing power and scale makes them an outsized buyer of Intel’s Xeon CPUs. In addition to producing their own Arm chips, Amazon has also started offering EC2 instances powered by AMD EPYC processors, positioned as a lower-cost alternative to Intel Xeon-powered CPUs.
How powerful is AWS Graviton?
Amazon has not disclosed extensive technical information about the power of Graviton, though given EC2’s model of abstracting hardware from computing ability, information about what CPU any EC2 instance is using is generally limited to what can be gathered by probing for information on a live instance.
The Graviton systems in deployment use the 2015-era Cortex-A72 microarchitecture, which is Arm v8-A. It includes acceleration for floating-point math, Advanced SIMD (NEON), as well as AES and SHA-256 algorithms, among others. They also include support for Arm Neoverse, which was publicly announced in October 2018. Of note, there is no symmetric multithreading (SMT) on A72, so each vCPU is equal to a single processor core on A1 instances. This is of particular importance for those concerned about potential side-channel attacks, which rely on a malicious process in one thread accessing data in the adjoining thread on the same core.
Linux benchmarking website Phoronix found that Graviton (A1) performed at about half the speed of the AMD EPYC 7571 processors (offered as M5A in EC2), while it was about one-third the speed of Intel Xeon Platinum (M5) instances in PHPBench, with those results reinforced by Zend’s bench and micro_bench tests. In PyBench, the average test times on Graviton ranged from 4,244 to 4,289 milliseconds, while AMD ranged from 1,655 to 1,664 milliseconds, and Intel ranged from 1,349 to 1,3500 milliseconds. These benchmarks are single-threaded, and would not be representative of real-world, multi-threaded workloads.
SEE: Cloud computing policy (Tech Pro Research)
In terms of performance per dollar, the findings from Phoronix were that Graviton is quite poor at practically everything. Practically speaking, there are two causes for this. While PHP and Python runtimes can compile for Arm (aarch64), how they are compiled will have nontrivial impacts on performance. In aarch64, NEON extensions are mandatory, though how gcc handles NEON / intrinsics is not optimal, and some optimizations will need to be made for each package to better adapt to running on ARM.
Largely, the value proposition of Arm is performance per watt, which is not something testable from a public cloud provider standpoint, and not a user-facing concern, as Amazon is paying the power bills. Measured in that way, Graviton would likely be competitive with Intel or AMD, though this does not resolve the above optimization problem.
There is no method for the TDP of Graviton to be determined by software probing on a live instance. Given existing products from Qualcomm and Cavium, it is highly unlikely to max out anywhere near Intel or AMD offerings, making it suited for midrange computing, at best. Amazon concedes this in a release announcement, indicating that Graviton is “a great fit for scale-out workloads where you can share the load across a group of smaller instances.”
How much do Arm servers on AWS cost?
A1 instances on EC2 are available in five tiers:
- A1.medium: 1 vCPU, 2 GB RAM, $0.0255 / hour
- A1.large: 2 vCPUs, 4 GB RAM, $0.0510 / hour
- A1.xlarge: 4 vCPUs, 8 GB RAM, $0.1020 / hour
- A1.2xlarge 8 vCPUs, 16 GB RAM, $0.2040 / hour
- A1.4xlarge 16 vCPUs, 32 GB RAM, $0.4080 / hour
All have network bandwidth up to 10 Gbps, and EBS bandwidth up to 3.5 Gbps, except A1.x4large at 3.5 Gbps. Prices listed are for on-demand in US East (N. Virginia). Despite the naming convention, there is no SMT on Graviton, making vCPUs real physical CPU cores. At launch, A1 instances are available in the US East (N. Virginia), US East (Ohio), US West (Oregon), and Europe (Ireland) AWS regions.
SEE: Everything you need to know about AWS re:Invent 2018 (CNET)
Should I get an Arm server on AWS?
Speaking generally, the benefit of cloud computing is that there is not any upfront investment needed for hardware. Spending a day working with the largest available instance to see how your existing applications deploy on Arm is worth the pocket change. Somewhere along the way, you may discover some oddity, like a Python library which will need to be recompiled for use on Arm. Having this knowledge is beneficial in the event that you wish to migrate some or all of your applications to run on Arm-powered servers.
Presently, in terms of practical use, if you have a general workload and wish to lower costs on EC2, consider using AMD EPYC-powered M5A instances. As AMD and Intel are both x86-64, this type of migration should be absolutely transparent. If you have some need for debugging or testing software on Arm v8, perhaps for a client attempting to make a migration, this would be a worthwhile use of an A1 instance. Likewise, if you need to build software on Arm, this would be a good solution.
SEE: Quick glossary: Cloud platform services (Tech Pro Research)
Outside of those use cases, the answer is probably not. While this is a compelling first-gen offering, Cortex-A72 is years old, making Graviton behind the curve. Strategically, there is every reason to expect Amazon will continue iterating this technology, and a Cortex-A76 powered offering would be worth a second look.