Comment évaluer le débit réseau d'une instance Windows Amazon EC2 ?

Lecture de 8 minute(s)
0

Je dois mesurer la bande passante du réseau entre les instances Windows Amazon Elastic Compute Cloud (Amazon EC2).

Résolution

Les tests d'évaluation des performances réseau peuvent vous aider à déterminer les types, tailles et configurations d'instances Amazon EC2 qui répondent le mieux à vos besoins. Pour en savoir plus sur les performances réseau de chaque type d'instance, consultez la section Types d'instances Amazon EC2.

Lancement et configuration de vos instances Windows Amazon EC2

Avant d'exécuter vos tests, suivez ces étapes :

  1. Lancez deux instances Windows EC2 pour effectuer des tests de performance réseau.
  2. Vérifiez que ces instances prennent en charge la mise en réseau améliorée pour Windows.
  3. Testez le réseau entre des instances qui ne se trouvent pas dans le même groupe de placement ou qui ne prennent pas en charge les trames jumbo. Pour ce faire, vous devez vérifier et régler l'unité de transmission maximale (MTU).
  4. Vérifiez que vous pouvez vous connecter aux instances.

Installation de l'outil d’évaluation du réseau NTttcp sur les deux instances

Connectez-vous à chacune des deux instances Windows, puis procédez comme suit :

  1. Téléchargez la dernière version de l'outil NTttcp de Microsoft à partir du site Web de GitHub.
  2. Décompressez le contenu du fichier dans un dossier.
  3. Ouvrez une invite de commande avec des privilèges d'administrateur, puis remplacez les répertoires par le dossier dans lequel vous avez décompressé l'outil de référence réseau NTttcp.
  4. Avant d'exécuter l'outil NTttcp, remplacez les répertoires par le dossier dont le nom correspond à l'architecture de votre instance Windows EC2.

Test des performances du réseau TCP et UDP entre les instances

Lorsque vous utilisez l'outil NTttcp pour tester les performances TCP et UDP, celui-ci utilise le port 5001 par défaut. Vous pouvez cependant configurer le port à l’aide du commutateur -p.

Important :

  • Vous devez configurer les groupes de sécurité pour autoriser la communication via les ports utilisés par l'outil NTttcp.
  • Ajoutez des règles de pare-feu Windows entrantes et sortantes au récepteur et à l'expéditeur afin d’autoriser les connexions NTttcp.exe.

Test des performances du réseau TCP

Avant toute chose, configurez une instance en tant que récepteur/serveur pour initialiser les écouteurs. Commencez par le port 5001 (port par défaut). Vous pouvez également spécifier un autre port d'écoute initial à l'aide du commutateur -p.

Par exemple, la commande suivante initialise un récepteur à deux threads qui écoute sur les ports 80 à 81 de l'adresse IP spécifiée. Le premier thread s'exécute sur le processeur 0 et le second sur le processeur 1 :

ntttcp -r -p 80 -a 6 -t 60 -cd 5 -wu 5 -v -xml c:\bench.xml -m 1,0,192.168.1.4 1,1,192.168.1.4

Dans cet exemple, les paramètres du récepteur ntttcp.exe décrivent les tâches suivantes :

  • -r : recevoir.
  • -p 80 : port utilisé par le premier thread pour recevoir des données. Le numéro de port est incrémenté pour chaque thread récepteur supplémentaire.
  • -a 6 : transfert de données asynchrone qui publie six tampons de réception superposés par thread.
  • -t 60 : teste la durée en secondes.
  • -cd 5 : teste le temps de recharge de 5 secondes.
  • -wu 5 : teste le temps de mise en route de 5 secondes.
  • -v : indique une sortie de test détaillée.
  • -xml : enregistre la sortie du test dans le fichier spécifié (par défaut, elle est enregistré dans xml.txt).
  • -m : spécifie trois paramètres de mappage par session (nombre de threads, CPUID, adresse IP du récepteur). En cas de sessions multiples, celles-ci sont délimitées par des espaces.

Configurez ensuite la deuxième instance en tant qu'expéditeur/client, puis exécutez un test sur le récepteur avec les paramètres de votre choix.

Par exemple, la commande suivante initialise un expéditeur TCP à deux threads sur les ports 80 à 81 de l'adresse IP spécifiée. Le premier thread s'exécute sur le processeur 0 et le second sur le processeur 1 :

Remarque : la commande suivante possède la même adresse IP que la commande utilisée à l'étape 1. Saisissez l'adresse IP du récepteur dans les deux commandes.

ntttcp -s -p 80 -a -t 60 -cd 5 -wu 5 -m 1,0,192.168.1.4 1,1,192.168.1.4

Dans cet exemple, les paramètres de l'expéditeur ntttcp.exe décrivent les tâches suivantes :

  • -s : envoyer.
  • -p 80 : port utilisé par le premier thread pour envoyer des données. Ce numéro de port est incrémenté pour chaque thread expéditeur supplémentaire.
  • -a : la valeur par défaut des tampons d'envoi asynchrones superposés par thread est de deux. Vous pouvez spécifier une autre valeur si nécessaire.
  • -t 60 : teste la durée en secondes.
  • -cd 5 : teste le temps de recharge de 5 secondes.
  • -wu 5 : teste le temps de mise en route de 5 secondes.
  • -m : spécifie trois paramètres de mappage par session (nombre de threads, CPUID, adresse IP du récepteur). En cas de sessions multiples, celles-ci sont délimitées par des espaces.

Cette commande génère une sortie XML sur le récepteur, comme dans l'exemple suivant. Dans ce test, la bande passante totale utilisée est d'environ 9,02 Gbit/s :

<ntttcpr computername="Win_EC2_Recv" version="5.31">
  <parameters>
    <send_socket_buff>0</send_socket_buff>
    <recv_socket_buff>-1</recv_socket_buff>
    <port>82</port>
    <sync_port>False</sync_port>
    <async>True</async>
    <verbose>True</verbose>
    <wsa>False</wsa>
    <use_ipv6>False</use_ipv6>
    <udp>False</udp>
    <verify_data>False</verify_data>
    <wait_all>False</wait_all>
    <run_time>60000</run_time>
    <warmup_time>5000</warmup_time>
    <cooldown_time>5000</cooldown_time>
    <dash_n_timeout>10800000</dash_n_timeout>
    <bind_sender>False</bind_sender>
    <sender_name></sender_name>
    <max_active_threads>2</max_active_threads>
  </parameters>
  <thread index="0">
    <realtime metric="s">60.012</realtime>
    <throughput metric="KB/s">542199.263</throughput>
    <throughput metric="MB/s">529.491</throughput>
    <throughput metric="mbps">4441.696</throughput>
    <avg_bytes_per_compl metric="B">65091.350</avg_bytes_per_compl>
  </thread>
  <thread index="1">
    <realtime metric="s">60.012</realtime>
    <throughput metric="KB/s">559260.669</throughput>
    <throughput metric="MB/s">546.153</throughput>
    <throughput metric="mbps">4581.463</throughput>
    <avg_bytes_per_compl metric="B">65535.750</avg_bytes_per_compl>
  </thread>
  <total_bytes metric="MB">64550.500000</total_bytes>
  <realtime metric="s">60.011000</realtime>
  <avg_bytes_per_compl metric="B">65316.236</avg_bytes_per_compl>
  <threads_avg_bytes_per_compl metric="B">65313.550</threads_avg_bytes_per_compl>
  <avg_frame_size metric="B">8194.809</avg_frame_size>
  <throughput metric="MB/s">1075.644</throughput>
  <throughput metric="mbps">9023.160</throughput>
  <total_buffers>1032808.000</total_buffers>
  <throughput metric="buffers/s">17210.311</throughput>
  <avg_packets_per_interrupt metric="packets/interrupt">5.749
    </avg_packets_per_interrupt>
  <interrupts metric="count/sec">23942.694</interrupts>
  <dpcs metric="count/sec">9546.816</dpcs>
  <avg_packets_per_dpc metric="packets/dpc">14.417
    </avg_packets_per_dpc>
  <cycles metric="cycles/byte">2.826</cycles>
  <packets_sent>730596</packets_sent>
  <packets_received>8259632</packets_received>
  <packets_retransmitted>0</packets_retransmitted>
  <errors>0</errors>
  <cpu metric="%">7.813</cpu>
  <bufferCount>9223372036854775807</bufferCount>
  <bufferLen>65536</bufferLen>
  <io>6</io>
</ntttcpr>

Test des performances du réseau UDP

Avant toute chose, configurez une instance en tant que récepteur/serveur pour initialiser les écouteurs. Commencez par le port 5001 (port par défaut). Vous pouvez également spécifier un autre port d'écoute initial à l'aide du commutateur -p.

Par exemple, la commande suivante initialise un récepteur à deux threads qui écoute sur les ports 80 à 81 de l'adresse IP spécifiée. Le premier thread s'exécute sur le processeur 0 et le second sur le processeur 1 :

ntttcp –r –u -p 80 –t 60 –cd 5 –wu 5 –v –xml c:\\bench.xml –m 1,0,192.168.1.4 1,1,192.168.1.4

Dans cet exemple, les paramètres du récepteur ntttcp.exe décrivent les tâches suivantes :

  • -r : reçoit.
  • -u : teste l'UDP.
  • -p 80 : port utilisé par le premier thread pour recevoir des données. Le numéro de port est incrémenté pour chaque thread récepteur supplémentaire.
  • -t 60 : teste la durée en secondes.
  • -cd 5 : teste le temps de recharge de 5 secondes.
  • -wu 5 : teste le temps de mise en route de 5 secondes.
  • -v : indique une sortie de test détaillée.
  • -xml : enregistre la sortie du test dans le fichier spécifié (par défaut, elle est enregistré dans xml.txt).
  • -m : spécifie trois paramètres de mappage par session (nombre de threads, CPUID, adresse IP du récepteur). En cas de sessions multiples, celles-ci sont délimitées par des espaces.

Configurez ensuite une deuxième instance en tant qu'expéditeur/client, puis testez le récepteur avec les paramètres souhaités.

Par exemple, la commande suivante initialise un expéditeur UDP à deux threads sur les ports 80 à 81 de l'adresse IP spécifiée. Le premier thread s'exécute sur le processeur 0 et le second sur le processeur 1 :

Remarque : la commande suivante possède la même adresse IP que la commande utilisée à l'étape 1. Saisissez l'adresse IP du récepteur dans les deux commandes.

ntttcp -s –u -p 80 -t 60 -cd 5 -wu 5 -m 1,0,192.168.1.4 1,1,192.168.1.4

Dans cet exemple, les paramètres de l'expéditeur ntttcp.exe décrivent les tâches suivantes :

  • -s : envoie.
  • -u : teste le réseau UDP (le réseau TCP est testé par défaut).
  • -p 80 : port utilisé par le premier thread pour envoyer des données. Le numéro de port est incrémenté pour chaque thread expéditeur supplémentaire.
  • -t 60 : teste la durée en secondes.
  • -cd 5 : teste le temps de recharge de 5 secondes.
  • -wu 5 : teste le temps de mise en route de 5 secondes.
  • -m : spécifie trois paramètres de mappage par session (nombre de threads, CPUID, adresse IP du récepteur). En cas de sessions multiples, celles-ci sont délimitées par des espaces.

Cette commande génère une sortie XML sur le récepteur :

<ntttcpr computername="Win_UDP_Test" version="5.31">
  <parameters>
    <send_socket_buff>8192</send_socket_buff>
    <recv_socket_buff>-1</recv_socket_buff>
    <port>82</port>
    <sync_port>False</sync_port>
    <async>False</async>
    <verbose>True</verbose>
    <wsa>False</wsa>
    <use_ipv6>False</use_ipv6>
    <udp>True</udp>
    <verify_data>False</verify_data>
    <wait_all>False</wait_all>
    <run_time>60000</run_time>
    <warmup_time>5000</warmup_time>
    <cooldown_time>5000</cooldown_time>
    <dash_n_timeout>10800000</dash_n_timeout>
    <bind_sender>False</bind_sender>
    <sender_name></sender_name>
    <max_active_threads>2</max_active_threads>
  </parameters>
  <thread index="0">
    <realtime metric="s">60.016</realtime>
    <throughput metric="KB/s">6463.886</throughput>
    <throughput metric="MB/s">6.312</throughput>
    <throughput metric="mbps">52.952</throughput>
    <avg_bytes_per_compl metric="B">128.000</avg_bytes_per_compl>
  </thread>
  <thread index="1">
    <realtime metric="s">60.016</realtime>
    <throughput metric="KB/s">7712.922</throughput>
    <throughput metric="MB/s">7.532</throughput>
    <throughput metric="mbps">63.184</throughput>
    <avg_bytes_per_compl metric="B">128.000</avg_bytes_per_compl>
  </thread>
  <total_bytes metric="MB">830.880005</total_bytes>
  <realtime metric="s">60.015000</realtime>
  <avg_bytes_per_compl metric="B">128.000</avg_bytes_per_compl>
  <threads_avg_bytes_per_compl metric="B">128.000<</threads_avg_bytes_per_compl>
  <avg_frame_size metric="B">127.780</avg_frame_size>
  <throughput metric="MB/s">13.845</throughput>
  <throughput metric="mbps">116.136</throughput>
  <total_buffers>6806569.000</total_buffers>
  <throughput metric="buffers/s">113414.463</throughput>
  <avg_packets_per_interrupt metric="packets/interrupt">1.968
  </avg_packets_per_interrupt>
  <interrupts metric="count/sec">57715.621</interrupts>
  <dpcs metric="count/sec">11576.306</dpcs>
  <avg_packets_per_dpc metric="packets/dpc">9.814</avg_packets_per_dpc>
  <cycles metric="cycles/byte">210.673</cycles>
  <packets_sent>2</packets_sent>
  <packets_received>6818294</packets_received>
  <packets_retransmitted>0</packets_retransmitted>
  <errors>1</errors>
  <cpu metric="%">44.976</cpu>
  <bufferCount>9223372036854775807</bufferCount>
  <bufferLen>128</bufferLen>
  <io>2</io>
</ntttcpr>

Pour afficher tous les commutateurs disponibles avec NTttcp, ouvrez une invite de commande, puis exécutez la commande suivante :

ntttcp

Informations connexes

Unité de transmission maximale (MTU) du réseau pour votre instance EC2

Groupes de placement

Comment évaluer le débit réseau entre des instances Linux Amazon EC2 dans un même VPC Amazon ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois