Tous les produits
Search
Centre de documentation

Elastic Compute Service:Test instance network performance

Dernière mise à jour :Aug 18, 2026

Utilisez Netperf et sockperf pour tester le taux de transfert de paquets (PPS), la bande passante réseau et la latence réseau des instances ECS.

Important
  • Afin d'éviter toute perte de données, effectuez les tests de performances réseau sur de nouvelles instances ECS ne contenant aucune donnée.

  • Les métriques des types d'instance sont validées dans un environnement de test. Les performances réelles peuvent varier en fonction de facteurs tels que la charge de l'instance et le modèle de mise en réseau.

Prérequis

Préparatifs

  • Créez des instances ECS destinées aux tests. Consultez la rubrique Lancer des instances ECS personnalisées.

    Important

    Utilisez des instances du même type pour garantir des résultats de test précis et comparables.

  • Assurez-vous que toutes les instances de test se trouvent dans le même Virtual Private Cloud (VPC), sont connectées au même vSwitch et appartiennent au même groupe de sécurité.

Environnements d'exemple

Les tableaux ci-dessous répertorient les types et quantités d'instances recommandés pour les machines de test et les machines de test auxiliaires. Sélectionnez les machines en tant que serveurs ou clients selon votre scénario de test.

  • Tester le taux de transfert de paquets (instances Linux uniquement)

    Remarque

    Aucun outil n'est disponible pour tester le taux de transfert de paquets des instances Windows.

    Taux de transfert de paquets inférieur à 6 000 000 pps

    Élément de test

    Machine de test

    Machine de test auxiliaire

    Type d'instance

    ecs.g7.large

    ecs.g7.large

    Image

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    Nombre d'instances

    1

    1

    Réseau

    Des adresses IP publiques sont attribuées.

    Taux de transfert de paquets supérieur à 6 000 000 pps et inférieur à 20 000 000 pps

    Élément de test

    Machine de test

    Machine de test auxiliaire

    Type d'instance

    ecs.g7,16xlarge

    ecs.g7,16xlarge

    Image

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    Nombre d'instances

    1

    3

    Réseau

    Des adresses IP publiques sont attribuées.

    Taux de transfert de paquets supérieur à 20 000 000 pps

    Élément de test

    Machine de test

    Machine de test auxiliaire

    Type d'instance

    ecs.g7,32xlarge

    ecs.g7,32xlarge

    Image

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    Nombre d'instances

    1

    3

    Réseau

    Des adresses IP publiques sont attribuées.

  • Tester la bande passante et la latence du réseau

    Instance Linux

    Élément de test

    Machine de test

    Machine de test auxiliaire

    Type d'instance

    ecs.g7.large

    ecs.g7.large

    Image

    Alibaba Cloud Linux 3

    Alibaba Cloud Linux 3

    Nombre d'instances

    1

    1

    Réseau

    Des adresses IP publiques sont attribuées.

    Instance Windows

    Élément de test

    Machine de test

    Machine de test auxiliaire

    Type d'instance

    ecs.g7.large

    ecs.g7.large

    Image

    Windows Server 2022

    Windows Server 2022

    Nombre d'instances

    1

    1

    Réseau

    Des adresses IP publiques sont attribuées.

Procédure

Tester le taux de transfert de paquets (Linux uniquement)

Remarque

Aucun outil n'est disponible pour tester le taux de transfert de paquets des instances Windows.

