Как работает AWS Graviton3?

API7.ai

June 7, 2022

Ecosystem

Предыстория

AWS выпустила последнее семейство процессоров на базе ARM — AWS Graviton в конце мая 2022 года — AWS Graviton3. Согласно официальным данным AWS, по сравнению с процессором Graviton2, основанным на передовой технологии памяти DDR5, процессор Graviton3 может обеспечить повышение производительности до 25%, до 2x производительности операций с плавающей запятой и на 50% более высокую скорость доступа к памяти; Graviton3 также использует на 60% меньше энергии на том же экземпляре EC2 того же типа.

А как обстоят дела с реальными данными? Давайте возьмем в качестве примера API Gateway с интенсивным сетевым вводом-выводом и посмотрим, как работает AWS Graviton3. Здесь мы используем Apache APISIX для проведения тестов производительности на серверных средах AWS Graviton2 (C6g) и AWS Graviton3 (C7g).

Apache APISIX — это облачный, высокопроизводительный, масштабируемый API-шлюз. Основанный на NGNIX+LuaJIT и etcd, по сравнению с традиционными API-шлюзами, APISIX обладает функциями динамической маршрутизации и горячей загрузки плагинов, что особенно подходит для управления API в облачной архитектуре.

Apache APISIX

Установка и развертывание

Подготовьте сервер с чипом ARM64, здесь мы выбираем Amazon EC2 C7g (только эта модель сейчас имеет AWS Graviton3), а операционная система выбирается Ubuntu 20.04.

Amazon EC2

Не забудьте установить Docker:

sudo apt-get update && sudo apt-get install docker.io

Apache APISIX выпустил последнюю версию образа ARM64, который можно развернуть одним щелчком с помощью Docker. Подробный процесс можно найти ниже.

  1. Запустите 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
  1. Запустите APISIX
sudo docker run --net=host -d apache/apisix:2.14.1-alpine
  1. Зарегистрируйте маршрут
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 } } }'
  1. Тест
curl -i http://127.0.0.1:9080/anything/das
HTTP/1.1 200 OK .....

Сравнение производительности AWS Graviton2 и AWS Graviton3

Согласно предыдущим операциям, на основе официального скрипта, установка и тестирование совместимости APISIX на процессоре AWS Graviton3 были успешно завершены. Давайте посмотрим на производительность Apache APISIX на AWS Graviton2 (C6g) и AWS Graviton3 (C7g).

Для простоты в этом тесте в APISIX включен только один Worker, и все данные тестирования производительности выполняются на одноядерном процессоре.

Сценарий 1: Один вышестоящий сервер

Используется один вышестоящий сервер без каких-либо плагинов. В основном тестируется производительность APISIX в режиме чистого прокси-сервера.

# apisix: 1 worker + 1 upstream + no plugin # register route 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 } } }'

Сценарий 2: Один вышестоящий сервер + два плагина

Используется один вышестоящий сервер и два плагина. В основном тестируется производительность APISIX при включении двух основных плагинов, потребляющих производительность, limit-count и prometheus.

# apisix: 1 worker + 1 upstream + 2 plugins (limit-count + prometheus) # register route 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 } } }'

Сравнение данных

В вышеуказанных двух сценариях были проведены соответствующие тесты и сравнения на двух уровнях обработки запросов и времени задержки. Результаты следующие:

  1. Сравнение QPS

QPS

  1. Сравнение задержек

Latency

comparison table

Из вышеуказанных данных также видно, что в сценарии вычислений с интенсивным сетевым вводом-выводом, таком как API Gateway, AWS Graviton3 повышает производительность на 76% по сравнению с AWS Graviton2, при этом снижая задержку на 38%. Эти данные даже лучше, чем официальные данные, предоставленные AWS, упомянутые в начале (увеличение производительности на 25%).

Итог

Эта статья в основном использует Apache APISIX для сравнения производительности AWS Graviton3 и AWS Graviton2. Видно, что в сценарии вычислений с интенсивным сетевым вводом-выводом API-шлюза AWS Graviton3 можно назвать настоящим монстром производительности. Конечно, также рекомендуется много практиковаться и ожидать больше тестовых данных для вычислительно-интенсивных проектов в будущем.

Tags: