Wie vergleiche ich den Netzwerkdurchsatz auf einer Amazon EC2 Windows-Instance?

Lesedauer: 7 Minute
0

Ich muss die Netzwerkbandbreite zwischen Amazon Elastic Compute Cloud (Amazon EC2) Windows-Instances messen. Wie kann ich das machen?

Behebung

Benchmark-Tests zur Netzwerkleistung können Ihnen dabei helfen, die Amazon EC2-Instance-Typen, - Größen und -Konfigurationen zu ermitteln, die Ihren Anforderungen am besten entsprechen. Weitere Informationen zur Netzwerkleistung der einzelnen Instance-Typen finden Sie unter Amazon EC2-Instance-Typen.

Starten und konfigurieren Sie Ihre Amazon EC2 Windows-Instances

Bevor Sie Benchmark-Tests durchführen, sollten Sie folgende Schritte befolgen:

1.Starten Sie zwei EC2-Windows-Instances, um die Netzwerkleistung zu testen.

2.Bestätigen Sie, dass die Instances das Enhanced Networking für Windows unterstützen.

3.Um Netzwerktests zwischen Instances durchzuführen, die sich nicht in derselben Platzierungsgruppe befinden oder die keine Jumboframes unterstützen,prüfen Sie die maximale Übertragungseinheit (MTU, Maximum Transmission Unit) und legen Sie sie fest.

4.Überprüfen Sie, ob Sie eine Verbindung zu den Instances herstellen können.

Installieren Sie das Netzwerk-Benchmark-Tool NttTCP auf beiden Instances

Stellen Sie eine Verbindung zu jeder der beiden Windows-Instances her und gehen Sie dann wie folgt vor:

1.Laden Sie die neueste Version von Microsofts NTttcp von der GitHub-Website herunter.

2.Entpacken Sie den Inhalt der Datei in einen Ordner.

3.Öffnen Sie eine Befehlseingabe mit Administratorrechten und geben Sie dann in die Verzeichnisse in den Ordner, in den Sie das NttTCP Netzwerk-Benchmark-Tool entpackt haben.

4.Bevor Sie das nttTCP (Windows NT Test TCP (Transmission Control Protocol, Übertragungssteuerungsprotokoll)) ausführen, wechseln Sie die Verzeichnisse in den Ordner, der Architektur Ihrer EC2-Windows-Instance entspricht.

Testen der TCP- und UDP (User Datagram Protocol, Benutzerdatagrammprotokoll)-Netzwerkleistung zwischen den Instances

NttTCP kommuniziert beim Testen der TCP- und UDP-Leistung standardmäßig über Port 5001. Sie können den Anschluss jedoch mit dem Schalter -p konfigurieren.

Wichtig:

  • Die Sicherheitsgruppen müssen so konfiguriert werden, dass sie die Kommunikation über die von NttTCP verwendeten Ports zulassen.
  • Fügen Sie sowohl beim Empfänger als auch beim Absender ein- und ausgehende Windows-Firewall-Regeln hinzu, die NTttcp.exe-Verbindungen zulassen.

TCP-Netzwerkleistung testen

1.Konfigurieren Sie eine Instance als Empfänger/Server zur Initialisierung von Listeners, beginnend mit dem Standardport 5001. Oder geben Sie mit dem Schalter -p einen alternativen ersten Listener-Port an.

Der folgende Befehl initialisiert beispielsweise einen Empfänger mit zwei Threads, der die Ports 80–81 der angegebenen IP-Adresse abhört. Der erste Thread läuft auf CPU 0 und der zweite Thread läuft auf 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

Die Parameter des Empfängers von ntttcp.exe im vorherigen Beispiel werden wie folgt beschrieben:

  • -r: Empfangen.

  • -p ** 80**: Anschluss, der vom ersten Thread zum Empfangen von Daten verwendet wird. Die Port-Nummer wird für jeden weiteren Empfänger-Thread erhöht.

  • -a 6: Asynchrone Datenübertragung mit sechs überlappenden Empfangspuffern pro Thread

  • -t 60: Testdauer in Sekunden.

  • -cd 5: Testabklingzeit von 5 Sekunden.

  • -wu 5: Test-Aufwärmzeit von 5 Sekunden.

  • -v: Geben Sie eine ausführliche Testausgabe an.

  • -xml: Speichert die Testausgabe in der angegebenen Datei (standardmäßig in xml.txt).

  • -m: Geben Sie drei Zuordnungsparameter pro Sitzung an (# Threads, CPUID, Empfänger-IP-Adresse). Mehrere Sitzungen werden durch Leerzeichen getrennt.

2.Konfigurieren Sie die zweite Instance als Sender/Client und führen Sie dann einen Test mit dem Empfänger mit den von Ihnen gewählten Parametern durch.

Der folgende Befehl initialisiert beispielsweise einen TCP-Sender mit zwei Threads für die Ports 80-81 der angegebenen IP-Adresse. Der erste Thread läuft auf CPU 0 und der zweite Thread läuft auf CPU 1.

Hinweis: Der folgende Befehl hat die gleiche IP-Adresse wie der Befehl in Schritt 1. Geben Sie bei beiden Befehlen die IP-Adresse des Empfängers ein.

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

Die Absenderparameter von ntttcp.exe im vorangegangenen Beispiel werden wie folgt beschrieben:

  • -s: Senden.
  • -p 80: Port, der vom ersten Thread zum Senden von Daten verwendet wird. Diese Port-Nummer wird für jeden weiteren Absender-Thread inkrementiert.
  • -a: Der Standardwert für asynchrones Senden überlappender Puffer pro Thread beträgt 2. Geben Sie bei Bedarf einen anderen Wert als den Standardwert an.
  • -t 60: Testdauer in Sekunden.
  • -cd 5: Testabklingzeit von 5 Sekunden.
  • -wu 5: Test-Aufwärmzeit von 5 Sekunden.
  • -m: Geben Sie drei Zuordnungsparameter pro Sitzung an (# Threads, CPUID, Empfänger-IP-Adresse). Mehrere Sitzungen werden durch Leerzeichen getrennt.

Die auf dem Empfänger generierte XML-Ausgabe sollte folgendermaßen aussehen. In diesem Test betrug die verwendete Gesamtbandbreite etwa 9,02 GBps.

<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>

** UDP (User Datagram Protocol)-Netzwerkleistung testen**

1.Konfigurieren Sie eine Instance als Empfänger/Server zur Initialisierung von Listeners, beginnend mit dem Standardport 5001. Oder geben Sie mit dem Schalter -p einen alternativen ersten Listener-Port an.

Der folgende Befehl initialisiert beispielsweise einen Empfänger mit zwei Threads, der die Ports 80–81 der angegebenen IP-Adresse abhört. Der erste Thread läuft auf CPU 0 und der zweite Thread läuft auf 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

Die Parameter des Empfängers von ntttcp.exe im vorherigen Beispiel werden wie folgt beschrieben:

  • -r: Empfangen.

  • -u: UDP testen.

  • -p 80: Anschluss, der vom ersten Thread zum Empfang von Daten verwendet wird. Die Port-Nummer wird für jeden weiteren Empfänger-Thread erhöht.

  • -t 60: Testdauer in Sekunden.

  • -cd 5: Testabklingzeit von 5 Sekunden.

  • -wu 5: Test-Aufwärmzeit von 5 Sekunden.

  • -v: Geben Sie eine ausführliche Testausgabe an.

  • -xml: Speichert die Testausgabe in der angegebenen Datei (standardmäßig in xml.txt).

  • -m: Geben Sie drei Zuordnungsparameter pro Sitzung an (# Threads, CPUID, Empfänger-IP-Adresse). Mehrere Sitzungen werden durch Leerzeichen getrennt.

2.Konfigurieren Sie eine zweite Instance als Sender/Client und führen Sie dann einen Test gegen den Empfänger mit den gewünschten Parametern durch.

Der folgende Befehl initialisiert zum Beispiel einen UDP-Sender mit zwei Threads für die Ports 80-81 der angegebenen IP-Adresse. Der erste Thread läuft auf CPU 0 und der zweite Thread läuft auf CPU 1.

Hinweis: Der folgende Befehl hat die gleiche IP-Adresse wie der Befehl in Schritt 1. Geben Sie bei beiden Befehlen die IP-Adresse des Empfängers ein.

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

Die Absenderparameter von ntttcp.exe im vorangegangenen Beispiel werden wie folgt beschrieben:

  • -s: Senden.
  • -u: UDP testen (standardmäßig wird TCP getestet).
  • -p 80: Port, der vom ersten Thread zum Senden von Daten verwendet wird. Die Port-Nummer wird für jeden weiteren Absender-Thread inkrementiert.
  • -t 60: Testdauer in Sekunden.
  • -cd 5: Testabklingzeit von 5 Sekunden.
  • -wu 5: Test-Aufwärmzeit von 5 Sekunden.
  • -m: Geben Sie drei Zuordnungsparameter pro Sitzung an (# Threads, CPUID, Empfänger-IP-Adresse). Mehrere Sitzungen werden durch Leerzeichen getrennt.

Die auf dem Empfänger generierte XML-Ausgabe sollte wie folgt aussehen:

<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>

**(Optional) NTttcp-Schalter ** Um alle Schalter anzuzeigen, die für die Verwendung mit NTttcp verfügbar sind, öffnen Sie eine Eingabezeile und führen Sie den folgenden Befehl aus:

ntttcp

Verwandte Informationen

Network Maximum Transmission Unit (MTU) des Netzwerks für Ihre EC2-Instance

Platzierungsgruppen

Wie kann ich den Netzwerkdurchsatz zwischen Amazon EC2-Linux-Instances in derselben Amazon VPC messen?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren