Tüm Ürünler
Search
Belge Merkezi

Elastic Compute Service:NIC multi-queue

Son Güncelleme:Sep 30, 2026

Paket işleme yükünü birden fazla CPU çekirdeğine dağıtarak ağ aktarım hızını artırın ve gecikme süresini azaltın.

NIC çok kuyruklu yapıyı kullanma nedenleri

Tek kuyruklu bir ağ arabirimi tüm paketler için tek bir CPU çekirdeği kullanır. Bu durum CPU aşırı yüklenmesine, gecikmeye ve paket kaybına yol açabilir. NIC çok kuyruklu yapı trafiği birden fazla çekirdeğe dağıtarak kaynak kullanımını iyileştirir.

Aynı PPS ve bant genişliği koşullarında iki kuyruk kullanımı, tek kuyruğa kıyasla ağ performansını %50 ila %100 oranında artırır. Dört kuyruk ise daha yüksek kazançlar sağlar:

  • Daha iyi çok çekirdekli kullanım: Trafiği CPU çekirdeklerine dengeli bir şekilde dağıtarak yük dengelemesi sağlar ve kullanımı artırır.

  • Yüksek aktarım hızı: Paralel paket işleme sayesinde özellikle yüksek yük altında aktarım hızı artar.

  • Düşük gecikme süresi: Paketlerin kuyruklar arasında dağıtılması tıkanıklığı ve gecikmeyi azaltır.

  • Azalan paket kaybı: Yüksek trafik sırasında tek kuyruk aşırı yüklenmesinden kaynaklanan paket kayıplarını önler.

Hatalı yapılandırma performansı düşürebilir. Örneğin yanlış kuyruk sayısı veya CPU yakınlığı ayarları gereksiz bağlam değiştirmeye neden olur; yetersiz kuyruk sayısı ise donanım kaynaklarının verimsiz kullanılmasına yol açar.

Bir ENI'yi bir örneğe eklediğinizde kuyruk sayısı varsayılan olarak örnek türü ayarına göre belirlenir. Kuyruk sayısını manuel olarak ayarlamadan önce kullanım senaryonuzu ve donanım koşullarınızı değerlendirin.

NIC çok kuyruklu yapının çalışma şekli

  • Kuyruk mimarisi

    Bir ENI her biri bağımsız bir CPU çekirdeği tarafından işlenen birden fazla birleşik kuyruğu destekler. Bu sayede paralel paket işleme mümkün olur kilit çekişmesi azalır ve çok çekirdekli performans tam kapasiteyle kullanılır.

    Alıcı (RX) ve Verici (TX) kuyrukları paket işleme için kullanılan iki kuyruk türüdür. Her birleşik kuyruk bir RX ve bir TX kuyruğundan oluşur:

    • RX kuyruğu: Gelen paketleri işler. Ağ arabirimi her paketi yuvarlak sıralama (round-robin) veya akış tabanlı karma gibi Receive Side Scaling (RSS) kurallarına göre belirli bir RX kuyruğuna yönlendirir.

      Bazı örnek türü aileleri trafiği farklı RX kuyruklarına dağıtmak için karma algoritmaları kullanan ENI'ler için Özel RSS özelliğini destekler.

    • TX kuyruğu: Giden paketleri yönetir. Uygulamalar paketleri bir TX kuyruğuna yerleştirir ve ağ arabirimi bunları sıraya veya önceliğe göre gönderir.

  • IRQ yakınlığı desteği

    Her kuyruğun bağımsız bir kesmesi vardır. IRQ yakınlığı kesme işlemeyi CPU çekirdeklerine dağıtarak tek bir çekirdeğin aşırı yüklenmesini önler.

    Red Hat Enterprise Linux dışındaki tüm genel görüntülerde IRQ yakınlığı varsayılan olarak etkindir. Bkz. IRQ yakınlığını yapılandırma.

Sınırlamalar

  • Yalnızca bazı örnek türleri NIC çok kuyruklu yapıyı destekler. Bkz. Örnek türü aileleri. Çok kuyruklu sütunundaki değer 1'den büyükse ilgili örnek türü NIC çok kuyruklu yapıyı destekler.

    • Desteklenen örnek türlerinde bir ENI eklediğinizde NIC çok kuyruklu yapı otomatik olarak etkinleşir.

    • Bir örnek türü için listelenen kuyruk sayısı o türün desteklediği ENI başına maksimum kuyruk sayısıdır.

    • Kuyrukla ilgili ölçümleri sorgulamak için InstanceTypeFamily parametresiyle DescribeInstanceTypes API işlemini çağırın:

      • Varsayılan kuyruk sayısı

        PrimaryEniQueueNumber: Birincil ENI için varsayılan kuyruk sayısı. SecondaryEniQueueNumber: İkincil ENI için varsayılan kuyruk sayısı.

      • ENI başına maksimum kuyruk sayısı

        MaximumQueueNumberPerEni: Örnek türü ailesi için ENI başına maksimum kuyruk sayısı.

      • Toplam kuyruk kotası

        TotalEniQueueQuantity: Örnek türü ailesi için toplam kuyruk kotası.

  • Çekirdek sürümü 2,6'dan eski olan genel görüntüler NIC çok kuyruklu yapıyı desteklemeyebilir. En son genel görüntüleri kullanın.

ENI kuyruk sayısını görüntüleme

Konsolu kullanma

  1. ECS Konsolu - Esnek Ağ Arabirimleri sayfasına gidin.

  2. Sayfanın sol üst köşesinde bir bölge ve kaynak grubu seçin.

  3. Hedef ikincil ENI kimliğine tıklayarak ayrıntılar sayfasını açın.

  4. Temel Bilgiler bölümünde Queues parametresini bulun. Bu değer mevcut kuyruk sayısını gösterir.

    • Kuyruk sayısını değiştirdiyseniz değiştirilen değer görüntülenir.

    • Kuyruk sayısını değiştirmediyseniz:

API'yi kullanma

DescribeNetworkInterfaceAttribute işlemini çağırın. QueueNumber yanıt parametresi kuyruk sayısını belirtir.

  • Kuyruk sayısını değiştirdiyseniz değiştirilen değer görüntülenir.

  • Kuyruk sayısını değiştirmediyseniz:

Örnek içinde kontrol etme

  1. Bir Linux örneğine bağlanın.

    Not

    Windows örnekleri için ENI kuyruk sayısını ECS konsolunda görüntüleyin veya bir API işlemi çağırarak öğrenin.

  2. Ağ yapılandırmasını ip a komutuyla görüntüleyin:

    [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. Birincil ENI eth0'ın NIC çok kuyruklu yapıyı destekleyip desteklemediğini kontrol edin.

    Bu örnekte birincil ENI kullanılmıştır. İkincil bir ENI'yi kontrol etmek için tanımlayıcıyı eth1 eth2 veya başka bir değerle değiştirin.

    ethtool -l eth0

    Çıktıyı kontrol edin:

    • "Pre-set maximums" altındaki "Combined" değeri 1'den büyükse ENI NIC çok kuyruklu yapıyı destekler. Bu değer maksimum kuyruk sayısıdır.

    • "Current hardware settings" altındaki "Combined" değeri kullanımdaki mevcut kuyruk sayısıdır.

    Bu örnekte ENI maksimum üç birleşik (RX+TX) kuyruğu destekler ve şu anda üç kuyruk kullanılmaktadır.

    [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

ENI kuyruk sayısını değiştirme

Bir ENI'yi bir örneğe eklediğinizde kuyruk sayısı varsayılan olarak örnek türü ayarına göre belirlenir. Bu sayıyı konsoldan veya bir API işlemi çağırarak ayarlayabilirsiniz. Şu hususlara dikkat edin:

Konsolu kullanma

  1. ECS Konsolu - Esnek Ağ Arabirimleri sayfasına gidin.

  2. Sayfanın sol üst köşesinde bir bölge ve kaynak grubu seçin.

  3. Hedef ikincil ENI kimliğine tıklayarak ayrıntılar sayfasını açın.

  4. Kuyruk Sayısını Değiştir seçeneğine tıklayın.

    NIC Queue Number alanının yanındaki düzenleme simgesine tıklayın ve giriş kutusuna hedef kuyruk numarasını girin (geçerli aralık: 1 ila 2048).

  5. Tamam'a tıklayın.

API'yi kullanma

Kuyruk sayısını değiştirmek için ModifyNetworkInterfaceAttribute işlemini çağırın ve QueueNumber parametresini ayarlayın.

Yeni kuyruk sayısı bağlı örnek bir sonraki başladığında etkili olur.

İşletim sistemi kuyruk sayısını değiştirme

ENI kuyruk sayısını değiştirdiğinizde işletim sistemi yeni ayarı otomatik olarak uygular.

ENI'nin aktif olarak kullandığı kuyruk sayısını da ayarlayabilirsiniz. Bu değer yapılandırılan kuyruk sayısından küçük veya ona eşit olmalıdır.

Not
  • İşletim sisteminin kullandığı kuyruk sayısının değiştirilmesi ENI'nin yapılandırılmış kuyruk sayısını etkilemez ve konsolda veya API yanıtlarında görünmez.

  • Bu değişiklik geçicidir ve örnek yeniden başlatıldığında kalıcı olmaz.

Aşağıdaki örnekte NIC çok kuyruklu yapıya sahip bir Alibaba Cloud Linux 3 örneğindeki kuyruk sayısı ayarlanmaktadır.

  1. Bir Linux örneğine bağlanın.

  2. Ağ yapılandırmasını ip address show komutuyla görüntüleyin:

    [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. Birincil ENI eth0'ın NIC çok kuyruklu yapıyı destekleyip desteklemediğini kontrol edin.

    Bu örnekte birincil ENI kullanılmıştır. İkincil bir ENI'yi kontrol etmek için tanımlayıcıyı eth1 eth2 veya başka bir değerle değiştirin.

    ethtool -l eth0
  4. Çıktıyı kontrol edin:

    • "Pre-set maximums" altındaki "Combined" değeri 1'den büyükse ENI NIC çok kuyruklu yapıyı destekler. Bu değer maksimum kuyruk sayısıdır.

    • "Current hardware settings" altındaki "Combined" değeri kullanımdaki mevcut kuyruk sayısıdır.

    Bu örnekte ENI maksimum üç birleşik (RX+TX) kuyruğu destekler ve üç kuyruk kullanılmaktadır.

    [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. Birincil ENI eth0 için aktif kuyruk sayısını 2 olarak ayarlayın.

    Bu örnekte birincil ENI kullanılmıştır. İkincil bir ENI'yi ayarlamak için tanımlayıcıyı eth1 eth2 veya başka bir değerle değiştirin.

    sudo ethtool -L eth0 combined N

    N değeri ENI'nin kullanmasını istediğiniz kuyruk sayısını belirtir. N değeri "Pre-set maximums" altındaki "Combined" değerinden küçük veya ona eşit olmalıdır.

    Birincil ENI kuyruk sayısını 2 olarak ayarlayın:

    sudo ethtool -L eth0 combined 2

IRQ yakınlığını yapılandırma

NIC çok kuyruklu yapı farklı kuyruklardan gelen kesmeleri belirli CPU çekirdeklerine atayarak çekişmeyi azaltmak ve performansı artırmak için genellikle IRQ yakınlığı yapılandırması gerektirir.

Not
  • Red Hat Enterprise Linux dışındaki tüm genel görüntülerde IRQ yakınlığı varsayılan olarak etkindir.

  • Red Hat Enterprise Linux IRQ yakınlığını destekler ancak varsayılan olarak etkin değildir. Yapılandırmak için aşağıdaki adımları izleyin.

Aşağıdaki adımlarda Red Hat Enterprise Linux 9.2 görüntüsünde IRQ yakınlığını yapılandırmak için ecs_mq betiği kullanılmaktadır. Diğer görüntülerde IRQ yakınlığı varsayılan olarak etkindir.

  1. Bir Linux örneğine bağlanın.

  2. (İsteğe bağlı) irqbalance hizmetini durdurun.

    irqbalance hizmeti IRQ yakınlığını dinamik olarak ayarlar; bu durum ecs_mq ile çakışabilir. Önce bu hizmeti durdurun.

    systemctl stop irqbalance.service
  3. En son ecs_mq betiğini indirin:

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

    ecs_mq'nin en son sürümündeki düzeltmeler

    En son ecs_mq sürümünün önceki ecs_mq sürümüne göre yaptığı düzeltmeler:

    • Kesmeleri ENI'nin PCIe cihazıyla aynı NUMA düğümündeki CPU'lara bağlamaya öncelik verir.

    • Birden fazla ağ cihazı için ayar mantığını optimize eder.

    • NIC kuyruklarının CPU çekirdeklerine oranına göre kesme bağlama mantığını ayarlar.

    • CPU eşlerinin konumuna göre kesme bağlamasını optimize eder.

    • Önceki sürümde cross-NUMA bağlamalarından kaynaklanan bellek erişim gecikmesi artışını giderir.

    • ecs_mq yeni modu varsayılan olarak etkindir. Modlar arasında geçiş yapmak için:

      • Eski ecs_mq modu: ecs_mq_rps_rfs old

      • Yeni ecs_mq modu: ecs_mq_rps_rfs new

    • Bazı sistemlerde ENI hot-plugging sırasında ethtool komutunun bulunamaması nedeniyle ecs_mq_rps_rfs işleminin başarısız olmasına neden olan sorunu giderir.

    Not

    Yeni ecs_mq sürümü ağ testlerindeki çoğu PPS ve BPS değeri için eski ecs_mq sürümüne kıyasla %5 ila %30 arasında ağ performansı artışı sağlar.

  4. ecs_mq paketini çıkarın:

    tar -xzf ecs_mq_latest.tgz
  5. Çalışma dizinine gidin:

    cd ecs_mq/
  6. ecs_mq kurulum betiğini çalıştırın:

    bash install.sh redhat 9
    Not

    redhat ve 9 değerlerini işletim sisteminizin adı ve ana sürüm numarasıyla değiştirin.

  7. ecs_mq hizmetini başlatın:

    systemctl start ecs_mq

    Hizmet IRQ yakınlığını otomatik olarak etkinleştirir.

En uygun dengeyi bulmak için aktarım hızını ve gecikme süresini izlerken farklı kuyruk sayısı ve IRQ yakınlığı kombinasyonlarını test edin.