Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Receive Side Scaling (RSS) ist eine Netzwerktreibertechnologie, die die effiziente Verteilung der Netzwerk-Empfangen-Verarbeitung über mehrere CPUs in Multiprozessorsystemen ermöglicht. RSS verbessert die Systemleistung und erhöht die Netzwerkskalierbarkeit, indem alle verfügbaren Prozessoren in einem System genutzt und CPU-Workloads dynamisch neubalanciert werden.
In diesem Thema wird die Verwendung von RSS in NetAdapterCx-Clienttreibern betont, und es wird davon ausgegangen, dass die RSS-Konzepte und -Terminologie bekannt sind. Weitere Informationen zu RSS im Allgemeinen, einschließlich Diagrammen, die RSS in verschiedenen Hardwareszenarien veranschaulichen, finden Sie unter Receive Side Scaling.
Übersicht über RSS in NetAdapterCx
RSS im NetAdapterCx konzentriert sich auf einfache Konfiguration, einfache Aktivierung und Deaktivierung sowie Abstraktion der Komplexität von Prozessor-zu-Unterbrechung-Verknüpfungen. Ein Clienttreiber für eine RSS-fähige NIC muss nur drei Kriterien erfüllen, um RSS in NetAdapterCx zu unterstützen:
- Der Treiber muss RSS-Funktionen beim Starten eines Netzadapters festlegen, aber bevor NetAdapterStart aufgerufen wird. Dazu gehört die Implementierung von vier RSS-Rückrufen und die Registrierung in der RSS-Funktionsstruktur.
- Die Datenpfadwarteschlangen des Treibers müssen erstellt und bereit sein, Anforderungen anzunehmen.
- Der Treiber muss sich im D0-Energiezustand befinden.
Der Entwurf von RSS in NetAdapterCx garantiert, dass das System die RSS-Rückrufe eines Clients nicht aufruft und RSS bis zum Ende der Power-Up-Sequenz aktiviert. Kunden müssen keine Verschiebungsanforderungen für die Indirektionstabelle verwalten oder andere RSS-Ereignisse bearbeiten, bis alles, was sie benötigen, bereit ist.
Später, wenn der Treiber entladen wird, führt NetAdapterCx keine RSS-Rückrufe aus, nachdem Datenpfadwarteschlangen während der Power-Down-Sequenz zerstört wurden. Da Datenpfadwarteschlangen während des Power-Downs als ersten Schritt heruntergerissen werden, bedeutet dies, dass Clients während des Power-Downs keine möglichen RSS-Ereignisse in einer anderen Phase verarbeiten müssen.
Festlegen von RSS-Funktionen
Führen Sie die folgenden Schritte aus, um mit RSS in NetAdapterCx zu beginnen:
- Informieren Sie das System beim Starten Ihres Netzadapters über die RSS-Funktionen und Einschränkungen Ihrer Hardware mithilfe der NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES-Struktur.
- Initialisieren Sie die Funktionsstruktur, indem Sie NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES_INIT aufrufen.
- Wenn Sie die STRUKTUR der RSS-Funktionen initialisieren, legen Sie die RSS-Rückrufmitglieder der Struktur fest, um Ihre Implementierungen für diese Rückrufe zu registrieren:
- Legen Sie die SynchronizeSetIndirectionEntries-Struktur der RSS-Funktionen entsprechend fest.
- Übergeben Sie die initialisierten RSS-Funktionenstrukturen an die NetAdapterSetReceiveScalingCapabilities-Methode .
Aktivieren und Deaktivieren von RSS
Nachdem Sie die RSS-Funktionen festgelegt haben, setzt das System die Einschaltsequenz für Ihren Gerätetreiber fort. NetAdapterCx beginnt, die RSS-Callbacks Ihres Treibers aufzurufen, sobald der letzte Schritt zum Erstellen von Datenpfad-Queues abgeschlossen ist. Zu diesem Zeitpunkt kann RSS nach Bedarf aktiviert und deaktiviert werden.
Von Bedeutung
Sie sollten die Indirektionstabelle beim Aktivieren oder Deaktivieren von RSS nicht löschen oder zurücksetzen. Das Framework legt den anfänglichen Indirektionstabellenstatus fest.
Aktivieren von RSS
NetAdapterCx ermöglicht RSS durch Aufrufen des EvtNetAdapterReceiveScalingEnable-Rückrufs Ihres Treibers. Im Kontext dieses Rückrufs aktivieren Sie in der Regel Steuerbits in Ihrer Hardware.
Ein Codebeispiel zum Aktivieren von RSS finden Sie unter EvtNetAdapterReceiveScalingEnable.
Deaktivieren von RSS
NetAdapterCx deaktiviert RSS durch Aufrufen des EvtNetAdapterReceiveScalingDisable-Rückrufs Ihres Treibers. Hier deaktivieren Sie in der Regel das Steuerbit in Ihrer Hardware, das Sie zuvor in EvtNetAdapterReceiveScalingEnable festgelegt haben.
Ein Codebeispiel zum Deaktivieren von RSS finden Sie unter EvtNetAdapterReceiveScalingDisable.
Festlegen des geheimen Hashschlüssels
Sobald RSS aktiviert ist, ruft NetAdapterCx die EvtNetAdapterReceiveScalingSetHashSecretKey-Rückruffunktion auf, um Ihrem Treiber den geheimen Hashschlüssel bereitzustellen, den Ihre NIC bei der Verifizierung von Hashberechnungen verwenden sollte. Dieser Callback kann jederzeit aufgerufen werden, während RSS ausgeführt wird, wenn sich der geheime Hashschlüssel ändert.
Ein Beispielcode zum Festlegen des geheimen Hashschlüssels finden Sie unter EvtNetAdapterReceiveScalingSetHashSecretKey.
Verschieben von Indirektionstabelleneinträgen
Während RSS auf dem System ausgeführt wird, überwachen Protokolltreiber der oberen Ebene die Prozessorauslastung und verwalten eine Dereferenzierungstabelle, die Empfängerwarteschlangen zu Prozessoren zuordnet. Wenn der Protokolltreiber die Prozessorauslastung in RSS neu ausgleichen muss, berechnet er zunächst eine neue Zuordnung für jeden Eintrag der Dereferenzierungstabelle zu einem neuen Prozessor. Anschließend übergibt das Protokoll diese Informationen an NetAdapterCx, das die Komplexität der Zuordnung von Empfangswarteschlangen und Hardware-Interruptvektoren zum richtigen Prozessor im Auftrag Ihres NIC-Clienttreibers handelt. NetAdapterCx speichert die neue Indirektionstabelle mit Einträgen, die den Empfangswarteschlangen-IDs zugeordnet sind, in einer NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRIES Struktur und übergibt sie an Ihren Treiber, wenn es die Rückruffunktion EvtNetAdapterReceiveScalingSetIndirectionEntries aufruft.
In dieser Callback-Funktion verschieben Sie jeden Eintrag in der Indirektionstabelle Ihrer NIC in die angegebene Empfangswarteschlange. Jede NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRY Struktur im NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRIES Array enthält den Hash-Index für diesen Eintrag in der Tabelle, die neue Empfangs-Queue, der der Eintrag zugewiesen werden soll, und ein Statusfeld, das angibt, ob die Verschiebung des einzelnen Eintrags erfolgreich war oder nicht.
Die Methode zum Zuweisen von Indexeinträgen zu den Hardware-Empfangswarteschlangen hängt vom Design Ihrer NIC und der Anzahl der Empfangswarteschlangen ab. Weitere Informationen und ein Codebeispiel finden Sie unter EvtNetAdapterReceiveScalingSetIndirectionEntries.
Heterogene CPU-Unterstützung
Von Bedeutung
Die heterogene CPU-Unterstützung ist ein Vorabfeature, das vor der kommerziellen Veröffentlichung erheblich geändert werden kann. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.
Heterogene CPU-Systeme verwenden mehrere Arten von Kernen, die unterschiedliche Taktgeschwindigkeiten und Funktionen aufweisen. Im Vergleich zu homogenen Multiprozessorsystemen, bei denen jeder Kern identisch miteinander ist, können heterogene CPU-Systeme besser an dynamische Rechenlasten angepasst und weniger Energie verbrauchen.
Ab WDK Preview Version 25197 bietet NetAdapterCx heterogene CPU-Systemunterstützung durch effiziente Nutzung der verschiedenen Kerntypen. Während RSS ausgeführt wird, entscheidet das System, welcher Prozessor abhängig von der vom Clienttreiber empfangenen Datenverkehrsauslastung verwendet werden soll. Wenn weniger Datenverkehr empfangen wird, können kleinere, energieeffizientere Kerne den Datenverkehr verarbeiten. Wenn mehr Datenverkehr vorhanden ist, sind größere, leistungsfähigere Kerne erforderlich, um die empfangenen Pakete kontinuierlich abzufragen.
Um sich für die heterogene Systemunterstützung zu entscheiden, muss der Systemadministrator das standardisierte INF-Schlüsselwort*RSSProfile auf NdisRssProfileBalanced festlegen. Dies ist das Standardprofil für heterogene Systeme. Damit das System die besten Kerne für die Verwendung festlegen kann, können Sie keine erweiterten RSS-Schlüsselwörter festlegen.
Die anderen RSS-Profile werden auch für heterogene Systeme unterstützt. Wenn Sie erweiterte Einstellungen wie die RSS-Basisprozessornummer und die RSS-Maximale Prozessornummer auf dem System steuern möchten, sollten Sie ein anderes RSS-Profil verwenden.
Sie können auch NdisRssProfileBalanced auf einem homogenen CPU-System verwenden. In diesem Fall entscheidet das System, welche Prozessoren für RSS verwendet werden sollen.