All Products
Search
Document Center

Elastic Compute Service:NIC multi-queue

Last Updated:May 16, 2026

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

  1. Buka Konsol ECS - Elastic Network Interfaces.

  2. Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.地域

  3. Klik ID ENI sekunder target untuk membuka halaman detailnya.

  4. Di bagian Informasi Dasar, temukan parameter Queues. Nilai ini adalah jumlah queue saat ini.

    image

    • Jika Anda telah memodifikasi jumlah queue, nilai yang dimodifikasi akan ditampilkan.

    • Jika Anda belum memodifikasi jumlah queue:

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:

Periksa di dalam instans

  1. Sambungkan ke instans Linux.

    Catatan

    Untuk instans Windows, lihat jumlah queue ENI di Konsol ECS atau dengan memanggil operasi API.

  2. Lihat konfigurasi jaringan dengan ip a:

    image

  3. 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 saat ini menggunakan tiga.

    image

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:

Gunakan konsol

  1. Buka Konsol ECS - Elastic Network Interfaces.

  2. Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya.地域

  3. Klik ID ENI sekunder target untuk membuka halaman detailnya.

  4. Klik Modify Queue Count.

    image

  5. 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.

Catatan
  • 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.

  1. Sambungkan ke instans Linux.

  2. Lihat konfigurasi jaringan dengan ip address show:

    image

  3. 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
  4. 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.

    image

  5. 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 N

    N adalah jumlah queue yang ingin digunakan oleh ENI. N harus 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.

Catatan
  • 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.

  1. Sambungkan ke instans Linux.

  2. (Opsional) Hentikan layanan irqbalance.

    Layanan irqbalance secara dinamis menyesuaikan IRQ affinity, yang dapat bentrok dengan ecs_mq. Hentikan terlebih dahulu.

    systemctl stop irqbalance.service
  3. Unduh skrip ecs_mq versi terbaru:

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/ecs_mq/ecs_mq_latest.tgz

    Perbaikan pada versi terbaru ecs_mq

    Perbaikan pada ecs_mq versi terbaru dibandingkan ecs_mq sebelumnya:

    • Memrioritaskan binding interrupt ke CPU pada node NUMA yang sama dengan perangkat PCIe ENI.

    • Mengoptimalkan logika tuning untuk beberapa perangkat jaringan.

    • Menyesuaikan logika binding interrupt berdasarkan rasio queue NIC terhadap core CPU.

    • Mengoptimalkan binding interrupt berdasarkan posisi sibling CPU.

    • Memperbaiki peningkatan latensi akses memori akibat binding cross-NUMA pada versi sebelumnya.

    • Mode baru ecs_mq diaktifkan secara default. Beralih antar mode:

      • Mode lama ecs_mq: ecs_mq_rps_rfs old

      • Mode baru ecs_mq: ecs_mq_rps_rfs new

    • Memperbaiki masalah di mana perintah ethtool tidak ditemukan selama hot-plugging ENI pada beberapa sistem, menyebabkan ecs_mq_rps_rfs gagal.

    Catatan

    ecs_mq versi baru memberikan peningkatan kinerja jaringan sebesar 5% hingga 30% dibandingkan ecs_mq versi lama untuk sebagian besar PPS dan BPS dalam pengujian jaringan.

  4. Ekstrak paket ecs_mq:

    tar -xzf ecs_mq_latest.tgz
  5. Berpindah ke direktori kerja:

    cd ecs_mq/
  6. Jalankan skrip instalasi ecs_mq:

    bash install.sh redhat 9
    Catatan

    Ganti redhat dan 9 dengan nama dan nomor versi utama sistem operasi Anda.

  7. Jalankan layanan ecs_mq:

    systemctl start ecs_mq

    Layanan ini secara otomatis mengaktifkan IRQ affinity.

Uji berbagai kombinasi jumlah queue dan IRQ affinity sambil memantau throughput dan latensi untuk menemukan keseimbangan optimal.