Comment définir l’analyse comparative du débit réseau sur une instance Windows Amazon EC2 ?

Date de la dernière mise à jour : 18/09/2020

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

Solution

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

Lancez et configurez vos instances Windows Amazon EC2

Avant d'exécuter les tests de référence, suivez les étapes suivantes :

1.    Lancez deux instances Windows EC2 pour exécuter les tests de performances réseau.

2.    Vérifiez que les instances supportent la mise en réseau améliorée pour Windows.

3.    Pour exécuter des tests réseau entre des instances qui ne sont pas co-localisées dans le même groupe de placement ou qui ne supportent pas les trames jumbo, vérifiez et définissez l'unité de transmission maximale (MTU).

4.    Vérifiez que vous pouvez vous connecter aux instances.

Installez l'outil de point de référence réseau NTttcp sur les deux instances

Connectez-vous à chacune des deux instances Windows, puis suivez les étapes suivantes :

1.    Téléchargez NTttcp à partir du site Web Microsoft TechNet.

2.    Décompressez le contenu du fichier dans un dossier.

3.    Ouvrez une invite de commande avec des privilèges d'administrateur, puis modifiez les répertoires dans le dossier dans lequel vous avez décompressé l'outil de référence réseau NTttcp.

4.    Modifiez les répertoires du dossier en utilisant le nom correspondant à l'architecture de votre instance Windows EC2 avant d'exécuter NTttcp.

Tester les performances réseau TCP et UDP entre les instances

Par défaut, NTttcp communique sur le port 5001 lors du test des performances TCP et UDP. Toutefois, vous pouvez configurer ce port en utilisant le commutateur -p.

Important :

  • Les groupes de sécurité doivent être configurés pour permettre la communication sur les ports utilisés par NTttcp.
  • Ajoutez des règles de pare-feu Windows entrantes et sortantes pour le récepteur et l'expéditeur qui autorisent les connexions NTttcp.exe.

Tester les performances du réseau TCP

1.    Configurez une instance en tant que récepteur/serveur pour initialiser les écouteurs, en commençant par le port par défaut 5001. Vous pouvez également spécifier un autre port d'écoute initial avec le 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 CPU 0, et le second thread s'exécute sur CPU 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

Les paramètres du récepteur ntttcp.exe dans l'exemple ci-dessus sont décrits comme suit :

  • -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 asynchrone de données qui publie 6 tampons superposés de récepteur par thread
  • -t 60 : durée du test en secondes.
  • -cd 5 : temps de stabilisation du test de 5 secondes.
  • -wu 5 : temps de préparation du test de 5 secondes.
  • -v : spécifier une sortie de test détaillée.
  • -xml : enregistrer la sortie de test dans le fichier spécifié (par défaut, xml.txt).
  • -m: spécifier trois paramètres de mappage par session (# threads, CPUID, adresse IP du récepteur). Plusieurs sessions sont délimitées par l'espace.

2.    Configurez 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 aux ports 80-81 de l'adresse IP spécifiée. Le premier thread s'exécute sur CPU 0, et le second thread s'exécute sur CPU 1.

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

Les paramètres de l'expéditeur ntttcp.exe dans l'exemple ci-dessus sont décrits comme suit :

  • -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 d'expéditeur supplémentaire.
  • -a : la valeur par défaut des tampons d'envoi asynchrones superposées par thread est 2. Spécifiez une valeur autre que la valeur par défaut si nécessaire.
  • -t 60 : durée du test en secondes.
  • -cd 5 : temps de stabilisation du test de 5 secondes.
  • -wu 5 : temps de préparation du test de 5 secondes.
  • -m : spécifiez trois paramètres de mappage par session (# threads, CPUID, adresse IP de destination). Plusieurs sessions sont délimitées par l'espace.

La sortie XML générée sur le récepteur doit ressembler à ce qui suit. Dans ce test, la bande passante totale utilisée était 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>

Tester les performances du réseau UDP

1.    Configurez une instance en tant que récepteur/serveur pour initialiser les écouteurs, en commençant par le port par défaut 5001. Vous pouvez également spécifier un autre port d'écoute initial avec le 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 CPU 0, et le second thread s'exécute sur CPU 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

Les paramètres du récepteur ntttcp.exe dans l'exemple ci-dessus sont décrits comme suit :

  • -r : recevoir.
  • -u : tester 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 : durée du test en secondes.
  • -cd 5 : temps de stabilisation du test de 5 secondes.
  • -wu 5 : temps de préparation du test de 5 secondes.
  • -v : spécifier une sortie de test détaillée.
  • -xml : enregistrer la sortie de test dans le fichier spécifié (par défaut, xml.txt).
  • -m: spécifier trois paramètres de mappage par session (# threads, CPUID, adresse IP du récepteur). Plusieurs sessions sont délimitées par l'espace.

2.    Configurez une deuxième instance en tant qu'expéditeur/client, puis exécutez un test sur le récepteur avec les paramètres souhaités.

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

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

Les paramètres de l'expéditeur ntttcp.exe dans l'exemple ci-dessus sont décrits comme suit :

  • -s : envoyer.
  • -u : tester UDP (la valeur par défaut consiste à tester TCP).
  • -p 80 : port utilisé par premier thread pour envoyer des données. Le numéro de port est incrémenté pour chaque thread d'expéditeur supplémentaire.
  • -t 60 : durée du test en secondes.
  • -cd 5 : temps de stabilisation du test de 5 secondes.
  • -wu 5 : temps de préparation du test de 5 secondes.
  • -m : spécifiez trois paramètres de mappage par session (# threads, CPUID, adresse IP de destination). Plusieurs sessions sont délimitées par l'espace.

La sortie XML générée sur le récepteur doit ressembler à ce qui suit :

<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>
(Facultatif) Commutateurs NTttcp

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

ntttcp