All Products
Search
Document Center

Elastic Compute Service:NIC multi-queue

Last Updated:Aug 21, 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 untuk 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 untuk beban yang seimbang dan pemanfaatan yang lebih tinggi.

  • Throughput yang lebih tinggi: Pemrosesan paket secara paralel meningkatkan throughput, terutama di bawah beban tinggi.

  • Latensi yang lebih rendah: Mendistribusikan paket ke beberapa 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 yang independen. Hal ini memungkinkan pemrosesan paket secara 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 yang berbeda.

    • TX queue: Mengelola paket keluar. Aplikasi menempatkan paket ke dalam TX queue, dan antarmuka jaringan mengirimkannya berdasarkan urutan atau prioritas.

  • Dukungan IRQ affinity

    Setiap queue memiliki interrupt independen. IRQ affinity mendistribusikan penanganan interrupt ke 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 antrian bawaan

        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.

      • Kuota total queue

        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.

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

    • Jika Anda belum mengubah jumlah queue:

Gunakan API

Panggil operasi DescribeNetworkInterfaceAttribute. Parameter respons QueueNumber menunjukkan jumlah queue.

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

  • Jika Anda belum mengubah 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:

    [root@ixxxxx ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:1b:74:12 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.20.226/24 brd 172.16.20.255 scope global dynamic noprefixroute eth0
           valid_lft 315359814sec preferred_lft 315359814sec
        inet6 fe80::216:3eff:fe1b:7412/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:46:ff:fc brd ff:ff:ff:ff:ff:ff
        altname enp0s6
        altname ens6
        inet 172.16.20.227/24 brd 172.16.20.255 scope global dynamic noprefixroute eth1
           valid_lft 315359814sec preferred_lft 315359814sec
        inet6 fe80::216:3eff:fe46:fffc/64 scope link
           valid_lft forever preferred_lft forever
    4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 8500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:47:47:c2 brd ff:ff:ff:ff:ff:ff
        altname enp0s8
        altname ens8
        inet 172.16.20.228/24 brd 172.16.20.255 scope global dynamic noprefixroute eth2
           valid_lft 315359814sec preferred_lft 315359814sec
        inet6 fe80::216:3eff:fe47:47c2/64 scope link
           valid_lft forever preferred_lft forever
  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.

    [root@xxx          ~]# ethtool -l eth0
    Channel parameters for eth0:
    Pre-set maximums:
    RX:             n/a
    TX:             n/a
    Other:          n/a
    Combined:       3
    Current hardware settings:
    RX:             n/a
    TX:             n/a
    Other:          n/a
    Combined:       3

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.

    Klik ikon edit di samping bidang NIC Queue Number, lalu masukkan jumlah queue target di kotak input (rentang valid: 1 hingga 2048).

  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 yang dikonfigurasi pada ENI atau ditampilkan di Konsol maupun respons 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:

    [ecs-user@iZbpxxx ~]$ ip address show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:16:3e:37:7a:82 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        altname ens5
        inet 172.16.0.20/24 brd 172.16.0.255 scope global dynamic noprefixroute eth0
           valid_lft 315359878sec preferred_lft 315359878sec
        inet6 fe80::216:3eff:fe37:7a82/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 00:16:3e:28:b1:9e brd ff:ff:ff:ff:ff:ff
        altname enp0s6
        altname ens6
        inet 172.16.0.21/24 brd 172.16.0.255 scope global dynamic noprefixroute eth1
           valid_lft 315359879sec preferred_lft 315359879sec
        inet6 fe80::216:3eff:fe28:b19e/64 scope link
           valid_lft forever preferred_lft forever
  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.

    [root@xxx          ~]# ethtool -l eth0
    Channel parameters for eth0:
    Pre-set maximums:
    RX:             n/a
    TX:             n/a
    Other:          n/a
    Combined:       3
    Current hardware settings:
    RX:             n/a
    TX:             n/a
    Other:          n/a
    Combined:       3
  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 queue yang berbeda 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 bertentangan 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 jumlah 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 kombinasi jumlah queue dan IRQ affinity yang berbeda sambil memantau throughput dan latensi untuk menemukan keseimbangan optimal.