Azure ARMアーキテクチャサーバーのパフォーマンスはどうですか?

API7.ai

August 8, 2022

Ecosystem

背景

4月に、MicrosoftはAmpere® Altra® ArmプロセッサをベースにしたAzure仮想マシンのファミリーのプレビューを発表しました。新しいVMシリーズには、汎用Dpsv5とメモリ最適化Epsv5 VMが含まれています。詳細は以下の図を参照してください:

Azure VM

特に、Ampere® Altra® Armはクラウドネイティブプロセッサであり、Ampere® Altra® ArmプロセッサをベースにしたAzure仮想マシンは、スケールアウト型のクラウドネイティブアプリケーションを効率的に実行できます。

では、実際の体験と性能はどうでしょうか?クラウドネイティブAPIゲートウェイを例に、ArmアーキテクチャをベースにしたAzure仮想マシンの性能を紹介します。ここでは、汎用Dpdsv5シリーズ仮想マシン環境でApache APISIXを選択し、インストールとテストを行います。

Apache APISIXは、クラウドネイティブで高性能でスケーラブルなAPIゲートウェイです。NGNIX + LuaJITとetcdをベースにしたAPISIXは、従来のAPIゲートウェイと比較して動的ルーティングとプラグインのホットローディングの特徴を持ち、特にクラウドネイティブアーキテクチャの下でのAPI管理に適しています。

Apache APISIX architecture

事前準備

まず、AzureでDpdsv5シリーズのインスタンスを起動し、オペレーティングシステムとしてUbuntu 20.04を選択します。

Azure Dpdsv5

次に、Dockerをインストールして、後続のコンテナ化された方法でApache APISIXをインストールおよびデプロイできるようにします。

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

Apache APISIXのデプロイ

Apache APISIXは設定センターとしてetcdを使用するため、まず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

次に、Apache APISIXのインスタンスを起動します。

sudo docker run --net=host -d apache/apisix:2.14.1-alpine

ルートを作成します。

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
        }
    }
}'

アクセステストを行います。

curl -i http://127.0.0.1:9080/anything/das

以下の結果が返されれば、インストールは成功です:

HTTP/1.1 200 OK
.....

Azure Ddsv5 vs Azure Dpdsv5

上記の操作から、Azure Dpdsv5でのApache APISIXのインストールと互換性テストが正常に完了することがわかります。では、Azure Dpdsv5の実際の性能はどうでしょうか?次に、Apache APISIXを使用してAzure Dpdsv5とAzure Ddsv5の性能テスト比較を行い、実際の性能を見てみましょう。

Azure Ddsv5は、Azure Dシリーズの別のモデルで、Intel® x86アーキテクチャをベースにしているため、上記のetcdインストール手順は若干異なります:

sudo docker run -d --name etcd
    -p 2379:2379
    -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    -e ALLOW_NONE_AUTHENTICATION=yes
    -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
    bitnami/etcd:3.4.16

シングルアップストリーム + プラグインなし

シングルアップストリームを使用し、プラグインなし。主にAPISIXの純粋なプロキシバックトゥオリジンモードでの性能をテストします。

# apisix: 1 worker + 1 upstream + no plugin
# create 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つのプラグイン

シングルアップストリームを使用し、2つのプラグイン。主に、limit-countとprometheusという2つのコア性能消費プラグインが有効な場合のAPISIXの性能をテストします。

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

データ比較

上記の2つのシナリオで、リクエストQPS(1秒あたりのクエリ数)と遅延時間の2つのレベルから関連するテストと比較を行いました。結果は以下の通りです:

  1. QPS比較

    QPS

  2. 遅延比較

    Latency

| | シングルアップストリーム + プラグインなし | シングルアップストリーム + 2つのプラグイン | | ------------------ | --------------------------- | ----------------------------- | --------------- | ---------------- | | | Azure Ddsv5 | Azure Dpdsv5 | Azure Ddsv5 | Azure Dpdsv5 | | QPS(request/s) | 14900 | 13400 | 13100 | 11000 | | Latency(ms) | 1.07 | 1.21 | 1.21 | 1.43 |

上記のデータからもわかるように、APIゲートウェイのようなネットワークIO集約型の計算シナリオでは、Dpdsv5は同じシリーズのDdsv5と比較して性能に差があります。しかし、もう一つの良いニュースは、Dpdsv5の価格が同じ構成のDdsv5よりも約20%安いことです。実際のマシン選択では、ユーザーはビジネス量に応じて柔軟に決定できます。

まとめ

この記事では、主にApache APISIXを使用してAzure Ddsv5とAzure Dpdsv5の性能を比較しました。APIゲートウェイのようなネットワークIO集約型の計算シナリオでは、Azure Dpdsv5はDdsv5と比較してそれほど目立たないことがわかりますが、このシリーズのモデルはまだプレビュー段階であり、Microsoftは継続的な改善と最適化を行っています。その続編に期待しています。

参考

Now in preview: Azure Virtual Machines with Ampere Altra Arm-based processors

Tags: