Leistungsunterschiede beim Localhost-TCP-Durchsatz


7

Ich habe psping verwendet, um Bandbreitenstatistiken auf localhost auf verschiedenen Computern zu messen: Laptops, Heimcomputern und Servern . Alle erreichen zwischen 100 und 200 MB / s, aber mein PowerPc bei der Arbeit erreicht 800 MB / s .

Was kann dazu führen, dass diese großen Unterschiede über localhost mit sich selbst kommunizieren? Der PowerPc übertrifft alle anderen Geräte, die ich getestet habe, mit einem Faktor von 4 bis 8 .

PowerPc-Konfiguration

  • Windows 7
  • Intel (R) Xeon (R) -CPU E3-1240 v3 bei 3,40 GHz [Familie 6, Modell 60, Schritt 3]
  • 3,78 GFLOPS / Kern
  • Symantec SEP

Eine Konfiguration des Heimcomputers

  • Windows 8.1
  • Intel (R) Core (TM) i7-CPU 920 bei 2,67 GHz [Intel64-Familie 6, Modell 26, Schritt 5] 4
  • 2,64 GFLOPS / Kern
  • BitDefender

Befehl psping

psping -4 -b -l 8k -n 20000 localhost:1234

Ein paar Fragen, die ich erwarte und die ich gerne im Vorfeld beantworten möchte

Ich bin vielleicht weit weg, aber dies zeigt Ihnen mein aktuelles Verständnis der Dinge. Sie können mich gerne klarstellen.

  1. Antiviren-bezogen
    Ich habe die Antiviren-Komponente meines Heimcomputers ohne erkennbaren Unterschied deaktiviert. Außerdem habe ich einen WPA-Trace (XperfScripts) erfasst und die Module mit den meisten CPU-bezogenen Aktivitäten sind ntoskrnl.exe, netio.sys, tcpip.sys, ndis.sys und afd.sys. Das erste AV-Modul, das in das Bild CPU-bezogen kommt, ist avcuf32.dll, das 0,17% der gesamten CPU ausmacht.

  2. Localhost vs. 127.0.0.1
    Ich habe beide ausprobiert und auf allen getesteten Computern die gleichen Ergebnisse erzielt.

  3. Aktuelle Treiber
    Die Treiber auf meinem Heimcomputer sind aktuell. Die Treiber auf dem PowerPc werden von unseren IT-Mitarbeitern verwaltet und bleiben etwas zurück, aber nicht so stark (und der PowerPc ist bei den Tests sowieso viermal schneller).

  4. netsh int tcp show global
    Es gibt einige Unterschiede zwischen beiden PCs. Der Chimney Offload State und der NetDMA State auf meinem Heimcomputer sind deaktiviert, während sie auf dem PowerPc automatisch und aktiviert sind.
    Mein Networking-Fu ist nicht gut genug, um zu wissen, ob dies die Unterschiede erklären könnte, aber ich bezweifle, dass dies der Fall ist.


Bearbeiten

RAM-Details PowerPC

  capacity speed memorytype totalwidth datawidth typedetail
  -------- ----- ---------- ---------- --------- ----------
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128

RAM-Details Heimcomputer

    capacity speed memorytype totalwidth datawidth typedetail
  -------- ----- ---------- ---------- --------- ----------
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
   4194304    33         11          8         8       4096

1
Stellen Sie zunächst sicher, dass Ihre B-Werte alle gleich sind (MB / MB), da 800 MB == 100 MB.
Frank Thomas

1
Entschuldigung, fette Finger geben ein und mussten bearbeiten, um den Kommentar zu vervollständigen. Normalerweise beschleunigt RAID den Betrieb von LAN-Dateien und die Art und Weise, wie Festplatten bei der Ausführung von E / A zusammenarbeiten (oder nicht). Beispielsweise erhalten Sie nie mehr als 35 MB / s, wenn die Quelle oder das Ziel eines Datenelements über USB2 verbunden ist. Dies ist an und für sich der Grund dafür, dass mein Arbeits-PC mehr Netzwerkkapazität als mein Heim hat, da die Server alle RAID5 sind, obwohl mein Heimnetzwerk schneller ist.
Frank Thomas

1
@FrankThomas - Ich sehe <g>. Alle B sind der gleiche Fall. Ich denke, Sie haben meine Frage falsch interpretiert. Es ist keine Festplatte oder USB beteiligt. psping ist lediglich ein Netzwerk-Test-Tool und in diesem Fall teste ich, wie schnell der Computer über localhost mit sich selbst kommunizieren kann (am Ende, um ein IPC-über-TCP-Problem zu lösen, das wir mit einer Anwendung haben)
Lieven Keersmaekers

1
@ ali786 - Der gesamte Datenverkehr erfolgt von / nach localhost. Die physische Netzwerkkarte spielt keine Rolle (tcpip.sys ist die niedrigste im Stapel, in den der Datenverkehr geht) . Ich habe der Frage RAM-Details hinzugefügt. Ich werde diese von meinem Heimcomputer hinzufügen, wenn ich zu Hause bin <g>.
Lieven Keersmaekers

1
Wie viel RAM insgesamt für jeden Computer? Der Hauptunterschied in der Geschwindigkeit soll die Speichergeschwindigkeit sein, da Frames zwischen TCP-Schichten kopiert werden. Windows 8 soll aufgrund von Fast TCP Loopback viel schneller sein , es sei denn, PsPing verwendet es nicht. Sie sollten mit Blöcken von 8960 Bytes pingen, um Jumbo-Frames für eine geringfügige Verbesserung zu verwenden.
Harryc

Antworten:


5

Ich glaube, dass der Grund dafür, dass der PowerPC unter Windows 7 beim Localhost-Loopback-Durchsatz viel schneller ist, darin besteht, dass er NetDMA verwenden kann.

Der Microsoft-Artikel NetDMA (Windows-Treiber) definiert NetDMA als:

Die NetDMA-Schnittstelle bietet eine generische Schnittstelle für DMA-Übertragungen (Memory-to-Memory Direct Memory Access). Obwohl die Schnittstelle zum Kopieren von Paketen ausgelegt ist, die von Hochleistungs-Netzwerkschnittstellenkarten (NICs) empfangen werden, können Sie die Schnittstelle auch für andere Anwendungen verwenden. Es gibt keine direkte Beziehung zwischen NetDMA und NDIS.

Bei Verwendung von localhost-Loopback liegt es nahe, dass Speicherkopiervorgänge der Hauptdurchsatzfaktor sind, da Frames aus dem Quellanwendungsspeicher, dann zwischen TCP-Schichten und schließlich in den Speicher der Zielanwendung kopiert werden.

NetDMA kann Auswirkungen haben, da Netzwerkadapter Daten direkt an Ihre Anwendung übertragen können. Auf diese Weise wird möglicherweise die Anzahl der Speicherkopien selbst für den einfachen Loopback-Adapter verringert.

Das Aktivieren von NetDMA kann auf zwei Arten erfolgen:

  1. Geben Sie die netsh int tcp set global netdma=enabledEingabeaufforderung (cmd) ein, die als Administrator ausgeführt wird, und starten Sie den Computer neu.
  2. Regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersund ein neues DWORD - Element mit dem Namen erstellen EnableTCPAmit dem Wert 1, dann neu starten.

Es gibt jedoch zwei Voraussetzungen, um NetDMA zu aktivieren:

  1. Der Microsoft-Artikel Aktivieren von NetDMA enthält Folgendes :

NetDMA muss im BIOS aktiviert sein, bevor dieses Verfahren ausgeführt werden kann. Die NetDMA-Unterstützung wird häufig als IOAT-Unterstützung bezeichnet.

  1. Der Microsoft-Artikel NetDMA (Windows-Treiber) enthält diesen Hinweis:

Die NetDMA-Schnittstelle wird in Windows 8 und höher nicht unterstützt.

Wenn ich diese beiden Anforderungen zusammenfasse, kann ich die Vermutung wagen, dass NetDMA, da es sich um eine BIOS-Funktion handelt, nicht in UEFI implementiert wurde, das in Windows 8/2012 verwendet wird.

Microsoft musste daher den Localhost-Loopback-Durchsatz auf andere Weise verbessern, insbesondere für die Verwendung in Hyper-V, und hatte daher in Windows 8/2012 den Fast TCP Loopback erstellt , definiert als:

TCP Loopback Fast Path ist eine neue Funktion, die in Windows Server 2012 und Windows 8 eingeführt wurde. Wenn Sie die TCP-Loopback-Schnittstelle für die Interprozesskommunikation (IPC) verwenden, sind Sie möglicherweise an der verbesserten Leistung, der verbesserten Vorhersagbarkeit und der verringerten Latenz des TCP interessiert Loopback Fast Path kann bieten. Diese Funktion bewahrt die Semantik und Plattformfunktionen des TCP-Sockets, einschließlich der Windows Filtering Platform (WFP), und funktioniert sowohl auf nicht virtualisierten als auch auf virtualisierten Betriebssysteminstanzen.

Die TCP-Loopback-Schnittstelle bietet einen einfachen lokalen IPC-Mechanismus für Prozesse auf derselben Betriebssysteminstanz und kann einfach durch Ändern der Ziel-IP-Adresse auf einen Remote-IPC-Mechanismus umgeschaltet werden.

Leider ist Fast TCP Loopback nicht transparent und erfordert, dass Anwendungen einen WSAIoctl-Systemaufruf an den Sockets für Sender und Empfänger ausgeben . Daher ist es nicht abwärtskompatibel mit vorhandenen Bandbreitenmessanwendungen wie PsPing und PCATTCP .

In meinen eigenen Tests unter Windows 7 habe ich nicht alle Rätsel um NetDMA gelöst, aber ich habe es geschafft, es kurz einzuschalten, mit dem unmittelbaren Vorteil, meine durch PsPing gemessene Bandbreite zu verdoppeln. Da NetDMA einen Neustart auf diesem Computer nicht überlebt hat, empfehle ich nicht, ihn für den Durchsatz abhängig zu machen, selbst auf Computern, die ihn theoretisch unterstützen.


Ich habe WPA-Spuren sowohl eines schnellen als auch eines langsamen Systems. Haben Sie zufällig Erfahrung mit der Interpretation solcher Spuren? Jedes Mal, wenn ich anfange, sie zu schneiden und zu würfeln, schließe ich andere Dinge ab, je nachdem, worauf ich mich gruppiert habe.
Lieven Keersmaekers

(Lieben Sie die Art und Weise, wie Sie dies übrigens zusammengestellt haben)
Lieven Keersmaekers

Entschuldigung, ich habe keine Erfahrung mit WPA-Traces, aber ich kann sehen, dass im Web viel Material vorhanden ist. Sie könnten vielleicht versuchen, die interessanten EventSources herauszufinden und zu zielen, anstatt alles.
Harrymc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.