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 Netzwerkempfangsverarbeitung effizient über mehrere CPUs in Multiprozessorsystemen verteilt. RSS verbessert die Netzwerkleistung, indem die Verarbeitungsverzögerungen reduziert und die CPU-Auslastung im gesamten System optimiert wird.
Hinweis
Da Hyperthread-CPUs auf demselben Kernprozessor dasselbe Ausführungsmodul verwenden, ist der Effekt nicht mit mehreren Kernprozessoren identisch. Aus diesem Grund verwendet RSS keine Hyperthreadprozessoren.
Um empfangene Daten effizient zu verarbeiten, plant die Receive-Interrupt-Dienstfunktion eines Miniporttreibers einen verzögerten Prozeduraufruf (Deferred Procedure Call, DPC). Ohne RSS gibt ein typischer DPC alle empfangenen Daten innerhalb des DPC-Aufrufs an. Daher wird die gesamte Empfangenverarbeitung, die dem Interrupt zugeordnet ist, auf der CPU ausgeführt, in der der Empfangsunterbruch auftritt. Eine Übersicht über die Nicht-RSS-Empfangenverarbeitung finden Sie unter "Nicht-RSS-Empfangenverarbeitung".
RSS ermöglicht es dem NIC- und Miniporttreiber, Empfangs-DPCs auf anderen Prozessoren zu planen. Das RSS-Design stellt sicher, dass die verarbeitung, die einer bestimmten Verbindung zugeordnet ist, auf einer zugewiesenen CPU bleibt. Die NIC implementiert eine Hashfunktion, und der resultierende Hashwert hilft bei der Auswahl einer CPU.
Die folgende Abbildung zeigt den RSS-Mechanismus zum Ermitteln einer CPU.
Eine NIC verwendet eine Hashfunktion, um einen Hashwert über einen definierten Bereich (Hashtyp) innerhalb der empfangenen Netzwerkdaten zu berechnen. Der definierte Bereich kann nicht zusammenhängend sein.
Eine Anzahl von am wenigsten signifikanten Bits (LSBs) des Hashwerts wird verwendet, um eine Indirektionstabelle zu indizieren. Die Werte in der Dereferenzierungstabelle werden verwendet, um die empfangenen Daten einer CPU zuzuweisen.
Ausführlichere Informationen zum Angeben von Dereferenzierungstabellen, Hashtypen und Hashingfunktionen finden Sie unter RSS-Konfiguration.
Mit Unterstützung von Message Signaled Interrupt (MSI) kann eine NIC auch die zugeordnete CPU unterbrechen. Weitere Informationen zur NDIS-Unterstützung für MSIs finden Sie unter NDIS MSI-X.
Hardwareunterstützung für RSS
Die folgende Abbildung zeigt die Ebenen der Hardwareunterstützung für RSS.
Die Hardwareunterstützung für RSS umfasst drei Ebenen:
Hashberechnung mit einer einzelnen Warteschlange: Die NIC berechnet den Hashwert, und der Miniporttreiber weist empfangene Pakete zu Warteschlangen zu, die cpUs zugeordnet sind.
Hashberechnung mit mehreren Empfangswarteschlangen: Die NIC weist den empfangenen Datenpuffern Warteschlangen zu, die mit CPUs verknüpft sind.
Message Signaled Interrupts (MSIs): Die NIC unterbricht die CPU, die die empfangenen Pakete verarbeiten soll.
Die NIC übergibt immer den 32-Bit-Hashwert.
Wie RSS die Systemleistung verbessert
RSS kann die Leistung des Netzwerksystems verbessern, indem folgendes reduziert wird:
Verarbeitungsverzögerungen durch Verteilung der Empfangenverarbeitung von einer NIC über mehrere CPUs hinweg.
Durch die Verteilung der Empfangsverarbeitung kann sichergestellt werden, dass keine CPU stark geladen wird, während eine andere CPU im Leerlauf ist.
Durch Erhöhung der Wahrscheinlichkeit, dass Softwarealgorithmen, die Daten gemeinsam nutzen, auf derselben CPU ausgeführt werden, wird der durch Spin-Locks entstehende Overhead reduziert.
Drehsperraufwand tritt z. B. auf, wenn eine Funktion, die auf CPU0 ausgeführt wird, über eine Drehsperre für Daten verfügt, auf die eine Auf CPU1 ausgeführte Funktion zugreifen muss. CPU1 dreht sich (wartet) bis CPU0 die Sperre freigibt.
Erneutes Laden von Caches und anderen Ressourcen durch Erhöhen der Wahrscheinlichkeit, dass Softwarealgorithmen, die Daten gemeinsam nutzen, auf derselben CPU ausgeführt werden.
Ein solches Neuladen tritt beispielsweise auf, wenn eine Funktion, die freigegebene Daten auf CPU0 ausführt und auf sie zugreift, in einem nachfolgenden Interrupt auf CPU1 ausgeführt wird.
Um diese Leistungsverbesserungen in einer sicheren Umgebung zu erzielen, bietet RSS die folgenden Mechanismen:
Verteilte Verarbeitung
RSS verteilt die Verarbeitung von Empfangsanzeigen von einer bestimmten NIC in DPCs an mehrere CPUs.
In-Order-Verarbeitung
RSS behält die Reihenfolge der Übermittlung empfangener Datenpakete bei. Für jede Netzwerkverbindung erhalten RSS-Prozesse Hinweise auf eine zugeordnete CPU. Weitere Informationen zur VERARBEITUNG von RSS-Empfangen finden Sie unter "Angeben von RSS-Empfangsdaten".
Dynamischer Lastenausgleich
RSS bietet eine Möglichkeit, die Netzwerkverarbeitungslast zwischen CPUs neu auszugleichen, da die Hostsystemlast unterschiedlich ist. Um die Last neu auszugleichen, können übergeordnete Treiber die Umleitungstabelle ändern. Weitere Informationen zum Angeben von Dereferenzierungstabellen, Hashtypen und Hashingfunktionen finden Sie unter RSS-Konfiguration.
Sendeseitige Skalierung
RSS ermöglicht Treiberstapeln das Verarbeiten von Sende- und Empfangsdaten für eine bestimmte Verbindung auf derselben CPU. In der Regel sendet ein höhergelegener Treiber (z. B. TCP) einen Teil eines Datenblocks und wartet auf eine Bestätigung, bevor die restlichen Daten gesendet werden. Die Bestätigung löst dann nachfolgende Sendeanforderungen aus. Die RSS-Dereferenzierungstabelle identifiziert eine bestimmte CPU für die Empfangendatenverarbeitung. Standardmäßig wird die Sendeverarbeitung auf derselben CPU ausgeführt, wenn sie von der Empfangsbestätigung ausgelöst wird. Ein Treiber kann auch die CPU angeben (z. B. wenn ein Timer verwendet wird).
Sicherer Hash
RSS enthält eine Signatur, die zusätzliche Sicherheit bietet. Diese Signatur schützt das System vor bösartigen Remotehosts, die versuchen könnten, das System in einen unausgewogenen Zustand zu erzwingen.
MSI-X-Support
RSS führt mit Unterstützung für MSI-X die Interrupt-Dienstroutine (Interrupt Service Routine, ISR) auf derselben CPU aus, die später den DPC ausführt. Dieses Feature reduziert den Spinlock-Aufwand und die Cache-Neuladung.