Taux de transfert de paquets inférieur à 6 000 000 pps

  1. Connectez-vous à la machine de test et aux machines de test auxiliaires. Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.

  2. Sur les deux machines, téléchargez le package d'installation de Netperf :

    wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz
  3. Sur les deux machines, installez Netperf et sar.

    1. Décompressez le package d'installation de Netperf :

      sudo yum install -y gcc autoconf automake libtool sysstat
      tar -zxvf netperf-2.7.0.tar.gz
    2. Consultez le numéro de version de GNU Compiler Collection (GCC).

      gcc -v 2>&1
    3. Si GCC est ultérieur à la version 10 sur l'une des machines, effectuez les opérations suivantes pour garantir une compilation correcte par GCC. Sinon, ignorez cette étape.

      1. Ouvrez le fichier nettest_omni.c.

        cd netperf
        vim src/nettest_omni.c
      2. Appuyez sur i pour passer en mode Insertion et supprimez les variables déclarées suivantes du fichier nettest_omni.c :

        /* different options for the sockets        */
        
        int
          loc_nodelay,    /* don't/do use NODELAY  locally    */
          rem_nodelay,    /* don't/do use NODELAY remotely  */
          loc_sndavoid,    /* avoid send copies locally    */
          loc_rcvavoid,    /* avoid recv copies locally    */
          rem_sndavoid,    /* avoid send copies remotely    */
          rem_rcvavoid;   /* avoid recv_copies remotely    */
      3. Appuyez sur Échap, saisissez :wq et appuyez sur Entrée pour enregistrer et fermer le fichier.

    4. Installez Netperf et sar.

      cd netperf
      sudo ./configure
      sudo make && sudo make install
  4. Sur la machine de test, démarrez 64 services netserver :

    #!/bin/bash
    for j in `seq 64`; do
        netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1  &
    done
  5. Consultez l'adresse IP privée de la machine de test :

    ifconfig || ip addr

    image.png

  6. Sur la machine de test auxiliaire, envoyez du trafic vers la machine de test :

    #!/bin/bash
    server_ip=<Private IP address of the test machine>
    for j in `seq 64`; do
        port=$[16000+j]
        netperf -H ${server_ip} -l ${run_time:-300} -t UDP_STREAM  -p $port  -- -m 1 -D > /dev/null 2>&1 &
    done

    Remplacez <Private IP address of the test machine> par l'adresse IP privée réelle obtenue à l'étape précédente.

    image.png

  7. Sur la machine de test, testez le taux de transfert de paquets :

    sar -n DEV 1

    Vérifiez la colonne rxpck/s. La valeur rxpck/s indique le nombre de paquets reçus par seconde. Dans cet exemple, la valeur est d'environ 940 000.

    image.png

Taux de transfert de paquets supérieur à 6 000 000 pps et inférieur à 20 000 000 pps

  1. Connectez-vous à la machine de test et aux machines de test auxiliaires. Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.

  2. Sur les quatre machines (trois auxiliaires + une de test), installez sockperf :

    sudo yum install -y autoconf automake libtool gcc-c++
    cd /opt
    sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz
    sudo tar -zxf 3.8.tar.gz
    cd sockperf-3.8/
    sudo ./autogen.sh
    sudo ./configure
    sudo make -j `cat /proc/cpuinfo| grep process | wc -l`
    sudo make install
  3. Consultez l'adresse IP privée de la machine de test :

    ifconfig || ip addr

    image.png

  4. Sur chaque machine de test auxiliaire, envoyez du trafic vers la machine de test :

    server_ip="<Private IP address of the test machine>"
    threads=64
    msg_size=14
    run_time=60
    
    basePort=6666
    for((i=0;i<$threads;++i));do
        nohup sockperf tp -i $server_ip --pps max -m ${msg_size} -t ${run_time} --port $[${basePort}+${i}] 2>&1 &
    done

    Remplacez <Private IP address of the test machine> par la valeur réelle. Le paramètre run_time spécifie la durée du trafic.

  5. Sur les quatre machines, testez le taux de transfert de paquets :

    sar -n DEV 1

    Vérifiez la colonne rxpck/s sur la machine de test. La valeur rxpck/s indique le nombre de paquets reçus par seconde. Dans cet exemple, la valeur est d'environ 12 000 000 pps.Received packets

