5 ms·
Is there any advantage to running an ARM instance in the cloud, as opposed to a x64 one?
by perryizgr8 4y ago
Is there any advantage to running an ARM instance in the cloud, as opposed to a x64 one?
- neonsunset 4y agoIt comes down to resulting cost and resources required to reach SLOs of your services. Major factors for such are the quality of support for arm64 by your workloads and specific optimizations available for such (running code that has AVX512 optimizations vs something that likes SHA256 + AdvSimd tricks). Overall, compiled languages like Rust, C / C++ have very good support due to years of dev effort invested in LLVM/GCC to support arm64 will, C# will also become one of the better running platforms starting with .NET 7 (6 is ok but 7 improves perf dramatically and vectorizes many code paths). Can't say anything about Java though. All in all, Graviton 2/3 on AWS is supposed to provide cheaper and denser compute which are its main selling points at the moment.
- jiggawatts 4y agoAzure for example will sell you an 8 vCPU x64 VM for more than an 8 vCPU ARM VM, but the ARM VM vCPUs are entire physical cores, whereas the Intel-compatible VM vCPUs are hyperthreads. So you get more cores and more cache for less money with ARM. For some workloads this makes a big difference.
- neonsunset 4y agoWhile true, the ampere cores are weaker than intel/amd ones. It remains a question of how much juice you get out of such vCPUs vs Ampere at capacity. Graviton 3 OTOH is much closer in terms of performance to what is usually offered in Xeon / Epyc.
- HyperSane 4y agoYou don't have to pay the Intel premium so you get better performance/$. I would be willing to bet AWS uses Graviton internally for many of their services like S3, DynamoDB, et. One thing to keep in mind is that ARM doesn't support Hyperthreading so you get twice the number of cores than with x86.
- IntelMiner 4y agoAren't AWS ARM servers marginally cheaper than their x86 counterparts? Depending on the workload they could be useful
- philliphaydon 4y agoYup if you’re in the ecosystem of AWS and your language or whatever is supported on arm then it’s worth it. - cheaper - generally comparable or better perf Works for Lambda and EC2 and RDS.
- jeffbee 4y agoAs always, you should measure and decide based on your own software and requirements. My personal experience has been that for throughput-oriented workloads the Graviton stuff tends to be cheaper than x86-64 EC2 instances, but the latest x86-64 instances have better straight-line single-core performance so they are more appropriate for critical latency-sensitive services, and cost more.
- sidkshatriya 4y agoIt would also be useful to compare AMD/Intel chips with ARM chips on security issues arising out of speculation issues etc. The AMD/Intel server chips are used more intensively so they have greater scrutiny. Compensating for that, would it be possible to know which implementations are objectively better from a security standpoint?
- sharpy 4y agoMy employer has been achieving decent (around 15%) cost savings on most services we migrate to ARM on AWS. Not all though. Some of our services we had to revert to x64 because it didn't perform as well on ARM.
- dehrmann 4y agoAssuming your workload can run on ARM, you should think of it as a different CPU generation or AMD vs Intel. For some applications, you might care about speed. Others, +/- 5ms isn't an issue. Then you see how much throughput each supports. Finally, you go through the total cost math. It's hard to make a blanket statement about which will be better for your usecase.
- watermelon0 4y agoIf developers are using MacBooks, the main benefit is that you don't need to maintain both arm64 and x86 support for application/Docker images. It's not simple to maintain support for both, and the only way to be sure application works as expected is to run CI pipelines for both architectures, which can get quite expensive.
- thejosh 4y agoPricing. We run our stuff on ARM on Graviton3 (company policy for AWS) and the performance is decent.
- tyingq 4y agoCost, and your vCPU is an actual core instead of a hyperthread.