In diesem Jahr hat Apple mit dem Apple M1-Chip und den darauf basierenden Geräten den Markt für Desktop-Prozessoren erschüttert. Ein ähnliches Ereignis fand im vergangenen Jahr in der Cloud-Computing-Welt statt. AWS hat einen neuen Servertyp veröffentlicht, der auf seinen eigenen ARM Graviton2-Prozessoren basiert. Laut Amazon haben die neuen Prozessoren ein um 40% höheres Leistungs-Preis-Verhältnis als ihre x86-Kollegen. Ein weiteres aktuelles Update sind Amazon RDS-Server (ein Cloud-Dienst, der Datenbankserver bereitstellt) auf Graviton2. Ich habe einige Benchmarks und einen Auslastungstest für eine echte Backend-Anwendung durchgeführt, um festzustellen, ob die ARM-Server so gut sind und welche Kompatibilitätsprobleme auftreten können.
Performance
Ich habe die Servertypen t4g.small (ARM) und t3.small (x86) unter AWS verglichen. Zum Zeitpunkt dieses Schreibens beträgt der Preis pro Stunde für einen x86-Server 0,0208 USD und für einen ARM-Server 0,0168 USD. Ein ARM-Server ist 20% günstiger.
Zuerst habe ich einen Auslastungstest mit wrk durchgeführt und eine neue recap.dev-Installation auf den Servern ausgeführt
Dies ist eine Docker-Compose-Vorlage mit 4 Prozessen. Ein Webserver, der Anforderungen akzeptiert und in RabbitMQ speichert, und ein separater Hintergrundprozess, der Anforderungen in Gruppen von 1000 in PostgreSQL speichert.
Ich habe wrk auf einem t3.2xlarge-Server in derselben Region mit dem folgenden Befehl ausgeführt:
wrk -t24 -c1000 -d300s -s ./post.lua <hostname>
Es sendet kontinuierlich 5 Minuten lang Anforderungen über 24 Streams und 1000 HTTP-Verbindungen.
Ergebnis für 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
Für 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
Der ARM-Server bediente 27% mehr Anfragen pro Sekunde, durchschnittlich 26% schneller.
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.