Taux de transfert de paquets supérieur à 20 000 000 pps

  1. Connectez-vous à la machine de test et aux machines de test auxiliaires. Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.

  2. Sur les quatre machines (trois auxiliaires + une de test), installez sockperf :

    sudo yum install -y autoconf automake libtool gcc-c++
    cd /opt
    sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz
    sudo tar -zxf 3.8.tar.gz
    cd sockperf-3.8/
    sudo ./autogen.sh
    sudo ./configure
    sudo make -j `cat /proc/cpuinfo| grep process | wc -l`
    sudo make install
  3. Sur la machine de test, associez les demandes d'interruption (IRQ) aux cœurs CPU.

    L'association des IRQ à des cœurs CPU spécifiques réduit les changements de contexte et améliore l'efficacité du traitement des paquets à haut débit PPS.

    a=$(cat /proc/interrupts | grep virtio2-input | awk -F ':' '{print $1}')
    cpu=0
    for irq in $a; do
        echo $cpu >/proc/irq/$irq/smp_affinity_list
        let cpu+=2
    done
  4. Consultez l'adresse IP privée de la machine de test :

    ifconfig || ip addr

    image.png

  5. Sur chaque machine de test auxiliaire, envoyez du trafic vers la machine de test :

    server_ip="<Private IP address of the test machine>"
    threads=64
    msg_size=14
    run_time=60
    
    basePort=6666
    for((i=0;i<$threads;++i));do
        nohup sockperf tp -i $server_ip --pps max -m ${msg_size} -t ${run_time} --port $[${basePort}+${i}] 2>&1 &
    done

    Remplacez <Private IP address of the test machine> par la valeur réelle. Le paramètre run_time spécifie la durée du trafic.

  6. Sur les quatre machines, testez le taux de transfert de paquets :

    sar -n DEV 1

    Vérifiez la colonne rxpck/s sur la machine de test. La valeur rxpck/s indique le nombre de paquets reçus par seconde. Dans cet exemple, la valeur est d'environ 20 000 000 pps.24 million PPS

Tester la bande passante réseau

