Wie schneidet AWS Graviton3 ab?
API7.ai
June 7, 2022
Hintergrund
AWS hat Ende Mai 2022 die neueste ARM-basierte AWS Graviton-Prozessorfamilie veröffentlicht - AWS Graviton3. Laut offiziellen AWS-Daten bietet der Graviton3-Prozessor im Vergleich zum Graviton2-Prozessor, basierend auf der führenden DDR5-Speichertechnologie, eine Leistungssteigerung von bis zu 25 %, eine bis zu 2-fache Gleitkomma-Leistung und eine 50 % schnellere Speicherzugriffsgeschwindigkeit; Graviton3 verbraucht außerdem 60 % weniger Energie auf derselben EC2-Instanz desselben Typs.
Wie sieht es mit den tatsächlichen Daten aus? Nehmen wir ein netzwerkintensives API-Gateway als Beispiel, um zu sehen, wie sich AWS Graviton3 schlägt. Hier verwenden wir Apache APISIX, um Leistungsvergleichstests in AWS Graviton2 (C6g) und AWS Graviton3 (C7g) Serverumgebungen durchzuführen.
Apache APISIX ist ein Cloud-nativer, hochleistungsfähiger, skalierbarer API-Gateway. Basierend auf NGNIX+LuaJIT und etcd bietet APISIX im Vergleich zu traditionellen API-Gateways dynamisches Routing und Plugin-Hot-Loading-Funktionen, was es besonders für das API-Management unter Cloud-nativen Architekturen geeignet macht.
Installation und Bereitstellung
Bereiten Sie einen Server mit einem ARM64-Chip vor, hier wählen wir Amazon EC2 C7g (nur dieses Modell hat derzeit AWS Graviton3), und das Betriebssystem wählen wir Ubuntu 20.04.
Vergessen Sie nicht, Docker zu installieren:
sudo apt-get update && sudo apt-get install docker.io
Apache APISIX hat die neueste Version des ARM64-Images veröffentlicht, das mit Docker mit einem Klick bereitgestellt werden kann. Der detaillierte Prozess ist unten zu finden.
- Starten Sie etcd
sudo docker run -d \
--name etcd -p 2379:2379 -e ETCD_UNSUPPORTED_ARCH=arm64 \
-e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \
-e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 \
rancher/coreos-etcd:v3.4.16-arm64
- Starten Sie APISIX
sudo docker run --net=host -d apache/apisix:2.14.1-alpine
- Route registrieren
curl "http://127.0.0.1:9080/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"uri": "/anything/*",
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
}
}'
- Test
curl -i http://127.0.0.1:9080/anything/das
HTTP/1.1 200 OK
.....
Leistungsvergleich von AWS Graviton2 und AWS Graviton3
Gemäß den vorherigen Schritten wurde die Installation und Kompatibilitätstests von APISIX auf dem AWS Graviton3-Prozessor erfolgreich abgeschlossen. Schauen wir uns die Leistung von Apache APISIX auf AWS Graviton2 (C6g) und AWS Graviton3 (C7g) an.
Der Einfachheit halber wird in diesem Test nur ein Worker in APISIX aktiviert, und die folgenden Leistungstestdaten werden alle auf einem Single-Core-CPU ausgeführt.
Szenario 1: Einzelner Upstream
Verwenden Sie einen einzelnen Upstream, ohne Plugins. Es wird hauptsächlich die Leistung von APISIX im reinen Proxy-Modus getestet.
# apisix: 1 worker + 1 upstream + kein Plugin
# Route registrieren
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980":1
}
}
}'
Szenario 2: Einzelner Upstream + Zwei Plugins
Verwenden Sie einen einzelnen Upstream, zwei Plugins. Es wird hauptsächlich die Leistung von APISIX getestet, wenn die beiden leistungsintensiven Plugins limit-count
und prometheus
aktiviert sind.
# apisix: 1 worker + 1 upstream + 2 Plugins (limit-count + prometheus)
# Route registrieren
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {
"limit-count": {
"count": 2000000000000,
"time_window": 60,
"rejected_code": 503,
"key": "remote_addr"
},
"prometheus": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980":1
}
}
}'
Datenvergleich
In den oben genannten beiden Szenarien wurden verwandte Tests und Vergleiche auf den beiden Ebenen der Anfrageverarbeitung und der Latenzzeit durchgeführt. Die Ergebnisse sind wie folgt:
- QPS-Vergleich
- Latenzvergleich
Aus den obigen Daten ist auch ersichtlich, dass in einem netzwerkintensiven Rechenscenario wie einem API-Gateway AWS Graviton3 die Leistung um 76 % im Vergleich zu AWS Graviton2 verbessert, während die Latenz um 38 % reduziert wird. Diese Daten sind sogar besser als die offiziellen Daten von AWS, die zu Beginn erwähnt wurden (25 % Leistungssteigerung).
Zusammenfassung
Dieser Artikel vergleicht hauptsächlich die Leistung von AWS Graviton3 und AWS Graviton2 mit Apache APISIX. Es ist ersichtlich, dass AWS Graviton3 in netzwerkintensiven Rechenscenarien eines API-Gateways die Eigenschaften eines Leistungsmonsters zeigt. Natürlich wird empfohlen, viel zu üben, und wir freuen uns auf weitere Testdaten für rechenintensive Projekte in der Zukunft.