Distribusikan pemrosesan paket ke beberapa core CPU untuk meningkatkan throughput jaringan dan mengurangi latensi.
Mengapa menggunakan NIC multi-queue
Antarmuka jaringan single-queue mengandalkan satu core CPU untuk semua paket, yang dapat menyebabkan overload CPU, latensi, dan kehilangan paket. NIC multi-queue mendistribusikan lalu lintas ke beberapa core guna meningkatkan pemanfaatan sumber daya.
Dalam kondisi PPS dan bandwidth yang sama, dua queue meningkatkan kinerja jaringan sebesar 50% hingga 100% dibandingkan single queue. Empat queue memberikan peningkatan yang lebih besar lagi:
-
Pemanfaatan multi-core yang lebih baik: Mendistribusikan lalu lintas ke core CPU secara merata untuk beban seimbang dan pemanfaatan lebih tinggi.
-
Throughput lebih tinggi: Pemrosesan paket paralel meningkatkan throughput, terutama di bawah beban tinggi.
-
Latensi lebih rendah: Mendistribusikan paket ke berbagai queue mengurangi kemacetan dan latensi.
-
Kehilangan paket berkurang: Mencegah kehilangan paket akibat overload single-queue saat lalu lintas tinggi.
Konfigurasi yang tidak tepat dapat menurunkan kinerja. Misalnya, pengaturan jumlah queue atau CPU affinity yang salah menyebabkan context switching yang tidak perlu, sedangkan jumlah queue yang terlalu sedikit menyebabkan sumber daya hardware tidak dimanfaatkan secara optimal.
Saat ENI disambungkan ke instans, jumlah queuenya secara default mengikuti pengaturan tipe instans. Untuk menyesuaikan jumlah queue secara manual, evaluasi terlebih dahulu kasus penggunaan dan kondisi hardware Anda.
Cara kerja NIC multi-queue
-
Arsitektur queue
ENI mendukung beberapa combined queue, masing-masing diproses oleh core CPU independen. Hal ini memungkinkan pemrosesan paket paralel, mengurangi lock contention, dan memaksimalkan pemanfaatan performa multi-core.
Queue Receive (RX) dan Transmit (TX) adalah dua jenis queue yang digunakan untuk memproses paket. Setiap combined queue terdiri dari satu RX queue dan satu TX queue:
-
RX queue: Memproses paket masuk. Antarmuka jaringan mendistribusikan setiap paket ke RX queue tertentu berdasarkan aturan Receive Side Scaling (RSS), seperti round-robin atau flow-based hashing.
Beberapa family tipe instans mendukung Custom RSS untuk ENI, yang menggunakan algoritma hash untuk mendistribusikan lalu lintas ke RX queue berbeda.
-
TX queue: Mengelola paket keluar. Aplikasi menempatkan paket ke TX queue, dan antarmuka jaringan mengirimkannya berdasarkan urutan atau prioritas.
-
-
Dukungan IRQ affinity
Setiap queue memiliki interrupt independen. IRQ affinity mendistribusikan penanganan interrupt ke berbagai core CPU untuk mencegah overload pada satu core tertentu.
IRQ affinity diaktifkan secara default pada semua gambar publik kecuali Red Hat Enterprise Linux. Lihat Konfigurasi IRQ affinity.
Batasan
-
Hanya beberapa tipe instans yang mendukung NIC multi-queue. Lihat Family tipe instans. Jika nilai kolom Multi-queue lebih besar dari 1, tipe instans tersebut mendukung NIC multi-queue.
-
Untuk tipe instans yang didukung, NIC multi-queue diaktifkan secara otomatis saat Anda menyambungkan ENI.
-
Jumlah queue yang tercantum untuk suatu tipe instans adalah jumlah maksimum queue per ENI yang didukung oleh tipe tersebut.
-
Panggil operasi API DescribeInstanceTypes dengan parameter InstanceTypeFamily untuk mengkueri metrik terkait queue:
-
Jumlah queue default
PrimaryEniQueueNumber: jumlah queue default untuk ENI primer. SecondaryEniQueueNumber: jumlah queue default untuk ENI sekunder.
-
Jumlah maksimum queue per ENI
MaximumQueueNumberPerEni: jumlah maksimum queue per ENI untuk family tipe instans.
-
Total Queue Quota
TotalEniQueueQuantity: kuota total queue untuk family tipe instans.
-
-
-
Gambar publik dengan versi kernel sebelum 2.6 mungkin tidak mendukung NIC multi-queue. Gunakan gambar publik terbaru.
Lihat jumlah queue ENI
Gunakan konsol
Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.
-
Klik ID ENI sekunder target untuk membuka halaman detailnya.
-
Di bagian Informasi Dasar, temukan parameter Queues. Nilai ini adalah jumlah queue saat ini.

