Ich glaube, dass der PowerPC unter Windows 7 auf dem Localhost-Loopback-Durchsatz viel schneller ist, weil NetDMA verwendet werden kann.
Der Microsoft-Artikel NetDMA (Windows-Treiber) definiert NetDMA als:
Die NetDMA-Schnittstelle bietet eine generische Schnittstelle für DMA-Übertragungen von Speicher zu Speicher. Obwohl die Schnittstelle zum Kopieren von Paketen entwickelt wurde, die von Hochleistungs-Netzwerkkarten (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 ist es offensichtlich, dass Speicherkopiervorgänge der Hauptfaktor des Durchsatzes 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 die Möglichkeit haben, Daten direkt an Ihre Anwendung zu übertragen, wodurch möglicherweise auch die Anzahl der Speicherkopien reduziert wird, selbst für den einfachen Loopback-Adapter.
Die Aktivierung von NetDMA kann auf zwei Arten erfolgen:
- Geben Sie
netsh int tcp set global netdma=enabled
in die Eingabeaufforderung (cmd) ein, die als Administrator ausgeführt wird, und starten Sie dann den Computer neu. - Regedit,
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
und erstellen Sie ein neues DWORD - Element mit dem NamenEnableTCPA
mit dem Wert 1, dann neu starten.
Es gibt jedoch zwei Voraussetzungen, um NetDMA zu aktivieren:
- Der Microsoft-Artikel zum Aktivieren von NetDMA enthält Folgendes :
NetDMA muss im BIOS aktiviert sein, bevor Sie dieses Verfahren ausführen. Die NetDMA-Unterstützung wird häufig als IOAT-Unterstützung bezeichnet.
- Der Microsoft-Artikel NetDMA (Windows-Treiber) enthält diesen Hinweis:
Die NetDMA-Schnittstelle wird ab Windows 8 nicht unterstützt.
Wenn ich diese beiden Anforderungen zusammenfasse, kann ich davon ausgehen, dass NetDMA eine BIOS-Funktion ist und deshalb 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, der wie folgt definiert ist:
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 geringeren Latenz des TCP interessiert Loopback Fast Path kann bieten. Diese Funktion behält die TCP-Socket-Semantik und -Plattformfunktionen, einschließlich der Windows Filtering Platform (WFP), bei und funktioniert sowohl für nicht virtualisierte als auch für virtualisierte Betriebssysteminstanzen.
Die TCP-Loopback-Schnittstelle stellt einen einfachen lokalen IPC-Mechanismus für Prozesse auf derselben Betriebssysteminstanz bereit und kann durch einfaches Ändern der Ziel-IP-Adresse leicht auf einen Remote-IPC-Mechanismus umgestellt werden.
Leider ist Fast TCP Loopback nicht transparent, sodass Anwendungen einen WSAIoctl-Systemaufruf für die Sockets sowohl für den Sender als auch für den Empfänger ausgeben müssen . Daher sind sie nicht abwärtskompatibel mit vorhandenen Anwendungen zur Bandbreitenmessung, wie PsPing und PCATTCP .
In meinen eigenen Tests unter Windows 7 habe ich nicht alle Rätsel um NetDMA herausgefunden, aber ich habe es geschafft, es kurz einzuschalten, mit dem unmittelbaren Vorteil einer Verdopplung meiner Bandbreite, gemessen am PsPing. Da NetDMA einen Neustart auf diesem Computer jedoch nicht überstanden hat, empfehle ich den Durchsatz nicht für den Durchsatz, auch nicht für Computer, die dies theoretisch unterstützen.