Freigeben über


Übersicht über die TCP/IP-Leistung

Notiz

Dieser Artikel ist in einer 3-teiligen Serie enthalten. Sie können Teil 2 überprüfen : TCP/IP-Leistung zugrunde liegende Netzwerkprobleme und Teil 3: Bekannte Probleme mit TCP/IP-Leistung.

Die Leistung von TCP/IP (Transmission Control Protocol/Internet Protocol) beruht auf einem Vergleich. Der Vergleich sollte mit identischen Endpunkten in Bezug auf Hardware, Netzwerkpfad und Betriebssystem durchgeführt werden. Die tatsächliche Leistung unterscheidet sich, da mehrere Faktoren beteiligt sind und einen Engpass verursachen können. Diese Faktoren sind häufig das zugrunde liegende Netzwerk, der Entwurf von TCP und die tatsächliche Übertragungsrate von E/A-Speichervorgängen.

Weitere Informationen zur Leistungsoptimierung zum Festlegen der leistungsstärksten Konfiguration für die Endpunkte.

TCP-Empfangsfenster autotuning ist ein anwendungsdefiniertes Feature, das zum Skalieren der Verbindung verwendet wird, um die Bandbreite in Netzwerken mit hoher Latenz zu nutzen. Wenn z. B. tcp so konfiguriert ist, dass die Autotuning-Ebene normal verwendet wird und die Anwendung über genügend Puffer verfügt, der für das TCP-Fenster definiert ist, skaliert das Betriebssystem den TCP-Wert schnell auf maximal. Dieses Feature ist jedoch für Netzwerke mit höherer Latenz ausgelegt. Für Netzwerke mit geringer Latenz gibt es keine solche Anforderung, da es nicht viele Segmente im Flug gibt (z. B. in der Netzwerkinfrastruktur).

Für Netzwerke mit hoher Latenz mit einem TCP-Fenster, das nicht auf maximal skaliert wird, gibt es Algorithmen wie CUBIC, NewReno und Compound TCP , um das Bandbreitenverzögerungsprodukt (Bandbreitenverzögerungsprodukt, BDP) zu ermitteln und das Fenster entsprechend zu skalieren. Windows OS weist jedem erstellten Socket einen Überlastungsalgorithmus zu.

TCP-Einstellungen sind in Windows 10 vordefiniert. Verwenden Sie das Cmdlet Get-NetTCPSettings , um die TCP-Einstellungen abzurufen, und verwenden Sie das Cmdlet Get-NetTCPConnection , um die TCP-Verbindungseigenschaften anzuzeigen, z. B. lokale oder Remote-IP-Adresse, lokaler oder Remoteport und Verbindungsstatus.

Hier sind Tipps zur Verbesserung des Durchsatzes:

  • Stellen Sie sicher, dass keine zugrunde liegenden Netzwerkprobleme (Paketverlust) vorhanden sind.
  • Aktivieren Sie erweiterte Eigenschaften der NIC für Leistungsfeatures (z. B. Jumbo-Frames, RSS/VMQ, Abladungsfeatures und RSC), es sei denn, es liegt ein zugrunde liegendes Netzwerkkompatibilitätsproblem vor, oder Siemöchten Problembehandlung ausführen.
  • Stellen Sie sicher, dass TCP so konfiguriert ist, dass der normale Grad der automatischen Optimierung verwendet wird.
  • Verwenden Sie Leistungsmonitoranalysen, um sicherzustellen, dass es keinen CPU- oder Speicherengpass gibt.
  • Wählen Sie Sicherheitsfeatures basierend auf den tatsächlichen Anforderungen der Organisation aus.
  • Erstellen einer Baseline.

Testtool für DEN TCP-Durchsatz

Um den größtmöglichen Durchsatz für eine bestimmte Hardware zu erreichen, müssen Sie die Leistungsfaktoren optimieren. Stellen Sie sicher, dass keine zugrunde liegenden Netzwerkprobleme (Paketverlust) vorhanden sind. Verwenden Sie das tool NTttcp.exe oder ctsTraffic.exe , um den Durchsatz zu testen. Weitere Informationen finden Sie unter Performance Tools für Netzwerkworkloads.

Engpässe für den TCP-Durchsatz