Instance Linux

  1. Connectez-vous à la machine de test et à la machine de test auxiliaire. Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.

  2. Sur les deux machines, téléchargez le package d'installation de Netperf :

    wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz
  3. Sur les deux machines, installez Netperf et sar.

    1. Décompressez le package d'installation de Netperf.

      sudo yum install -y gcc autoconf automake libtool sysstat
      tar -zxvf netperf-2.7.0.tar.gz
    2. Consultez le numéro de version de GCC.

      gcc -v 2>&1
    3. Si GCC est ultérieur à la version 10 sur l'une des machines, effectuez les opérations suivantes pour garantir une compilation correcte par GCC. Sinon, ignorez cette étape.

      1. Ouvrez le fichier nettest_omni.c.

        cd netperf
        vim src/nettest_omni.c
      2. Appuyez sur i pour passer en mode Insertion et supprimez les variables déclarées suivantes du fichier nettest_omni.c :

        /* different options for the sockets        */
        
        int
          loc_nodelay,    /* don't/do use NODELAY  locally    */
          rem_nodelay,    /* don't/do use NODELAY remotely  */
          loc_sndavoid,    /* avoid send copies locally    */
          loc_rcvavoid,    /* avoid recv copies locally    */
          rem_sndavoid,    /* avoid send copies remotely    */
          rem_rcvavoid;   /* avoid recv_copies remotely    */
      3. Appuyez sur Échap, saisissez :wq et appuyez sur Entrée pour enregistrer et fermer le fichier.

    4. Installez Netperf et sar.

      cd netperf
      sudo ./configure
      sudo make && sudo make install
  4. Sur la machine de test, démarrez 64 services netserver :

    #!/bin/bash
    for j in `seq 64`; do
        netserver -p $[16000+j] > server_$[16000+j].netperf 2>&1 &
    done
  5. Consultez l'adresse IP privée de la machine de test :

    ifconfig || ip addr
    [ecs-user@izxxx ecZ ~]$ ifconfig || ip addr
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 17.xxx.xxx.15  netmask 25xxx.0  broadcast 17.xxx.55
            inet6 fexxx38:c158  prefixlen 64  scopeid 0x20<link>
            ether 00:xxx:xxx  txqueuelen 1000  (Ethernet)
            RX packets 178595  bytes 106030163 (101.1 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 116902  bytes 70189540 (66.9 MiB)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 2  bytes 140 (140.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2  bytes 140 (140.0 B)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0
  6. Sur la machine de test auxiliaire, envoyez du trafic vers la machine de test :

    #!/bin/bash
    server_ip=<Private IP address of the test machine>
    for j in `seq 64`; do
        port=$[16000+j]
        netperf -H ${server_ip} -l ${run_time:-300} -t TCP_STREAM -p $port -- -D > /dev/null 2>&1 & 
    done

    Remplacez <Private IP address of the test machine> par l'adresse IP privée réelle obtenue à l'étape précédente.

    #!/bin/bash
    server_ip=<Private IP address of the test machine>
    for j in `seq 64`; do
        port=$[16000+j]
        netperf -H ${server_ip} -l ${run_time:-300} -t TCP_STREAM -p $port -- -D > /dev/null 2>&1 &
    done
    [1] 5100
    [2] 5101
    [3] 5102
    [4] 5103
  7. Sur la machine de test, testez la bande passante réseau :

    sar -n DEV 1

    Vérifiez la colonne rxkB/s. La valeur rxkB/s indique la taille des paquets reçus en Ko/s. Multipliez par 8 pour convertir en Kbit/s et obtenir la valeur de la bande passante réseau.

    image.png

Instance Windows

  1. Connectez-vous à la machine de test et à la machine de test auxiliaire. Consultez la rubrique Se connecter à une instance Windows à l'aide d'un mot de passe ou d'une clé.

  2. Installez les outils de test et désactivez le pare-feu sur les deux machines.

    1. Téléchargez l'outil ntttcp.exe et notez le chemin d'accès où l'outil est stocké.

    2. Ouvrez la boîte de dialogue Exécuter. Saisissez powershell et cliquez sur OK pour démarrer PowerShell.

    3. Désactivez le pare-feu sur les deux machines pour éviter le blocage des connexions :

      Set-NetFirewallProfile -Profile * -Enabled:false

      Vous pouvez également créer une règle de pare-feu entrant autorisant NTTTCP (ntttcp.exe) sur les deux machines :

      $ntttcpPath = "<Path of ntttcp.exe>"
      New-NetFirewallRule -DisplayName ntttcp -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $ntttcpPath
      Remarque

      Remplacez <Path of ntttcp.exe> par la valeur réelle.

  3. Sur la machine de test, configurez la mise à l'échelle côté réception (RSS) pour la carte réseau.

    La RSS répartit les paquets reçus sur plusieurs cœurs CPU afin d'améliorer les performances réseau. Définissez les files d'attente RSS en fonction du nombre de processeurs :

    • Si la machine possède jusqu'à 16 cœurs CPU, définissez le nombre de files d'attente de réception RSS égal au nombre de cœurs CPU.

    • Si la machine possède plus de 16 cœurs CPU, désactivez la RSS. La plupart des cartes réseau prennent en charge jusqu'à 16 files d'attente RSS ; dépasser cette limite peut entraîner une allocation inégale des ressources.

    $cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors
    if ($cpuNum -le 16) {
      Set-NetAdapterRss -Name <Name of the network adapter on the test machine> -NumberOfReceiveQueues $cpuNum
    } else {
      Disable-NetAdapterRss -Name <Name of the network adapter on the test machine>
    }
    Remarque
    • Remplacez <Name of the network adapter on the test machine> par la valeur réelle. Exécutez Get-NetAdapter | Select-Object Name pour obtenir les noms des adaptateurs.

    • La modification de la configuration RSS redémarre le service de la carte réseau, ce qui peut interrompre les connexions. Attendez la reconnexion avant de poursuivre.

  4. Sur la machine de test, préparez-vous à recevoir des données :

    $serverIp = (Get-NetIPConfiguration -InterfaceAlias <Name of the network adapter on the test machine>).IPv4Address.IPAddress
    $cpuNum = (Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors
    $threadNum = $cpuNum
    & <Path of ntttcp.exe on the test machine> -r -m $threadNum,0,$serverIp -t 300
    Remarque

    Remplacez <Name of the network adapter on the test machine> et <Path of ntttcp.exe on the test machine> par les valeurs réelles.

  5. Sur la machine de test auxiliaire, envoyez des données :

    $serverIp = "<Private IP address of the test machine>"
    $threadNum = "<Thread number of the test machine>"
    <Path of ntttcp.exe on the auxiliary test machine> -s -m $threadNum,*,$serverIp -t 100
    Remarque

    Remplacez <Private IP address of the test machine>, <Thread number of the test machine> et <Path of ntttcp.exe on the auxiliary test machine> par les valeurs réelles. Exécutez ipconfig pour obtenir l'adresse IP privée et $cpuNum pour obtenir le nombre de threads.

  6. Consultez la bande passante réseau sur la machine de test.

    La valeur Throughput(MB/s) indique la bande passante réseau.

    image

Tester la latence réseau

Instance Linux

  1. Connectez-vous à la machine de test et à la machine de test auxiliaire. Consultez la rubrique Se connecter à une instance Linux à l'aide de Workbench.

  2. Sur les deux machines, installez sockperf :

    sudo yum install -y autoconf automake libtool gcc-c++
    cd /opt
    sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz
    sudo tar -zxf 3.8.tar.gz
    cd sockperf-3.8/
    sudo ./autogen.sh
    sudo ./configure
    sudo make -j `cat /proc/cpuinfo| grep process | wc -l`
    sudo make install
  3. Consultez l'adresse IP privée de la machine de test :

    ifconfig || ip addr

    Dans la sortie de la commande, l'adresse inet de l'interface eth0 correspond à l'adresse IP privée de l'instance.

    [ecs-user@izxxx ecZ ~]$ ifconfig || ip addr
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 17.xxx.xxx.15  netmask 25xxx.0  broadcast 17.xxx.55
            inet6 fexxx38:c158  prefixlen 64  scopeid 0x20<link>
            ether 00:xxx:xxx  txqueuelen 1000  (Ethernet)
            RX packets 178595  bytes 106030163 (101.1 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 116902  bytes 70189540 (66.9 MiB)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 2  bytes 140 (140.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2  bytes 140 (140.0 B)
            TX errors 0  dropped 0  overruns 0  carrier 0  collisions 0
  4. Sur la machine de test, démarrez sockperf :

    sockperf sr --tcp --daemonize
  5. Sur la machine de test auxiliaire, envoyez du trafic vers la machine de test :

    sockperf pp -i <Private IP address of the test machine> --tcp -t 30 -m 14 --full-log=result.json

    Remplacez <Private IP address of the test machine> par la valeur réelle obtenue à l'étape précédente.

  6. Consultez les résultats de latence réseau.

    Dans les données renvoyées :

    • avg-latency : latence moyenne en microsecondes.

    • percentile 99.000 : latence du 99e percentile en microsecondes.

    image.png

Instance Windows

  1. Connectez-vous à la machine de test et à la machine de test auxiliaire. Consultez la rubrique Se connecter à une instance Windows à l'aide d'un mot de passe ou d'une clé.

  2. Installez les outils de test et désactivez le pare-feu sur les deux machines.

    1. Téléchargez l'outil latte.exe et notez le chemin d'accès où l'outil est stocké.

    2. Ouvrez la boîte de dialogue Exécuter. Saisissez powershell et cliquez sur OK pour démarrer PowerShell.

    3. Désactivez le pare-feu sur les deux machines pour éviter le blocage des connexions :

      Set-NetFirewallProfile -Profile * -Enabled:false

      Vous pouvez également créer une règle de pare-feu entrant autorisant Latte (latte.exe) sur les deux machines :

      $lattePath = "<Path of latte.exe>"
      New-NetFirewallRule -DisplayName Latte -Protocol Any -Direction Inbound -Action Allow -Enabled True -Profile Any -Program $lattePath
      Remarque

      Remplacez <Path of latte.exe> par la valeur réelle.

  3. Sur la machine de test, préparez-vous à recevoir des données :

    $serverIp = (Get-NetIPConfiguration | Where-Object {$_.InterfaceAlias -eq '<Name of the network adapter on the test machine>'} | Select-Object -ExpandProperty IPv4Address).IPAddress
    $port = <Communication port>
    & "<Path of latte.exe on the test machine>" -a "$serverIp`:$port" -i 65535
    Remarque
    • Remplacez <Name of the network adapter on the test machine> et <Path of latte.exe on the test machine> par les valeurs réelles. Exécutez Get-NetAdapter | Select-Object Name pour obtenir les noms des adaptateurs.

    • Spécifiez un numéro de port pour <Communication port>. Utilisez le même port sur les deux machines.

  4. Sur la machine de test auxiliaire, envoyez des données :

    $serverIp = "<Private IP address of the test machine>"
    $port = <Communication port>
    & "<Path of latte.exe on the auxiliary test machine>" -c -a "${serverIp}:$port" -i 65535
    Remarque
    • Remplacez <Private IP address of the test machine> et <Path of latte.exe on the auxiliary test machine> par les valeurs réelles. Exécutez ipconfig pour obtenir l'adresse IP privée.

    • Spécifiez un numéro de port pour <Communication port>. Utilisez le même port sur les deux machines.

  5. Consultez les résultats de latence réseau.

    La valeur Latency(usec) indique la latence réseau moyenne en microsecondes.

    image