Este año, Apple sacudió el mercado de los procesadores de escritorio con el chip Apple M1 y los dispositivos basados en él. Un evento similar tuvo lugar en el mundo de la computación en nube el año pasado. AWS ha lanzado un nuevo tipo de servidor basado en sus propios procesadores ARM Graviton2. Según Amazon, los nuevos procesadores tienen una relación rendimiento / precio un 40% más alta que sus contrapartes x86. Otra actualización reciente son los servidores de Amazon RDS (un servicio en la nube que proporciona servidores de bases de datos) en Graviton2. Ejecuté algunos puntos de referencia y una prueba de carga en una aplicación backend real para ver si los servidores ARM son tan buenos y ver qué problemas de compatibilidad pueden surgir.
Actuación
Estaba comparando los tipos de servidor t4g.small (ARM) y t3.small (x86) en AWS. En el momento de escribir este artículo, el precio por hora de un servidor x86 es de $ 0.0208 y de un servidor ARM, de $ 0.0168. Un servidor ARM es un 20% más económico.
Primero, hice una prueba de carga usando wrk, ejecutando una nueva instalación de recap.dev en los servidores
Esta es una plantilla de composición acoplable con 4 procesos. Un servidor web que acepta solicitudes y las almacena en RabbitMQ y un proceso en segundo plano separado que almacena solicitudes en grupos de 1000 en PostgreSQL.
Ejecuté wrk en un servidor t3.2xlarge ubicado en la misma región usando el siguiente comando:
wrk -t24 -c1000 -d300s -s ./post.lua <hostname>
Envía solicitudes continuamente durante 5 minutos utilizando 24 transmisiones y 1000 conexiones HTTP.
Resultado para el 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 el 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
El servidor ARM atendió un 27% más de solicitudes por segundo en promedio un 26% más 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.