ARM servers - more efficient and cheaper

This year, Apple shocked the desktop processor market with the Apple M1 chip and devices based on it. A similar event took place in the cloud computing world last year. AWS has released a new type of server based on its own ARM Graviton2 processors. Amazon claims the new processors have a performance-to-price ratio 40% higher than their x86 counterparts. Another recent update is Amazon RDS (a cloud service providing database servers) servers on Graviton2. I ran a few benchmarks and a load test on a real backend application to see if the ARM servers are that good and see what compatibility issues might arise.





Performance

I was comparing server types t4g.small (ARM) and t3.small (x86) on AWS. At the time of this writing, the price per hour for an x86 server is $ 0.0208, and for an ARM server - $ 0.0168. An ARM server is 20% cheaper.





First, I did a load test using wrk, running a fresh recap.dev installation on the servers





This is a docker-compose template with 4 processes. A web server that accepts requests and stores them in RabbitMQ and a separate background process that stores requests in groups of 1000 in PostgreSQL.





I ran wrk on a t3.2xlarge server located in the same region using the following command:





wrk -t24 -c1000 -d300s -s ./post.lua <hostname>
      
      



It sends requests continuously for 5 minutes using 24 streams and 1000 HTTP connections.





Result for server t4g.small (ARM):





  24 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   473.53ms   53.06ms   1.96s    81.33%
    Req/Sec   115.83     96.65   494.00     71.32%
  620751 requests in 5.00m, 85.84MB read
  Socket errors: connect 0, read 0, write 0, timeout 225
Requests/sec:   2068.48
Transfer/sec:    292.90KB
      
      



For server t3.small (x86):





 24 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   600.28ms   70.23ms   2.00s    72.53%
    Req/Sec    92.77     82.25   404.00     70.26%
  488218 requests in 5.00m, 67.51MB read
  Socket errors: connect 0, read 0, write 0, timeout 348
Requests/sec:   1626.87
Transfer/sec:    230.37KB
      
      



The ARM server served 27% more requests per second on average 26% faster.









Phoronix.





pts/compress-7zip-1.7.1 t4g.small (ARM) 6833 MIPS, t3.small (x86) - 5029 MIPS. ARM 35%.





ARM pts/c-ray 2 . 958 x86 458 ARM .









pts/ramspeed, .









t4g.small (ARM)





t3.small (x86)





Add/Integer





50000 /c





13008 /c





Copy/Integer





58650 /c





11772 /c





Scale/Integer





31753 /c





11989 /c





Triad/Integer





36869 /c





12818 /c





Average/Integer





44280 /c





12314 /c





Add/Floating Point





49775 /c





12750 /c





Copy/Floating Point





58749 /c





11694 /c





Scale/Floating Point





58721 /c





11765 /c





Triad/Floating Point





49667 /c





12809 /c





Average/Floating Point





54716 /c





12260 /c





, t4g.small Graviton2 3 5 .





, ARM . .





, .





ARM . , Docker .rpm .deb, (, Docker ). , docker-compose ARM , . , , ARM . , , , ARM , .





Amazon RDS Graviton2 ARM .





ARM Docker recap.dev arm/v7 arm64.








All Articles