Servidores ARM - mais eficientes e baratos

Este ano, a Apple chocou o mercado de processadores de desktop com o chip Apple M1 e dispositivos baseados nele. Um evento semelhante ocorreu no mundo da computação em nuvem no ano passado. A AWS lançou um novo tipo de servidor baseado em seus próprios processadores ARM Graviton2. De acordo com a Amazon, os novos processadores têm uma relação desempenho / preço 40% maior do que seus equivalentes x86. Outra atualização recente são os servidores Amazon RDS (um serviço de nuvem que fornece servidores de banco de dados) no Graviton2. Executei alguns benchmarks e um teste de carga em um aplicativo back-end real para ver se os servidores ARM são tão bons e para ver quais problemas de compatibilidade podem surgir.





atuação

Eu estava comparando os tipos de servidor t4g.small (ARM) e t3.small (x86) no AWS. No momento em que este artigo foi escrito, o preço por hora para um servidor x86 é de US $ 0,0208 e para um servidor ARM - US $ 0,0168. Um servidor ARM é 20% mais barato.





Primeiro, fiz um teste de carga usando wrk, executando uma nova instalação recap.dev nos servidores





Este é um modelo docker-compose com 4 processos. Um servidor web que aceita solicitações e as armazena no RabbitMQ e um processo em segundo plano separado que armazena solicitações em grupos de 1000 no PostgreSQL.





Executei o wrk em um servidor t3.2xlarge localizado na mesma região usando o seguinte comando:





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



Ele envia solicitações continuamente por 5 minutos usando 24 fluxos e 1000 conexões HTTP.





Resultado para o servidor 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
      
      



Para o servidor 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
      
      



O servidor ARM atendeu 27% mais solicitações por segundo, em média 26% mais rápido.









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