DE102008030587B4 - Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem - Google Patents

Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem Download PDF

Info

Publication number
DE102008030587B4
DE102008030587B4 DE102008030587.1A DE102008030587A DE102008030587B4 DE 102008030587 B4 DE102008030587 B4 DE 102008030587B4 DE 102008030587 A DE102008030587 A DE 102008030587A DE 102008030587 B4 DE102008030587 B4 DE 102008030587B4
Authority
DE
Germany
Prior art keywords
application
interrupt
processor
data
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102008030587.1A
Other languages
English (en)
Other versions
DE102008030587A1 (de
Inventor
Yadong Li
Sujoy Sen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102008030587A1 publication Critical patent/DE102008030587A1/de
Application granted granted Critical
Publication of DE102008030587B4 publication Critical patent/DE102008030587B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

Verfahren zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem, umfassend: Senden (710) von Daten an andere Benutzer in dem Netzwerksystem durch eine Anwendung, Weiterleiten (720) der Daten an einen Gerätetreiber durch ein Betriebssystem, Identifizieren (730) einer Prozessoraffinität der Anwendung zur Laufzeit durch den Gerätetreiber, wobei die Prozessoraffinität eine Identität eines Prozessors, der die Anwendung laufen lässt, einschließt, wobei das Betriebssystem eingerichtet ist, die Prozessoraffinität der Anwendung während der Laufzeit zu ändern, und Verknüpfen eines Interrupts mit der Prozessoraffinität der Anwendung durch den Gerätetreiber zur Laufzeit, wobei das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung ein Senden (740) der Prozessoraffinität der Anwendung an ein Netzwerkgerät und/oder an einen Chipsatz umfasst, wobei der Interrupt durch das Netzwerkgerät auf das Aussenden (750) der Daten hin generiert (760) wird, und wobei das Verknüpfen des Interrupts eingerichtet ist, den Interrupt zu dem identifizierten Prozessor, der die Anwendung laufen lässt, oder zu einem oder mehreren gleichrangigen Prozessoren zu lenken.

Description

  • 1. GEBIET
  • Diese Offenbarung betrifft im Allgemeinen Rechnernetzsysteme und genauer, jedoch nicht ausschließlich, Technologien zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem.
  • 2. BESCHREIBUNG
  • In einem Rechnernetzsystem kann einer Anwendung oder einem Thread der Anwendung durch das Betriebssystem („BS”) zur Laufzeit Zeit auf irgendeinem Prozessor oder Verarbeitungskern (im Folgenden wird der Ausdruck „Prozessor” verwendet, um auf einen Prozessor oder einen Verarbeitungskern zu verweisen) zugewiesen werden, was in Abhängigkeit von der Nutzung unterschiedlicher Prozessoren in dem System zu jenem Zeitpunkt und von der BS-Scheduling-Verfahrensweise geschieht. Typischerweise bevorzugt die BS-Laufzeit-Thread-Scheduling-Verfahrensweise einen Prozessor von einem Sockel, der mehr als einen Prozessor für das Thread-Rescheduling zur Verfügung hat. Jedoch wird ein Gerät-Interrupt typischerweise an einen Prozessor, der durch eine statische Konfiguration gebunden ist, oder an alle Prozessoren in dem System unter Verwendung einer Round-Robin-Anordnung geliefert. Das heißt, dass ein Gerät-Interrupt möglicherweise nicht an einen Prozessor, auf dem die Anwendung/der Thread, auf die bzw. den der Interrupt abzielt („Zielanwendung/Zielthread”), läuft, oder an einen Sockel, auf dem sich der Prozessor befindet, geliefert wird. Wenn das eintritt, passen ein Interrupt und ein Prozessor, an den der Interrupt geliefert wird, nicht zusammen. Solche Fehlanpassungen setzen, wenn sie mit entsprechender Häufigkeit auftreten, infolge von Cache-Thrashing zwischen der Interrupt-Verarbeitung und der Zielanwendung/dem Zielthread, Kosten der gegenseitigen Blockierung der Prozessoren, Interrupts zwischen den Prozessoren, anderer System-Software-Overheads usw. die Systemleistung in hohem Maße herab. Bei einigen Anwendungen (zum Beispiel UDP-Anwendungen (UDP = User Datagram Protocol)), bei denen die Interrupt-Rate hoch ist, ist die Rate solcher Fehlanpassungen ebenfalls hoch, was zu einer weiteren Herabsetzung der Leistung führt. Daher ist es wünschenswert, die Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem zu erhöhen.
  • US 2006/0251109 A1 offenbart ein Netzwerksystem mit einer Vielzahl von Verarbeitungsentitäten, einem Interconnect, der die Vielzahl von Verarbeitungsentitäten verbindet, und einer Netzwerkschnittstelleneinheit, die über den Interconnect mit den Verarbeitungsentitäten und einem Speichersytem verbunden ist. Eine zugehörige Netzwerkschnittstelle weist ein Speicherzugriffsmodul, das eine Vielzahl von parallelen Speicherzugriffskanälen umfasst, und einen Paketklassifikator auf, der eine flexible Zuordnung zwischen Paketen und den Verarbeitungsentitäten über die Speicherzugriffskanäle ermöglicht.
  • US 4,809,157 A beschreibt ein dynamisches Zuordnen von Affinität für Vektor-Tasks, wobei Interrupts erzeugt werden, sobald ein Task einen Sonderbefehl ausführt, der an eine Sonderressource gerichtet ist. Die einzelnen Tasks werden mit einer dynamischen Sonderaffinität nur an Verarbeitungseinheiten mit den erforderlichen Sonderressourcen verteilt. Die Tasks können unterbrochen werden und die Sonderaffinität kann wieder entzogen werden, falls die Sonderressourcen in einer vorgegebenen Zeit nicht benutzt werden.
  • US 6,738,847 B1 behandelt die Zuordnung von Interrupt-Vektoren in einer symmetrischen Mehrfachprozessorrechenumgebung, wobei die Interrupt-Vektoren einzelnen Interrupt-Ressourcen von Peripheriegeräten zugeordnet werden. Hierbei wird der jeweiligen Interrupt-Ressource eine Affinität zugewiesen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Merkmale und Vorteile des offenbarten Gegenstandes werden aus der folgenden ausführlichen Beschreibung des Gegenstandes ersichtlich. Es zeigt:
  • 1 ein Rechnersystem, in dem eine Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes implementiert werden kann;
  • 2 ein Netzwerk, in dem Ausführungsformen des in der vorliegenden Anmeldung offenbarten Gegenstandes funktionieren können;
  • 3 ein System gemäß mindestens einer der Ausführungsformen des in der vorliegenden Anmeldung offenbarten Gegenstandes;
  • 4 ein beispielhaftes Netzwerksystem, in dem Interrupts, die durch eine Netzschnittstelle generiert werden, zu einem Zielprozessor gelenkt werden, gemäß einer Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes;
  • 5 ein Ablaufdiagramm eines beispielhaften Prozesses zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem gemäß einer Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes;
  • 6 eine Tabelle, die die Verknüpfungsbeziehung zwischen dem Tx-Warteschlangenindex und dem MSI-Vektorindex veranschaulicht;
  • 7 ein Ablaufdiagramm eines anderen beispielhaften Prozesses zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem gemäß einer Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes; und
  • 8 eine Tabelle, die eine experimentelle Leistungserhöhung eines Netzwerksystems, erreicht durch das Lenken eines Interrupts direkt zu dem Zielprozessor oder einem gleichrangigen Prozessor (Peer prozessor), der sich in demselben Sockel wie der Zielprozessor befindet, gemäß einer Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß Ausführungsformen des in dieser Anmeldung offenbarten Gegenstandes kann die Prozessoraffinität einer Anwendung/eines Threads dazu verwendet werden, einen Interrupt an den geeignetsten Prozessor zur Laufzeit zu liefern. Der Prozessor, an den der Interrupt geliefert wird, kann entweder die Zielanwendung/den Zielthread laufen lassen oder sich in demselben Sockel wie der Prozessor, der die Zielanwendung/den Zielthread laufen lässt, befinden. In einer der Ausführungsformen kann die Prozessoraffinität der Anwendung/des Threads zur Laufzeit an ein Netzwerkgerät übertragen werden, und das Netzwerkgerät liefert einen Interrupt unter Verwendung dieser Affinitätsinformationen. In einer anderen Ausführungsform kann die Prozessoraffinität der Anwendung/des Threads an einen Chipsatz, einen Speichersteuerungshub („MCH”) oder einen Ein-/Ausgabe-Hub („IOH”) übertragen werden, die die Affinitätsinformationen dazu verwenden, einen Interrupt an den geeignetsten Prozessor zu liefern. Es kann andere Ausführungsformen im Sinne des in dieser Anmeldung offenbarten Gegenstandes geben.
  • Wenn in der Beschreibung auf „eine (1) Ausführungsform” oder „eine Ausführungsform” des offenbarten Gegenstandes Bezug genommen wird, so bedeutet das, dass ein besonderes Merkmal, eine besondere Struktur oder eine besondere Eigenschaft, das bzw. die im Zusammenhang mit der Ausführungsform beschrieben wird, in mindestens einer der Ausführungsformen des offenbarten Gegenstandes eingeschlossen ist. Somit bezieht sich die Wendung „in einer (1) Ausführungsform”, die an verschiedenen Stellen der Beschreibung vorkommt, nicht notwendigerweise jedes Mal auf dieselbe Ausführungsform.
  • 1 veranschaulicht ein Rechnersystem 100, in dem eine Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes implementiert werden kann. Das System 100 kann einen oder mehr Prozessoren 102A, 102B, ..., 102N umfassen. Ein hierin erörterter „Prozessor” bezieht sich auf eine Kombination aus Hardware- und Software-Ressourcen zur Erfüllung von Rechenaufgaben. Ein Prozessor kann zum Beispiel einen Systemspeicher und Verarbeitungsschaltungen (zum Beispiel eine Zentraleinheit (CPU) oder einen Mikrokontroller) umfassen, um maschinell lesbare Befehle zur Verarbeitung von Daten gemäß einem vordefinierten Befehlsvorrat auszuführen. Als Alternative dazu kann ein Prozessor nur die Verarbeitungsschaltung (zum Beispiel CPU) umfassen. Ein anderes Beispiel für einen Prozessor ist eine Rechenmaschine, die zum Beispiel in einem Mehrkernprozessor eingeschlossen sein kann, wobei das Betriebssystem die Rechenmaschine als einen diskreten Prozessor mit einem vollständigen Ausführungsressourcensatz wahrnehmen kann. Dies sind jedoch lediglich Beispiele für einen Prozessor, und Ausführungsformen der vorliegenden Erfindung sind in dieser Hinsicht nicht beschränkt.
  • Jeder Prozessor 102A, 102B, ..., 102N kann ein Coprozessor sein. In einer Ausführungsform können ein oder mehr Prozessoren 102A, 102B, ..., 102N im Wesentlichen die gleichen Funktionen ausführen. Jeder Prozessor kann durch einen Sockel elektronisch an eine Systemplatine 118 gekoppelt sein. Zwei oder mehr Prozessoren können einen Sockel gemeinsam benutzen. So können zum Beispiel die Prozessoren 102A und 102B einen Sockel 156 gemeinsam benutzen, während der Prozessor 102N seinen eigenen Sockel 158 haben kann. Wenn zwei oder mehr Prozessoren einen Sockel gemeinsam benutzen, können sie auch einen gemeinsamen Cache benutzen.
  • Das System 100 kann zusätzlich Speicher 104 umfassen. Der Speicher 104 kann maschinell ausführbare Befehle 132 speichern, die geeignet sind, ausgeführt zu werden, und/oder Daten speichern, die dazu geeignet sind, dass auf sie zugegriffen und mit ihnen operiert wird und/oder geeignet sind, manipuliert zu werden. Wenn hierin auf „maschinell ausführbare” Befehle verwiesen wird, dann beziehen sich diese auf Ausdrücke, die durch eine oder mehr Maschinen verstanden werden können, um eine oder mehr logische Operationen auszuführen. Maschinell ausführbare Befehle können zum Beispiel Befehle umfassen, die durch einen Prozessor-Compiler interpretierbar sind, um eine oder mehr Operationen an einem oder mehr Datenobjekten auszuführen. Dies ist jedoch lediglich ein Beispiel für maschinell ausführbare Befehle, und Ausführungsformen der vorliegenden Erfindung sind in dieser Hinsicht nicht beschränkt. Der Speicher 104 kann zum Beispiel einen Nur-Lese-Speicher, einen Massenspeicher, einen Direktzugriffsspeicher, auf den ein Rechner zugreifen kann, und/oder einen oder mehr andere Typen von Speichern, auf die maschinell zugegriffen werden kann, umfassen.
  • Der Chipsatz 108 kann einen oder mehr integrierte Schaltungschips umfassen, zum Beispiel jene, die aus integrierten Schaltungschipsätzen ausgewählt sind, die im Handel von Intel® Corporation erhältlich sind (zum Beispiel Grafik-, Speicher- und E/A-Controller-Hub-Chipsätze), auch wenn ein oder mehr andere integrierte Schaltungschips ebenfalls oder als Alternative dazu verwendet werden können. Gemäß einer Ausführungsform kann der Chipsatz 108 einen Ein-/Ausgabe-Steuerungshub (ICH) und einen Speichersteuerungshub (MCH) umfassen, auch wenn Ausführungsformen der Erfindung dadurch nicht beschränkt sind. Der Chipsatz 108 kann eine/n Host-Brücke/Host-Hub 154 umfassen, die bzw. der den Prozessor 102A, 102B, ..., 102N und den Host-Speicher 104 aneinander und an den lokalen Bus 106 koppeln kann. Der Chipsatz 108 kann über den Speicherbus 112 mit dem Speicher 104 und über den Systembus 110 mit dem Host-Prozessor 102 kommunizieren. In alternativen Ausführungsformen können der Host-Prozessor 102 und der Host-Speicher 104 direkt, und nicht über den Chipsatz 108, an den Bus 106 gekoppelt sein.
  • Der lokale Bus 106 kann an einen Steckkarten-Slot 120 gekoppelt sein, der einen Busverbinder (nicht gezeigt) hat. Der lokale Bus 106 kann einen Bus umfassen, der der Peripheral Component Interconnect (PCI) Local Bus Specification, Revision 3.0, 3. Februar 2004, erhältlich von der PCI Special Interest Group, Portland, Oregon, USA, (im Folgenden als „PCI-Bus” bezeichnet) entspricht. Als Alternative dazu kann der Bus 106 zum Beispiel einen Bus umfassen, der der PCI Express Base Specification, Revision 1.1, 28. März 2005, ebenfalls erhältlich von der PCI Special Interest Group, (im Folgenden als „PCI-Express-Bus” bezeichnet) entspricht. Der Bus 106 kann andere Bussystemtypen und -konfigurationen umfassen. Der Systembus 110 kann einen Front-Side-Bus („FSB”), ein Link-basiertes Punkt-zu-Punkt-Verbindungssystem oder andere Typen von Zusammenschaltungssystemen umfassen.
  • Das System 100 kann zusätzlich eine oder mehr Netzschnittstellen 126 (nur eine gezeigt) umfassen. Wenn hierin auf eine „Netzschnittstelle” verwiesen wird, dann bezieht sich diese auf ein Gerät, das an ein Kommunikationsmedium gekoppelt sein kann, um Daten an andere Geräte, die an das Kommunikationsmedium gekoppelt sind, zu übertragen und/oder Daten von solchen Geräten zu empfangen, das heißt, um Netzverkehr zu senden und zu empfangen. Eine Netzschnittstelle kann zum Beispiel Pakete 140 an Geräte, die an ein Netzwerk (zum Beispiel ein lokales Netzwerk) gekoppelt sind, übertragen und/oder Pakete 140 von solchen Geräten empfangen. Wenn hierin der Ausdruck „Paket” verwendet wird, dann bezieht sich dieser auf eine Folge von einem oder mehr Symbolen und/oder Werten, die durch ein oder mehr Signale, die von mindestens einem Sender an mindestens einen Empfänger übertragen werden, codiert sein können. Eine solche Netzschnittstelle 126 kann mit anderen Geräten gemäß irgendeinem von mehreren Datenkommunikationsformaten kommunizieren, zum Beispiel Kommunikationsformate gemäß Versionen von IEEE (Institute of Electrical and Electronics Engineers) Standard 802.3 (CSMA/CD Access Method, Ausgabe 2002), IEEE-Standard 802.11 (LAN/MAN Wireless LANS, Ausgabe 1999), IEEE-Standard 802.16 (Ausgaben 2003 und 2004, LAN/MAN Broadband Wireless LANS) oder der Standards Universal Serial Bus, Firewire, Asynchronous Transfer Mode (ATM), Synchronaus Optical Network (SONET) oder Synchronaus Digital Hierarchy (SDH).
  • In einer Ausführungsform kann sich die Netzschnittstelle 126 auf der Systemplatine 118 befinden. In einer anderen Ausführungsform kann die Netzschnittstelle 126 in den Chipsatz 108 integriert sein. In noch einer anderen Ausführungsform kann die Netzschnittstelle 126 stattdessen in einer Steckkarte 128 (zum Beispiel Netzwerkkarte (NIC)) eingeschlossen sein, die in den Steckkarten-Slot 120 gesteckt werden kann. Der Steckkarten-Slot 120 kann zum Beispiel einen PCI-Erweiterungssteckplatz umfassen, der einen PCI-Busverbinder (nicht gezeigt) umfasst. Der PCI-Busverbinder (nicht gezeigt) kann elektrisch und mechanisch an einen PCI-Busverbinder (nicht gezeigt) angepasst sein, der in der Steckkarte 128 eingeschlossen ist. Der Steckkarten-Slot 120 und die Steckkarte 128 können so konstruiert sein, dass sich die Steckkarte 128 in den Steckkarten-Slot 120 stecken lässt. Wenn die Steckkarte 128 in den Steckkarten-Slot 120 gesteckt wird, können die PCI-Busverbinder (nicht gezeigt) elektrisch und mechanisch aneinander gekoppelt werden. Wenn die PCI-Busverbinder (nicht gezeigt) auf diese Weise aneinander gekoppelt werden, kann die Logik 130 in der Steckkarte 128 elektrisch an den Systembus 110 gekoppelt werden.
  • Das System kann Logik 130 umfassen. Die Logik 130 kann Hardware, Software oder eine Kombination aus Hardware und Software (zum Beispiel Firmware) umfassen. Die Logik 130 kann zum Beispiel Schaltungen (das heißt, einen oder mehr Schaltkreise) umfassen, um hierin beschriebene Operationen auszuführen. Die Logik 130 kann zum Beispiel eine oder mehr Digitalschaltungen, eine oder mehr Analogschaltungen, einen oder mehr Zustandsautomaten, programmierbare Logik und/oder eine oder mehr anwendungsspezifische integrierte Schaltungen (ASIC) umfassen. Die Logik 130 kann fest verdrahtet sein, um die eine oder die mehreren Operationen auszuführen. Als Alternative dazu oder zusätzlich kann die Logik 130 als maschinell ausführbare Befehle 132, die in einem Speicher (zum Beispiel Speicher 104) gespeichert sind, ausgeführt sein, um diese Operationen auszuführen. Als Alternative dazu oder zusätzlich kann die Logik 130 als Firmware ausgeführt sein. Die Logik kann in verschiedenen Bauelementen des Systems 100, einschließlich Netzschnittstelle 126, Chipsatz 108, ein oder mehr Prozessoren 102A, 102B, ..., 102N und/oder Systemplatine 118, eingeschlossen sein. Die Logik 130 kann verwendet werden, um verschiedene Funktionen durch verschiedene Bauelemente gemäß Ausführungsformen des in der vorliegenden Anmeldung offenbarten Gegenstandes auszuführen.
  • Das System 100 kann mehr als eine/n und auch andere Typen von Speichern, Bussen, Prozessoren und Netzschnittstellen umfassen. Das System 100 kann zum Beispiel einen Server mit mehreren Prozessoren 102A, 102B, ..., 102N und mehreren Netzschnittstellen 126 umfassen. Die Prozessoren 102A, 102B, ..., 102N, der Speicher 104 und die Busse 106, 110, 112 können in einer einzigen Platine (zum Beispiel eine Systemplatine 118) eingeschlossen sein, aber Ausführungsformen der Erfindung sind in dieser Hinsicht nicht beschränkt.
  • 2 veranschaulicht ein Netzwerk 200, in dem Ausführungsformen des in der vorliegenden Anmeldung offenbarten Gegenstandes funktionieren können. Das Netzwerk 200 kann eine Mehrzahl von Knoten 202A...202N umfassen, wobei alle Knoten 202A...202N über ein Kommunikationsmedium 204 kommunikativ aneinander gekoppelt sein können. Die Knoten 202A...202N können über das Medium 204 Mengen von einem oder mehr Signalen, die ein oder mehr Pakete codieren können, übertragen und empfangen. Das Kommunikationsmedium 204 kann zum Beispiel ein oder mehr optische Kabel und/oder Stromkabel umfassen, obwohl viele Alternativen möglich sind. Das Kommunikationsmedium 204 kann zum Beispiel Luft und/oder Vakuum umfassen, durch die bzw. das die Knoten 202A...202N Mengen von einem oder mehr Signalen drahtlos übertragen und/oder empfangen können.
  • In dem Netzwerk 200 können ein oder mehr Knoten 202A...202N eine oder mehr Zwischenstationen umfassen, zum Beispiel eine/n oder mehr Hubs, Weichen und/oder Router. Zusätzlich oder als Alternative dazu können ein oder mehr Knoten 202A...202N eine oder mehr Endstationen umfassen. Ebenfalls zusätzlich oder als Alternative dazu kann das Netzwerk 200 eine oder mehr nicht gezeigte Zwischenstationen umfassen, und das Medium 204 kann mindestens einige der Knoten 202A...202N und eine oder mehrere dieser Zwischenstationen kommunikativ aneinander koppeln. Es sind natürlich viele Alternativen möglich.
  • 3 veranschaulicht ein System 300 gemäß mindestens einer Ausführungsform der Erfindung. Wie 3 veranschaulicht, kann der Speicher 104 die Paketpuffer 320, die Empfangswarteschlangen 330, den Gerätetreiber 308, das Betriebssystem (BS) 304, den Zwischentreiber 340, die Sendewarteschlangen (Tx-Warteschlangen) 310A310N und die Anwendungen 302 aufnehmen.
  • Der Paketpuffer 320 kann mehrere Puffer einschließen und jeder Puffer kann mindestens ein aus einem Netzwerk empfangenes Eingangspaket speichern. Der Paketpuffer 320 kann Pakete, die die Netzschnittstelle 126 empfangen hat, speichern, die in eine Warteschlange für die Verarbeitung durch mindestens den Gerätetreiber 308, das Betriebssystem 304, den Zwischentreiber 340, die Sendewarteschlangen (Tx-Warteschlangen) 310A310N und/oder die Anwendungen 302 eingereiht werden.
  • Die Empfangswarteschlangen 330 können Eingabewarteschlangen und Ausgabewarteschlangen einschließen. Die Eingabewarteschlangen können dazu verwendet werden, Deskriptoren von einem Prozessor (zum Beispiel 102A), einem Speicher (zum Beispiel 104) oder einem anderen an den Prozessor gekoppelten Speicher (zum Beispiel ein Cache des Prozessors) an eine oder mehr Netzschnittstellen (zum Beispiel Netzschnittstelle 126) zu übertragen. Ein Deskriptor kann an eine einzige Netzschnittstelle übertragen werden. Ein Deskriptor kann eine Stelle in einem Puffer und die Länge des Puffers, der für die Speicherung eines Eingangspaketes zur Verfügung steht, beschreiben. Ausgabewarteschlangen können dazu verwendet werden, Rückgabedeskriptoren von irgendeiner der Netzschnittstellen an einen Prozessor, einen Speicher oder einen anderen an den Prozessor gekoppelten Speicher zu übertragen. Ein Rückgabedeskriptor kann den Puffer beschreiben, in dem ein spezielles Eingangspaket innerhalb der Paketpuffer 320 gespeichert ist, und Merkmale des Paketes, zum Beispiel die Länge des Eingangspaketes, Hash-Werte und Pakettypen und Prüfsumme pass/fail, kennzeichnen. In einer Ausführungsform können die Empfangswarteschlangen 330 mehrere Eingabe- und mehrere Ausgabewarteschlangen einschließen. In einer Ausführungsform, in der es mehrere Netzschnittstellen gibt, kann der Zwischentreiber 340 die Empfangswarteschlangen, die mit jeder der Netzschnittstellen verknüpft sind, für die Verwendung durch irgendeine der Netzschnittstellen zuweisen.
  • Der Gerätetreiber 308 kann Gerätetreiber für jede der Netzschnittstellen (zum Beispiel Netzschnittstelle 126) darstellen. In einer der Ausführungsformen kann es einen separaten Gerätetreiber für jede der mehreren Netzschnittstellen geben, auch wenn das nicht dargestellt ist. Der Gerätetreiber 308 kann eine Schnittstelle zwischen dem BS 304 und Netzschnittstellen (zum Beispiel Netzschnittstelle 126) bereitstellen. Der Gerätetreiber 308 kann Deskriptoren erzeugen und kann die Verwendung und Zuweisung von Deskriptoren in der Empfangswarteschlange 330 verwalten. Der Gerätetreiber 308 kann die Übertragung von Deskriptoren an Netzschnittstellen unter Verwendung von einer oder mehr Eingabewarteschlangen anfordern. Der Gerätetreiber 308 kann einer der Netzschnittstellen signalisieren, dass ein Deskriptor in einer Eingabewarteschlange zur Verfügung steht. Der Gerätetreiber 308 kann die Stelle des Eingangspaketes in dem Paketpuffer 320 auf der Grundlage eines Rückgabedeskriptors, der ein solches Eingangspaket beschreibt, bestimmen, und der Gerätetreiber 308 kann das Betriebssystem 304 (sowie andere Routinen und Tasks) über die Verfügbarkeit und die Stelle eines solchen gespeicherten Eingangspaketes informieren.
  • Das Betriebssystem 304 kann Systemressourcen und Steuer-Tasks verwalten, die auf dem System 100 laufen. Das BS 304 kann zum Beispiel unter Verwendung von Microsoft Windows, HP-UX, Linux oder UNIX implementiert werden, auch wenn andere Betriebssysteme verwendet werden können. In einer Ausführungsform kann das BS 304 durch jeden der Prozessoren 110-0 bis 110-N ausgeführt werden. In einer Ausführungsform, in der ein Microsoft-Windows-Betriebssystem verwendet wird, kann der NDIS.sys-Treiber zumindest durch den Gerätetreiber 308 und den Zwischentreiber 340 verwendet werden. Der NDIS.sys-Treiber kann zum Beispiel dazu verwendet werden, Anwendungsprogramm-Schnittstellen (API) zu definieren, die für die Übertragung von Paketen zwischen Schichten verwendbar sind. In einer Ausführungsform kann das in 3 gezeigte BS 304 durch eine virtuelle Maschine ersetzt werden, die verschiedenen Betriebssystemen, die auf einem oder mehr Prozessoren laufen, eine Abstraktionsschicht für zugrunde liegende Hardware bereitstellen kann.
  • Das Betriebssystem 304 kann einen oder mehr Protokollstapel 306 (nur einer gezeigt) implementieren. Der Protokollstapel 306 kann ein oder mehr Programme ausführen, um die Pakete 140 zu verarbeiten. Ein Beispiel für einen Protokollstapel ist ein TCP/IP-Protokollstapel (TCP/IP = Transport Control Protocol/Internet Protocol), der ein oder mehr Programme zur Handhabung (zum Beispiel Verarbeitung oder Generierung) der Pakete 140 zum Senden und/oder Empfangen über ein Netzwerk umfasst. Der Protokollstapel 306 kann aber auch in einem dedizierten Teilsystem, zum Beispiel eine TCP-Offload-Engine, eingeschlossen sein.
  • In einer der Ausführungsformen kann der Zwischentreiber 340 die Empfangswarteschlangen, die mit jeder der Netzschnittstellen verknüpft sind, für die Verwendung durch irgendeine der Netzschnittstellen zuweisen, so dass die Netzschnittstellen als eine einzige virtuelle Netzschnittstelle mit mehreren Empfangswarteschlangen zu Schichten oberhalb des Zwischentreibers 340 (zum Beispiel BS 304, ohne auf dieses beschränkt zu sein) erscheinen. So kann der Zwischentreiber 340 zum Beispiel bei zwei Netzschnittstellen mit jeweils zwei Empfangswarteschlangen eine einzige virtuelle Netzschnittstelle mit vier Empfangswarteschlangen (zum Beispiel vier Eingabe- und vier Ausgabe-Empfangswarteschlangen) bereitstellen. Wenn mehrere Netzschnittstellen verwendet werden, gestattet der Zwischentreiber 340 das Ausnutzen von Merkmalen des BS 304 hinsichtlich des Lenkens von Paketen zum Zwecke der Verarbeitung durch einen spezifischen Prozessor, selbst wenn der Gerätetreiber einer oder irgendeiner der Netzschnittstellen die Verwendung von mehreren Empfangswarteschlangen nicht unterstützt.
  • Zusätzlich zu oder als Alternative zu der Bereitstellung eines Ausgleiches der Last der Paketverarbeitung durch Prozessoren kann der Zwischentreiber 340 einen Ausgleich der Last des Verkehrs, der über Netzschnittstellen aus einem Netzwerk empfangen wird, bereitstellen. In einer Ausführungsform kann der Zwischentreiber 340 einen Ausgleich der Last des Verkehrs, der aus einem Netzwerk empfangen wird, unter den Netzschnittstellen bereitstellen. In einer Ausführungsform kann der Zwischentreiber 340 zum Beispiel die Fähigkeit zur Änderung von „ARP-Antworten” (beschrieben in Ethernet-Standards) einschließen, um anzufordern, dass Verkehr aus einem Quellengerät danach an eine spezielle Netzschnittstelle unter den Netzschnittstellen adressiert wird, um die Last der empfangenen Pakete unter den Netzschnittstellen auszugleichen. Demgemäß können Pakete danach von einem Quellenknoten an die ausgewählte Netzschnittstelle unter den Netzschnittstellen gesendet werden, so dass ein Ausgleich der Last unter den Netzschnittstellen erfolgen kann. Der Zwischentreiber 340 kann zum Beispiel ARP-Antworten dazu verwenden, eine erste Verbindung für den Empfang an einer ersten Netzschnittstelle und eine zweite Verbindung für den Empfang an einer zweiten Netzschnittstelle zuzuweisen.
  • Die Tx-Warteschlangen 310A310N können Daten puffern, die von einem Ausgabe-Port (zum Beispiel ein Ein-/Ausgabe-Port oder -ausgang) eines Knotens (zum Beispiel Knoten 202A) an einen anderen Knoten zu senden sind. Wenn ein Netzwerkgerätetreiber nur eine Tx-Warteschlange unterstützt, kann es erforderlich sein, dass der Netzwerkgerätetreiber ein Spin-Lock auf der einzigen Tx-Warteschlange erlangt und wartet, bis andere Prozessoren ihre Sperren auf der Tx-Warteschlange aufgehoben haben. Der Spin-Lock kann zu einer Sperrenkonkurrenz führen, die die Leistung zum Beispiel dadurch herabsetzen kann, dass Threads auf einem Prozessor „aktiv warten” müssen und die Prozessornutzung unnötigerweise verstärkt wird. Somit unterstützen viele moderne Netzwerkgerätetreiber mehrere Tx-Warteschlangen. Die Verteilung eines Paketes auf mehrere Tx-Warteschlangen kann darauf, welcher Prozessor das Paket generiert, auf der Art, der Klasse oder Qualität des mit dem Paket verknüpften Dienstes oder den Daten in dem Paket beruhen. Manchmal können sogar auf der Grundlage der Art, der Klasse oder Qualität des mit Rahmen (frames) verknüpften Dienstes unterschiedliche Rahmen innerhalb eines Paketes auf unterschiedliche Tx-Warteschlangen verteilt werden. In jedem Fall beginnt bzw. beginnen die Tx-Warteschlange/n, sich mit Rahmen zu füllen, wenn Rahmen/Pakete von Daten an einem Knoten schneller empfangen werden, als dass es möglich ist, die Rahmen an einen anderen Knoten zu senden. Im Allgemeinen warten später empfangene Rahmen in der Warteschlange, während Rahmen, die vor ihnen in der Warteschlange empfangen wurden, zuerst gesendet werden.
  • Der Speicher 104 kann zusätzlich eine oder mehr Anwendungen 302 (nur eine gezeigt) umfassen. Die Anwendungen 302 können ein oder mehr maschinell ausführbare Programme darstellen, die von einem Host-System (zum Beispiel 100) oder einem Netzwerk aus auf Daten zugreifen. Die Anwendung 302 kann zum Beispiel einen Web-Browser, eine E-Mail-Serving-Anwendung, eine File-Serving-Anwendung oder eine Datenbankanwendung einschließen.
  • Der Speicher 104 kann ferner mindestens einige Bauelemente der Logik 130 umfassen. Einige Bauelemente der Logik 130 können in der Netzschnittstelle 126 eingeschlossen sein. Die Bauelemente der Logik 130 in dem Speicher 104 und der Netzschnittstelle 126 können zusammen die Effizienz der Interrupt-Lieferung zur Laufzeit in dem Netzwerksystem, in dem sich der Speicher 104 befindet, erhöhen. Die Logik 130 kann zum Beispiel einen Interrupt von der Netzschnittstelle 126, der an einen Prozessor, auf dem die Zielanwendung läuft, zu liefern ist, erleichtern, wie in 4 veranschaulicht ist.
  • 4 veranschaulicht ein beispielhaftes Netzwerksystem 400, in dem Interrupts, die durch eine Netzschnittstelle generiert werden, zu einem Zielprozessor gelenkt werden, gemäß einer Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes. Das beispielhafte System 400 umfasst zwei Sockel: Sockel 0 (410) und Sockel 1 (420). In dem Sockel 0 (410) befinden sich zwei Prozessoren: Prozessor 0 (412) und Prozessor 1 (414). In dem Sockel 1 (420) befinden sich zwei Prozessoren: Prozessor 2 (422) und Prozessor 3 (424). Zwar werden in der Figur zwei Sockel gezeigt und schließt jeder Sockel zwei Prozessoren ein, doch kann in anderen Ausführungsformen ein Netzwerksystem einen oder mehr als zwei Sockel umfassen und kann ein einzelner Sockel einen oder mehr als zwei Prozessoren einschließen. Die Prozessoren sowohl in dem Sockel 0 (410) als auch in dem Sockel 1 (420) sind über einen Systembus 430 an einen Ein-/Ausgabe-Hub („IOH”) 440 gekoppelt. Eine Netzwerk-Controller/-schnittstelle 460 ist an den IOH 440 gekoppelt. Jeder durch den/die Netzwerk-Controller/-schnittstelle 460 generierte Interrupt kann an den Sockel 0 (410) über eine statische Konfiguration oder an einen Prozessor auf der Grundlage einer Round-Robin-Anordnung geliefert werden.
  • Das beispielhafte System 400 schließt auch eine Anwendung 470 ein, die in dem System zur Zeit (oder Zeitraum) X läuft. Auf der Grundlage der Nutzung aller Prozessoren in dem System zur Zeit (oder Zeitraum) X und der BS-Scheduling-Verfahrensweise läuft die Anwendung 470 auf dem Prozessor 2 (422) zur Zeit (oder Zeitraum) X. Wenn der/die Netzwerk-Controller/-schnittstelle 460 einen Interrupt generiert, der auf die Anwendung 470 abzielt, wird der Interrupt in einem herkömmlichen Netzwerksystem möglicherweise nicht an den Prozessor 2 (422) geliefert. Der Interrupt kann zum Beispiel an den Prozessor 0 (412) in dem Sockel 0 (410) über eine statische Konfiguration geliefert werden; oder der Interrupt kann nach dem Zufallsprinzip an irgendeinen der vier Prozessoren unter Verwendung einer Round-Robin-Anordnung geliefert werden. Gemäß einer Ausführungsform des in der vorliegenden Anmeldung offenbarten Gegenstandes können der/die Netzwerk-Controller/-shnittstelle 460 sowie ein Gerätetreiber in dem Netzwerksystem so konfiguriert sein, dass ein Interrupt, der auf eine Anwendung oder einen Thread einer Anwendung abzielt, an den Prozessor, auf dem die Anwendung/der Thread lauft, geliefert wird. In dem in 4 gezeigten Beispiel wird der Interrupt, der auf die Anwendung 470 abzielt, an den Prozessor 2 (422) geliefert.
  • Da das BS während der Laufzeit jederzeit ein Rescheduling einer Anwendung/eines Threads vornehmen kann, kann sich die Prozessoraffinität der Anwendung/des Threads (das heißt, die Identifizierung eines Prozessors, auf dem die Anwendung/der Thread läuft) während der Laufzeit ändern. In einer der Ausführungsformen kann ein Netzwerkgerätetreiber (zum Beispiel 308 oder 340 in 3) zur Laufzeit die Prozessoraffinität der Anwendung/des Threads an das Netzwerkgerät (zum Beispiel Netzschnittstelle 126 in 3) übertragen. Das Netzwerkgerät generiert dann den Interrupt mit der gleichen Prozessoraffinität.
  • 5 zeigt ein Ablaufdiagramm eines beispielhaften Prozesses 500 zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem. In Block 510 kann eine Anwendung/ein Thread eine Nachricht oder andere Daten an andere Benutzer in dem Netzwerk senden. In Block 520 kann der BS-Kernel die Nachricht an einen Gerätetreiber (zum Beispiel 308 oder 340 in 3) weiterleiten. In Block 530 kann der Gerätetreiber die Nummer des aktuellen Prozessors, auf dem die Anwendung/der Thread läuft, identifizieren, das heißt, der Gerätetreiber ermittelt die Prozessoraffinität der Anwendung/des Threads. In Block 540 kann der Gerätetreiber eine Tx-Warteschlange auswählen, die mit einem passenden MSI-X-Vektor verknüpft ist. MSI steht für Message Signaled Interrupt. Das ist ein erforderliches Merkmal von PCI-Express-Geräten. MSI kann, verglichen mit dem Pin-Assertion-Interrupt, als eine fortgeschrittene Interrupt-Anordnung betrachtet werden. Eine MSI-Fähigkeitsstruktur schließt ein Nachrichtensteuerregister, ein Nachrichtenadressregister und ein Nachrichtendatenregister ein. Diese Register stellen die Steuerung des MSI durch den Bustreiber bereit. Das Nachrichtensteuerregister gibt die durch das Gerät unterstützte MSI-Fähigkeit an. Das Nachrichtenadressregister spezifiziert die Zieladresse und das Nachrichtendatenregister spezifiziert die Eigenschaften der Nachricht. Eine MSI-Fähigkeitsstruktur kann als ein Interrupt-Vektor betrachtet werden, der mehrere Elemente, zum Beispiel die Zieladresse einer Nachricht, Eigenschaften der Nachricht usw., einschließt.
  • MSI-X ist eine Erweiterung von MSI und schließt mehr als einen solchen Interrupt-Vektor ein.
  • Wenn das Netzwerksystem die MSI-X-basierte Interrupt-Anordnung unterstützt, kann jeder Interrupt-Vektor der MSI-X-Anordnung mit einer Tx-Warteschlangennummer verknüpft werden. 6 zeigt eine Tabelle 600, die solche Verknüpfungen zwischen dem Tx-Warteschlangenindex und dem MSI-Vektorindex veranschaulicht. Die Tabelle 600 schließt zwei Spalten ein: Spalte 610 (Tx-Warteschlangenindex) und Spalte 620 (MSI-Vektorindex). Zum Beispiel kann die Tx-Warteschlange 0 mit dem MSI-Vektor 1 verknüpft sein, kann die Tx-Warteschlange 1 mit dem MSI-Vektor 3 verknüpft sein, kann die Tx-Warteschlange 2 mit dem MSI-Vektor 2 verknüpft sein usw. Die Tabelle 600 wird zum Zwecke der Veranschaulichung verwendet. In der Praxis kann es mehr oder weniger als vier Tx-Warteschlangen oder MSI-Vektoren geben, und die Gesamtzahl der Tx-Warteschlangen entspricht nicht notwendigerweise der Gesamtzahl der MSI-Vektoren. Die Verknüpfungsinformationen zwischen den Tx-Warteschlangen und den MSI-Vektoren können in einem Netzwerkgerät (zum Beispiel Netzschnittstelle 126, gezeigt in 3) gespeichert sein.
  • Nun soll erneut auf 5 Bezug genommen werden. Jeder MSI-Interrupt-Vektor kann Prozessor-Identifikationsinformationen eines Prozessors, auf den der Interrupt abzielt, einschließen. In Block 540 kann eine Tx-Warteschlange ausgewählt werden, die mit einem MSI-Interrupt-Vektor verknüpft ist, dessen Prozessor-Identifikationsinformationen zu der in Block 530 identifizierten Prozessoraffinität der Anwendung/des Threads passen. Wenn es keinen MSI-Interrupt-Vektor gibt, dessen Prozessor-Identifikationsinformationen zu der identifizierten Prozessoraffinität der Anwendung/des Threads passen, kann ein alternativer MSI-Interrupt-Vektor verwendet werden, dessen Prozessor-Identifikationsinformationen zu irgendeinem der Prozessoren in demselben Sockel wie der identifizierte Prozessor, der die Anwendung/den Thread laufen lässt, passen. Demgemäß kann eine Tx-Warteschlange ausgewählt werden, die mit einem solchen alternativen MSI-Interrupt-Vektor verknüpft ist.
  • In Block 550 kann die Nachricht durch die in Block 540 ausgewählte Tx-Warteschlange gesendet werden. In Block 560 kann das Netzwerkgerät Pakete in der Nachricht durch direkten Speicherzugriff (DMA) aus der ausgewählten Tx-Warteschlange erlangen. Sobald sich die Nachricht in dem Gerätepuffer befindet oder ausgesendet worden ist, generiert das Netzwerkgerät einen Interrupt unter Verwendung des Interrupt-Vektors, der mit der in Block 540 ausgewählten Tx-Warteschlange verknüpft ist. In Block 570 kann der Interrupt an den Zielprozessor, der zu der Prozessoraffinität der Anwendung/des Threads passt, oder an einen gleichrangigen Prozessor (Peer processor) in demselben Sockel wie der Prozessor, der die Anwendung/den Thread laufen lässt, geliefert werden. In Block 580 kann der Gerätetreiber die Tx-Fertigstellung abarbeiten und den Paketpuffer an der ausgewählten Tx-Warteschlange freigeben. Die Anwendung/der Thread kann dann aufwachen und weiterlaufen.
  • Der in 5 gezeigte Prozess 500 setzt voraus, dass das Netzwerksystem mehrere Tx-Warteschlangen unterstützt und mehrere Interrupt-Vektoren für die Verwendung zur Verfügung stehen. Diese Annahme trifft typischerweise auf moderne Netzwerksysteme zu. Wenn das Netzwerksystem nur eine Tx-Warteschlange unterstützt, aber mehrere MSI-X-Vektoren zur Verfügung stehen, kann der Gerätetreiber das Netzwerkgerät informieren der nächste Interrupt-Vektor, der zu verwenden ist, die identifizierte Prozessoraffinität zur Laufzeit, so dass der Gerät-Interrupt direkt an den Zielprozessor lieferbar ist.
  • In einer anderen Ausführungsform, in der ein Zwischengerätetreiber (zum Beispiel 340 in 3) verwendet wird, kann der oben offenbarte Gegenstand so abgeändert werden, dass er an den Zwischengerätetreiber angepasst ist. Der Zwischengerätetreiber kann das Paket zum Beispiel einer Miniport-Instanz zuteilen, deren Gerät einen Interrupt-Vektor hat, dessen Prozessor-Identifikationsinformationen zu der Prozessoraffinität der/des aktuellen laufenden Anwendung/Threads passen.
  • In noch einer anderen Ausführungsform kann der Gerätetreiber die Prozessoraffinität der Anwendung an den Chipsatz, zum Beispiel Speichersteuerungshub (MCH) oder IOH, übertragen. Wenn der Chipsatz den Interrupt von dem Gerät empfängt, liefert er den Interrupt an die richtige CPU. Dieses Verfahren mag bei einem Gerät, das nur einen Interrupt-Vektor, zum Beispiel einen PCI-Legacy-Interrupt oder einen MSI mit einer einzigen Nachricht, unterstützt, gut funktionieren.
  • 7 zeigt ein Ablaufdiagramm eines anderen beispielhaften Prozesses 700 zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem. In Block 710 kann eine Anwendung/ein Thread Daten aussenden. In Block 720 kann der BS-Kernel die Daten an einen Gerätetreiber weiterleiten. In Block 730 kann der Gerätetreiber die Prozessoraffinität der Anwendung/des Threads identifizieren. In Block 740 kann der Gerätetreiber die identifizierte Prozessoraffinität an den Chipsatz oder das Netzwerkgerät (zum Beispiel Netzschnittstelle 126 in 3) übertragen. In Block 750 können die Daten ausgesendet werden (zum Beispiel entweder an den Puffer des Netzwerkgerätes übertragen werden oder drahtgebunden oder drahtlos ausgesendet werden). In Block 760 kann durch das Gerät ein Interrupt generiert werden und auf der Grundlage der übertragenen identifizierten Affinität der Anwendung/des Threads direkt an den richtigen Prozessor geliefert werden.
  • 8 zeigt eine Tabelle 800, die eine experimentelle Leistungserhöhung eines Netzwerksystems, erreicht durch das Lenken eines Interrupts direkt zu dem Zielprozessor oder einem gleichrangigen Prozessor (Peer processor), der sich in demselben Sockel wie der Zielprozessor befindet, gemäß einer Ausführungsform des hierin offenbarten Gegenstandes veranschaulicht. Die Tabelle 800 hat vier Spalten: Spalte 810 zeigt einen Prozessor, an den ein Interrupt geliefert wird, Spalte 820 zeigt einen Prozessor, der eine Anwendung/einen Thread laufen lässt, die bzw. der den Interrupt verursacht, Spalte 830 zeigt die Prozessornutzung und Spalte 840 zeigt den Netzwerkdurchsatz, angegeben in Nachrichten pro Sekunde. Das Netzwerksystem, das in dem Experiment verwendet wurde, das die in der Tabelle 800 gezeigten Daten ergab, ist so konfiguriert, dass es zwei Sockel einschließt: Sockel 0 und Sockel 1. Jeder Sockel hat zwei Prozessoren: Der Sockel 0 schließt die CPU 0 und die CPU 2 ein und der Sockel 1 schließt die CPU 1 und die CPU 3 ein. Es werden ESB2-basierte PRO1000-Netzwerkkarten verwendet, die einen MSI/MSI-X-nachrichtenbasierten Interrupt unterstützen. In dem Experiment wird ein Windows®-Longhorn-Server verwendet. Durch eine CPU, die die Anwendung/den Thread laufen lässt, werden UDP-Nachrichten versendet.
  • Aus den Daten in der Tabelle 800 geht hervor, dass dann, wenn die Prozessoraffinität des Interrupts (das heißt, der Prozessor, an den der Interrupt geliefert wird) und die Prozessoraffinität der Anwendung gleich sind oder sich in demselben Sockel befinden, der Durchsatz am höchsten ist, während die Gesamt-CPU-Nutzung am geringsten ist (siehe Zeile 850 und Zeile 865). In anderen Situationen (zum Beispiel Zeilen 855, 860, 870 und 875 in Tabelle 800), in denen die Prozessoraffinität des Interrupts und die Prozessoraffinität der Anwendung nicht gleich sind oder sich nicht in demselben Sockel befinden, nimmt der Durchsatz ab und nimmt die Gesamt-CPU-Nutzung zu.
  • Zwar wird unter Bezugnahme auf Zeichnungen in den 1 bis 8 eine beispielhafte Ausführungsform des offenbarten Gegenstandes beschrieben, doch werden Fachleute ohne weiteres erkennen, dass auch viele andere Verfahren zur Implementierung des offenbarten Gegenstandes verwendet werden können. Zum Beispiel kann die Reihenfolge der Ausführung der Blöcke in Ablaufdiagrammen geändert werden und/oder können einige der Blöcke in beschriebenen Block-/Ablaufdiagrammen geändert, entfernt oder kombiniert werden.
  • In der vorangehenden Beschreibung sind verschiedene Aspekte des offenbarten Gegenstandes beschrieben worden. Zum Zwecke der Erläuterung wurden spezifische Zahlen, Systeme und Konfigurationen dargelegt, um ein umfassendes Verständnis für den Gegenstand zu schaffen. Einem Fachmann, dem Einsicht in diese Offenbarung gewährt ist, leuchtet jedoch ein, dass der Gegenstand ohne die spezifischen Einzelheiten ausgeführt werden kann. In anderen Fällen wurden wohl bekannte Merkmale, Bauelemente oder Module ausgelassen, vereinfacht, kombiniert oder aufgespaltet, um den offenbarten Gegenstand nicht unverständlich zu machen.
  • Verschiedene Ausführungsformen des offenbarten Gegenstandes können in Hardware, Firmware, Software oder als eine Kombination davon implementiert werden und können unter Bezugnahme auf oder im Zusammenhang mit einem Programmcode, zum Beispiel Befehle, Funktionen, Prozeduren, Datenstrukturen, Logik, Anwendungsprogramme, Entwurfsdarstellungen oder Formate für die Simulation, die Emulation und die Herstellung eines Entwurfes, beschrieben werden, der, wenn durch eine Maschine auf ihn zugegriffen wird, dazu führt, dass die Maschine Tasks ausführt, abstrakte Datentypen oder Low-Level-Hardware-Kontexte definiert oder ein Ergebnis herbeiführt.
  • Für Simulationen kann ein Programmcode Hardware darstellen, wobei eine Hardware-Beschreibungssprache oder eine andere funktionelle Beschreibungssprache verwendet wird, die im Wesentlichen ein Modell des erwarteten Funktionierens einer entworfenen Hardware bereitstellt. Der Programmcode kann eine Assembler- oder Maschinensprache sein oder Daten darstellen, die kompiliert und/oder interpretiert werden können. Außerdem ist es auf diesem Fachgebiet üblich, in der einen oder anderen Form von Software als Durchführung einer Aktion oder Herbeiführung eines Ergebnisses zu sprechen. Solche Ausdrücke sind lediglich eine kurz gefasste Form der Feststellung der Ausführung eines Programmcodes durch ein Verarbeitungssystem, was bewirkt, dass ein Prozessor eine Aktion durchführt oder ein Ergebnis herbeiführt.
  • Der Programmcode kann zum Beispiel in einem flüchtigen und/oder nichtflüchtigen Speicher gespeichert werden, zum Beispiel Speichergeräte und/oder ein zugehöriger maschinell lesbarer Datenträger oder Datenträger, auf den eine Maschine zugreifen kann, die integrierte Speicherbausteine, Festplatten, Disketten, optische Speicher, Bänder, Flash-Speicher, Speichersticks, digitale Bildplatten, mehrseitige Digitalplatten (DVD) usw. sowie außergewöhnlichere Datenträger wie biologische zustandserhaltende Speicher, auf die eine Maschine zugreifen kann, einschließen. Ein maschinell lesbarer Datenträger kann einen beliebigen Mechanismus zum Speichern, Senden oder Empfangen von Informationen in einer maschinell lesbaren Form einschließen, und der Datenträger kann ein greifbares Mittel einschließen, durch das elektrische, optische, akustische oder andere Formen von fortgepflanzten Signalen oder Trägerwellen, die den Programmcode codieren, gelangen können, zum Beispiel Antennen, Glasfasern, Datenübertragungsschnittstellen usw. Der Programmcode kann in Form von Paketen, seriellen Daten, parallelen Daten, fortgepflanzten Signalen usw. gesendet und in einem komprimierten oder verschlüsselten Format verwendet werden.
  • Der Programmcode kann in Programmen implementiert werden, die auf programmierbaren Maschinen ablaufen, zum Beispiel mobile oder stationäre Rechner, persönliche digitale Assistenten (Personal Digital Assistants), Set-Top-Boxen, Mobiltelefone und Funkrufempfänger und andere elektronische Geräte, die jeweils einen Prozessor, einen flüchtigen und/oder nichtflüchtigen Speicher, der durch den Prozessor lesbar ist, mindestens ein Eingabegerät und/oder ein oder mehr Ausgabegeräte einschließen. Der Programmcode kann auf die unter Verwendung des Eingabegerätes eingegebenen Daten angewendet werden, um die beschriebenen Ausführungsformen auszuführen und Ausgabeinformationen zu generieren. Die Ausgabeinformationen können einem oder mehr Ausgabegeräten zugeführt werden. Ein Fachmann mag erkennen, dass Ausführungsformen des offenbarten Gegenstandes mit verschiedenen Rechnersystemkonfigurationen ausführbar sind, einschließlich Mehrprozessor- oder Mehrkernprozessor-Systeme, Minirechner, Großrechner sowie überall vorhandene oder Miniaturrechner oder -prozessoren, die in praktisch jedes Gerät integriert werden können. Ausführungsformen des offenbarten Gegenstandes sind auch in verteilten Datenverarbeitungsumgebungen ausführbar, in denen Tasks durch entfernte Verarbeitungsgeräte, die durch ein Kommunikationsnetz verbunden sind, ausgeführt werden können.
  • Zwar können Operationen als ein sequentieller Prozess beschrieben werden, doch können einige der Operationen tatsächlich parallel, gleichzeitig und/oder in einer verteilten Umgebung und mit einem für den Zugriff durch Einzel- oder Mehrprozessormaschinen lokal und/oder entfernt gespeicherten Programmcode ausgeführt werden. Außerdem kann in einigen Ausführungsformen die Reihenfolge der Operationen geändert werden, ohne dabei vom Sinn des offenbarten Gegenstandes abzuweichen. Der Programmcode kann durch oder zusammen mit integrierten Controller verwendet werden.
  • Zwar ist der offenbarte Gegenstand hinsichtlich veranschaulichender Ausführungsformen beschrieben worden, doch soll diese Beschreibung nicht als einschränkend aufgefasst werden. Verschiedene Modifizierungen der veranschaulichenden Ausführungsformen sowie andere Ausführungsformen des Gegenstandes, die für Fachleute auf dem Gebiet, auf das sich der offenbarte Gegenstand bezieht, offensichtlich sind, werden als innerhalb des Schutzbereiches des offenbarten Gegenstandes liegend betrachtet.

Claims (25)

  1. Verfahren zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem, umfassend: Senden (710) von Daten an andere Benutzer in dem Netzwerksystem durch eine Anwendung, Weiterleiten (720) der Daten an einen Gerätetreiber durch ein Betriebssystem, Identifizieren (730) einer Prozessoraffinität der Anwendung zur Laufzeit durch den Gerätetreiber, wobei die Prozessoraffinität eine Identität eines Prozessors, der die Anwendung laufen lässt, einschließt, wobei das Betriebssystem eingerichtet ist, die Prozessoraffinität der Anwendung während der Laufzeit zu ändern, und Verknüpfen eines Interrupts mit der Prozessoraffinität der Anwendung durch den Gerätetreiber zur Laufzeit, wobei das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung ein Senden (740) der Prozessoraffinität der Anwendung an ein Netzwerkgerät und/oder an einen Chipsatz umfasst, wobei der Interrupt durch das Netzwerkgerät auf das Aussenden (750) der Daten hin generiert (760) wird, und wobei das Verknüpfen des Interrupts eingerichtet ist, den Interrupt zu dem identifizierten Prozessor, der die Anwendung laufen lässt, oder zu einem oder mehreren gleichrangigen Prozessoren zu lenken.
  2. Verfahren nach Anspruch 1, ferner umfassend Liefern des Interrupts direkt an den Prozessor, der die Anwendung laufen lässt, zumindest teilweise auf der Grundlage der Prozessoraffinität der Anwendung.
  3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung ein Auswählen einer Sendewarteschlange umfasst, wobei die Sendewarteschlange mit einem nachrichtenbasierten Interrupt-Vektor verknüpft ist, der die Identität des Prozessors, der die Anwendung laufen lässt, einschließt.
  4. Verfahren nach Anspruch 3, ferner umfassend: Senden der Daten durch die ausgewählte Sendewarteschlange und Übertragen von Paketen der Daten von der ausgewählten Sendewarteschlange an das Netzwerkgerät.
  5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Gerätetreiber einen Treiber des Netzwerkgerätes umfasst, wobei das Netzwerkgerät eine Netzwerkkarte einschließt.
  6. Verfahren nach Anspruch 5, ferner umfassend ein Generieren eines Interrupts, wenn die Daten in einem Puffer des Netzwerkgerätes gespeichert werden oder wenn die Daten aus dem Netzwerkgerät heraus gesendet werden.
  7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Gerätetreiber einen Zwischentreiber für eine Mehrzahl von Netzwerkgeräten umfasst.
  8. Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem, umfassend: Logik (130), die einen Gerätetreiber (308) umfasst, wobei der Gerätetreiber (308) eingerichtet ist zum Identifizieren einer Prozessoraffinität einer Anwendung zur Laufzeit, wobei die Prozessoraffinität eine Identität eines Prozessors, der die Anwendung laufen lässt, einschließt, wobei ein Betriebssystem (304) eingerichtet ist, die Prozessoraffinität der Anwendung während der Laufzeit zu ändern, und Verknüpfen eines Interrupts mit der Prozessoraffinität der Anwendung zur Laufzeit, wobei das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung Operationen umfasst, die ein Senden der Prozessoraffinität der Anwendung an ein Netzwerkgerät (126) und/oder an einen Chipsatz (108) einschließen, wobei der Interrupt durch das Netzwerkgerät (126) auf das Aussenden von Daten aus der Anwendung hin generiert wird, und wobei das Verknüpfen des Interrupts eingerichtet ist, den Interrupt zu dem identifizierten Prozessor, der die Anwendung laufen lässt, oder zu einem oder mehreren gleichrangigen Prozessoren zu lenken.
  9. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, dass die Logik (130) ferner den Interrupt direkt an den Prozessor, der die Anwendung laufen lässt, zumindest teilweise auf der Grundlage der Prozessoraffinität der Anwendung liefert.
  10. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, dass die Logik (130) den Interrupt mit der Prozessoraffinität der Anwendung über Operationen verknüpft, die ein Auswählen einer Sendewarteschlange (310A, ..., 310N) einschließen, wobei die Sendewarteschlange (310A, ..., 310N) mit einem nachrichtenbasierten Interrupt-Vektor verknüpft ist, der die Identität des Prozessors, der die Anwendung laufen lässt, einschließt.
  11. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, dass die Logik (130) ferner die Daten aus der Anwendung durch die ausgewählte Sendewarteschlange (310A, ..., 310N) sendet und Pakete der Daten von der ausgewählten Sendewarteschlange (310A, ... 310N) an das Netzwerkgerät (126) überträgt.
  12. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet, dass die Logik (130) einen Treiber (308) des Netzwerkgerätes (126) und/oder einen Zwischentreiber für eine Mehrzahl von Netzwerkgeräten umfasst, wobei das Netzwerkgerät (126) eine Netzwerkkarte einschließt.
  13. Rechensystem, umfassend: Logik (130), die einen Gerätetreiber (308) umfasst, wobei der Gerätetreiber (308) eingerichtet ist zum Identifizieren einer Prozessoraffinität einer Anwendung zur Laufzeit, wobei die Prozessoraffinität eine Identität eines Prozessors, der die Anwendung laufen lässt, einschließt, wobei ein Betriebssystem (304) eingerichtet ist, die Prozessoraffinität der Anwendung während der Laufzeit zu ändern, und Verknüpfen eines Interrupts mit der Prozessoraffinität der Anwendung zur Laufzeit, wobei das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung Operationen umfasst, die ein Senden der Prozessoraffinität der Anwendung an ein Netzwerkgerät und/oder an einen Chipsatz einschließen, wobei der Interrupt durch das Netzwerkgerät auf das Aussenden von Daten aus der Anwendung hin generiert wird, und wobei das Verknüpfen des Interrupts eingerichtet ist, den Interrupt zu dem identifizierten Prozessor, der die Anwendung laufen lässt, oder zu einem oder mehreren gleichrangigen Prozessoren zu lenken; und eine Steckkarte, die an eine Platine gekoppelt ist, um das Netzwerkgerät aufzunehmen, wobei die Steckkarte so betreibbar ist, dass sie die Daten aus der Anwendung empfängt und die Daten an ein Ziel aussendet.
  14. Rechensystem nach Anspruch 13, dadurch gekennzeichnet, dass die Logik (130) ferner den Interrupt direkt an den Prozessor, der die Anwendung laufen lässt, zumindest teilweise auf der Grundlage der Prozessoraffinität der Anwendung liefert.
  15. Rechensystem nach Anspruch 13, dadurch gekennzeichnet, dass die Logik (130) den Interrupt mit der Prozessoraffinität der Anwendung über Operationen verknüpft, die das Auswählen einer Sendewarteschlange einschließen, wobei die Sendewarteschlange mit einem nachrichtenbasierten Interrupt-Vektor verknüpft ist, der die Identität des Prozessors, der die Anwendung laufen lässt, einschließt.
  16. Rechensystem nach Anspruch 15, dadurch gekennzeichnet, dass die Logik (130) ferner die Daten aus der Anwendung durch die ausgewählte Sendewarteschlange sendet und Pakete der Daten von der ausgewählten Sendewarteschlange an das Netzwerkgerät überträgt.
  17. Rechensystem nach Anspruch 15, dadurch gekennzeichnet, dass die Steckkarte so betreibbar ist, dass sie auf eine Mehrzahl von Sendewarteschlangen (310A, ..., 310N), darunter die ausgewählte Sendewarteschlange, zugreift und ein oder mehr Pakete aus der Mehrzahl von Sendewarteschlangen (310A, ..., 310N) sendet.
  18. Rechensystem nach Anspruch 13, dadurch gekennzeichnet, dass die Logik (130) einen Treiber (308) des Netzwerkgerätes und/oder einen Zwischentreiber (340) für eine Mehrzahl von Netzwerkgeräten umfasst.
  19. Rechensystem nach Anspruch 13, dadurch gekennzeichnet, dass die Steckkarte eine Netzwerkkarte umfasst.
  20. Artikel, umfassend einen maschinell lesbaren Datenträger, der Befehle enthält, die, wenn sie durch eine Verarbeitungsplattform ausgeführt werden, bewirken, dass die Verarbeitungsplattform Operationen ausführt, die einschließen: Senden (510) von Daten an andere Benutzer in dem Netzwerksystem durch eine Anwendung, Weiterleiten (520) der Daten an einen Gerätetreiber durch ein Betriebssystem, Identifizieren (530) einer Prozessoraffinität der Anwendung zur Laufzeit durch den Gerätetreiber, wobei die Prozessoraffinität eine Identität eines Prozessors, der die Anwendung laufen lässt, einschließt, wobei das Betriebssystem eingerichtet ist, die Prozessoraffinität der Anwendung während der Laufzeit zu ändern, und Verknüpfen eines Interrupts mit der Prozessoraffinität der Anwendung durch den Gerätetreiber zur Laufzeit, wobei: das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung ein Senden der Prozessoraffinität der Anwendung an ein Netzwerkgerät und/oder an einen Chipsatz umfasst; der Interrupt durch das Netzwerkgerät auf das Aussenden von Daten hin generiert wird; und das Verknüpfen des Interrupts eingerichtet ist, den Interrupt zu dem identifizierten Prozessor, der die Anwendung laufen lässt, oder zu einem oder mehreren gleichrangigen Prozessoren zu lenken.
  21. Artikel nach Anspruch 20, dadurch gekennzeichnet, dass die Operationen ferner ein Liefern des Interrupts direkt an den Prozessor, der die Anwendung laufen lässt, zumindest teilweise auf der Grundlage der Prozessoraffinität der Anwendung umfassen.
  22. Artikel nach Anspruch 20, dadurch gekennzeichnet, dass das Verknüpfen des Interrupts mit der Prozessoraffinität der Anwendung das Auswählen (540) einer Sendewarteschlange umfasst, wobei die Sendewarteschlange mit einem nachrichtenbasierten Interrupt-Vektor verknüpft ist, der die Identität des Prozessors, der die Anwendung laufen lässt, einschließt.
  23. Artikel nach Anspruch 22, dadurch gekennzeichnet, dass die Operationen ferner umfassen: Senden (550) der Daten durch die ausgewählte Sendewarteschlange und Übertragen von Paketen der Daten von der ausgewählten Sendewarteschlange an das Netzwerkgerät.
  24. Artikel nach Anspruch 20, dadurch gekennzeichnet, dass der Gerätetreiber einen Treiber des Netzwerkgerätes umfasst, wobei das Netzwerkgerät eine Netzwerkkarte einschließt.
  25. Artikel nach Anspruch 20, dadurch gekennzeichnet, dass die Operationen ferner das Generieren eines Interrupts, wenn die Daten in einem Puffer des Netzwerkgerätes gespeichert werden oder wenn die Daten aus dem Netzwerkgerät heraus gesendet werden, umfassen.
DE102008030587.1A 2007-06-29 2008-06-27 Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem Expired - Fee Related DE102008030587B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/771,209 2007-06-29
US11/771,209 US8296490B2 (en) 2007-06-29 2007-06-29 Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system

Publications (2)

Publication Number Publication Date
DE102008030587A1 DE102008030587A1 (de) 2009-01-08
DE102008030587B4 true DE102008030587B4 (de) 2015-10-29

Family

ID=40092759

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008030587.1A Expired - Fee Related DE102008030587B4 (de) 2007-06-29 2008-06-27 Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem

Country Status (2)

Country Link
US (2) US8296490B2 (de)
DE (1) DE102008030587B4 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8661160B2 (en) * 2006-08-30 2014-02-25 Intel Corporation Bidirectional receive side scaling
US8296490B2 (en) 2007-06-29 2012-10-23 Intel Corporation Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
US8014282B2 (en) * 2008-06-26 2011-09-06 Intel Corporation Hashing packet contents to determine a processor
US20090327556A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
US8166146B2 (en) * 2008-09-29 2012-04-24 International Business Machines Corporation Providing improved message handling performance in computer systems utilizing shared network devices
US8446824B2 (en) * 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
US8312175B2 (en) * 2010-01-21 2012-11-13 Vmware, Inc. Virtual machine access to storage via a multi-queue IO storage adapter with optimized cache affinity and PCPU load balancing
US8601194B2 (en) * 2011-02-08 2013-12-03 Red Hat Israel, Ltd. On-demand interrupt vector allocation based on activity detection
US9331935B2 (en) * 2011-11-22 2016-05-03 Intel Corporation Network device selection
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US9910683B2 (en) * 2014-03-28 2018-03-06 Lenovo (Singapore) Pte. Ltd. Dynamic application optimization
US9424081B2 (en) 2014-12-15 2016-08-23 Microsoft Technology Licensing, Llc Managing callback operations in emulated environments
US10031786B2 (en) 2016-01-13 2018-07-24 International Business Machines Corporation Lockless multithreaded completion queue access
US10565004B2 (en) 2016-02-04 2020-02-18 Hewlett Packard Enterprise Development Lp Interrupt and message generation independent of status register content
US10826841B2 (en) 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10554554B2 (en) * 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
US10623521B2 (en) * 2016-12-26 2020-04-14 Mellanox Technologies, Ltd. Distribution of messages to queues in a distributed computing environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809157A (en) * 1985-09-30 1989-02-28 International Business Machines Corp. Dynamic assignment of affinity for vector tasks
US6738847B1 (en) * 2000-11-10 2004-05-18 Unisys Corporation Method for assigning a multiplicity of interrupt vectors in a symmetric multi-processor computing environment
US20060251109A1 (en) * 2005-04-05 2006-11-09 Shimon Muller Network system

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5862366A (en) * 1996-09-12 1999-01-19 Advanced Micro Devices, Inc. System and method for simulating a multiprocessor environment for testing a multiprocessing interrupt controller
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
JPH11331890A (ja) * 1998-05-08 1999-11-30 Fujitsu Ltd 情報処理システム
US6148361A (en) * 1998-12-17 2000-11-14 International Business Machines Corporation Interrupt architecture for a non-uniform memory access (NUMA) data processing system
US6470408B1 (en) * 1999-04-14 2002-10-22 Hewlett-Packard Company Apparatus and method for delivering interrupts via an APIC bus to IA-32 processors
US6658448B1 (en) * 1999-10-21 2003-12-02 Unisys Corporation System and method for assigning processes to specific CPU's to increase scalability and performance of operating systems
US6542942B1 (en) * 1999-10-27 2003-04-01 Nortel Networks Limited Method and apparatus for processing calls on a multiprocessor communication system
US7661107B1 (en) * 2000-01-18 2010-02-09 Advanced Micro Devices, Inc. Method and apparatus for dynamic allocation of processing resources
EP1301846A4 (de) * 2000-06-19 2006-03-22 P C Krause And Associates Inc Verteilte simulation
US6742086B1 (en) * 2000-08-11 2004-05-25 Unisys Corporation Affinity checking process for multiple processor, multiple bus optimization of throughput
US7178145B2 (en) * 2001-06-29 2007-02-13 Emc Corporation Queues for soft affinity code threads and hard affinity code threads for allocation of processors to execute the threads in a multi-processor system
US7167916B2 (en) * 2002-08-30 2007-01-23 Unisys Corporation Computer OS dispatcher operation with virtual switching queue and IP queues
US7117285B2 (en) * 2003-08-29 2006-10-03 Sun Microsystems, Inc. Method and system for efficiently directing interrupts
US20050125582A1 (en) * 2003-12-08 2005-06-09 Tu Steven J. Methods and apparatus to dispatch interrupts in multi-processor systems
US7162666B2 (en) * 2004-03-26 2007-01-09 Emc Corporation Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling
US7792102B2 (en) * 2006-03-31 2010-09-07 Intel Corporation Scaling egress network traffic
US7685376B2 (en) * 2006-05-03 2010-03-23 Intel Corporation Method to support heterogeneous memories
US20080086575A1 (en) * 2006-10-06 2008-04-10 Annie Foong Network interface techniques
US7752370B2 (en) * 2007-04-12 2010-07-06 International Business Machines Corporation Splitting one hardware interrupt to multiple handlers
US8296490B2 (en) 2007-06-29 2012-10-23 Intel Corporation Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system
US8131872B2 (en) * 2008-05-30 2012-03-06 International Business Machines Corporation Affinity-based transaction processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809157A (en) * 1985-09-30 1989-02-28 International Business Machines Corp. Dynamic assignment of affinity for vector tasks
US6738847B1 (en) * 2000-11-10 2004-05-18 Unisys Corporation Method for assigning a multiplicity of interrupt vectors in a symmetric multi-processor computing environment
US20060251109A1 (en) * 2005-04-05 2006-11-09 Shimon Muller Network system

Also Published As

Publication number Publication date
US8838864B2 (en) 2014-09-16
US20130173895A1 (en) 2013-07-04
DE102008030587A1 (de) 2009-01-08
US20090007150A1 (en) 2009-01-01
US8296490B2 (en) 2012-10-23

Similar Documents

Publication Publication Date Title
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE102018006546A1 (de) Plattformschnittstellenschicht und protokoll für beschleuniger
DE102008035120B4 (de) Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE112012004550B4 (de) Verfahren, System und Vorrichtung zur Zustandsmigration für einen Remote Direct Memory Access-Adapter in einer virtuellen Umgebung
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102004042170B4 (de) Nachrichtenbasierte Interrupttabelle
DE112007000733T5 (de) Skalierung von ausgehendem Netzverkehr
DE602004012563T2 (de) Mehrfädiges DMA
DE112011101469T5 (de) Kompilieren von Software für ein hierarchisches verteiltes Verarbeitungssystem
DE112005001502T5 (de) Gemeinsame Benutzung einer physikalischen Vorrichtung durch mehrere Kunden
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE112008001168T5 (de) System und Verfahren zum gemeinschaftlichen Verwenden eines Druckers
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
CN116302617B (zh) 共享内存的方法、通信方法、嵌入式系统以及电子设备
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE112021003094T5 (de) System und verfahren zum planen von gemeinsam nutzbaren pcie-endpunktvorrichtungen
CN102075434A (zh) 一种虚拟集群中的通信方法
DE102021107336A1 (de) VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT
DE202017105777U1 (de) System für hardwareunabhängigen RDMA
DE102015112634A1 (de) Unterstützen von RMA-API über aktive Message
DE112013000599T5 (de) Konfigurieren von Rechenknoten in einem parallelen Computer unter Verwendung eines entfernt angeordneten direkten Speicherzugriffs

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012700000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012700000

Effective date: 20121120

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee