Freigeben über


Einführung in die empfangsseitige Skalierung

Receive Side Scaling (RSS) ist eine Netzwerktreibertechnologie, die die effiziente Verteilung der Netzwerkeingangsverarbeitung über mehrere CPUs in Multiprozessorsystemen ermöglicht.

Hinweis

Da Hyperthread-CPUs auf demselben Kernprozessor dieselbe Ausführungs-Engine verwenden, ist der Effekt nicht mit mehreren Kernprozessoren identisch. Aus diesem Grund verwendet RSS keine Hyperthreadprozessoren.

Um empfangene Daten effizient zu verarbeiten, plant die Empfangsunterbrechungsdienstfunktion eines Miniporttreibers einen Verzögerten Prozeduraufruf (DPC). Ohne RSS gibt ein typischer DPC alle empfangenen Daten innerhalb des DPC-Aufrufs an. Daher wird die gesamte Empfangsverarbeitung, die dem Interrupt zugeordnet ist, auf der CPU ausgeführt, in der der Empfangs-Interrupt stattfindet. Eine Übersicht über die Nicht-RSS-Empfangsverarbeitung finden Sie unter Nicht-RSS-Empfangsverarbeitung.

RSS ermöglicht es dem NIC- und Miniporttreiber, den Empfang von DPCs auf anderen Prozessoren zu planen. Der RSS-Entwurf stellt sicher, dass die mit einer bestimmten Verbindung verknüpfte Verarbeitung auf einer zugewiesenen CPU verbleibt. Die NIC implementiert eine Hashfunktion, und der resultierende Hashwert hilft bei der Auswahl einer CPU.

Die folgende Abbildung veranschaulicht den RSS-Mechanismus zum Bestimmen einer CPU.

Diagramm, das den Prozess des RSS-Mechanismus bei der Bestimmung einer CPU zeigt.

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 Reihe von wenig signifikanten Bits (LSBs) des Hashwerts werden verwendet, um eine Indirektionstabelle zu indizieren. Die Werte in der Indirektierungstabelle werden verwendet, um die empfangenen Daten einer CPU zuzuweisen.

Ausführlichere Informationen zum Angeben von Indirektierungstabellen, Hashtypen und Hashfunktionen finden Sie unter RSS-Konfiguration.

Mit unterstützung von Message Signaled Interrupt (MSI) kann eine NIC auch die zugehörige 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 veranschaulicht die Ebenen der Hardwareunterstützung für RSS.

Diagramm, das die verschiedenen Ebenen der Hardwareunterstützung für RSS zeigt.

Es gibt drei mögliche Hardwareunterstützungsstufen für RSS:

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 Verteilen der Empfangsverarbeitung von einer NIC auf mehrere CPUs.

    Durch das Verteilen der Empfangsverarbeitung wird sichergestellt, dass keine CPU stark geladen wird, während sich eine andere CPU im Leerlauf befindet.

  • Spin locken Sie den Overhead, indem Sie die Wahrscheinlichkeit erhöhen, dass Softwarealgorithmen, die Daten freigeben, auf derselben CPU ausgeführt werden.

    Der Spin Lock-Overhead tritt beispielsweise auf, wenn eine Funktion, die auf CPU0 ausgeführt wird, über eine Spinsperre für Daten verfügt, auf die eine Funktion, die auf CPU1 ausgeführt wird, zugreifen muss. CPU1 dreht (wartet), bis CPU0 die Sperre freigibt.

  • Erneutes Laden von Caches und anderen Ressourcen, indem die Wahrscheinlichkeit erhöht wird, 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 darauf 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.

  • Auftragsverarbeitung

    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-Empfang finden Sie unter Angeben von RSS-Empfangsdaten.

  • Dynamischer Lastenausgleich

    RSS bietet ein Mittel zum Ausgleich der Netzwerkverarbeitungslast zwischen CPUs, wenn die Auslastung des Hostsystems variiert. Um die Last auszugleichen, können überlastende Treiber die Indirektionstabelle ändern. Weitere Informationen zum Angeben von Indirektierungstabellen, Hashtypen und Hashfunktionen finden Sie unter RSS-Konfiguration.

  • Sendseitige Skalierung

    RSS ermöglicht Treiberstapeln das Verarbeiten von sende- und empfangsseitigen Daten für eine bestimmte Verbindung auf derselben CPU. In der Regel sendet ein Überlastungstreiber (z. B. TCP) einen Teil eines Datenblocks und wartet auf eine Bestätigung, bevor der Saldo der Daten gesendet wird. Die Bestätigung löst dann nachfolgende Sendeanforderungen aus. Die RSS-Indirektionstabelle identifiziert eine bestimmte CPU für die Empfangsdatenverarbeitung. Standardmäßig wird die Sendeverarbeitung auf derselben CPU ausgeführt, wenn sie durch die 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öswilligen Remotehosts, die versuchen könnten, das System in einen unausgewogenen Zustand zu zwingen.

  • MSI-X-Unterstützung

    RSS mit Unterstützung für MSI-X führt die Interruptdienstroutine (ISR) auf derselben CPU aus, die später den DPC ausführt. Dies reduziert den Mehraufwand für spin lock und das Erneute Laden von Caches.