Tous les produits
Search
Centre de documentation

Elastic Compute Service:File d'attente multiple de la carte réseau

Dernière mise à jour :Aug 06, 2026

Répartissez le traitement des paquets sur plusieurs cœurs CPU pour augmenter le débit réseau et réduire la latence.

Pourquoi utiliser la file d'attente multiple de la carte réseau

Une interface réseau à file d'attente unique s'appuie sur un seul cœur CPU pour traiter tous les paquets, ce qui peut entraîner une surcharge du processeur, une augmentation de la latence et une perte de paquets. La fonctionnalité de file d'attente multiple de la carte réseau (NIC multi-queue) répartit le trafic sur plusieurs cœurs afin d'améliorer l'utilisation des ressources.

Dans des conditions identiques de PPS (paquets par seconde) et de bande passante, l'utilisation de deux files d'attente améliore les performances réseau de 50 % à 100 % par rapport à une file d'attente unique. L'utilisation de quatre files d'attente offre des gains encore plus importants :

  • Meilleure utilisation des multicœurs : répartition du trafic sur les cœurs CPU pour un équilibrage de charge et une utilisation optimisée.

  • Débit accru : le traitement parallèle des paquets augmente le débit, en particulier sous forte charge.

  • Latence réduite : la répartition des paquets entre plusieurs files d'attente diminue la congestion et la latence.

  • Perte de paquets minimisée : évite la perte de paquets due à la surcharge d'une file d'attente unique lors d'un trafic élevé.

Une configuration incorrecte peut dégrader les performances. Par exemple, un nombre de files d'attente inadapté ou des paramètres d'affinité CPU mal configurés provoquent des commutations de contexte inutiles, tandis qu'un nombre insuffisant de files d'attente sous-utilise les ressources matérielles.

Lorsqu'une ENI est attachée à une instance, son nombre de files d'attente correspond par défaut au paramètre défini pour le type d'instance. Pour ajuster manuellement ce nombre, évaluez d'abord votre cas d'utilisation et les conditions matérielles.

Fonctionnement de la file d'attente multiple de la carte réseau

  • Architecture des files d'attente

    Une ENI prend en charge plusieurs files d'attente combinées, chacune traitée par un cœur CPU indépendant. Cette approche permet un traitement parallèle des paquets, réduit la contention des verrous et exploite pleinement les performances des architectures multicœurs.

    Les files d'attente de réception (RX) et de transmission (TX) sont les deux types de files utilisées pour le traitement des paquets. Chaque file d'attente combinée comprend une file RX et une file TX :

    • File d'attente RX : traite les paquets entrants. L'interface réseau distribue chaque paquet vers une file RX spécifique selon les règles RSS (Receive Side Scaling), telles que le tourniquet (round-robin) ou le hachage basé sur le flux.

      Certaines familles de types d'instance prennent en charge la fonctionnalité RSS personnalisé pour les ENI, qui utilise des algorithmes de hachage pour distribuer le trafic vers différentes files RX.

    • File d'attente TX : gère les paquets sortants. Les applications placent les paquets dans une file TX, et l'interface réseau les envoie en fonction de leur séquence ou de leur priorité.

  • Prise en charge de l'affinité IRQ

    Chaque file d'attente dispose d'une interruption indépendante. L'affinité IRQ répartit la gestion des interruptions sur les cœurs CPU pour éviter la surcharge d'un cœur unique.

    L'affinité IRQ est activée par défaut sur toutes les images publiques, à l'exception de Red Hat Enterprise Linux. Consultez la section Configurer l'affinité IRQ.

Limites

  • Seuls certains types d'instance prennent en charge la file d'attente multiple de la carte réseau. Consultez la rubrique Familles de types d'instance. Si la valeur de la colonne Multi-queue est supérieure à 1, le type d'instance prend en charge cette fonctionnalité.

    • Pour les types d'instance pris en charge, la file d'attente multiple de la carte réseau est activée automatiquement lorsque vous attachez une ENI.

    • Le nombre de files d'attente indiqué pour un type d'instance correspond au nombre maximal de files d'attente par ENI pris en charge par ce type.

    • Appelez l'opération API DescribeInstanceTypes avec le paramètre InstanceTypeFamily pour interroger les métriques relatives aux files d'attente :

      • Nombre de files d'attente par défaut

        PrimaryEniQueueNumber : nombre de files d'attente par défaut pour l'ENI principale. SecondaryEniQueueNumber : nombre de files d'attente par défaut pour une ENI secondaire.

      • Nombre maximal de files d'attente par ENI

        MaximumQueueNumberPerEni : nombre maximal de files d'attente par ENI pour la famille de types d'instance.

      • Quota total de files d'attente

        TotalEniQueueQuantity : quota total de files d'attente pour la famille de types d'instance.

  • Les images publiques dont la version du noyau est antérieure à 2,6 peuvent ne pas prendre en charge la file d'attente multiple de la carte réseau. Utilisez les dernières versions des images publiques.