Verwenden Sie keinen Netzwerkmonitor, oder verwenden Sie keine Protokolle auf Netzwerkpaketebene während tcp-Durchsatztests. Die NDIS-Überwachungsfilter (Network Driver Interface Specification) fügen bei jeder Aufzeichnung eines Pakets eine Verzögerung für den Absender und die Empfänger hinzu. Dieser Vorgang erfordert CPU-Ressourcen und generiert viele Speicher-IOs. Die Leistung verringert sich, wenn Protokolle auf Paketebene übernommen werden, da tcp versucht, den Paketverlust wiederherzustellen.

Das Hinzufügen von Sicherheit hat eigene Kosten- und Leistungsprobleme. Sicherheitsprotokolle wie Internet Protocol Security (IPsec) verfügen über Mehraufwand und zusätzliche Verarbeitungsanforderungen. Der Vergleich des Datenschutzes mit der Datenintegrität sollte der Integritätsmodus von IPsec für geringere Verarbeitungskosten bevorzugt werden. Sicherheitssoftware hat auch große Kosten für die Paketverarbeitung, was zu langsameren Ausgaben führt.

Wenn die getestete Leistung nicht den Erwartungen entspricht, nehmen Sie Protokolle wie in netzwerkbezogenen Leistungsindikatoren definiert.

Überprüfen Sie nach der Überprüfung auf TCP-Leistungsprobleme die zugeordneten Protokolle der oberen Ebene, z. B. Dateisystemprotokolle (Server Message Block (SMB) oder Network File System (NFS)). Für diese Protokolle sind Prozessorressourcen und Datenträger-IOs erforderlich. Die langsame Geschwindigkeit wird durch einen fehlerhaften Treiber oder eine Hardware, einen hohen verzögerten Prozeduraufruf (DPC)-Warteschlangen oder/und langsame Datenträger-IOs verursacht. Herauszufinden, welche Komponente im Betriebssystem hohe DPCs verursacht, ist eine Herausforderung, da dies eine Analyse mit xperf/Windows Performance Recorder (WPR) (CPU)-Protokollierung erfordert. Das Auffinden datenträgerbezogener Langsamkeitsprobleme ist vergleichsweise einfacher. Weitere Informationen finden Sie unter Untersuchen und Optimieren der Datenträgerleistung.

Während des Tests können Testanwendungen (Client- und Serveranwendungen) angepasst werden, um mehrere Threads mit Pufferwerten zu verwenden, die hoch genug sind, um den maximalen Durchsatz zu erreichen. Dies spiegelt jedoch möglicherweise nicht die tatsächlichen Bedingungen wider, da die Anzahl der Threads und Puffer, die jeder API-Aufruf nutzen kann, auf der Grundlage der Programmierung eingeschränkt ist. Darüber hinaus verfügt das Anwendungsschichtprotokoll (SMB oder Common Internet File System ( CIFS)) über einen eigenen Puffer und eine eigene Optimierung (Leistungsoptimierung für Dateiserver oder SMB: Handbuch zur Problembehandlung). Wenn die Anwendung nicht wie erwartet für den Basisplan funktioniert, arbeiten Sie mit einem Anwendungsspezialisten zusammen, um den Engpass zu finden.

Erstellen eines Basisplans

Es muss ein Basisplan für die Leistung erstellt werden, um den aktuellen Durchsatz zu vergleichen. Um das Netzwerk besser zu verstehen, erstellen Sie den Basisplan am Anfang der Bereitstellung.

Ein Basisplan wird durch die folgenden Hauptpunkte gebildet:

  • Quell- und Zielnetzwerke
  • Latenz und Hopanzahl zwischen diesen Netzwerken
  • Prozessor-/Schnittstellenfunktion und -konfiguration
  • Zeitrahmen der Tests (Arbeitszeiten/Arbeitsstunden/Spitzenstunden)
  • Betriebssystemversionen
  • Durchsatz-Pull- und Durchsatz-Push

Notiz

Erstellen Sie den Basisplan mit denselben Servermodellen (gleiche Anzahl von NIC-Karten und Prozessorkapazität), um die Verarbeitungsleistung nahezu gleich zu halten.

Sehen Sie sich den Puffer an, und verfolgen Sie die Anzahl der Transportsitzungen, die von Testtools erstellt wurden. Vier gleichzeitige TCP-Transportsitzungen können die Verwendung von CPU gleichmäßig bewerten, wobei RSS aktiviert ist.

