-
HINTERGRUND
-
Receive-Side-Scaling
(RSS) ist ein Feature in einem Betriebssystem, das Netzwerkadaptern,
die RSS unterstützen,
ermöglicht,
Pakete gewisser Transmission Protocol/Internet Protocol (TCP/IP) Ströme zu lenken,
so daß sie
auf einer bestimmten zentralen Verarbeitungseinheit (CPU) verarbeitet werden,
wodurch die Netzwerkverarbeitungsleistung auf Rechnerplattformen
erhöht
wird, die eine Mehrzahl von Prozessoren aufweisen. Weitere Einzelheiten
des TCP/IP-Protokolls sind in der Veröffentlichung mit dem Titel "Transmission Control
Protocol: DARPA Internet Program Protocol Specification", beschrieben, die
für die
Defense Advanced Projects Research Agency (RCF 793, veröffentlicht
im September 1981) erstellt wurde. Das RSS-Feature skaliert den
eingehenden Verkehr über
die Mehrzahl von Prozessoren, um eine Begrenzung der Empfangsbandbreite
auf die Verarbeitungsfähigkeiten
eines einzigen Prozessors zu vermeiden.
-
Die
US 2002/0138648 A1 offenbart
eine Hash-Kompensierungsarchitektur unter Verwendung einer Tabelle
zum Nachschlagen und Speichern von Adressen innerhalb einer Rechenplattform.
Kommt es zu einem Überlauf,
etwa weil zwei nicht-identische Adressen dem gleichen Eintrag in
der Tabelle zugeordnet werden sollen, so werden Adressen, die auf diese
Weise kollidieren, in einem dedizierten Kompensierungsverzeichnis
gespeichert. Dies hat zur Folge, dass es bei einem einfachen Nachschlagen (look-up)
niemals ausreicht, lediglich auf die Tabelle zuzugreifen, sondern
auch das besagte Kompensierungsverzeichnis durchsucht werden muss.
Auf diese Weise geht jedoch ein Vorzug der verwendeten Tabelle verloren,
der darin besteht, besonders effizient nach Einträgen zu suchen;
muss jedesmal auch ein einfaches, nicht zur Suche optimiertes Verzeichnis
durchsucht werden, dürfte
es zu erheblichen Geschwindigkeitseinbußen kommen.
-
Die
US 2003/0225881 A1 offenbart
ein Look-up-Verfahren, bei dem eingehende Netzwerkpakete anhand
ihrer Headerinformationen zu ihrem jeweiligen nächsten Ziel (hop) geleitet
werden sollen. Dies geschieht mit Hilfe kaskadierter Tabellen, von denen
die erste zunächst
mit Hilfe von Paketheaderinformationen, in der Druckschrift als
erster Suchschlüssel
bezeichnet, auf einen zweiten Suchschlüssel hin abgefragt wird, der
dann wiederum in einer zweiten Tabelle verwendet wird. Die kaskadierte
Form von Tabellen trägt
der Tatsache Rechnung, dass sich die Wege der Pakete dynamisch ändern, und
durch diese Art der Abfrage besonders effizient abgerufen werden
können.
Es steht dem bekannten Verfahren jedoch nicht frei, ein eintreffendes Paket
in eine beliebige Destination umzuleiten, so dass kaum Möglichkeit
zur gleichmäßigen Auslastung
beteiligter Komponenten besteht.
-
Die
US 5857090 A offenbart
ein Eingabe/Ausgabe(I/O)-System mit einem integrierten programmierbaren
Interruptcontroller, dessen Ziel darin liegt, eine größere Anzahl
von Interrupts, die von Geräten
innerhalb des Systems erzeugt werden können, an einen oder mehrere
Mikroprozessoren des Systems zu leiten. Gegenüber bestehender einschlägiger Interrupt-Techniken
(APIC) zeichnet sich die angeführte
Druckschrift durch eine Umleitungstabelle aus, die als Software
im Speicher des Systems ausgeführt
ist. Beim Dirigieren von Interrupts unterschiedlicher Art, beispielsweise
PCI-Interrupts, wird auf Multiplexer zurückgegriffen, die die Interrupts
auf den jeweils passenden Bus leiten. Ein gegebener Interrupt muss
jedoch immer auf einen bestimmten Bus gelenkt werden, so dass auch
hier eine gleichmäßige Auslastung
der beteiligten Komponenten nicht vorgesehen oder gar möglich ist.
-
Auch
die
US 5727217 A befasst
sich mit programmierbaren Interruptcontrollern. Der darin offenbarte
Gegenstand umfasst eine Umleitungstabelle, die benutzt wird, um
bei der Bearbeitung eines Interrupts auf weiterführende Informationen zu diesem
Interrupt zuzugreifen und in Folge des entsprechenden Eintrags aus
der Tabelle eine „APIC-Interrupt-Nachricht" zu erstellen. Die
hinsichtlich der beiden vorangehenden Offenbarungen genannten Nachteile
bestehen auch hier.
-
Auch
die
WO 99/30243 A1 auf
das Handhaben von Interrupts gerichtet, wobei hier ein Steuern von
Interrupts im Mittelpunkt steht, die anhand ihrer Priorität bewertet
werden und entsprechend an bestimmte Prozessoren geleitet werden.
Dabei wird auch auf eine Umleitungstabelle zugegriffen, die jedem
Interrupt eine entsprechende Serviceroutine zuordnet. Wiederum ist
auf die kaum mögliche
Auslastung der Komponenten hinzuweisen.
-
Um
Pakete zu der geeigneten CPU zu lenken, ist eine Hash-Funktion definiert,
die als Eingang die Anfangsblockinformationen nimmt, die in dem Fluß enthalten
sind, und durch einen Gerätetreiber und
den TCP/IP-Stapel einen Hash-Wert ausgibt, der zur Identifizierung
der CPU verwendet wird, auf der der Fluß verarbeitet werden sollte.
Die Hash-Funktion läuft über die
verbindungsspezifischen Informationen in jedem Anfangsblock eines
eintreffenden Pakets. Auf der Basis des Hash-Wertes wird jedes Paket
einem bestimmten Bucket in einer Umleitungstabelle zugeordnet. In
der Umleitungstabelle gibt es eine festgelegte Anzahl von Buckets
und jeder Bucket kann auf einen spezifischen Prozessor verweisen.
Der Inhalt der Umleitungstabelle wird von dem Host-Stapel ausgelagert.
Als Reaktion auf ein eintreffendes Paket, das für einen bestimmten Bucket klassifiziert
ist, kann das eintreffende Paket zu dem Prozessor gelenkt werden,
der diesem Bucket zugeordnet ist.
-
Kurze Beschreibung der Zeichnungen
-
Unter
Bezugnahme nun auf die Zeichnungen, in welchen durchgehend gleiche
Bezugszeichen entsprechende Teile bezeichnen, zeigt:
-
1 eine
Computerumgebung gemäß bestimmten
Ausführungsformen;
-
2 ein
Blockdiagramm, das zeigt, wie Pakete gemäß bestimmten Ausführungsformen
unter einer Mehrzahl von Prozessoren verteilt werden;
-
3 ein
Blockdiagramm, das zeigt, wie ein Gerätetreiber gemäß bestimmten
Ausführungsformen
eine Software-Umleitungstabelle zu einer Hardware-Umleitungstabelle
umsetzt;
-
4 erste
Operationen, die in einem Gerätetreiber
gemäß bestimmten
Ausführungsformen
implementiert werden, der zur Ausführung in der Rechenumgebung
imstande ist;
-
5 zweite
Operationen, die in einem Gerätetreiber
gemäß bestimmten
Ausführungsformen implementiert
werden, der zur Ausführung
in der Rechenumgebung imstande ist;
-
6 ein
Blockdiagramm, das gemäß bestimmten
Ausführungsformen
für eine
beispielhafte Umsetzung von Paketen zu Prozessoren sorgt;
-
7 ein
Blockdiagramm einer Computerarchitektur für bestimmte Elemente der Rechenumgebung
gemäß bestimmten
Ausführungsformen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In
der folgenden Beschreibung wird auf die beiliegenden Zeichnungen
Bezug genommen, die einen Teil hiervor bilden und mehrere Ausführungsformen
zeigen. Es ist offensichtlich, daß andere Ausführungsformen
verwendet werden können
und strukturelle und betriebliche Änderungen vorgenommen werden
können.
-
1 zeigt
eine Rechen- oder Computerumgebung 100 gemäß bestimmten
Ausführungsformen. Eine
Rechenplattform 102 ist über eine Netzwerkschnittstellen-Hardware 106 gekoppelt.
Die Rechenplattform 102 kann Pakete senden und von anderen Vorrichtungen
(nicht dargestellt) durch das Netzwerk 104 empfangen.
-
Die
Rechenplattform 102 kann ein Personal-Computer, ein Großrechner,
ein Taschencomputer, ein Slate-PC, ein Laptop-Computer, ein Telephoniegerät, ein Netzwerkcomputer,
ein Blade-Computer oder
jede andere Rechenplattform sein. Das Netzwerk 104 kann
das Internet, ein Intranet, ein lokales Netz (LAN), ein Speicherbereichsnetz
(SAN), ein weiträumiges
Netz (WAN), ein drahtloses Netz, usw. sein. Das Netzwerk 104 kann
Teil eines oder mehrerer größerer Netzwerke
sein oder kann ein unabhängiges
Netzwerk sein oder kann aus mehreren miteinander verbundenen Netzwerken
bestehen. Die Netzwerkschnittstellen-Hardware 106 kann
Pakete über das
Netzwerk 104 senden und empfangen. In bestimmten Ausführungsformen
kann die Netzwerkschnittstellen-Hardware 106 einen Netzwerkadapter, wie
eine TCP/IP-Offload Engine (TOE) Adapter, enthalten.
-
In
bestimmten Ausführungsformen
kann die Rechenplattform 102 eine Mehrzahl von Prozessoren 108a,
...108n, ein Betriebssystem 110, einen Gerätetreiber 112,
eine Software-Umleitungstabelle 114, und eine Mehrzahl
von Empfangsschlangen 116a...116m enthalten.
-
Die
Mehrzahl von Prozessoren 108a...108n kann Complex Instruction
Set Computer (CISC) oder Reduced Instruction Set Computer (RISC)
Prozessoren oder jeden anderen Prozessor enthalten. Das Betriebssystem 110 kann
das MICROSOFT WINDOWS Betriebssystem das UNIX Betriebssystem oder ein
anderes Betriebssystem umfassen. Der Gerätetreiber 112 kann
ein Gerätetreiber für die Netzwerkschnittstellen-Hardware 106 sein. Zum
Beispiel kann in bestimmten Ausführungsformen,
wenn die Netzwerkschnittstellen-Hardware 106 ein Netzwerkadapter
ist, der Gerätetreiber 112 ein Gerätetreiber
für den
Netzwerkadapter sein.
-
Die
Software-Umleitungstabelle 114 ist eine Datenstruktur,
die eine Mehrzahl von Einträgen
enthält,
wobei jeder Eintrag dazu verwendet werden kann, auf einen der Mehrzahl
von Prozessoren 108a...108n zu verweisen, wo empfangene
Pakete verarbeitet werden können.
In bestimmten Ausführungsformen
kann die Software-Umleitungstabelle 114 Teil des Betriebssystems 110 sein
oder kann andernfalls dem Betriebssystem 110 zugeordnet
sein.
-
Die
Empfangsschlangen 116a...116m sind Datenstrukturen die
von dem Gerätetreiber 112 verwaltet
werden. Die Empfangsschlangen 116a...116m können Pakete
enthalten, die von der Netzwerkschnittstellen-Hardware 106 empfangen
werden, die zur Verarbeitung durch die Prozessoren 108a...108n in
eine Schlange gereiht werden.
-
Die
Netzwerkschnittstellen-Hardware 106 kann eine Hardware-Umleitungstabelle 118 und
einen Hardware-Hash-Berechner 120 enthalten. In bestimmten
Ausführungsformen
kann die Hardware-Umleitungstabelle 118 in Hardware in
der Netzwerkschnittstellen-Hardware 106 implementiert sein, und
jeder Eintrag in der Hardware-Umleitungstabelle kann dazu verwendet
werden, auf einen der Mehrzahl von Prozessoren 108a...108n zu
verweisen, wo empfangene Pakete verarbeitet werden können.
-
Der
Hardware-Hash-Berechner 120 kann eine Hash-Funktion auf
der Basis des Anfangsblocks eines empfangenen Pakets berechnen,
wobei die Hash-Funktion auf einen Eintrag der Hardware-Umleitungstabelle 118 verweist.
In bestimmten Ausführungsformen
kann das empfangene Paket durch einen Prozessor verarbeitet werden,
der dem Eintrag entspricht, den die Hash-Funktion umgesetzt hat.
-
In
bestimmten Ausführungsformen
kann die Software-Umleitungstabelle 114 eine andere Anzahl von
Einträgen
haben als die Hardware-Umleitungstabelle 118. Der Gerätetreiber 112 setzt
die Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 um
und lenkt empfangene Pakete zu den Prozessoren 108a...108n auf
der Basis der Umsetzung.
-
2 zeigt
ein Blockdiagramm, das zeigt, wie Pakete unter einer Mehrzahl von
Prozessoren gemäß bestimmten
beispielhaften Ausführungsformen
verteilt werden, die in der Rechenumgebung 100 implementiert
sind.
-
Die
Netzwerkschnittstellen-Hardware 106 empfangt ein Paket "i" 200 von dem Netzwerk 104.
In bestimmten Ausführungsformen
wendet der Hardware-Hash-Berechner 120 eine Hash-Funktion
bei bestimmten Anfangsblöcken
des Pakets "i" an, um einen Hash 202 zu
berechnen. Der Hash 202 kann für einen Index 204 zu
einem Entrag einer Umleitungstabelle 206 verwendet werden.
Die Umleitungstabelle 206 setzt ein Paket zu einer Empfangsschlange 210 um,
ausgehend davon, welche Eintragsnummer 208 der Hash 206 in
der Umleitungstabelle 206 angibt 204. Zum Beispiel
kann in bestimmten Ausführungsformen
der Hash 202 die Eintragsnummer 0000001 (Bezugszeichen 212)
angeben, die auf die Empfangsschlange "1" verweist.
In einem solchen Fall wird das Paket "i" 214 (welches
dasselbe wie Paket "i" 200 ist)
in die Empfangsschlange "1" 216b gestellt.
-
In
der beispielhaften Ausführungsform,
die in 2 dargestellt ist, gibt es vier Empfangsschlangen 216a...216d,
vier Deferred Procedure Calls (DPC) 218a...218a und vier
Prozessoren 220a...220m. Wenn die Netzwerkschnittstellen-Hardware 106 eine Unterbrechung
erzeugt, kann die Unterbrechungsdienstroutine des Gerätetreibers 112 von
dem Betriebssystem 110 aufgerufen werden. Die Unterbrechungsdienstroutine
des Gerätetreibers 112 kann
die Unterbrechung beanspruchen und einen DPC planen. Der DPC kann,
sobald er gestartet ist, Pakete, wie das Paket "i" 200,
das von der Netzwerkschnittstellen-Hardware 106 empfangen
wurde, verarbeiten. In bestimmten Ausführungsformen wird ein DPC zur
Verarbeitung von Paketen verwendet, die einem Prozessor entsprechen,
während
eine Empfangsschlangen eine Mehrzahl von DPCs aufweisen kann, die
der Empfangsschlange zugeordnet sind. In der beispielhaften Ausführungsform,
die in 2 dargestellt ist, gibt es einen DPC pro Empfangsschlange. Zum
Beispiel ist die Empfangsschlange "1" 216b dem
DPC 218b zugeordnet, der das Paket "i" 214 im Prozessor 220b verarbeitet.
-
In
der beispielhaften Ausführungsform,
die in 2 dargestellt ist, wird das Paket "i" 200, 214 zu der Empfangsschlange "1" (Bezugszeichen 216b) umgesetzt.
Der DPC 218b, der der Empfangsschlangen "1" (Bezugszeichen 216b) zugeordnet
ist, verarbeitet das Paket 200, 214 im Prozessor 220b.
-
3 zeigt
ein Blockdiagramm, das zeigt, wie der Gerätetreiber 112 die
Software-Umleitungstabelle 117 zu
der Hardware-Umleitungstabelle 118 gemäß bestimmten Ausführungsformen
umsetzt bzw. zuordnet (mapping).
-
In
bestimmten Ausführungsformen
kann das Betriebssystem 110 keine spezifische Grenze für die Anzahl
von Einträgen
in der Software-Umleitungstabelle 114 setzen. Im Gegensatz
zur Software-Umleitungstabelle 114 kann die Anzahl von
Einträgen
in der Hardware-Umleitungstabelle 118 begrenzt sein und
kann eine festgelegte Größe haben.
Daher kann in bestimmten Ausführungsformen
eine Mehrzahl von Software-Tabelleneinträgen jedem Hardware-Tabelleneintrag entsprechen.
Dadurch kann es zu Konflikten unter den Software-Tabelleneinträgen kommen,
die zu den Hardware-Tabelleneinträgen umgesetzt bzw. zugeordnet
werden.
-
Wenn
zum Beispiel die Software-Umleitungstabelle 114 die zweifache
Anzahl von Einträgen
wie die Hardware-Umleitungstabelle 118 hat, kann ein Konflikt
für eine
Eintragszahl x bestehen, für
die die Empfangsschlange, die der Eintragszahl x entspricht, nicht
dieselbe ist wie die Empfangsschlange, die der Eintragszahl x +
N entspricht, wobei N die Anzahl von Einträgen in der Hardware-Umleitungstabelle 118 ist. Wenn
ein Konflikt unter mehreren Software-Tabelleneinträgen besteht, könnte der
Gerätetreiber 112 eine Bestimmung
vornehmen müssen,
welcher Prozessor in dem entsprechenden Hardware-Tabelleneintrag
zu verwenden ist. Bei einer Methode kann eine Heuristik verwendet
werden, um den Prozessor zu erraten, der im Falle eines Konflikts
verwendet wird. Die Verwendung einer Heuristik kann im schlimmsten
Fall bewirken, daß jede
Empfangsschlange potentiell Pakete enthält, die für jeden Prozessor bestimmt
sind. Daher müsste
jede Empfangsschlange DPCs haben, die der Anzahl von Prozessoren
entsprechen. Wenn vier Prozessoren und vier Empfangsschlangen vorhanden
sind, waren in einer solchen Ausführungsform auf der Basis einer
Heuristik sechzehn DPCs erforderlich. Die Zusatzlast, die mit der
Schaffung und Verwendung einer großen Anzahl von DPCs erzeugt wird,
kann die Systemleistung herabsetzen.
-
In
bestimmten Ausführungsformen
ist der Gerätetreiber 112 mit
einem Schwellenwert 300 bereitgestellt. Der Schwellenwert 300 kann
eine programmierbare Variable oder Konstante sein. In bestimmten
Ausführungsformen
bestimmt der Gerätetreiber 112 die
Anzahl von Konflikten in der Software-Umleitungstabelle 114 und
setzt die Einträge
der Software-Umleitungstabelle 114 zu den Einträgen der
Hardware-Umleitungstabelle 118 auf der Basis der Anzahl
von Konflikten um.
-
4 zeigt
erste Operationen, die in dem Gerätetreiber 112 gemäß bestimmten
Ausführungsformen
implementiert werden, der imstande ist, in der Rechenumgebung 110 zu
arbeiten. Der Gerätetreiber 112 setzt
die Einträge
der Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 auf
der Basis der Anzahl von Konflikten in den Software-Umleitungstabelleneinträgen um.
-
Die
Kontrolle beginnt bei Block 400, wo der Gerätetreiber 112 eine
Anzahl konfliktbildender Einträge
in einer ersten Umleitungstabelle 114 mit einem ersten
Satz von Einträgen
bestimmt, wobei der erste Satz von Einträgen zu einem zweiten Satz von
Einträgen
einer zweiten Umleitungstabelle 118 umgesetzt werden kann.
In bestimmten beispielhaften Ausführungsformen kann zum Beispiel
die erste Umleitungstabelle 114 die Software-Umleitungstabelle 114 sein
und die zweite Umleitungstabelle 118 kann die Hardware-Umleitungstabelle 118 sein.
Zusätzlich kann
in bestimmten beispielhaften Ausführungsformen die Anzahl von
Einträgen
in der ersten Umleitungstabelle 114 höher als die Anzahl von Einträgen in der
zweiten Umleitungstabelle 118 sein. Daher können in
bestimmten beispielhaften Ausführungsformen
konfliktbildende Einträge
vorhanden sein, wenn mehr als ein Eintrag der ersten Umleitungstabelle 114 zu
einem einzigen Eintrag der zweiten Umleitungstabelle 118 umgesetzt
werden kann.
-
Der
Gerätetreiber
setzt (in Block 402) den ersten Satz von Eintragen zu dem
zweiten Satz von Einträgen
auf der Basis der Anzahl konfliktbildender Einträge in der ersten Umleitungstabelle 114 um. Wenn
in bestimmten beispielhaften Ausführungsformen die Anzahl konfliktbildender
Einträge
den Schwellenwert 300 überschreitet,
wird die Umsetzung anders ausgeführt
als dann, wenn die Anzahl konfliktbildender Einträge den Schwellenwert
nicht überschreitet.
-
In
bestimmten beispielhaften Ausführungsformen
kann der Gerätetreiber 112 eine
größere Anzahl
von Einträgen
der Software-Umleitungstabelle 114 zu einer geringeren
Anzahl von Einträgen
der Hardware-Umleitungstabelle 118 auf der Basis der Anzahl
konfliktbildender Einträge
in der Software-Umleitungstabelle 114 umsetzen.
-
5 zeigt
zweite Operationen, die in dem Gerätetreiber 112, der
in der Rechenumgebung 100 arbeiten kann, gemäß bestimmten
Ausführungsformen
implementiert werden. In bestimmten beispielhaften Ausführungsformen
können
die zweite Operationen, die in 5 dargestellt
sind, zusätzlich
zu den ersten Operationen ausgeführt
werden, die in 4 dargestellt sind, wobei die
erste Umleitungstabelle 114 eine Software-Umleitungstabelle 114 ist
und die zweite Umleitungstabelle 118 eine Hardware-Umleitungstabelle 118 ist. 5 zeigt
Operationen, in welchen der Gerätetreiber 112 die
Einträge
der Software-Umleitungstabelle 114 zu der Hardware-Umleitungstabelle 118 auf
der Basis der Anzahl von Konflikten in den Software-Umleitungstabelleneinträgen umsetzt.
-
Die
Kontrolle beginnt in Block 500, wo der Gerätetreiber 112 bestimmt,
ob die Software-Umleitungstabelle 114 mehr
Einträge
hat als die Hardware-Umleitungstabelle 118, d. h., ob ein
erster Satz von Einträgen
in der Software-Umleitungstabelle 114 mehr Elemente als
ein zweiter Satz von Einträgen
in der Hardware-Umleitungstabelle 118 hat. Für das Receive-Side-Scaling
wird angenommen, daß jeder Eintrag
einer Empfangsschlange entspricht, in der der Gerätetreiber 112 ein
Paket verarbeiten soll. Zum Beispiel entspricht in 2 der
Eintrag, der mit der Eintragsnummer 0000001 (Bezugszeichen 212)
bezeichnet ist, der Empfangsschlange "1".
Der Gerätetreiber 112 soll
die Einträge
der Software-Umleitungstabelle 114 zu den Einträgen der
Hardware-Umleitungstabelle 118 umsetzen. In bestimmten
Ausführungsformen
kann das Betriebssystem 110 die Software-Umleitungstabelle 114 dem
Gerätetreiber 112 für die Netzwerkschnittstellen-Hardware 106 bereitstellen,
die die Hardware-Umleitungstabelle 118 enthält.
-
Als
Reaktion auf die Bestimmung, daß die Software-Umleitungstabelle 114 mehr
Einträge
hat als die Hardware-Umleitungstabelle 118, bestimmt der
Gerätetreiber 114 (in
Block 502) eine Anzahl konfliktbildender Einträge in der
Software-Umleitungstabelle 114, wobei ein Konflikt verursacht
wird, wenn mindestens zwei Einträge
der Software-Umleitungstabelle, die zu einem Eintrag der Hardware-Umleitungstabelle
umgesetzt werden können,
verschiedene Empfangsschlangen anzeigen.
-
Der
Gerätetreiber 112 bestimmt
(in Block 504), ob die Anzahl von Konflikten geringer als
der Schwellenwert 300 ist. Falls dies zutrifft, zeigt der
Gerätetreiber 112 (in
Block 506) an, daß Pakete
die mit konfliktbildenden Einträgen
verbunden sind, zu einer Empfangsschlange gelenkt werden sollen.
Der Gerätetreiber 112 verteilt
(in Block 508) Pakete in der einen Empfangsschlange unter
allen Prozessoren zur Verarbeitung und verarbeitet Pakete in den
anderen Empfangsschlangen in verschiedenen Prozessoren. Wenn zum
Beispiel in bestimmten Ausführungsformen
vier Prozessoren vorhanden sind, die mit "0", "1", "2", "3" numeriert sind, sowie vier Empfangsschlangen,
die mit "0", "1", "2", "3" numeriert sind, können alle Pakete, die mit konfliktbildenden
Eintragen verbunden sind, zu der Empfangsschlange "0" gelenkt werden. In diesem Fall können die
Schlangen "1", "2", "3" Pakete anzeigen,
die auf den Prozessoren "1" "2" beziehungsweise "3" zu verarbeiten sind, während die
Empfangsschlange "0" Pakete anzeigen kann,
die zur Verarbeitung unter den Prozessoren "0", "1", "2", "3" verteilt werden. Daher können in
bestimmten Ausführungsformen
insgesamt sieben DPCs erforderlich sein, wenn die Empfangsschlange "0" vier DPCs benötigt und jede der anderen Empfangsschlangen einen
DPC benötigt.
Im Vergleich zu der Ausführungsform,
die auf Heuristik beruht und zuvor beschrieben wurde, wird daher
die Gesamtzahl an DPCs von sechzehn auf sieben verringert.
-
Wenn
eine Bestimmung (in Block 504) vorgenommen wird, daß die Anzahl
konfliktbildender Einträge
nicht geringer als der Schwellenwert 300 ist, zeigt der
Gerätetreiber 112 (in
Block 510) an, daß alle Pakete
zu einer einzigen Empfangsschlange gelenkt werden sollen. Wenn die
Anzahl konfliktbildender Einträge
nicht geringer als der Schwellenwert ist, kann eine hohe Anzahl
konfliktbildender Einträge vorhanden
sein. Wenn in einem solchen Fall der Gerätetreiber 112 anzeigt,
daß Pakete,
die mit konfliktbildenden Einträgen
verbunden sind, zu einer Empfangsschlange gelenkt werden sollen,
kann der Gerätetreiber 112 noch
immer erforderlich sein, um die anderen Empfangsschlangen zu verarbeiten.
Bei einer hohen Anzahl konfliktbildender Einträge können die meisten Pakete zu
der einen Empfangsschlange gelenkt werden. Daher kann die Verarbeitungszusatzlast
verringert werden, indem nur eine einzige Empfangsschlange vorhanden
ist und alle Pakete zu der einen Empfangsschlange gelenkt werden.
In einem solchen Fall können
in bestimmten beispielhaften Ausführungsformen vier Prozessoren
und eine einzelne Empfangsschlange nur vier DPCs benötigen.
-
Der
Gerätetreiber 112 verarbeitet
(in Block 512) das Receive-Side-Scaling in Software, wobei die
Receive-Side-Scaling-Verarbeitung des Weiteren das Erzeugen virtueller
Warteschlangen umfaßt,
sowie das Einreihen von DPCs zu entsprechenden Prozessoren in Schlangen
durch den Gerätetreiber 112.
-
Wenn
der Gerätetreiber
(in Block 500) bestimmt, daß die Software-Umleitungstabelle 114 nicht
mehr Einträge
hat als die Hardware-Umleitungstabelle 118, programmiert
der Gerätetreiber 112 die Hardware-Umleitungstabelle 118 in Übereinstimmung
mit der Software-Umleitungstabelle 114. Für jeden
Eintrag der Hardware-Umleitungstabelle 118 wird der entsprechende
Wert in der Software-Umleitungstabelle 114 verwendet. Wenn
in einem solchen Fall vier Prozessoren vorhanden sind, können vier DPCs
notwendig sein.
-
Daher
beschreibt 5 eine Ausführungsform, in der, abhängig von
der Anzahl von Konflikten, der Gerätetreiber 112 die
Einträge
der Software-Umleitungstabelle 114 anders umsetzt, um die
Einträge der
Hardware-Umleitungstabelle 118 zu erzeugen. In bestimmten
Ausführungsformen
wird die Bestimmung, ob die Software-Umleitungstabelle 114 mehr Einträge hat,
die Bestim mung der Anzahl von Konflikten, und die Anzeige von dem
Gerätetreiber 112 in der
Rechenplattform 102 ausgeführt, die die Mehrzahl von Prozessoren 108a...108n aufweist.
In bestimmten Ausführungsformen
ist die Hardware-Umleitungstabelle 118 in einer Hardware-Vorrichtung
implementiert, die an die Rechenplattform 102 mit der Mehrzahl
von Prozessoren 108a...108n gekoppelt ist, wobei die Hardware-Umleitungstabelle 118 eine festgelegte
Größe hat,
und wobei die Software-Umleitungstabelle 114 mit dem Betriebssystem 100 verbunden
ist, das in der Rechenplattform 102 implementiert ist.
-
In
einer alternativen Ausführungsform
kann der Schwellenwert 300 mit Bedingungen verglichen werden,
die sich von jenen unterscheiden, die in 5 beschrieben
sind, und die Anzahl konfliktbildender Einträge kann anders berechnet werden.
-
6 zeigt
ein Blockdiagramm, das eine beispielhafte Umsetzung von Paketen
zu Prozessoren, die in der Rechenumgebung 100 implementiert
sein können,
gemäß bestimmten
Ausführungsformen zeigt.
-
In 6 sind
vier Empfangsschlangen 600a...600d dargestellt. Die empfangenen
Pakete können
unter vier Prozessoren 604a...604d verteilt werden. Wenn
die Software-Umleitungstabelle 114 mehr Einträge als die
Hardware-Umleitungstabelle 118 hat, und die Anzahl von
Konflikten geringer als der Schwellenwert 300 ist, zeigt
in der beispielhaften Ausführungsform,
die in 6 dargestellt ist, der Gerätetreiber 112 an,
daß Pakete,
die mit konfliktbildenden Einträgen
verbunden sind, zu einer Empfangsschlange 600a zu lenken
sind. Daher sind vier DPCs 602a...602d vorhanden,
die der Empfangsschlange 600a zugeordnet sind, während für jede der
anderen Empfangsschlangen 600b...600d entsprechende DPCs 602e...602g vorhanden
sind. Alle Pakete, die zur Empfangsschlange 600b gesendet
werden, werden im Prozessor 604b verarbeitet, alle Pakete,
die zur Empfangsschlange 600c gesendet werden, werden im
Prozessor 604c verarbeitet, alle Pakete, die zur Empfangsschlange 600d gesendet
werden, werden im Prozessor 604d verarbeitet und alle Pakete, die
zur Empfangsschlange 600a gesendet werden, werden unter
den vier Prozessoren 604a...604d verteilt.
-
Bestimmte
Ausführungsformen
analysieren die Eigenschaften der Software- und Hardware-Umleitungstabellen
und setzen auf der Basis der Eigenschaften die Software-Umleitungstabelle 114 zu
der Hardware-Umleitungstabelle 118 um. In bestimmten Ausführungsformen
ist die Anzahl von DPCs, die erforderlich sind, kontrolliert, während gleichzeitig
die Verarbeitung von Paketen unter den Prozessoren aufgeteilt ist.
In bestimmten anderen Ausführungsformen,
wo die Anzahl von Konflikten einen Schwellenwert übersteigt
oder erreicht, wird das Receive-Side-Scaling in Software von dem Gerätetreiber 112 ausgeführt, indem
alle Pakete zu einer einzigen Empfangsschlange gelenkt werden. In
einem solchen Fall kann die Anzahl von DPCs gleich der Anzahl von Prozessoren
sein. Die Zusatzlast, die mit der Erstellung von DPCs verbunden
ist, wird in bestimmten Ausführungsformen
kontrolliert.
-
Die
beschriebenen Techniken können
als Methode, Apparat oder Herstellungsgegenstand implementiert werden,
die Software, Firmware, Mikro-Code, Hardware und/oder Kombinationen
davon beinhalten. Der Begriff "Herstellungsgegenstand", wie hierin verwendet,
bezieht sich auf Programmanweisungen, Code und/oder Logik, implementiert
in einem Schaltkreis (z. B. einem integrierten Schaltungschip, Programmable
Gate Array (PGA), ASIC, usw.) und/oder ein computerlesbares Medium
(z. B. Magnetspeichermedium, wie ein Festplattenlaufwerk, eine Diskette,
ein Band), einen optischen Speicher (z. B., CD-ROM, DVD-ROM, Bildplatte
usw.), eine flüchtige
und nicht flüchtige
Speichervorrichtung (z. B. Electrically Erasable Programmable Read
Only Memory (EEPROM), Read Only Memory (ROM), Programmable Read
Only Memory (PROM), Random Access Memory (RAM), Dynamic Random Access
Memory (DRAM), Static Random Access Memory (SRAM), Flash, Firmware,
programmierbare Logik, usw.). Eine Maschine, wie ein Prozessor,
kann auf den Code im computerlesbaren Medium zugreifen und diesen
ausführen.
In bestimmten Ausführungsformen
kann der Code, in dem Ausführungsformen
gemacht sind, des Weiteren über
ein Übertragungsmedium
zugänglich
sein, oder von einem Datenserver über ein Netzwerk. In solchen
Fällen
kann der Herstellungsgegenstand, in dem der Code implementiert ist,
ein Übertragungsmedium
umfassen, wie eine Netzwerkübertragungsleitung,
drahtlose Übertragungsmedien,
Signale, die sich durch den Raum fortpflanzen, Funkwellen, Infrarotsignale
usw. Natürlich
ist für
den Fachmann klar, daß viele
Modifizierungen vorgenommen werden können, ohne vom Umfang der Ausführungsformen
Abstand zu nehmen, und daß der
Herstellungsgegenstand jedes informationstragende Medium umfassen
kann, das in der Technik bekannt ist. Zum Beispiel umfaßt der Herstellungsgegenstand
ein Speichermedium mit gespeicherten Anweisungen, daß, wenn
diese von einer Maschine ausgeführt
werden, Operationen durchgeführt
werden. Ferner kann die Programmlogik, die den Code enthält, in Hardware,
Software, Firmware oder vielen Kombinationen davon implementiert
sein.
-
7 zeigt
ein Blockdiagramm einer Computerarchitektur, in der bestimmte Ausführungsformen
implementiert sind. 7 zeigt eine Ausführungsform
der Rechenplattform 102 und der Netzwerkschnittstellen-Hardware 106.
Die Rechenplattform 102 und die Netzwerkschnittstellen-Hardware 106 können eine
Computerarchitektur 700 mit einen oder mehreren Prozessoren 702,
einem Speicher 704 (z. B. einer flüchtigen Speichervorrichtung)
und einem Speicher 706 implementieren. Nicht alle Elemente
der Computerarchitektur 700 mögen in der Rechenplattform 102 und
der Netzwerkschnittstellen-Hardware 106 zu finden sein.
Der Speicher 706 kann eine nicht flüchtige Speichervorrichtung
(z. B. EEPROM, ROM, PROM, RAM, DRAM, SRAM, Flash, Firmware, programmierbare
Logik, usw.), ein Magnetplattenlaufwerk, Bildplattenlaufwerk, Bandlaufwerk
usw. enthalten. Der Speicher 706 kann eine interne Speichervorrichtung,
eine beigefügte
Speichervorrichtung und/oder eine über das Netzwerk zugängliche
Speichervorrichtung umfassen. Programme im Speicher 706 können in
den Speicher 704 geladen und von dem einen oder den mehreren
Prozessoren 702 ausgeführt
werden, wie in der Technik bekannt ist. Die Architektur kann des
Weiteren eine Netzwerkkarte 708, wie die Netzwerkschnittstellen-Hardware 106,
enthalten, um eine Kommunikation mit einem Netzwerk zu ermöglichen.
Die Architektur kann auch mindestens eine Eingabevorrichtung 710,
wie eine Tastatur, einen Berührungsbildschirm, einen
Stift, eine sprachaktivierte Eingabe usw., enthalten, und mindestens
eine Ausgabevorrichtung 712, wie eine Anzeigevorrichtung,
einen Lautsprecher, einen Drucker usw..
-
Bestimmte
Ausführungsformen
können
in einem Computersystem implementiert werden, einschließlich einer
Videosteuerung, um Informationen zur Anzeige auf einem Monitor aufzubereiten,
der an das Computersystem gekoppelt ist, das die Netzwerkschnittstellen-Hardware 106 enthält, wobei
das Computersystem einen Tischcomputer, einen Arbeitsplatzrechner,
einen Großrechner,
einen Laptop, einen Taschencomputer, usw. umfassen kann. Ein Betriebssystem
kann zur Ausführung
durch das Computersystem imstande sein, und die Videosteuerung kann
graphische Ausgänge
durch Zusammenarbeit mit dem Betriebssystem aufbereiten. Als Alternative
können
einige Ausführungsformen
in einem Computersystem implementiert sein, das keine Videosteuerung
enthält,
wie in einem Umschalter, Router, usw.. Ferner kann in bestimmten
Ausführungsformen die
Vorrichtung in einer Karte enthalten sein, die an ein Computersystem
gekoppelt wird, oder auf einer Mutterplatine eines Computersystems.
-
Zumindest
einige der Operationen von 4 und 5 können parallel
wie auch der Reihe nach ausgeführt
werden. In alternativen Ausführungsformen
können
gewisse der Operationen in einer anderen Reihenfolge ausgeführt, modifiziert
oder entfernt werden. In alternativen Ausführungsformen können die
Operationen von 4 und 5 in der
Netzwerkschnittstellen-Hardware 106 implementiert werden.
Ferner wurden viele der Software- und Hardware-Komponenten in separaten
Modulen zum Zwecke der Veranschaulichung beschrieben. Solche Komponenten
können
in eine geringere Anzahl von Komponenten integriert oder in eine
größere Anzahl von
Komponenten geteilt werden. Zusätzlich
können bestimmte
Operationen, die in der Beschreibung von einer spezifischen Komponente
ausgeführt
werden, von anderen Komponenten ausgeführt werden.
-
Die
Datenstrukturen und Komponenten, die in 1 bis 7 dargestellt
oder angeführt
sind, haben laut Beschreibung spezifische Arten von Informationen.
In alternativen Ausführungsformen
können die
Datenstrukturen und Komponenten anders strukturiert sein und weniger,
mehr oder andere Gebiete oder andere Funktionen haben als jene,
die in den Figuren dargestellt oder angeführt sind.
-
Daher
wurde die vorangehende Beschreibung der Ausführungsformen zum Zwecke der
Veranschaulichung und Beschreibung präsentiert. Sie soll weder umfassend
sein noch die Ausführungsformen
auf die präzise
offenbarte Form begrenzen. Viele Modifizierungen und Variationen
sind angesichts der obengenannten Lehren möglich.