Consulter le nombre de files d'attente de l'ENI

Utiliser la console

  1. Accédez à la page Console ECS - Interfaces réseau élastiques.

  2. Dans le coin supérieur gauche de la page, sélectionnez une région et un groupe de ressources.

  3. Cliquez sur l'ID de l'ENI secondaire cible pour ouvrir sa page de détails.

  4. Dans la section Informations de base, repérez le paramètre Queues. Cette valeur correspond au nombre actuel de files d'attente.

    • Si vous avez modifié le nombre de files d'attente, la valeur modifiée s'affiche.

    • Si vous n'avez pas modifié le nombre de files d'attente :

Utiliser l'API

Appelez l'opération DescribeNetworkInterfaceAttribute. Le paramètre de réponse QueueNumber indique le nombre de files d'attente.

  • Si vous avez modifié le nombre de files d'attente, la valeur modifiée s'affiche.

  • Si vous n'avez pas modifié le nombre de files d'attente :

Vérifier depuis l'instance

  1. Connectez-vous à une instance Linux.

    Remarque

    Pour les instances Windows, consultez le nombre de files d'attente de l'ENI dans la console ECS ou en appelant une opération API.

  2. Affichez la configuration réseau à l'aide de la commande 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. Vérifiez si l'ENI principale eth0 prend en charge la file d'attente multiple de la carte réseau.

    Cet exemple utilise l'ENI principale. Pour vérifier une ENI secondaire, remplacez l'identifiant par eth1, eth2 ou une autre valeur.

    ethtool -l eth0

    Analysez le résultat :

    • Si la valeur « Combined » sous « Pre-set maximums » est supérieure à 1, l'ENI prend en charge la file d'attente multiple de la carte réseau. Cette valeur représente le nombre maximal de files d'attente.

    • La valeur « Combined » sous « Current hardware settings » correspond au nombre actuel de files d'attente utilisées.

    Dans cet exemple, l'ENI prend en charge un maximum de trois files combinées (RX+TX) et en utilise actuellement trois.

    [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

Modifier le nombre de files d'attente de l'ENI

Lorsque vous attachez une ENI à une instance, son nombre de files d'attente correspond par défaut au paramètre défini pour le type d'instance. Vous pouvez l'ajuster via la console ou en appelant une opération API. Tenez compte des points suivants :

Utiliser la console

  1. Accédez à la page Console ECS - Interfaces réseau élastiques.

  2. Dans le coin supérieur gauche de la page, sélectionnez une région et un groupe de ressources.

  3. Cliquez sur l'ID de l'ENI secondaire cible pour ouvrir sa page de détails.

  4. Cliquez sur Modify Queue Count.

    Cliquez sur l'icône de modification à côté du champ NIC Queue Number et saisissez le nombre de files d'attente souhaité dans la zone de saisie (plage valide : 1 à 2048).

  5. Cliquez sur OK.

Utiliser l'API

Appelez l'opération ModifyNetworkInterfaceAttribute et définissez le paramètre QueueNumber pour modifier le nombre de files d'attente.

Le nouveau nombre de files d'attente prend effet au prochain démarrage de l'instance associée.

Modifier le nombre de files d'attente utilisé par le système d'exploitation

Lorsque vous modifiez le nombre de files d'attente de l'ENI, le système d'exploitation applique automatiquement le nouveau paramètre.

Vous pouvez également ajuster le nombre de files d'attente que l'ENI utilise activement. Cette valeur doit être inférieure ou égale au nombre de files d'attente configuré.

Remarque
  • La modification du nombre de files d'attente utilisé par le système d'exploitation n'affecte pas le nombre de files d'attente configuré pour l'ENI et n'apparaît pas dans la console ni dans les réponses API.

  • Cette modification est temporaire et ne persiste pas après le redémarrage de l'instance.

L'exemple suivant ajuste le nombre de files d'attente sur une instance Alibaba Cloud Linux 3 avec la file d'attente multiple de la carte réseau activée.

  1. Connectez-vous à une instance Linux.

  2. Affichez la configuration réseau à l'aide de la commande 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. Vérifiez si l'ENI principale eth0 prend en charge la file d'attente multiple de la carte réseau.

    Cet exemple utilise l'ENI principale. Pour vérifier une ENI secondaire, remplacez l'identifiant par eth1, eth2 ou une autre valeur.

    ethtool -l eth0
  4. Analysez le résultat :

    • Si la valeur « Combined » sous « Pre-set maximums » est supérieure à 1, l'ENI prend en charge la file d'attente multiple de la carte réseau. Cette valeur représente le nombre maximal de files d'attente.

    • La valeur « Combined » sous « Current hardware settings » correspond au nombre actuel de files d'attente utilisées.

    Dans cet exemple, l'ENI prend en charge un maximum de trois files combinées (RX+TX) et trois sont actuellement utilisées.

    [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. Définissez le nombre de files actives pour l'ENI principale eth0 sur 2.

    Cet exemple utilise l'ENI principale. Pour ajuster une ENI secondaire, remplacez l'identifiant par eth1, eth2 ou une autre valeur.

    sudo ethtool -L eth0 combined N

    N représente le nombre de files d'attente que vous souhaitez que l'ENI utilise. N doit être inférieur ou égal à la valeur « Combined » sous « Pre-set maximums ».

    Définissez le nombre de files d'attente de l'ENI principale sur 2 :

    sudo ethtool -L eth0 combined 2

Configurer l'affinité IRQ

La file d'attente multiple de la carte réseau nécessite généralement une configuration de l'affinité IRQ pour attribuer les interruptions des différentes files à des cœurs CPU spécifiques, réduisant ainsi la contention et améliorant les performances.

Remarque
  • L'affinité IRQ est activée par défaut sur toutes les images publiques, à l'exception de Red Hat Enterprise Linux.

  • Red Hat Enterprise Linux prend en charge l'affinité IRQ, mais ne l'active pas par défaut. Suivez les étapes ci-dessous pour la configurer.

Les étapes suivantes utilisent le script ecs_mq pour configurer l'affinité IRQ sur une image Red Hat Enterprise Linux 9.2. Les autres images ont l'affinité IRQ activée par défaut.

  1. Connectez-vous à une instance Linux.

  2. (Facultatif) Arrêtez le service irqbalance.

    Le service irqbalance ajuste dynamiquement l'affinité IRQ, ce qui peut entrer en conflit avec le script ecs_mq. Arrêtez-le d'abord.

    systemctl stop irqbalance.service
  3. Téléchargez la dernière version du script ecs_mq :

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

    Correctifs apportés dans la dernière version d'ecs_mq

    Correctifs apportés dans la dernière version de ecs_mq par rapport à la version précédente de ecs_mq :

    • Priorise la liaison des interruptions aux CPU situés sur le même nœud NUMA que le périphérique PCIe de l'ENI.

    • Optimise la logique de réglage pour plusieurs périphériques réseau.

    • Ajuste la logique de liaison des interruptions en fonction du ratio entre les files d'attente de la carte réseau et les cœurs CPU.

    • Optimise la liaison des interruptions en fonction de la position des frères CPU (CPU siblings).

    • Corrige l'augmentation de la latence d'accès à la mémoire causée par les liaisons cross-NUMA dans la version précédente.

    • Le nouveau mode de ecs_mq est activé par défaut. Basculez entre les modes :

      • Ancien mode ecs_mq : ecs_mq_rps_rfs old

      • Nouveau mode ecs_mq : ecs_mq_rps_rfs new

    • Corrige un problème où la commande ethtool était introuvable lors du branchement à chaud de l'ENI sur certains systèmes, entraînant l'échec d'ecs_mq_rps_rfs.

    Remarque

    La nouvelle version de ecs_mq offre une amélioration des performances réseau de 5 % à 30 % par rapport à l'ancienne version de ecs_mq pour la plupart des valeurs PPS et BPS lors des tests réseau.

  4. Décompressez le package ecs_mq :

    tar -xzf ecs_mq_latest.tgz
  5. Accédez au répertoire de travail :

    cd ecs_mq/
  6. Exécutez le script d'installation de ecs_mq :

    bash install.sh redhat 9
    Remarque

    Remplacez redhat et 9 par le nom et le numéro de version majeure de votre système d'exploitation.

  7. Démarrez le service ecs_mq :

    systemctl start ecs_mq

    Le service active automatiquement l'affinité IRQ.

Testez différentes combinaisons de nombre de files d'attente et d'affinité IRQ tout en surveillant le débit et la latence pour trouver l'équilibre optimal.