Hier sind die Schritte zum Messen des Durchsatzes und Erstellen eines Basisplans:

  1. Laden Sie das tool ctsTraffic herunter. Hier ist eine Beschreibung einiger Parameter des ctsTraffic-Tools.

    Parameter Beschreibung
    -listen:<IP/*> Diese Option wird für die Port-Überwachung auf Servern verwendet. Wenn * angegeben, lauscht das ctsTraffic-Tool auf allen auf diesem Computer verfügbaren IP-Adressen. Beispiel: -listen:*.
    -target:<IP> Diese Option wird auf Clients verwendet und gibt die IP-Adresse des Servers an, auf dem ctsTraffic.exe ausgeführt wird und sich im Überwachungszustand befindet. Beispiel: -target:192.168.1.10.
    -pattern:pull Das Tool CtsTraffic verwendet standardmäßig pushmuster. Das bedeutet, dass Daten vom Client an den Server gesendet werden. Wenn dieser Switch sowohl auf dem Client als auch auf dem Server verwendet wird, werden die Daten auf dem Client empfangen. Verwenden Sie diese Option nicht, wenn Sie einen Pushtest durchführen.
    -connections:<num> Diese Option gibt die Anzahl der TCP-Verbindungen an. TCP-Sockets werden vom Client gleichzeitig erstellt. Acht wird häufig als RSS-Warteschlangen auf Netzwerkkarten auf mittlerer Ebene verwendet, 8. Beispiel: -connections:8.
    -iterations:<num> Diese Option gibt die multiplizierte Anzahl von Verbindungen in -connections:. Beispiel: -iterations:10. Bei 10 Iterationen versucht der Client insgesamt 80 Verbindungen. Wenn diese Option nicht angegeben ist, versucht der Client weiterhin 8 Verbindungen bis zu 1000 Verbindungen.
    -statusfilename:<filename.csc> Verwenden Sie diese Option, um die Option "Konsolenebene 1" auf eine .txt datei zu leeren, die mit Microsoft Excel kompatibel ist.
    -connectionfilename:<filename.csv> Verwenden Sie diese Option, um ausführliche Details zu leeren. Beispielsweise Informationen auf Socketebene, z. B. die Zeit, die von jedem Socket zum Übertragen der Daten verwendet wird. Mit dieser Option können Sie überprüfen, ob Fehler oder erweiterte Problembehandlung vorhanden sind.
    -consoleverbosity:<0|1|2|3> Diese Option gibt die Ansicht oder die Ausgabe auf dem Monitor an, während der Test ausgeführt wird. Beispiel: -consoleverbosity:1.
  2. Öffnen Sie den Ressourcenmonitor auf der empfangenden Seite. Wenn Sie es beispielsweise verwenden -pattern:pull, öffnen Sie sie auf dem Client, andernfalls öffnen Sie sie auf dem Server.

  3. Starten Sie das CtsTraffic-Tool auf dem Server, und führen Sie den folgenden Befehl aus:

    Ctstraffic.exe -listen:* -consoleverbosity:1 <-pattern:pull>
    

    Ausführen des Befehls ctsTraffic auf der Serverseite.

  4. Starten Sie das ctsTraffic-Tool auf dem Client, und führen Sie den folgenden Befehl aus:

    Ctstraffic.exe -target:<serverip> -consoleverbosity:1 <-pattern:pull> -connections:8 -iterations:10
    

    Ausführen des Befehls ctsTraffic auf der Clientseite.

  5. Stellen Sie sicher, dass die Prozessoren der empfangsseitigen Seite gleichmäßig genutzt werden. Wenn sie nicht vorhanden sind, überprüfen Sie das Problem mit RSS, um herauszufinden, welche nicht wie erwartet funktioniert.

    Die Details der CPU-Auslastung auf der empfangenden Seite.

  6. Berechnen Sie den Durchsatz in Bits/Sekunde entsprechend dem Ergebnis auf dem Client. Lesen Sie das Beispiel im folgenden Screenshot:

    Das CtsTraffic-Befehlsergebnis auf der Clientseite.

    In diesem Beispiel beträgt der Durchsatz fast 19 Gb/s und wird wie folgt berechnet:

    (85.899.349.200 Bytes/36,678 Sekunden) * 8 = 18.735.885.097.33355 (Bits/Sekunde)

Nächste Schritte