Bagaimana Performa Server Azure ARM Architecture?

API7.ai

August 8, 2022

Ecosystem

Latar Belakang

Pada bulan April, Microsoft mengumumkan pratinjau dari keluarga mesin virtual Azure yang berbasis pada prosesor Ampere® Altra® Arm. Seri VM baru ini mencakup VM serbaguna Dpsv5 dan VM yang dioptimalkan untuk memori Epsv5. Untuk detailnya, lihat gambar berikut:

Azure VM

Perlu dicatat, Ampere® Altra® Arm adalah prosesor yang dirancang khusus untuk cloud-native, dan mesin virtual Azure yang berbasis pada prosesor Ampere® Altra® Arm dapat menjalankan aplikasi cloud-native yang berskala besar dengan efisien.

Lalu, bagaimana pengalaman dan performa sebenarnya? Mari kita ambil contoh gateway API cloud-native untuk menunjukkan performa mesin virtual Azure berbasis arsitektur Arm. Di sini, kami memilih Apache APISIX untuk diinstal dan diuji pada lingkungan mesin virtual seri Dpdsv5 yang serbaguna.

Apache APISIX adalah gateway API cloud-native yang berkinerja tinggi dan dapat diskalakan. Berbasis NGNIX + LuaJIT dan etcd, APISIX memiliki karakteristik seperti routing dinamis dan pemuatan plugin secara panas dibandingkan dengan gateway API tradisional, yang sangat cocok untuk manajemen API di bawah arsitektur cloud-native.

Arsitektur Apache APISIX

Persiapan Awal

Pertama, Anda perlu memulai instance seri Dpdsv5 di Azure, dan memilih Ubuntu 20.04 sebagai sistem operasi.

Azure Dpdsv5

Kemudian, instal Docker untuk memudahkan penggunaan metode kontainerisasi dalam menginstal dan menyebarkan Apache APISIX.

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

Menyebarkan Apache APISIX

Apache APISIX menggunakan etcd sebagai pusat konfigurasi, jadi Anda perlu memulai instance etcd terlebih dahulu.

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

Kemudian, mulai instance Apache APISIX.

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

Buat rute.

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

Akses tes.

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

Instalasi berhasil jika hasil berikut dikembalikan:

HTTP/1.1 200 OK .....

Azure Ddsv5 vs Azure Dpdsv5

Dari operasi di atas, instalasi dan uji kompatibilitas Apache APISIX pada Azure Dpdsv5 dapat diselesaikan dengan sukses. Lalu, bagaimana performa sebenarnya dari Azure Dpdsv5? Selanjutnya, kami akan menggunakan Apache APISIX untuk melakukan perbandingan uji performa pada Azure Dpdsv5 dan Azure Ddsv5 untuk melihat performa sebenarnya.

Azure Ddsv5 adalah model lain dari seri D Azure, yang berbasis pada arsitektur Intel® x86, sehingga langkah instalasi etcd di atas sedikit berbeda:

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

Satu upstream + tanpa plugin

Gunakan satu upstream, tanpa plugin apa pun. Ini terutama menguji performa APISIX dalam mode proxy murni ke sumber asal.

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

Satu upstream + dua plugin

Gunakan satu upstream, dua plugin. Ini terutama menguji performa APISIX ketika dua plugin yang mengonsumsi performa inti, yaitu limit-count dan prometheus, diaktifkan.

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

Perbandingan Data

Dalam dua skenario di atas, tes dan perbandingan dilakukan dari dua tingkat QPS (queries per second) dan waktu tunda. Hasilnya adalah sebagai berikut:

  1. Perbandingan QPS

    QPS

  2. Perbandingan Latensi

    Latency

| | Satu upstream + tanpa plugin | Satu upstream + dua plugin | | ------------------ | --------------------------- | ----------------------------- | --------------- | ---------------- | | | 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 |

Dari data di atas, dapat dilihat bahwa dalam skenario komputasi intensif IO jaringan seperti gateway API, Dpdsv5 masih memiliki kesenjangan performa dibandingkan dengan seri Ddsv5 yang sama. Namun, kabar baik lainnya adalah bahwa harga Dpdsv5 sekitar 20% lebih murah daripada Ddsv5 dengan konfigurasi yang sama. Dalam pemilihan mesin aktual, pengguna dapat membuat keputusan fleksibel sesuai dengan volume bisnis mereka.

Ringkasan

Artikel ini terutama menggunakan Apache APISIX untuk membandingkan performa Azure Ddsv5 dan Azure Dpdsv5. Dapat dilihat bahwa dalam skenario komputasi intensif IO jaringan seperti gateway API, Azure Dpdsv5 tidak begitu menonjol dibandingkan dengan Ddsv5, tetapi karena seri model ini masih dalam tahap pratinjau, Microsoft terus melakukan perbaikan dan optimasi. Kami menantikan kelanjutannya.

Referensi

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

Tags: