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.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.Localhost vs. 127.0.0.1
Ich habe beide ausprobiert und auf allen getesteten Computern die gleichen Ergebnisse erzielt.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).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
quelle
Antworten:
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:
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:
netsh int tcp set global netdma=enabled
Eingabeaufforderung (cmd) ein, die als Administrator ausgeführt wird, und starten Sie den Computer neu.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
und ein neues DWORD - Element mit dem Namen erstellenEnableTCPA
mit dem Wert 1, dann neu starten.Es gibt jedoch zwei Voraussetzungen, um NetDMA zu aktivieren:
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:
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.
quelle