-
Jika Anda telah memodifikasi jumlah queue, nilai yang dimodifikasi akan ditampilkan.
-
Jika Anda belum memodifikasi jumlah queue:
-
Jika ENI belum disambungkan ke instans, tidak ada nilai yang ditampilkan.
-
Jika ENI sudah disambungkan ke instans, nilai jumlah queue default untuk tipe instans akan ditampilkan.
-
-
Gunakan API
Panggil operasi DescribeNetworkInterfaceAttribute. Parameter respons QueueNumber menunjukkan jumlah queue.
-
Jika Anda telah memodifikasi jumlah queue, nilai yang dimodifikasi akan ditampilkan.
-
Jika Anda belum memodifikasi jumlah queue:
-
Jika ENI belum disambungkan ke instans, tidak ada nilai yang ditampilkan.
-
Jika ENI sudah disambungkan ke instans, nilai jumlah queue default untuk tipe instans akan ditampilkan.
-
Periksa di dalam instans
-
Catatan
Untuk instans Windows, lihat jumlah queue ENI di Konsol ECS atau dengan memanggil operasi API.
-
Lihat konfigurasi jaringan dengan
ip a:
-
Periksa apakah ENI primer eth0 mendukung NIC multi-queue.
Contoh ini menggunakan ENI primer. Untuk memeriksa ENI sekunder, ganti identifikator dengan eth1, eth2, atau nilai lainnya.
ethtool -l eth0Periksa output:
-
Jika "Combined" di bawah "Pre-set maximums" lebih besar dari 1, ENI mendukung NIC multi-queue. Nilai ini adalah jumlah maksimum queue.
-
"Combined" di bawah "Current hardware settings" adalah jumlah queue saat ini yang sedang digunakan.
Pada contoh ini, ENI mendukung maksimal tiga combined queue (RX+TX) dan saat ini menggunakan tiga.

-
Untuk memodifikasi jumlah maksimum queue, lihat Modifikasi jumlah queue untuk ENI.
-
Untuk memodifikasi jumlah queue yang digunakan oleh OS, lihat Modifikasi jumlah queue yang digunakan oleh OS.
-
Modifikasi jumlah queue ENI
Saat Anda menyambungkan ENI ke instans, jumlah queuenya secara default mengikuti pengaturan tipe instans. Anda dapat menyesuaikannya melalui konsol atau dengan memanggil operasi API. Perhatikan hal berikut:
-
Anda hanya dapat memodifikasi jumlah queue saat ENI berstatus Available atau Bound dengan instans berstatus Stopped.
-
Jumlah queue tidak boleh melebihi jumlah maksimum queue per ENI untuk tipe instans.
-
Jumlah total queue dari semua ENI pada suatu instans tidak boleh melebihi kuota total queue untuk tipe instans.
Gunakan konsol
Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.
-
Klik ID ENI sekunder target untuk membuka halaman detailnya.
-
Klik Modify Queue Count.

-
Klik OK.
Gunakan API
Panggil operasi ModifyNetworkInterfaceAttribute dan atur parameter QueueNumber untuk memodifikasi jumlah queue.
Jumlah queue baru akan berlaku saat instans yang disambungkan dijalankan kembali.
Modifikasi jumlah queue OS
Saat Anda memodifikasi jumlah queue ENI, OS secara otomatis menerapkan pengaturan baru tersebut.
Anda juga dapat menyesuaikan jumlah queue yang aktif digunakan oleh ENI. Nilai ini harus kurang dari atau sama dengan jumlah queue yang dikonfigurasi.
-
Mengubah jumlah queue yang digunakan oleh OS tidak memengaruhi jumlah queue ENI yang dikonfigurasi dan tidak muncul dalam respons konsol atau API.
-
Perubahan ini bersifat temporary dan tidak bertahan setelah instans direstart.
Contoh berikut menyesuaikan jumlah queue pada instans Alibaba Cloud Linux 3 dengan NIC multi-queue.
-
Lihat konfigurasi jaringan dengan
ip address show:
-
Periksa apakah ENI primer eth0 mendukung NIC multi-queue.
Contoh ini menggunakan ENI primer. Untuk memeriksa ENI sekunder, ganti identifikator dengan eth1, eth2, atau nilai lainnya.
ethtool -l eth0 -
Periksa output:
-
Jika "Combined" di bawah "Pre-set maximums" lebih besar dari 1, ENI mendukung NIC multi-queue. Nilai ini adalah jumlah maksimum queue.
-
"Combined" di bawah "Current hardware settings" adalah jumlah queue saat ini yang sedang digunakan.
Pada contoh ini, ENI mendukung maksimal tiga combined queue (RX+TX) dan tiga sedang digunakan.

-
-
Atur jumlah queue aktif untuk ENI primer eth0 menjadi 2.
Contoh ini menggunakan ENI primer. Untuk menyesuaikan ENI sekunder, ganti identifikator dengan eth1, eth2, atau nilai lainnya.
sudo ethtool -L eth0 combined NNadalah jumlah queue yang ingin digunakan oleh ENI.Nharus kurang dari atau sama dengan nilai "Combined" di bawah "Pre-set maximums".Atur jumlah queue ENI primer menjadi 2:
sudo ethtool -L eth0 combined 2
Konfigurasi IRQ affinity
NIC multi-queue biasanya memerlukan konfigurasi IRQ affinity untuk menetapkan interrupt dari berbagai queue ke core CPU tertentu, sehingga mengurangi contention dan meningkatkan kinerja.
-
Semua gambar publik kecuali Red Hat Enterprise Linux telah mengaktifkan IRQ affinity secara default.
-
Red Hat Enterprise Linux mendukung IRQ affinity tetapi tidak mengaktifkannya secara default. Ikuti langkah-langkah berikut untuk mengonfigurasinya.
Langkah-langkah berikut menggunakan skrip ecs_mq untuk mengonfigurasi IRQ affinity pada gambar Red Hat Enterprise Linux 9.2. Gambar lainnya telah mengaktifkan IRQ affinity secara default.
-
(Opsional) Hentikan layanan irqbalance.
Layanan irqbalance secara dinamis menyesuaikan IRQ affinity, yang dapat bentrok dengan
ecs_mq. Hentikan terlebih dahulu.systemctl stop irqbalance.service -
Unduh skrip
ecs_mqversi terbaru:wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/ecs_mq/ecs_mq_latest.tgz -
Ekstrak paket
ecs_mq:tar -xzf ecs_mq_latest.tgz -
Berpindah ke direktori kerja:
cd ecs_mq/ -
Jalankan skrip instalasi
ecs_mq:bash install.sh redhat 9CatatanGanti
redhatdan9dengan nama dan nomor versi utama sistem operasi Anda. -
Jalankan layanan
ecs_mq:systemctl start ecs_mqLayanan ini secara otomatis mengaktifkan IRQ affinity.
Uji berbagai kombinasi jumlah queue dan IRQ affinity sambil memantau throughput dan latensi untuk menemukan keseimbangan optimal.