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.
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.