DE102020114142A1 - Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen - Google Patents

Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen Download PDF

Info

Publication number
DE102020114142A1
DE102020114142A1 DE102020114142.4A DE102020114142A DE102020114142A1 DE 102020114142 A1 DE102020114142 A1 DE 102020114142A1 DE 102020114142 A DE102020114142 A DE 102020114142A DE 102020114142 A1 DE102020114142 A1 DE 102020114142A1
Authority
DE
Germany
Prior art keywords
interrupt
wake
queue
disassociated
application
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.)
Pending
Application number
DE102020114142.4A
Other languages
English (en)
Inventor
Anil Vasudevan
Sridhar Samudrala
Parthasarathy Sarangam
Kiran Patil
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 DE102020114142A1 publication Critical patent/DE102020114142A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)

Abstract

Technologien für Unterbrechungs-disassoziierte Warteschlangenbildung für Multi-Warteschlangen-Eingabe-/Ausgabe-Vorrichtungen umfassen ein Bestimmen, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist, und ein Liefern des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird. Die Anwendung ist mit einem Anwendungs-Thread assoziiert, und die Unterbrechungs-disassoziierte Warteschlange kann in einem Polling-Modus sein. Nachfolgend kann, ansprechend auf ein Übergangsereignis, die Unterbrechungs-disassoziierte Warteschlange in einen Unterbrechungsmodus übergehen.

Description

  • HINTERGRUND
  • Moderne Rechenvorrichtungen sind zu allgegenwärtigen Werkzeugen für den persönlichen, geschäftlichen und sozialen Gebrauch geworden. Solche Rechenvorrichtungen umfassen typischerweise verschiedene Rechen- (z.B. einen oder mehrere Prozessoren mit einem oder mehreren Prozessorkernen) und Speicherungsressourcen (z.B. Cache-Speicher, Hauptspeicher, etc.), sowie mehrere Eingabe-/Ausgabe (I/O) -Vorrichtungen. Multi-Warteschlangen-I/O-Vorrichtungen, wie beispielsweise eine Netzwerkschnittstellensteuerung (NIC; network interface controller) binden normalerweise eine Unterbrechung an eine Warteschlange für Signalisierungsereignisse auf der assoziierten Warteschlange. Einige Lösungen können mehrere Warteschlangen mit einer einzelnen Unterbrechung assoziieren und eine I/O-Verarbeitungsoperation (z.B. eine protokollbasierte Verarbeitungsoperation) auf jeder der Warteschlangen durch einen Prozessorkern, auf dem die Unterbrechung gefeuert wurde, triggern.
  • Wenn eine Unterbrechung, die mit einer Warteschlange oder mehreren Warteschlangen assoziiert ist, feuert, wird typischerweise eine Unterbrechungs-Dienst-Routine (ISR; Interrupt Service Routine), wie beispielsweise I/O-Verarbeitung, in dem Kontext der Unterbrechung (z.B. durch einen Software-Unterbrechungskontext) auf dem Prozessorkern initiiert, auf dem die Software-Unterbrechungskontexte zeitlich geplant sind, der typischerweise der Prozessorkern ist, auf dem die Unterbrechung gefeuert wird. Jedoch erlaubt ein Durchführen von I/O-Verarbeitung auf dem Prozessorkern, auf dem die Unterbrechung gefeuert wurde, insbesondere bei mehreren Warteschlangen, im Allgemeinen keine optimale Prozessorkernskalierung von I/O-Verarbeitung. Zusätzlich, in dem Fall einer Einzel-Unterbrechungs-Einzel-Warteschlangenkonfiguration skaliert die Anzahl der Unterbrechungs-Vektorressourcen, die für die vielen tausenden Warteschlangen auf einer Rechenvorrichtung verbraucht werden, typischerweise nicht. Ferner gibt es oft keine Option die gesamte I/O-Verarbeitung von der Anwendung zu triggern, was sonst Verarbeitungs-Performance-Niveaus verbessern könnte.
  • Figurenliste
  • Die hierin beschriebenen Konzepte sind beispielhaft und nicht einschränkend in den beiliegenden Figuren dargestellt. Der Einfachheit und Klarheit der Darstellung halber sind die in Int200383 den Figuren dargestellten Elemente nicht notwendigerweise maßstabstreu gezeichnet. Wo es angemessen erscheint, wurden Bezugszeichen in den Figuren wiederholt, um entsprechende oder gleiche Elemente anzuzeigen.
    • 1 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Systems für Unterbrechungs-disassoziierte Warteschlangenbildung für Multi-Warteschlagen-Eingabe-/Ausgabe- (I/O; input/output) -Vorrichtungen;
    • 2 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines Rechenknotens des Systems aus 1;
    • 3 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel einer Umgebung, die durch den Rechenknoten aus 1 und 2 erstellt sein kann;
    • 4 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel eines darstellenden Satzes von Interessenfeldern eines verzögerten Abrufskontexts;
    • 5-6 sind ein vereinfachtes Flussdiagramm von zumindest einem Ausführungsbeispiel eines Verfahrens zum Managen von Unterbrechungs-disassoziierten Warteschlangen für Multi-Warteschlangen-I/O-Vorrichtungen, das durch die Rechenknoten von 1-3 ausgeführt werden kann,
    • 7 ist ein vereinfachtes Flussdiagramm von zumindest einem Ausführungsbeispiel eines Verfahrens zum Managen von Datenpaketen, das durch die Rechenknoten von 1-3 ausgeführt werden kann;
    • 8 ist ein vereinfachtes Zustandsflussdiagramm von zumindest einem Ausführungsbeispiel für ein Darstellen von Zustandsübergängen für Unterbrechungs-disassoziierte Warteschlangen für Multi-Warteschlangen-I/O-Vorrichtungen der Rechenknoten von 1-3; und
    • 9 ist ein vereinfachtes Blockdiagramm von zumindest einem Ausführungsbeispiel einer darstellenden Aufweckliste und einer darstellenden Unterbrechungs-Ereignis-Warteschlange, die mit der Aufweckliste assoziiert ist.
  • DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
  • Obwohl die Konzepte der vorliegenden Offenbarung verschiedenen Modifikationen und alternativen Formen unterliegen, wurden spezielle Ausführungsbeispiele derselben beispielhaft in den Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es versteht sich jedoch, dass keinerlei Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die bestimmten offenbarten Formen zu begrenzen, sondern im Gegenteil die Absicht besteht, alle Modifikationen, Entsprechungen und Alternativen abzudecken, die der vorliegenden Offenbarung und den beigefügten Ansprüchen entsprechen.
  • Bezugnahmen in der Beschreibung auf „ein einziges Ausführungsbeispiel“, „ein Ausführungsbeispiel“, „ein darstellendes Ausführungsbeispiel“ etc. zeigen an, dass das beschriebene Ausführungsbeispiel ein bestimmtes Merkmal, eine Struktur oder Charakteristik umfassen kann, aber jedes Ausführungsbeispiel nicht notwendigerweise dieses bestimmte Merkmal, die Struktur oder Charakteristik umfasst. Ferner beziehen sich solche Phrasen nicht notwendigerweise auf dasselbe Ausführungsbeispiel. Ferner, wenn ein bestimmtes Merkmal, eine Struktur oder Charakteristik in Verbindung mit einem Ausführungsbeispiel beschrieben ist, wird mitgeteilt, dass es innerhalb der Kenntnisse eines Fachmanns liegt, ein solches Merkmal, eine solche Struktur oder Charakteristik in Verbindung mit anderen Ausführungsbeispielen auszuführen, ob dies ausdrücklich beschrieben ist oder nicht. Zusätzlich wird darauf hingewiesen, dass Gegenstände, die in einer Liste in der Form von „zumindest eines von A, B und C“ umfasst sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten können. Ähnlich können Gegenstände, die in der Form von „zumindest eines von A, B oder C“ aufgelistet sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten.
  • Die offenbarten Ausführungsbeispiele können in einigen Fällen in Hardware, Firmware, Software oder irgendeine Kombination derselben implementiert sein. Die offenbarten Ausführungsbeispiele können auch als Anweisungen implementiert werden, die durch eines oder mehrere flüchtige oder nichtflüchtige maschinenlesbare (z.B. computerlesbare) Speicherungsmedien getragen werden oder darauf gespeichert werden können, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speicherungsmedium kann als irgendeine Speicherungsvorrichtung, irgendein Mechanismus oder irgendeine andere physikalische Struktur zum Speichern oder Übertragen von Informationen in einer durch eine Maschine lesbaren Form (z.B. ein flüchtiger oder nichtflüchtiger Speicher, eine Medienplatte oder eine andere Medienvorrichtung) ausgeführt sein.
  • In den Zeichnungen können einige Struktur- oder Verfahrensmerkmale in speziellen Anordnungen und/oder Reihenfolgen gezeigt sein. Es wird jedoch darauf hingewiesen, dass solche speziellen Anordnungen und Reihenfolgen möglicherweise nicht erforderlich sind. Vielmehr können bei einigen Ausführungsbeispielen solche Merkmale auf eine unterschiedliche Art und/oder in einer unterschiedlichen Reihenfolge angeordnet sein als in den darstellenden Figuren gezeigt ist. Zusätzlich soll das Umfassen eines Struktur- oder Verfahrensmerkmals in einer bestimmten Figur nicht andeuten, dass ein solches Merkmal in allen Ausführungsbeispielen erforderlich ist, und bei einigen Ausführungsbeispielen ist es möglicherweise nicht umfasst oder ist möglicherweise mit anderen Merkmalen kombiniert.
  • Bezugnehmend nun auf 1 umfasst bei einem darstellenden Ausführungsbeispiel ein System 100 für eine Unterbrechungs-disassoziierte Warteschlangenbildung für Multi-Warteschlangen-Eingabe-/Ausgabe- (I/O) -Vorrichtungen einen Quell-Rechenknoten 102a, der kommunikativ mit einem Ziel-Rechenknoten 102b über ein Netzwerk 104 verbunden ist. Obwohl es darstellend als zwei Rechenknoten 102 aufweisend gezeigt ist, kann das System 100 bei anderen Ausführungsbeispielen mehrere Rechenknoten 102 umfassen. Es wird darauf hingewiesen, dass der Quell-Rechenknoten 102a und der Ziel-Rechenknoten 102b hierin zum Zweck des Bereitstellens von Klarheit für die Beschreibung darstellend bezeichnet und beschrieben sind als einer einer „Quelle“ von Netzwerkverkehr (d.h. der Quell-Rechenknoten 102a) und eines „Ziels“ des Netzwerkverkehrs (d.h. der Ziel-Rechenknoten 102b). Ferner wird darauf hingewiesen, dass bei einigen Ausführungsbeispielen der Quell-Rechenknoten 102a und der Ziel-Rechenknoten in dem gleichen Rechenzentrum oder der gleichen Hoch-Performance-Rechen (HPC; High-Performance Computing) -Umgebung vorliegen können. Anders ausgedrückt, können der Quell-Rechenknoten 102a und der Ziel-Rechenknoten 102b sich in dem gleichen Netzwerk 104 befinden, das über eine oder mehrere drahtgebundene und/oder drahtlose Verbindungen verbunden ist.
  • Bei einem darstellenden Beispiel erzeugt der Quell-Rechenknoten 102a ein Netzwerk-Paket, das zu dem Ziel-Rechenknoten 102b zu übertragende und durch diesen zu verarbeitende Daten umfasst. Der Ziel-Rechenknoten 102b, oder genauer, eine Netzwerkschnittstellensteuerung (NIC) (siehe z.B. die NIC 212 von 2) des Ziel-Rechenknotens 102b, empfängt das Netzwerkpaket, und der Ziel-Rechenknoten 102b identifiziert, wie das Netzwerkpaket zu verarbeiten ist, wie beispielsweise durch Durchführen eines oder mehrerer Verarbeitungsoperation auf zumindest einem Abschnitt der Daten des empfangenen Netzwerkpakets. Eine solche Verarbeitung wird typischerweise durch einen Prozessor (siehe z.B. der eine oder die mehreren Prozessoren 200 von 2) oder genauer einem Prozessorkern (siehe z.B. einen der Prozessorkerne 202 von 2) des Ziel-Rechenknotens 102b durchgeführt.
  • Um eine solche Verarbeitung zu initiieren, ist die NIC ausgebildet, um ein Ereignis oder eine Unterbrechung zu registrieren, die dann durch den anzuwendenden Prozessor empfangen oder abgerufen wird. Es wird darauf hingewiesen, dass, da I/O-Vorrichtungen, wie beispielsweise die NIC schneller geworden sind, Polling ein akzeptables und übliches Verfahren für ein Ereigniswarten geworden ist, besonders da die Wartezeiten aufgrund von schnellerem I/O reduziert werden. Ferner wird darauf hingewiesen, dass ein aktives Warten auf eine Benachrichtigung auf der I/O-Vorrichtung geringeren Overhead und geringere Latenzzeit benötigt, im Gegensatz zu einem Austauschen von Aufgaben, einem Nehmen einer Unterbrechung für eine Benachrichtigung, und einem Aufwecken der Aufgabe und ein Planen, sie erneut laufen zu lassen, wie es bei traditionellen Unterbrechungsströmen gemacht wird.
  • Im Gegensatz zu traditionellen Techniken ist die NIC, wie sie hierin beschrieben ist, jedoch ausgebildet, um die Anzahl von Unterbrechungsvektoren herunterzuskalieren, die durch die NIC oder irgendeine andere I/O-Vorrichtung verwendet werden, indem sie Unterbrechungen dynamisch über mehrere Warteschlangen gemeinsam verwendet. Ferner ist die NIC zusätzlich ausgebildet, um die Unterbrechungssignalisierung zu verwenden, um eine anwendungsgetriggerte I/O-Verarbeitung in dem Kontext der Anwendung zu initiieren, anstatt eine I/O-Verarbeitung im Namen der Anwendung in ihrem Kontext zu initiieren. Dementsprechend ermöglicht die Wahl, dass die gesamte I/O-Verarbeitung immer anwendungsgetriggert ist, es den Warteschlangen, über mehrere Anwendungen zu skalieren, wodurch die Anzahl der Unterbrechungen auf einem System und die Bewegung von Daten innerhalb der gegebenen Plattform reduziert wird.
  • Zu diesem Zweck ist die NIC oder genauer ein Vorrichtungstreiber der NIC ausgebildet, um eine Unterbrechungs-disassoziierte- verzögerte Abrufroutine (d.h. eine verzögerte Abrufroutine, die nicht mit einer Unterbrechung assoziiert ist) zu instanziieren. Bei einem traditionellen Unterbrechungsablauf ist, wenn eine Unterbrechung feuert, ein verzögerter Abruf (deferred call) geplant. Es wird darauf hingewiesen, dass jede Hardware-Unterbrechung einen assoziierten Kontext, oder eine Schnittstelle, aufweist, um Unterbrechungs-Minderungs-Techniken für I/O-Vorrichtungen (z.B. eine neue Anwendungsprogrammierung in einem NAPI-Kontext in Linuxbasierten Betriebssystemen für Netzwerkvorrichtungen) zu nutzen. Dieser Kontext, der mit jeder Hardware-Unterbrechung assoziiert ist, dient als eine Eingabe in eine verzögerte Abrufroutine, wobei ein Netzwerkpaketbeschreiber und Datenverarbeitung auftreten. Der Hardware-Unterbrechungs-Kontext (z.B. eine generische Repräsentation des assoziierten Kontexts, der einem verzögerten Abruf über verschiedene Betriebssysteme bereitgestellt ist) speichert relevante Informationen über sein assoziiertes Ereignis (z.B. die Unterbrechung).
  • Wie vorangehend beschrieben, ist Polling ein akzeptables und übliches Verfahren für ein Ereigniswarten geworden. Zum Beispiel kann eine Anwendung bei einigen Ausführungsbeispielen eine aktive Polling-Technik verwenden, die anwendungsgetriggert (d.h. im Gegensatz zu unterbrechungsgetriggert) ist. Wie hierin beschrieben, kann aktives Polling die gleiche verzögerte Abrufroutine nutzen, wie der Unterbrechungs-disassoziierte verzögerte Abruf. Dementsprechend treiben zwei Quellen die Ausführung der verzögerten Routine an: die Hardware-Unterbrechung und ein Thread, assoziiert mit einer Anwendung (d.h. ein Anwendungs-Thread). Es wird darauf hingewiesen, dass, da die Ursprünge des Hardware-Unterbrechungskontextes auf einer Hardware-Unterbrechungsquelle basieren, genug Zustand für diese Quelle darin eingebettet ist.
  • Zusätzlich, wie hierin beschrieben, wurde der Hardware-Unterbrechungskontext verbessert, um zusätzlichen Zustand für diese Instanzen zu umfassen, bei denen ein Anwendungs-Thread die Quelle ist. Genauer, genauso wie Unterbrechungs-Vektor-Informationen mit einen Hardware-Unterbrechungskontext für die Hardware-Unterbrechungsnutzung, die bei existierenden Techniken verwendet wird, eingebettet sind, kann ein Abrufen von Anwendungs-Thread-Informationen für diese Instanzen eingebettet sein, bei denen die verzögerte Abrufsroutine von einer Anwendung in Anspruch genommen wird, die hierin als eine Unterbrechungs-disassoziierte- verzögerte Abrufsroutine bezeichnet wird. Es wird darauf hingewiesen, dass, obwohl die hierin beschriebene Funktionalität primär in Richtung einer NIC ausgerichtet ist, eine solche Funktionalität relativ zu irgendeiner Multi-Warteschlangen-I/O-Vorrichtung ausgeführt werden kann.
  • Die Rechenknoten 102 können als irgendeine Art von Rechen- oder Computervorrichtung ausgeführt sein, die in der Lage sind, die hierin beschriebenen Funktionen auszuführen, umfassend, ohne Einschränkung, einen Computer, einen Server (z.B. alleinstehend, Rackbefestigt, Blade, etc.), einen Schlitten (z.B. einen Rechenschlitten, einen Beschleunigerschlitten, einen Speicherungsschlitten, einen Speicherschlitten, etc.), eine verbesserte oder smarte NIC/HFI, eine Netzwerkanwendung (z.B. physisch oder virtuell), einen Router, Schalter (z.B. einen disaggregierten Schalter, einen Rack-befestigten Schalter, einen alleinstehenden Schalter, einen vollständig gemanagten Schalter, einen teilweise gemanagten Schalter, einen Vollduplex-Schalter und/oder einen Schalter mit aktiviertem Halbduplex-Kommunikationsmodus), eine Web-Anwendung, ein verteiltes Rechensystem, ein prozessorbasiertes System und/oder ein Multiprozessorsystem.
  • Wie in 2 gezeigt ist, ist ein darstellender Rechenknoten 102 (z.B. ein darstellender des Quell-Rechenknotens 102a, des Ziel-Rechenknotens 102b etc.) gezeigt, der einen oder mehrere Prozessoren 200, einen Speicher 204, ein I/O-Teilsystem 206, eine oder mehrere Datenspeicherungsvorrichtungen 208, eine Kommunikationsschaltungsanordnung 210 und bei einigen Ausführungsbeispielen eine oder mehrere Peripherievorrichtungen 214 umfasst. Es wird darauf hingewiesen, dass der Rechenknoten 102 bei anderen Ausführungsbeispielen andere oder zusätzliche Komponenten umfassen kann, wie beispielsweise diese, die üblicherweise in einer typischen Rechenvorrichtung (z.B. verschiedene Eingabe-/Ausgabe-Vorrichtungen und/oder andere Komponenten) zu finden sind. Zusätzlich können bei einigen Ausführungsbeispielen eine oder mehrere der darstellenden Komponenten in eine andere Komponente eingelagert sein oder auf andere Weise einen Abschnitt einer selben bilden.
  • Der eine oder die mehreren Prozessoren können als irgendeine Art von Vorrichtung oder Sammlung von Vorrichtungen ausgeführt sein, die in der Lage ist/sind, die verschiedenen Rechenfunktionen wie hierin beschrieben auszuführen. Bei einigen Ausführungsbeispielen kann der eine oder können die mehreren Prozessoren 200 als ein oder mehrere Multi-Kernprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), Mikrocontroller oder ein oder mehrere andere Prozessoren oder Verarbeitungs-/Steuerungsschaltungen ausgeführt sein. Bei einigen Ausführungsbeispielen kann der eine oder können die mehreren Prozessoren 200 als eine integrierte Schaltung, ein eingebettetes System, ein feldprogrammierbares Array (FPGA; field-programmable-array), ein System-auf-einem-Chip (SOC; system-on-a-chip) eine anwendungsspezifische integrierte Schaltung (ASIC; application specific integrated circuit), neu-konfigurierbare Hardware oder Hardwareschaltungsanordnung oder andere spezialisierte Hardware ausgeführt sein, solche umfassen oder anderweitig damit gekoppelt sein, um eine Performance der hierin beschriebenen Funktionen zu ermöglichen.
  • Der eine oder die mehreren darstellenden Prozessoren 200 umfassen mehrere Prozessorkerne 202 (z.B. zwei Prozessorkerne, vier Prozessorkerne, acht Prozessorkerne, sechzehn Prozessorkerne etc.). Die darstellenden Prozessorkerne umfassen einen ersten Prozessorkern 202, der als Kern (1) 202a bezeichnet wird, einen zweiten Prozessorkern 202, der als Kern (2) 202b bezeichnet wird, und einen dritten Prozessorkern 202, der als Kern (N) 202c bezeichnet wird (z.B. wobei der Kern (N) 202c der „N-te“ Prozessorkern 202 ist und „N“ eine positive Ganzzahl ist). Jeder der Prozessorkerne 202 kann als eine unabhängige logische Ausführungseinheit ausgeführt sein, die in der Lage ist, programmierte Anweisungen auszuführen. Es wird darauf hingewiesen, dass, bei einigen Ausführungsbeispielen, der Rechenknoten 102 (z.B. bei Supercomputer-Ausführungsbeispielen) tausende von Prozessorkernen 202 umfassen kann. Jeder des einen oder der mehreren Prozessoren 200 kann mit einem physischen Verbinder oder Buchse auf einer Hauptplatine (nicht gezeigt) des Rechenknotens 102 verbunden sein, der ausgebildet ist, um ein einzelnes physisches Prozessorpackage (d. h. eine Multi-Kern- physische integrierte Schaltung) aufzunehmen. Es wird darauf hingewiesen, dass, obwohl nicht darstellend gezeigt, jeder der Prozessorkerne 202 kommunikativ mit zumindest einem Abschnitt eines Cache-Speichers gekoppelt sein kann und funktionale Einheiten verwendbar sind, um unabhängig Programme, Operationen, Threads, etc. durchzuführen.
  • Der Speicher 204 kann als irgendeine Art von flüchtigem oder nichtflüchtigem Speicher oder Datenspeicherung ausgebildet sein, der/die in der Lage ist, die hierin beschriebenen Funktionen auszuführen. Im Betrieb kann der Speicher 204 verschiedene Daten und Software speichern, die während eines Betriebs des Rechenknotens 102 verwendet werden, wie beispielsweise Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Es wird darauf hingewiesen, dass der Speicher 204 als ein Hauptspeicher oder ein primärer Speicher bezeichnet werden kann. Es versteht sich, dass ein flüchtiger Speicher ein Speicherungsmedium sein kann, das Leistung benötigt, um den Zustand von durch das Medium gespeicherten Daten aufrechtzuerhalten. Nicht einschränkende Beispiele für flüchtigen Speicher können verschiedene Typen von Direktzugriffsspeicher (RAM; random access memory) umfassen, wie beispielsweise dynamischen Direktzugriffsspeicher (DRAM; dynamic random access memory) oder statischen Direktzugriffsspeicher (SRAM; static random access memory).
  • Ein bestimmter Typ von DRAM, der in einem Speichermodul verwendet werden kann, ist synchroner dynamischer Direktzugriffsspeicher (SDRAM; synchronous dynamic random access memory). Bei bestimmten Ausführungsbeispielen kann der DRAM einer Speicherkomponente einem durch JEDEC veröffentlichten Standard entsprechen, wie beispielsweise JESD79F für DDR SDRAM, JESD79-2F für DDR2 SDRAM, JESD79-3F für DDR3 SDRAM, JESD79-4A für DDR4 SDRAM, JESD209 für Low Power DDR (LPDDR), JESD209-2 für LPDDR2, JESD209-3 für LPDDR3 und JESD209-4 für LPDDR4 (diese Standards sind verfügbar unter www.jedec.org). Solche Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden und Kommunikationsschnittstellen der Speicherungsvorrichtungen, die solche Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • Bei einem Ausführungsbeispiel ist der Speicher 204 eine blockadressierbare Speichervorrichtung, wie beispielsweise diese, die auf NAND oder NOR-Technologien basieren. Eine Speichervorrichtung kann auch eine dreidimensionale Kreuzpunkt-Speichervorrichtung (z.B. Intel 3D XPoint™ -Speicher), oder andere byteadressierbare Write-in-Place- nichtflüchtige Speichervorrichtungen umfassen. Bei einem Ausführungsbeispiel kann die Speichervorrichtung Speichervorrichtungen sein oder umfassen, die Chalkogenidglas, Multi-Schwellenpegel-NAND-Flash-Speicher, NOR-Flash-Speicher, Single- oder Multi-Level-Phasenwechselspeicher (PCM; Phase Change Memory), einen resistiven Speicher, Nanodraht-Speicher, ferroelektrischen Transistor-Direktzugriffsspeicher (FeTRAM; ferroelectric transistor random access memory), antiferroelektrischen Speicher, magnetoresistiven Direktzugriffsspeicher (MRAM; magnetoresistive random access memory), der Memristor-Technologie einbringt, resistiven Speicher, umfassend die Metalloxidbasis, die Sauerstoffleerstellenbasis und den Leitfähige-Brücken-Direktzugriffsspeicher (CB-RAM; conductive bridge Random Access Memory), oder Spin-Transfer-Torque- (STT; spin transfer torque) MRAM, eine Spintronik-Magnetübergangsspeicher-basierte Vorrichtung, eine Magnet-Tunnelübergang (MTJ; magnetic tunneling junction) -basierte Vorrichtung, eine DW- (Domain Wall-) und Spin-Bahn-Transfer-(SOT-; Spin Orbit Transfer) -basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination von irgendwelchen aus den vorstehend Genannten oder einem anderen Speicher verwenden. Die Speichervorrichtung kann sich auf den Die selbst und/oder auf ein gepackagtes Speicherprodukt beziehen.
  • Bei einigen Ausführungsbeispielen, kann 3D-Kreuzpunkt-Speicher (z.B. Intel 3D XPoint™ Speicher) eine transistorlose, stapelbare Kreuzpunkt (cross point) -Architektur umfassen, bei der Speicherzellen an dem Schnittpunkt von Wortleitungen und Bitleitungen sitzen und individuell adressierbar sind, und bei der Bitspeicherung auf einer Veränderung des Bulkwiderstands basiert. Bei einigen Ausführungsbeispielen können alle oder ein Abschnitt des Speichers 204 in den Prozessor 200 integriert sein. In Betrieb kann der Speicher 204 verschiedene Software und Daten speichern, die während des Betriebs verwendet werden, wie beispielsweise Arbeitslastdaten, Hardwarewarteschlange-Manager-Daten, Migrationsbedingungsdaten, Anwendungen, Programme, Bibliotheken und Treiber. Bei dem darstellenden Ausführungsbeispiel ist eine Anzahl von Warteschlangen 205 in dem Speicher 204 definiert, um Paketdaten, die durch die Kommunikationsschaltungsanordnung 210 (z.B. durch die nachfolgend beschriebene Netzwerkschnittstellensteuerung 212) empfangen werden, zu speichern.
  • Jeder des einen oder der mehreren Prozessoren 200 und des Speichers 204 ist kommunikativ mit anderen Komponenten des Rechenknotens 102 via das I/O-Teilsystem 206 gekoppelt, das als Schaltungsanordnung und/oder Komponenten ausgebildet sein kann, um Eingabe-/Ausgabe-Operationen mit dem einen oder den mehreren Prozessoren 200, dem Speicher 204 und anderen Komponenten des Rechenknotens 102 zu ermöglichen. Zum Beispiel kann das I/O-Teilsystem 206 als Speichersteuerungs-Hubs, Eingabe/Ausgabe-Steuerungs-Hubs, Integrierter-Sensor-Hubs, Firmware-Vorrichtungen, Kommunikationslinks (z. B. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Lichtführungen, Gedruckte-Schaltungsplatinen-Leiterbahnen etc.) und/oder andere Komponenten und Teilsysteme, um die Eingabe-/Ausgabeoperationen zu ermöglichen, ausgeführt sein oder diese anderweitig umfassen. Bei einigen Ausführungsbeispielen kann das I/O-Teilsystem 206 einen Abschnitt einer SoC bilden und zusammen mit dem einen oder den mehreren Prozessoren 200, dem Speicher 204 und anderen Komponenten des Rechenknotens 102, auf einem einzelnen Integrierte-Schaltungs (IC) -Chip eingebracht sein.
  • Die eine oder die mehreren Datenspeicherungsvorrichtungen 208 können als irgendeine Art von Speicherungsvorrichtung(en) ausgeführt sein, die für kurzfristige oder langfristige Speicherung von Daten ausgebildet sind, wie beispielsweise Speichervorrichtungen und -Schaltungen, Speicherkarten, Festplattenlaufwerke, Solid-State-Laufwerke oder andere Datenspeicherungsvorrichtungen. Jede Datenspeicherungsvorrichtung 208 kann eine Systemunterteilung umfassen, die Daten und Firmwarecode für die Datenspeicherungsvorrichtung 208 speichert. Jede Datenspeicherungsvorrichtung 208 kann auch eine Betriebssystemunterteilung umfassen, die Datendateien und Ausführbare für ein Betriebssystem speichert.
  • Die Kommunikationsschaltungsanordnung 210 kann als irgendeine Kommunikationsschaltung, Vorrichtung oder Sammlung davon ausgeführt sein, die in der Lage ist, Kommunikationen zwischen dem Rechenknoten 102 und anderen Rechenvorrichtungen zu ermöglichen, sowie als irgendwelche Netzwerkkommunikation-ermöglichenden Vorrichtungen, wie beispielsweise ein Zugriffspunkt, ein Schalter, ein Router, etc., um Kommunikation über das Netzwerk 104 zu erlauben. Dementsprechend kann die Kommunikationsschaltungsanordnung 210 ausgebildet sein, um irgendeine oder mehrere Kommunikationstechnologien (z.B. drahtlose oder verdrahtete Kommunikationstechnologien) und assoziierte Protokolle (z.B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX, LTE, 5G, etc.) zu verwenden, um eine solche Kommunikation zu bewirken. Es wird darauf hingewiesen, dass die Kommunikationsschaltungsanordnung 210 bei einigen Ausführungsbeispielen spezialisierte Schaltungsanordnungen, Hardware oder eine Kombination davon aufweisen kann, um Pipeline-Logik (z.B. Hardware-Algorithmen) zum Ausführen der hierin beschriebenen Funktionen auszuführen, umfassend ein Verarbeiten von Netzwerk-Paketen (z.B. Parsen empfangener Netzwerk-Pakete, Bestimmen von Ziel-Rechenknoten für jedes empfangene Netzwerk-Paket, Weiterleiten der Netzwerkpakete an eine bestimmte Puffer-Warteschlange eines jeweiligen Host-Puffers des Rechenknotens 102, etc.), ein Ausführen von Rechenfunktionen, Speichern von Daten, etc.
  • Bei einigen Ausführungsbeispielen kann ein Ausführen von einer oder mehreren der Funktionen der Kommunikationsschaltungsanordnung 210 wie hierin beschrieben durch eine spezialisierte Schaltungsanordnung, Hardware oder Kombination davon der Kommunikationsschaltungsanordnung 210 ausgeführt werden, die als ein SoC ausgeführt sein kann oder anderweitig einen Abschnitt eines SoC des Rechenknotens 102 (z.B. eingebracht auf einen einzelnen Integrierte-Schaltungs-Chip, zusammen mit einem des einen oder der mehreren Prozessoren 200, des Speichers 204 und/oder anderen Komponenten des Rechenknotens 102) bilden kann. Alternativ kann in einigen Ausführungsbeispielen die spezialisierte Schaltungsanordnung, Hardware oder Kombination davon als eine oder mehrere diskrete Verarbeitungseinheiten des Rechenknotens 102 ausgeführt sein, von denen jede in der Lage sein kann, eine oder mehrere der hierin beschriebenen Funktionen auszuführen.
  • Die darstellende Kommunikationsschaltungsanordnung 210 umfasst die NIC 212, die als eine oder mehrere Add-in-Platinen, Tochterkarten, Netzwerkschnittstellenkarten, Steuerungschips, Chipsätze oder andere Vorrichtungen ausgeführt sein kann, die durch den Rechenknoten 102 verwendet werden können, um sich mit einer anderen Rechenvorrichtung (z.B. einem anderen Rechenknoten 102) zu verbinden. Bei einigen Ausführungsbeispielen kann die NIC 212 als Teil eines SoC, das einen oder mehrere Prozessoren umfasst, ausgeführt sein, oder auf einem Multi-Chip-Package, das auch einen oder mehrere Prozessoren umfasst, umfasst sein. Obwohl dies nicht darstellend gezeigt ist, versteht sich, dass die NIC 212 einen oder mehrere physische Ports zum Ermöglichen des Eintritts und Austritts von Netzwerkverkehr zu/von der NIC 212 aufweist. Zusätzlich kann die NIC 212 bei einigen Ausführungsbeispielen einen oder mehrere Offloads/Beschleuniger umfassen, wie beispielsweise eine Direktspeicherzugriffs (DMA; Direct Memory Access) -Maschine. Zusätzlich oder alternativ kann die NIC 212 bei einigen Ausführungsbeispielen einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Speicher (nicht gezeigt) umfassen, die beide lokal zu der NIC 212 sind. Bei solchen Ausführungsbeispielen kann der lokale Prozessor der NIC 212 in der Lage sein, eine oder mehrere der Funktionen eines hierin beschriebenen Prozessors 200 auszuführen. Zusätzlich oder alternativ kann bei solchen Ausführungsbeispielen der lokale Speicher der NIC 212 in eine oder mehrere Komponenten des Rechenknotens 102 auf der Platinenebene, Buchsenebene, Chip-Ebene und/oder anderen Ebenen integriert sein.
  • Die eine oder die mehreren Peripherievorrichtungen 214 können irgendeine Art von Vorrichtung umfassen, die verwendbar ist, um Informationen in den Rechenknoten 102 einzugeben und/oder Informationen von dem Rechenknoten 102 zu empfangen. Die Peripherievorrichtungen 214 können als irgendeine Hilfsvorrichtung ausgeführt sein, die verwendbar ist, um Informationen in den Rechenknoten 102 einzugeben, wie beispielsweise eine Tastatur, eine Maus, ein Mikrofon, ein Strichcodelesegerät, ein Bildscanner, etc. oder Informationen aus dem Rechenknoten 102 auszugeben, wie beispielsweise eine Anzeige, ein Lautsprecher, eine Graphikschaltungsanordnung, ein Drucker, ein Projektor etc. Es wird darauf hingewiesen, dass bei einigen Ausführungsbeispielen eine oder mehrere der Peripherievorrichtungen 214 sowohl als eine Eingabevorrichtung als auch als eine Ausgabevorrichtung (z.B. eine Touchscreen-Anzeige, einen Digitizer oben auf einem Anzeige-Bildschirm, etc.) funktionieren können. Ferner wird darauf hingewiesen, dass die Arten von Peripherievorrichtungen 214, die mit dem Rechenknoten 102 verbunden sind, abhängen können von, zum Beispiel, der Art und/oder der vorgesehenen Verwendung des Rechenknotens 102. Zusätzlich oder alternativ können die Peripherievorrichtungen 214 bei einigen Ausführungsbeispielen einen oder mehrere Ports umfassen, wie beispielsweise einen USB-Port, zum Verbinden von externen Peripherievorrichtungen mit dem Rechenknoten 102. Bei einigen Ausführungsbeispielen kann die eine oder können die mehreren Peripherievorrichtungen 214 einen oder mehrere Sensoren (z.B. einen Temperatursensor, einen Lüftersensor etc.) umfassen.
  • Bezugnehmend wiederum auf 1 kann das Netzwerk 104 als irgendeine Art von verdrahtetem oder drahtlosem Kommunikationsnetzwerk ausgeführt sein, umfassend aber nicht beschränkt auf ein drahtloses lokales Netzwerk (WLAN; wireless local area network), ein drahtloses persönliches Netzwerk (WPAN; wireless personal area network), ein Edge-Netzwerk (z.B. ein Mehrfach-Zugriffs-Edge-Rechen (MEC, multi-access edge computing) -Netzwerk), ein Fog-Netzwerk, ein zelluläres Netzwerk (z.B. Global System for Mobile Communications (GSM), Long-Term Evolution (LTE), 5G, etc.), ein Telefonnetzwerk, ein Digital Subscriber Line (DSL) -Netzwerk, ein Kabelnetzwerk, ein lokales Netzwerk (LAN), ein Weitbereichsnetzwerk (WAN), ein globales Netzwerk (z.B. das Internet) oder irgendeine Kombination davon. Es wird darauf hingewiesen, dass, bei solchen Ausführungsbeispielen, das Netzwerk 104 als ein zentralisiertes Netzwerk dienen kann und bei einigen Ausführungsbeispielen kommunikativ mit einem anderen Netzwerk (z.B. dem Internet) gekoppelt sein kann. Dementsprechend kann das Netzwerk 104 eine Vielzahl von anderen virtuellen und/oder physische Netzwerk-Rechenvorrichtungen (z.B. Router, Schalter, Netzwerk-Hubs, Server, Speicherungsvorrichtungen, Rechenvorrichtungen, etc.) umfassen, wie sie erforderlich sind, um Kommunikation zwischen dem Quell-Rechenknoten 102a und dem Ziel-Rechenknoten 102b zu ermöglichen, die zur Wahrung der Klarheit der Beschreibung nicht gezeigt sind.
  • Bezug nehmend nun auf 3 kann der Rechenschlitten 102 während eines Betriebs eine Umgebung 300 einrichten. Die darstellende Umgebung 300 umfasst einen Netzwerkverkehrseintritts-/-austrittsmanager 308, einen I/O-Warteschlangenmanager 310, einen Anwendungs-Thread-Manager 312 und einen Warte-Modus-Manager 314. Die verschiedenen Komponenten der Umgebung 300 können als Hardware, Firmware, Software oder eine Kombination davon ausgeführt sein. Als solche können bei einigen Ausführungsbeispielen eine oder mehrere der Komponenten der Umgebung 300 als Schaltungsanordnung oder eine Sammlung von elektrischen Vorrichtungen (z.B. Netzwerkverkehrseintritts-/- austrittsmanagementschaltungsanordnung 308, I/O-Warteschlangen-Managementschaltungsanordnung 310, Anwendungs-Thread-Managementschaltungsanordnung 312 und Warte-Modus-Managementschaltungsanordnung 314, etc.) ausgeführt sein. Es wird darauf hingewiesen, dass bei solchen Ausführungsbeispielen eine oder mehrere der Netzwerkverkehrseintritts-/-austrittsmanagementschaltungsanordnung 308, der I/O-Warteschlangen-Managementschaltungsanordnung 310, der Anwendungs-Thread-Managementschaltungsanordnung 312 und der Warte-Modus-Managementschaltungsanordnung 314 einen Abschnitt von einem oder mehreren der Prozessoren 200, des Speichers 204, der Kommunikationsschaltungsanordnung 210, des I/O-Teilsystems 206 und/oder anderen Komponenten des Rechenknotens 102 bilden können.
  • Ferner wird darauf hingewiesen, dass bei anderen Ausführungsbeispielen eine oder mehrere der Funktionen, die hierin als durch eine bestimmte Komponente des Rechenknotens 102 ausgeführt beschrieben sind, zumindest teilweise durch eine oder mehrere andere Komponenten des Rechenknotens 102 ausgeführt werden können, wie beispielsweise den einen oder die mehreren Prozessoren 200, das I/O-Teilsystem 206, die Kommunikationsschaltungsanordnung 210, eine ASIC, eine programmierbare Schaltung, wie beispielsweise ein FPGA, und/oder andere Komponenten des Rechenknotens 102. Ferner wird darauf hingewiesen, dass assoziierte Anweisungen in dem Speicher 204, der einen oder den mehreren Datenspeicherungsvorrichtungen 208 und/oder einem anderen Datenspeicherungsort gespeichert werden können, die durch einen der Prozessoren 200 und/oder einen anderen Rechenprozessor des Rechenknotens 102 ausgeführt werden können.
  • Ferner können bei einigen Ausführungsbeispielen eine oder mehrere der darstellenden Komponenten einen Abschnitt einer anderen Komponente bilden, und/oder eine oder mehrere der darstellenden Komponenten können unabhängig voneinander sein. Ferner können bei einigen Ausführungsbeispielen eine oder mehrere der Komponenten der Umgebung 300 als virtualisierte Hardwarekomponenten oder emulierte Architektur ausgeführt sein, die durch die NIC 212 , den einen oder die mehreren Prozessoren 200 oder andere Komponenten des Rechenknotens 102 etabliert und aufrecht erhalten werden können. Es wird darauf hingewiesen, dass der Rechenknoten 102 andere Komponenten, Teilkomponenten, Module, Teilmodule, Logik, Teillogik und/oder Bauelemente, die gemeinhin in einer Rechenvorrichtung zu finden sind, umfassen kann, die in 2 der Klarheit der Beschreibung halber nicht dargestellt sind.
  • Bei dem darstellenden Ausführungsbeispiel umfasst die Umgebung 300 Anwendungs-Thread-Daten 302, Unterbrechungsdaten 304 und I/O-Warteschlangendaten 306, auf die alle durch verschiedene Komponenten und/oder Teilkomponenten des Rechenknotens 102 zugegriffen werden kann. Zusätzlich wird darauf hingewiesen, dass, bei einigen Ausführungsbeispielen, die Daten, die in jedem der Anwendungs-Thread-Daten 302, der Unterbrechungsdaten 304 und der I/O-Warteschlagendaten 306 gespeichert oder anderweitig durch diese repräsentiert sind, sich möglicherweise nicht relativ zu einander gegenseitig ausschließen. Zum Beispiel können, bei einigen Implementierungen, die Daten, die in den Anwendungs-Thread-Daten 302 gespeichert sind, auch als ein Abschnitt der Unterbrechungsdaten und/oder der I/O-Warteschlangendaten 306 gespeichert sein. Somit, obwohl die verschiedenen Daten, die durch den Rechenknoten 102 verwendet werden, hierin als besonders diskrete Daten beschrieben sind, können solche Daten kombiniert, aggregiert werden und/oder anderweitig Abschnitte eines einzelnen oder mehrerer Datensätze, umfassend duplikative Kopien, bilden, bei anderen Ausführungsbeispielen. Die I/O-Warteschlangendaten 306 können in den Warteschlangen 205 des Speichers 204 gespeichert sein.
  • Der Netzwerkverkehrseintritts-/-austrittsmanager 308, der als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon, wie vorangehend erörtert wurde, ausgeführt sein kann, ist ausgebildet, um eingehenden Netzwerkverkehr zum empfangen und ausgehenden zu routen/senden. Zu diesem Zweck ist der Netzwerkverkehrseintritts-/-austrittsmanager 308 ausgebildet, um eingehende/ausgehende Netzwerkkommunikationen (z.B. Netzwerkverkehr, Netzwerkpakete, Netzwerkflüsse, etc.) zu und von dem Rechenknoten 102 zu ermöglichen. Zum Beispiel ist der Netzwerkverkehrseintritts-/-austrittsmanager 308 ausgebildet, um Verbindungen zu physischen und virtuellen Netzwerkports (d.h. virtuellen Netzwerkschnittstellen) des Rechenknotens 102 (z.B. über die Kommunikationsschaltungsanordnung 210) sowie den mit diesen assoziierten Eintritts-/Austritts-Puffern/-Warteschlangen, zu managen (z.B. erzeugen, modifizieren, löschen).
  • Der I/O-Warteschlangenmanager 310, der als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon ausgeführt sein kann, wie vorangehend erörtert wurde, ist ausgebildet, um die Warteschlangen zu managen, die mit den I/O-Vorrichtungen des Rechenknotens 102 (z.B. der NIC 212 von 2) assoziiert sind. Zusätzlich ist der I/O-Warteschlangenmanager 310 ausgebildet, um die Unterbrechungen abzubilden, die dynamisch über die mehreren Warteschlangen, die durch den I/O-Warteschlangenmanager 310 gemanagt werden, gemeinschaftlich verwendet werden. Zu diesem Zweck ist der I/O-Warteschlangenmanager 310 ausgebildet, um eine I/O-Vorrichtungswarteschlange mit einem eindeutigen Unterbrechungs-disassoziierten Identifizierer assoziieren, der einem Kontext einer verzögerten Abrufsroutine entspricht. Es wird darauf hingewiesen, dass jeder Treiber der verschiedenen I/O-Vorrichtungen des Rechenknotens 102 ausgebildet ist, um eine verzögerte Abrufsroutine zu instanziieren, die nicht mit einer Unterbrechung assoziiert ist.
  • Bezugnehmend nun auf 4 ist eine darstellende Repräsentation eines beispielhaften Satzes von Interessenfeldern 400 innerhalb eines Kontexts einer verzögerten Abrufsroutine gezeigt. Wie vorangehend beschrieben, ist der erhaltene Kontext der verzögerten Abrufsroutine triggeragnostisch, da der Kontext mit dem eindeutigen Unterbrechungs-disassoziierten- verzögerten Abrufsidentifizierer assoziiert ist. Somit kann Software, die auf dem Rechenknoten 102 ausgeführt wird, über den I/O-Warteschlangenmanager 310 eine I/O-Warteschlange mit dem eindeutigen Unterbrechungs-disassoziierten verzögerten Abrufsidentifizierer assoziieren. Anders ausgedrückt erlaubt der eindeutige Unterbrechungs-disassoziierte verzögerte Abrufsidentifizierer es der I/O-Vorrichtungswarteschlange, an eine Anwendung (z.B. unter Verwendung vorliegender Techniken) gebunden zu sein.
  • Dementsprechend wird eine Sammlung von Warteschlangen erstellt, wobei die Mehrheit der Warteschlangen möglicherweise nicht eine assoziierte Unterbrechung aufweist, was Unterbrechungs-assoziierte Ressourcen reduzieren kann. Zusätzlich wird auch eine separate Warteschlangen-agnostische, Unterbrechungs-assoziierte Abrufsroutine erstellt, zu der Warteschlangen dynamisch hinzugefügt und entfernt werden können. Wie darstellend gezeigt ist, umfasst der beispielhafte Satz von verzögerten Abrufskontext-Interessenfeldern 400 ein Unterbrechungs-disassoziiertes verzögertes Abrufsidentifizierer-Interessenfeld 402, das eine I/O-Warteschlange an eine Software-Anwendung bindet, ein Assoziierter-Anwendungs-Thread-Identifizierer-Interessenfeld 404, das einen Anwendungs-Thread anzeigt, der mit dem verzögerten Abrufskontext assoziiert ist, und ein Unterbrechungs-Interessenfeld 406, das die Unterbrechung anzeigt, die mit dem verzögerten Abrufskontext assoziiert ist. Natürlich können bei einigen Ausführungsbeispielen die verzögerten Abrufskontext-Interessenfelder 400 zusätzliche Felder 408 umfassen, die in 4 durch entsprechende Ellipsen angezeigt sind.
  • Wiederum Bezug nehmend auf 3, ist der Anwendungs-Thread-Manager 312, der als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon ausgeführt sein kann, wie vorangehend erörtert wurde, ausgebildet, um die Anwendungs-Threads zu managen, die mit den Software-Anwendungen assoziiert sind, die auf dem Rechenknoten 102 ausgeführt werden. Der Warte-Modus-Manager 314, der als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon ausgeführt sein kann, wie vorangehend erörtert wurde, ist ausgebildet, um den Warte-Modus zu schalten, der mit einem gegebenen Anwendungs-Thread zwischen einem Polling-Ereignis-Warte-Modus und einem Unterbrechungs-Ereignis-Warte-Modus assoziiert ist.
  • Während des stationären Betriebs können Unterbrechungs-disassoziierte Warteschlangen durch einen Anwendungs-Thread gepollt werden, der mit einem Polling von Daten beschäftigt ist. Wenn ein Polling beendet wird, wird die Unterbrechungs-disassoziierte Warteschlange stillgelegt und ihr Kontext wird mit dem aktuellen Anwendungs-Thread-Identifizierer aktualisiert, der das Polling initiiert hat. Es wird darauf hingewiesen, dass es anwendungsabhängig ist, wann und wie das Polling stoppt und die Unterbrechungs-disassoziierte Warteschlange stillgelegt wird. Zum Beispiel könnte der Polling-Stopp von einer Anwendung (z.B. über den Anwendungs-Thread-Manager 312) getriggert werden, hergeleitet durch den Stapel, basierend auf bestimmten Steuer-Verkehrsstrukturen, oder als ein Ergebnis eines Polling-Timeout. Die stillgelegte Unterbrechungs-disassoziierte Warteschlange kann dann mit einer Unterbrechung (z.B. durch den I/O-Warteschlangenmanager 310) assoziiert werden. Dementsprechend wird ein Warte-Modus, der mit dem Anwendungs-Thread assoziiert ist, von in dem Polling-Ereignis-Warte-Modus in einen Unterbrechungs-Ereignis-Warte-Modus (z.B. durch den Warte-Modus-Manager 314) geschaltet. Es wird darauf hingewiesen, dass, sobald sie mit einer Unterbrechung assoziiert ist, irgendeine neue Aktivität auf der Unterbrechungs-disassoziierten Warteschlange verursachen kann, dass eine Unterbrechung erzeugt wird.
  • Bezug nehmend nun auf 5 und 6 kann ein Verfahren 500 zum Managen von Unterbrechungs-disassoziierten Warteschlangen für Multi-Warteschlangen-I/O-Vorrichtungen durch einen Rechenknoten (z.B. einen der Rechenknoten 102 von 1) ausgeführt werden. Das Verfahren 500 beginnt bei Block 502, bei dem eine Anwendung, die momentan auf dem Rechenknoten 102 (z.B. auf einem oder mehreren Kernen 202) ausgeführt wird, über einen Anwendungs-Thread, der mit der Anwendung assoziiert ist, eine Unterbrechungs-disassoziierte Warteschlange (z.B. eine oder mehrere der Warteschlangen 205) pollt. Die bestimmte Warteschlange, die gepollt wird, kann auf verschiedenen Kriterien basieren, wie beispielsweise Sicherheitsrichtlinien des Rechenknotens. Zusätzlich oder alternativ können die Warteschlangen zu der Anwendung (z.B. jeder Thread kann unter Verwendung eines 1:1 -Abbildungsschemas zu einer bestimmten Anwendung dediziert werden) zugewiesen oder dediziert werden. Unabhängig davon bestimmt der Rechenknoten 102 bei Block 504, ob ein Netzwerkpaket in der Warteschlange angekommen ist (z.B. über die NIC 212 von 2). Falls dies der Fall ist, fährt das Verfahren 500 zu Block 506 fort, ansonsten fährt das Verfahren zu Block 512 fort, wie nachfolgend erörtert wird.
  • Bei Block 506 ruft der Rechenknoten 102 das Paket von der assoziierten Warteschlange ab und liefert das Paket an die anfordernde Anwendung, die mit dem Anwendungs-Thread (z.B. basierend auf dem Anwendungs-Thread-Identifizierer) assoziiert ist, und die Anwendung kann bei Block 508 auf das Paket reagieren. Anschließend aktualisiert der Rechenknoten 102 bei Block 510 einen Kontext, assoziiert mit der Unterbrechungs-disassoziierten Warteschlange, mit einem Identifizierer des Anwendungs-Threads (d.h. einem Anwendungs-Thread-Identifizierer).
  • Bei Block 512 bestimmt der Rechenknoten 102, ob er zu der Unterbrechungs-Ereignis-Modus-Polling schaltet. Der Rechenknoten 102 kann bestimmen, zu dem Unterbrechungs-Ereignis-Modus-Polling zu schalten, ansprechend auf eine Detektierung oder Bestimmung eines oder mehrerer Übergangs-Ereignisse. Zum Beispiel kann der Rechenknoten 102 bestimmen zu dem Unterbrechungs-Ereignis-Modus-Polling zu schalten, ansprechend auf eine Bestimmung oder Detektierung, dass diese Anwendung einschläft. Zusätzlich, falls die Anwendung bei einigen Ausführungsbeispielen nicht innerhalb einer erwarteten Zeitperiode antwortet, kann der Rechenknoten zu dem Unterbrechungs-Ereignis-Modus-Polling schalten In solchen Fällen kann eine erzeugte Unterbrechung dem entsprechenden Betriebssystem-Zeitplaner einen Hinweis bezüglich der nicht antwortenden Anwendung bereitstellen, was einen Aufbau von assoziierten Warteschlangen verursachen kann.
  • Falls der Rechenknoten 102 bestimmt, nicht zu dem Unterbrechungs-Ereignis-Warte-Modus zu schalten, springt das Verfahren 500 zurück zu Block 502, bei dem eine Anwendung, die derzeit auf dem Rechenknoten 102 ausgeführt wird, über einen Anwendungs-Thread, der mit der Anwendung assoziiert ist, eine Unterbrechungs-disassoziierte Warteschlange pollt. Falls der Rechenknoten 102 jedoch bestimmt, zu dem Unterbrechungs-Ereignis-Warte-Modus zu schalten, schaltet der Rechenknoten 102 den Anwendungs-Thread von einem Polling-Ereignis-Warte-Modus zu einem Unterbrechungs-Ereignis-Warte-Modus bei Block 514. Zu diesem Zweck kann der Rechenknoten 102 bei Block 516 die Unterbrechungs-disassoziierte Warteschlange mit einer Unterbrechung assoziieren. Zusätzlich kann der Rechenknoten 102 bei Block 518 den Anwendungs-Thread-Identifizierer zu einer Liste aufweckbarer Anwendungs-Threads hinzufügen.
  • Bei Block 520 von 6 bestimmt der Rechenknoten 102, ob eine Unterbrechung empfangen wurde (z.B. eine Unterbrechung, die durch die NIC 212 erzeugt wurde, wie nachfolgend Bezug nehmend auf 7 beschrieben wird). Falls dies der Fall ist, fährt das Verfahren 500 fort zu Block 522, bei dem der Rechenknoten 102 einen schlafenden Anwendungs-Thread von der Liste von aufweckbaren Threads identifiziert und aufweckt. Zu diesem Zweck identifiziert der Rechenknoten 102 bei Block 524 den schlafenden Anwendungs-Thread basierend auf einem assoziierten Anwendungskontext und darauf, ob irgendwelche Warteschlangen irgendwelche Ereignisse aufweisen, die momentan eingereiht sind. Zusätzlich weckt der Rechenknoten 102 bei Block 526 den schlafenden Thread auf, unter Verwendung eines Unterbrechungs-Dienst-Routine (ISR) -Rufs in einen Zeitplaner zu dem identifizierten schlafenden Anwendungs-Thread der Unterbrechungs-disassoziierten Warteschlange. Bei Block 528 entfernt der Rechenknoten 102 den Thread-Identifizierer von der Aufweckliste. Anschließend, bei Block 530, schaltet der Rechenknoten 102 den Thread von dem Unterbrechungs-Ereignis-Warte-Modus in den Polling-Ereignis-Warte-Modus und das Verfahren 500 springt zurück zu Block 502, wie vorangehend erörtert wurde.
  • Bezug nehmend nun auf 7 kann die NIC 212 des Rechenknotens 102 im Betrieb ein Verfahren 700 zum Managen von empfangenen Datenpaketen ausführen. Das Verfahren 700 beginnt mit Block 720, bei dem die NIC 212 bestimmt, ob ein neues Datenpaket angekommen ist (z.B. von einer externen Quell-Vorrichtung). Falls dies der Fall ist, fährt das Verfahren 704 zu Block 704 fort, bei dem die NIC 212 eine Zielwarteschlange (z.B. eine der Warteschlangen 205) für das neue Paket bestimmt. Zum Beispiel kann die NIC 212 die Zielwarteschlange basierend auf der Zieladresse des neuen Datenpakets und irgendwelchen verfügbaren Abbildungsdaten bestimmen. Bei Block 706 speichert die NIC 212 das neue Datenpaket in der entsprechenden Warteschlange.
  • Anschließend, bei Block 708, bestimmt die NIC 212, ob die Zielwarteschlange mit einer Unterbrechung assoziiert wird. Zum Beispiel kann der Rechenknoten 102 die Zielwarteschlange mit einer Unterbrechung bei dem Block 516 von Verfahren 500 assoziiert haben. Falls nicht, springt das Verfahren 700 zurück zu Block 702, bei dem die NIC 212 auf neue Pakete überwacht. Falls die Zielwarteschlange jedoch mit einer Unterbrechung assoziiert wurde, fährt das Verfahren 700 zu Block 710 fort. Bei Block 710 bestimmt die NIC 212, welche Unterbrechung mit der Zielwarteschlange assoziiert wird, und erzeugt und feuert die bestimmte Warteschlange bei Block 711. Das Verfahren 700 springt nachfolgend zurück zu Block 702, bei dem die NIC 212 auf neue Pakete überwacht. Wie vorangehend Bezug nehmend auf Block 520 und 522 von Verfahren 500 erörtert wurde, veranlasst die gefeuerte Unterbrechung den Rechenknoten 102 dazu, den schlafenden Thread, der mit der Zielwarteschlange assoziiert ist, zu identifizieren und aufzuwecken.
  • Bezug nehmend nun auf 8 ist ein vereinfachtes Zustandsflussdiagramm 800 zum Darstellen von Zustandsübergängen für Unterbrechungs-disassoziierte Warteschlangen für Multi-Warteschlangen-I/O-Vorrichtungen des Rechenknotens 102 gezeigt, wie hierin beschrieben ist. Wie vorangehend beschrieben ist, kann ein Anwendungs-Thread in einem Polling-Ereignis-Warte-Modus-Zustand und einem Unterbrechungs-Ereignis-Warte-Modus-Zustand sein, darstellend gezeigt als Unterbrechungs-Ereignis-Warte-Modus 802 und Polling-Ereignis-Warte-Modus 804 in 8. In dem Polling-Ereignis-Warte-Modus 804 ist der Anwendungs-Thread in dem Polling-Ereignis-Warte-Modus-Zustand, und die Unterbrechungs-disassoziierte Warteschlange wird durch den Anwendungs-Thread gepollt. In dem Unterbrechungs-Ereignis-Warte-Modus 802 ist der Anwendungs-Thread in dem Unterbrechungs-Ereignis-Warte-Modus-Zustand. Anders ausgedrückt wurde ein Polling durch den Anwendungs-Thread gestoppt, eine Unterbrechung wurde mit der Unterbrechungs-disassoziierten Warteschlange assoziiert und die Unterbrechungs-disassoziierte Warteschlange ist in Unterbrechungs-Ereignis-Warte-Modus. Somit verursacht irgendeine neue Aktivität auf der Unterbrechungs-disassoziierten Warteschlange, dass eine Unterbrechung erzeugt wird.
  • Wie vorangehend beschrieben wurde, benötigt ein Übergehen in einen Unterbrechungs-Ereignis-Warte-Modus im Allgemeinen, dass die Unterbrechungs-disassoziierte Warteschlange mit einer Unterbrechung assoziiert wird. Es wird darauf hingewiesen, dass es möglich sein kann, dass viele stillgelegte Unterbrechungs-disassoziierte Warteschlangen eine Unterbrechung gemeinschaftlich verwenden, abhängig von dem Ausführungsbeispiel. Dementsprechend, unter solchen Bedingungen, dass ein zuvor zugeordneter Kontext, der eine Unterbrechungsquelle aufweist, ausgewählt wird und die Unterbrechung eingestellt ist, um für irgendeine neue Aktivität auf dieser Unterbrechungs-disassoziierten Warteschlange zu triggern, sollte Unterstützung in der I/O-Vorrichtung (z.B. der NIC 212 aus 2) bereitgestellt/ermöglicht sein. Ferner wird darauf hingewiesen, dass der Kontext auch die Liste von aufweckbaren Threads, die mit dieser Unterbrechung assoziiert sind, umfasst. Somit würde eine verwendete Lösung entscheiden, weit weniger Kontexte mit einer Unterbrechungs-Quelle (z.B. im Unterbrechungs-Ereignis-Warte-Modus) aufzuweisen, als diese mit einer Anwendungsquelle (z.B. im Polling-Ereignis-Warte-Modus). Ferner, wenn eine Unterbrechung auftritt, wird die Liste von aufweckbaren Threads überprüft, um zu sehen, ob irgendwelche von ihnen schlafen, und auch ob ihre assoziierten Kontexte und Warteschlangen irgendwelche Ereignisse aufweisen. Falls dies der Fall ist, wie vorangehend beschrieben ist, wird der Anwendungs-Thread für ein Aufwecken eingeplant und der Anwendungs-Thread-Identifizierer wird aus der Anwendungs-Thread-Aufweckliste (siehe z.B. die Anwendungs-Thread-Aufweckliste 902 aus 9) entfernt.
  • Alternativ, und im Allgemeinen optimaler, wird die Ursache für die Unterbrechung einer Host-Software explizit kommuniziert (z.B. die Unterbrechung ist aufgrund von Aktivität auf einer Unterbrechungs-disassoziierten Warteschlange). Wenn eine Unterbrechung feuert, rufen die assoziierten Unterbrechungs-Dienst-Routinen in den Zeitplaner, um den schlafenden Anwendungs-Thread, der mit der anwendbaren Unterbrechungs-disassoziierten Warteschlange assoziiert ist, aufzuwecken. Dementsprechend, wenn der Anwendungs-Thread aufwacht, triggert der Anwendungs-Thread die Polling-Schleife. Eine separate Ereignis-Warteschlange (siehe z.B. die Unterbrechungs-Ereignis-Warteschlange 904 von 9), die nur Aktivität auf einer gegebenen Unterbrechungs-disassoziierten Warteschlange anzeigt, ist eine Art, dies zu erreichen.
  • Bezug nehmend nun auf 9 sind eine darstellende Anwendungs-Thread-Aufweckliste 902 und eine Unterbrechungs-Ereignis-Warteschlange 904 gezeigt. Bei einem darstellenden Ausführungsbeispiel, bei dem es vier Anwendungs-Threads gibt, jeder mit einem eindeutigen Thread-Identifizierer 1-4, und jeder auf einer unabhängigen Hardware-Warteschlange arbeitet, abgebildet an einem Warteschlangen-Index 1-4. Zusätzlich, bei einem darstellenden Ausführungsbeispiel, schlafen die Anwendungs-Threads mit ID 1 und ID 3 ein. Vor dem Einschlafen fügt sich jeder Anwendungs-Thread selbst zu der Anwendungs-Thread-Aufweckliste 902 hinzu und bindet dann eine Unterbrechung an seine jeweiligen Unterbrechungs-disassoziierten Warteschlangen (z.B. die Unterbrechungs-disassoziierten Warteschlangen an Warteschlangenindex 1 und 3). Dementsprechend wird, wenn die NIC 212 ein ankommendes Netzwerkpaket empfängt, dass für eine dieser Unterbrechungs-disassoziierten Warteschlangen bestimmt ist, das Netzwerkpaket in der entsprechenden Warteschlange gespeichert, und die NIC 212 erzeugt eine assoziierte Unterbrechung.
  • Wenn die Host-Software aufwacht, überprüft die Host-Software die Ereigniswarteschlange 904 und bestimmt, dass es zwei Ereignisursachen gibt. Die Host-Software parst dann die Ereignisursachen, ruft den Index ab und weckt den Anwendungs-Thread an diesem Index in der Anwendungs-Thread-Aufweckliste 902 auf (z.B. die Anwendungs-Threads, die mit Index 1 und Index 3 assoziiert sind). Vor einem Aufwecken des Threads entfernt die Host-Software seinen Identifizierer aus der Anwendungs-Thread-Aufweckliste 902. Es wird darauf hingewiesen, dass, bei einigen Ausführungsbeispielen, ein unterbrechungsermöglichter Kontext auch einen Unterbrechungs-disassoziierten Kontext unterstützen könnte, indem zwischen zwei Modi getoggelt wird, wie hierin beschrieben ist.
  • BEISPIELE
  • Nachfolgend sind darstellende Beispiele der hierin offenbarten Technologien bereitgestellt. Ein Ausführungsbeispiel der Technologien kann irgendein einzelnes oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst einen Rechenknoten für Unterbrechungs-disassoziierte Warteschlangenbildung für Multi-Warteschlangen-Eingabe-/Ausgabe (I/O) -Vorrichtungen, der Rechenknoten umfassend eine I/O-Vorrichtung; und eine Schaltungsanordnung zum Bestimmen, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist; Liefern, ansprechend auf eine Bestimmung, dass das Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange via die I/O-Vorrichtung angekommen ist, des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird, wobei die Anwendung mit einem Anwendungs-Thread assoziiert ist und wobei die Unterbrechungs-disassoziierte Warteschlange in einem Polling-Modus ist; und Übergehen, ansprechend auf ein Übergangsereignis, der Unterbrechungs-disassoziierten Warteschlange in einen Unterbrechungsmodus.
  • Beispiel 2 umfasst den Gegenstand gemäß Beispiel 1, wobei die Schaltungsanordnung ferner ausgebildet ist zum Hinzuzufügen, vor dem Übergang der Unterbrechungs-disassoziierten Warteschlange in den Unterbrechungsmodus, eines Identifizierers des Anwendungs-Threads zu einer Liste von aufweckbaren Threads, wobei die Liste von aufweckbaren Threads eine Mehrzahl von aufweckbaren Anwendungs-Threads umfasst; und Assoziieren der Unterbrechungs-disassoziierten Warteschlange mit einer Unterbrechung.
  • Beispiel 3 umfasst den Gegenstand gemäß einem der Beispiele 1 und 2, und wobei die Schaltungsanordnung ferner ausgebildet ist zum Detektieren einer neuen Aktivität auf der Unterbrechungs-disassoziierten Warteschlange; und Triggern der Unterbrechung ansprechend auf irgendeine neue Aktivität, die auf der Unterbrechungs-disassoziierten Warteschlange detektiert wird.
  • Beispiel 4 umfasst den Gegenstand gemäß einem der Beispiele 1-3, und ein Triggern der Unterbrechung umfassend ein Bestimmen, ob irgendwelche der aufweckbaren Anwendungs-Threads in der Liste von aufweckbaren Threads schlafen und ein assoziierter Kontext ein oder mehrere Ereignisse aufweist; ein Planen, ansprechend auf eine Bestimmung, dass ein aufweckbarer Anwendungs-Thread, der in der Liste der aufweckbaren Threads schläft, schläft und der assoziierte Kontext das eine oder die mehreren Ereignisse aufweist, des aufweckbaren Anwendungs-Threads für ein Aufwecken; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  • Beispiel 5 umfasst den Gegenstand gemäß einem der Beispiele 1-4, und ein Triggern der Unterbrechung umfassend ein Rufen einer Unterbrechungs-Dienst-Routine in einen Zeitplaner des Rechenknotens, um einen aufweckbaren Anwendungs-Thread aufzuwecken, der mit der Unterbrechungs-disassoziierten Warteschlange assoziiert ist; ein Triggern, nachdem der aufweckbare Anwendungs-Thread aufgewacht ist, einer Polling-Schleife; und ein Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  • Beispiel 6 umfasst den Gegenstand gemäß einem der Beispiele 1-5, und wobei die Unterbrechungs-disassoziierte Warteschlange mit einer oder mehreren Unterbrechungen assoziiert ist.
  • Beispiel 7 umfasst den Gegenstand gemäß einem der Beispiele 1-6, und wobei das Übergangsereignis einer verstrichenen Zeitspanne entspricht.
  • 8. Der Rechenknoten gemäß Anspruch 1, wobei ein Bestimmen, ob ein Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange angekommen ist, ein Pollen der Unterbrechungs-disassoziierten Warteschlange umfasst.
  • Beispiel 9 umfasst ein Verfahren für eine Unterbrechungs-disassoziierte Warteschlangenbildung, das Verfahren umfassend ein Bestimmen, durch einen Rechenknoten, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist; ein Liefern, durch den Rechenknoten und ansprechend auf eine Bestimmung, dass das Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange via eine I/O-Vorrichtung des Rechenknotens angekommen ist, des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird, wobei die Anwendung mit einem Anwendungs-Thread assoziiert wird und wobei die Unterbrechungs-disassoziierte Warteschlange in einem Polling-Modus ist; und ein Übergehen, ansprechend auf ein Übergangsereignis, der Unterbrechungs-disassoziierten Warteschlange in einen Unterbrechungsmodus.
  • Beispiel 10 umfasst den Gegenstand gemäß Beispiel 9, und ferner umfassend ein Hinzufügen, durch den Rechenknoten und vor dem Übergang der Unterbrechungs-disassoziierten Warteschlange in den Unterbrechungsmodus, eines Identifizierers des Anwendungs-Threads zu einer Liste von aufweckbaren Threads, wobei die Liste von aufweckbaren Threads eine Mehrzahl von aufweckbaren Anwendungs-Threads umfasst; und ein Assoziieren, durch den Rechenknoten, der Unterbrechungs-disassoziierten Warteschlange mit einer Unterbrechung.
  • Beispiel 11 umfasst den Gegenstand gemäß einem der Beispiele 9 und 10, und ferner umfassend ein Detektieren, durch den Rechenknoten, einer neuen Aktivität auf der Unterbrechungs-disassoziierten Warteschlange; und ein Triggern, durch eine Netzwerkschnittstellensteuerung (NIC) des Rechenknotens, der Unterbrechung, ansprechend auf irgendeine neue Aktivität, die auf der Unterbrechungs-disassoziierten Warteschlange detektiert wird.
  • Beispiel 12 umfasst den Gegenstand gemäß einem der Beispiele 9-11, und ein Triggern der Unterbrechung umfassend ein Bestimmen, ob irgendwelche der aufweckbaren Anwendungs-Threads in der Liste von aufweckbaren Threads schlafen und ein assoziierter Kontext ein oder mehrere Ereignisse aufweist; ein Planen, ansprechend auf eine Bestimmung, dass ein aufweckbarer Anwendungs-Thread, der in der Liste der aufweckbaren Threads schläft, schläft und der assoziierte Kontext das eine oder die mehreren Ereignisse aufweist, des aufweckbaren Anwendungs-Threads für ein Aufwecken; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  • Beispiel 13 umfasst den Gegenstand gemäß einem der Beispiele 9-12, und ein Triggern der Unterbrechung umfassend ein Rufen einer Unterbrechungs-Dienst-Routine in einen Zeitplaner des Rechenknotens, um einen aufweckbaren Anwendungs-Thread aufzuwecken, der mit der Unterbrechungs-disassoziierten Warteschlange assoziiert ist; ein Triggern, nachdem der aufweckbare Anwendungs-Thread aufgewacht ist, einer Polling-Schleife; und ein Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  • Beispiel 14 umfasst den Gegenstand gemäß einem der Beispiele 9-13, und wobei die Unterbrechungs-disassoziierte Warteschlange mit einer oder mehreren Unterbrechungen assoziiert ist.
  • Beispiel 15 umfasst den Gegenstand gemäß einem der Beispiele 9-14, und wobei das Übergangsereignis einer verstrichenen Zeitspanne entspricht.
  • 16. Das Verfahren gemäß Anspruch 9, wobei ein Bestimmen, ob ein Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange angekommen ist, ein Polling der Unterbrechungs-disassoziierten Warteschlange umfasst.
  • Beispiel 17 umfasst ein oder mehrere maschinenlesbare Speicherungsmedien, umfassend eine Mehrzahl von darauf gespeicherten Anweisungen, die, wenn sie ausgeführt werden, einen Rechenknoten veranlassen zum Bestimmen, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist; Liefern, ansprechend auf eine Bestimmung, dass das Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange via eine I/O-Vorrichtung des Rechenknotens angekommen ist, des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird, wobei die Anwendung mit einem Anwendungs-Thread assoziiert ist und wobei die Unterbrechungs-disassoziierte Warteschlange in einem Polling-Modus ist; und Übergehen, ansprechend auf ein Übergangsereignis, der Unterbrechungs-disassoziierten Warteschlange in einen Unterbrechungsmodus.
  • Beispiel 18 umfasst den Gegenstand gemäß Beispiel 17, wobei die wobei die Mehrzahl von Anweisungen, wenn sie ausgeführt werden, den Rechenknoten ferner veranlassen zum Hinzuzufügen, vor dem Übergang der Unterbrechungs-disassoziierten Warteschlange in den Unterbrechungsmodus, eines Identifizierers des Anwendungs-Threads zu einer Liste von aufweckbaren Threads, wobei die Liste von aufweckbaren Threads eine Mehrzahl von aufweckbaren Anwendungs-Threads umfasst; und Assoziieren der Unterbrechungs-disassoziierten Warteschlange mit einer Unterbrechung.
  • Beispiel 19 umfasst den Gegenstand gemäß einem der Beispiele 17 und 18, und wobei die Mehrzahl von Anweisungen, wenn sie ausgeführt werden, den Rechenknoten ferner veranlassen zum Detektieren einer neuen Aktivität auf der Unterbrechungs-disassoziierten Warteschlange; und Triggern der Unterbrechung ansprechend auf irgendeine neue Aktivität, die auf der Unterbrechungs-disassoziierten Warteschlange detektiert wird.
  • Beispiel 20 umfasst den Gegenstand gemäß einem der Beispiele 17-19, und ein Triggern der Unterbrechung umfassend ein Bestimmen, ob irgendwelche der aufweckbaren Anwendungs-Threads in der Liste von aufweckbaren Threads schlafen und ein assoziierter Kontext ein oder mehrere Ereignisse aufweist; ein Planen, ansprechend auf eine Bestimmung, dass ein aufweckbarer Anwendungs-Thread, der in der Liste der aufweckbaren Threads schläft, schläft und der assoziierte Kontext das eine oder die mehreren Ereignisse aufweist, des aufweckbaren Anwendungs-Threads für ein Aufwecken; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  • Beispiel 21 umfasst den Gegenstand gemäß einem der Beispiele 17-20, und ein Triggern der Unterbrechung umfassend ein Rufen einer Unterbrechungs-Dienst-Routine in einen Zeitplaner des Rechenknotens, um einen aufweckbaren Anwendungs-Thread aufzuwecken, der mit der Unterbrechungs-disassoziierten Warteschlange assoziiert ist; ein Triggern, nachdem der aufweckbare Anwendungs-Thread aufgewacht ist, einer Polling-Schleife; und ein Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  • Beispiel 22 umfasst den Gegenstand gemäß einem der Beispiele 17-21, und wobei die Unterbrechungs-disassoziierte Warteschlange mit einer oder mehreren Unterbrechungen assoziiert ist.
  • Beispiel 23 umfasst den Gegenstand gemäß einem der Beispiele 17-22, und wobei das Übergangsereignis einer verstrichenen Zeitspanne entspricht. 24. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß Anspruch 17, wobei ein Bestimmen, ob ein Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange angekommen ist, ein Pollen der Unterbrechungs-disassoziierten Warteschlange umfasst.

Claims (25)

  1. Ein Rechenknoten für Unterbrechungs-disassoziierte Warteschlangenbildung für Multi-Warteschlangen-Eingabe-/Ausgabe (I/O) -Vorrichtungen, der Rechenknoten umfassend: eine I/O-Vorrichtung; und eine Schaltungsanordnung zum: Bestimmen, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist; Liefern, ansprechend auf eine Bestimmung, dass das Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange via die I/O-Vorrichtung angekommen ist, des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird, wobei die Anwendung mit einem Anwendungs-Thread assoziiert ist und wobei die Unterbrechungs-disassoziierte Warteschlange in einem Polling-Modus ist; und Übergehen, ansprechend auf ein Übergangsereignis, der Unterbrechungs-disassoziierten Warteschlange in einen Unterbrechungsmodus.
  2. Die Rechenknoten gemäß Anspruch 1, wobei die Schaltungsanordnung ferner ausgebildet ist zum: Hinzuzufügen, vor dem Übergang der Unterbrechungs-disassoziierten Warteschlange in den Unterbrechungsmodus, eines Identifizierers des Anwendungs-Threads zu einer Liste von aufweckbaren Threads, wobei die Liste von aufweckbaren Threads eine Mehrzahl von aufweckbaren Anwendungs-Threads umfasst; und Assoziieren der Unterbrechungs-disassoziierten Warteschlange mit einer Unterbrechung.
  3. Die Rechenknoten gemäß Anspruch 2, wobei die Schaltungsanordnung ferner ausgebildet ist zum: Detektieren einer neuen Aktivität auf der Unterbrechungs-disassoziierten Warteschlange; und Triggern der Unterbrechung ansprechend auf irgendeine neue Aktivität, die auf der Unterbrechungs-disassoziierten Warteschlange detektiert wird.
  4. Der Rechenknoten gemäß Anspruch 3, ein Triggern der Unterbrechung umfassend: Bestimmen, ob irgendwelche der aufweckbaren Anwendungs-Threads in der Liste von aufweckbaren Threads schlafen und ein assoziierter Kontext ein oder mehrere Ereignisse aufweist, Planen, ansprechend auf eine Bestimmung, dass ein aufweckbarer Anwendungs-Thread, der in der Liste der aufweckbaren Threads schläft, schläft und der assoziierte Kontext das eine oder die mehreren Ereignisse aufweist, des aufweckbaren Anwendungs-Threads für ein Aufwecken; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  5. Der Rechenknoten gemäß Anspruch 3 oder 4, ein Triggern der Unterbrechung umfassend: Rufen einer Unterbrechungs-Dienst-Routine in einen Zeitplaner des Rechenknotens, um einen aufweckbaren Anwendungs-Thread aufzuwecken, der mit der Unterbrechungs-disassoziierten Warteschlange assoziiert ist; Triggern, nachdem der aufweckbare Anwendungs-Thread aufgewacht ist, einer Polling-Schleife; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  6. Der Rechenknoten gemäß einem der Ansprüche 2-5, wobei die Unterbrechungs-disassoziierte Warteschlange mit einer oder mehreren Unterbrechungen assoziiert ist.
  7. Der Rechenknoten gemäß einem der vorangehenden Ansprüche, wobei das Übergangsereignis einer verstrichenen Zeitspanne entspricht.
  8. Der Rechenknoten gemäß einem der vorangehenden Ansprüche, wobei ein Bestimmen, ob ein Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange angekommen ist, ein Pollen der Unterbrechungs-disassoziierten Warteschlange umfasst.
  9. Ein Verfahren für Unterbrechungs-disassoziierte Warteschlangenbildung, das Verfahren umfassend: Bestimmen, durch einen Rechenknoten, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist; Liefern, durch den Rechenknoten und ansprechend auf eine Bestimmung, dass das Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange via eine I/O-Vorrichtung des Rechenknotens angekommen ist, des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird, wobei die Anwendung mit einem Anwendungs-Thread assoziiert wird und wobei die Unterbrechungs-disassoziierte Warteschlange in einem Polling-Modus ist; und Übergehen, ansprechend auf ein Übergangsereignis, der Unterbrechungs-disassoziierten Warteschlange in einen Unterbrechungsmodus.
  10. Das Verfahren gemäß Anspruch 9, ferner umfassend Hinzufügen, durch den Rechenknoten und vor dem Übergang der Unterbrechungs-disassoziierten Warteschlange in den Unterbrechungsmodus, eines Identifizierers des Anwendungs-Threads zu einer Liste von aufweckbaren Threads, wobei die Liste von aufweckbaren Threads eine Mehrzahl von aufweckbaren Anwendungs-Threads umfasst; und Assoziieren, durch den Rechenknoten, der Unterbrechungs-disassoziierten Warteschlange mit einer Unterbrechung.
  11. Das Verfahren gemäß Anspruch 10, ferner umfassend: Detektieren, durch den Rechenknoten, einer neuen Aktivität auf der Unterbrechungs-disassoziierten Warteschlange; und Triggern, durch eine Netzwerkschnittstellensteuerung (NIC) des Rechenknotens, der Unterbrechung, ansprechend auf irgendeine neue Aktivität, die auf der Unterbrechungs-disassoziierten Warteschlange detektiert wird.
  12. Das Verfahren gemäß Anspruch 11, ein Triggern der Unterbrechung umfassend: Bestimmen, ob irgendwelche der aufweckbaren Anwendungs-Threads in der Liste von aufweckbaren Threads schlafen und ein assoziierter Kontext ein oder mehrere Ereignisse aufweist, Planen, ansprechend auf eine Bestimmung, dass ein aufweckbarer Anwendungs-Thread, der in der Liste der aufweckbaren Threads schläft, schläft und der assoziierte Kontext das eine oder die mehreren Ereignisse aufweist, des aufweckbaren Anwendungs-Threads für ein Aufwecken; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  13. Das Verfahren gemäß Anspruch 11 oder 12, ein Triggern der Unterbrechung umfassend: Rufen einer Unterbrechungs-Dienst-Routine in einen Zeitplaner des Rechenknotens, um einen aufweckbaren Anwendungs-Thread aufzuwecken, der mit der Unterbrechungs-disassoziierten Warteschlange assoziiert wird; Triggern, nachdem der aufweckbare Anwendungs-Thread aufgewacht ist, einer Polling-Schleife; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  14. Das Verfahren gemäß einem der Ansprüche 10-13, wobei die Unterbrechungs-disassoziierte Warteschlange mit einer oder mehreren Unterbrechungen assoziiert wird.
  15. Das Verfahren gemäß einem der Ansprüche 9-14, wobei das Übergangsereignis einer verstrichenen Zeitspanne entspricht.
  16. Das Verfahren gemäß einem der Ansprüche 9-15, wobei ein Bestimmen, ob ein Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange angekommen ist, ein Polling der Unterbrechungs-disassoziierten Warteschlange umfasst.
  17. Ein oder mehrere maschinenlesbare Speicherungsmedien, umfassend eine Mehrzahl von darauf gespeicherten Anweisungen, die, wenn sie ausgeführt werden, einen Rechenknoten veranlassen zum: Bestimmen, ob ein Netzwerkpaket in einer Unterbrechungs-disassoziierten Warteschlange angekommen ist; Liefern, ansprechend auf eine Bestimmung, dass das Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange via eine I/O-Vorrichtung des Rechenknotens angekommen ist, des Netzwerkpakets an eine Anwendung, die durch den Rechenknoten gemanagt wird, wobei die Anwendung mit einem Anwendungs-Thread assoziiert ist und wobei die Unterbrechungs-disassoziierte Warteschlange in einem Polling-Modus ist; und Übergehen, ansprechend auf ein Übergangsereignis, der Unterbrechungs-disassoziierten Warteschlange in einen Unterbrechungsmodus.
  18. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß Anspruch 17, wobei die Mehrzahl von Anweisungen, wenn sie ausgeführt werden, den Rechenknoten ferner veranlassen zum: Hinzuzufügen, vor dem Übergang der Unterbrechungs-disassoziierten Warteschlange in den Unterbrechungsmodus, eines Identifizierers des Anwendungs-Threads zu einer Liste von aufweckbaren Threads, wobei die Liste von aufweckbaren Threads eine Mehrzahl von aufweckbaren Anwendungs-Threads umfasst; und Assoziieren der Unterbrechungs-disassoziierten Warteschlange mit einer Unterbrechung.
  19. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß Anspruch 18, wobei die Mehrzahl von Anweisungen, wenn sie ausgeführt werden, den Rechenknoten ferner veranlassen zum: Detektieren einer neuen Aktivität auf der Unterbrechungs-disassoziierten Warteschlange; und Triggern der Unterbrechung ansprechend auf irgendeine neue Aktivität, die auf der Unterbrechungs-disassoziierten Warteschlange detektiert wird.
  20. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß Anspruch 19, ein Triggern der Unterbrechung umfassend: Bestimmen, ob irgendwelche der aufweckbaren Anwendungs-Threads in der Liste von aufweckbaren Threads schlafen und ein assoziierter Kontext ein oder mehrere Ereignisse aufweist; Planen, ansprechend auf eine Bestimmung, dass ein aufweckbarer Anwendungs-Thread, der in der Liste der aufweckbaren Threads schläft, schläft und der assoziierte Kontext das eine oder die mehreren Ereignisse aufweist, des aufweckbaren Anwendungs-Threads für ein Aufwecken; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  21. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß Anspruch 19 oder 20, ein Triggern der Unterbrechung umfassend: Rufen einer Unterbrechungs-Dienst-Routine in einen Zeitplaner des Rechenknotens, um einen aufweckbaren Anwendungs-Thread aufzuwecken, der mit der Unterbrechungs-disassoziierten Warteschlange assoziiert ist; Triggern, nachdem der aufweckbare Anwendungs-Thread aufgewacht ist, einer Polling-Schleife; und Entfernen eines Identifizierers des aufweckbaren Anwendungs-Threads von der Liste von aufweckbaren Threads.
  22. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß einem der Ansprüche 18-21, wobei die Unterbrechungs-disassoziierte Warteschlange mit einer oder mehreren Unterbrechungen assoziiert ist.
  23. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß einem der Ansprüche 17-22, wobei das Übergangsereignis einer verstrichenen Zeitspanne entspricht.
  24. Das eine oder die mehreren maschinenlesbaren Speicherungsmedien gemäß einem der Ansprüche 17-23, wobei ein Bestimmen, ob ein Netzwerkpaket in der Unterbrechungs-disassoziierten Warteschlange angekommen ist, ein Pollen der Unterbrechungs-disassoziierten Warteschlange umfasst.
  25. Ein Rechenknoten für Unterbrechungs-disassoziierte Warteschlangenbildung für Multi-Warteschlangen-Eingabe-/Ausgabe (I/O) -Vorrichtungen, der Rechenknoten umfassend Mittel zum Durchführen des Verfahrens gemäß einem der Ansprüche 9-16.
DE102020114142.4A 2019-06-28 2020-05-27 Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen Pending DE102020114142A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/457,110 US20190391940A1 (en) 2019-06-28 2019-06-28 Technologies for interrupt disassociated queuing for multi-queue i/o devices
US16/457,110 2019-06-28

Publications (1)

Publication Number Publication Date
DE102020114142A1 true DE102020114142A1 (de) 2020-12-31

Family

ID=68981894

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020114142.4A Pending DE102020114142A1 (de) 2019-06-28 2020-05-27 Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen

Country Status (2)

Country Link
US (1) US20190391940A1 (de)
DE (1) DE102020114142A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3124355A1 (en) * 2019-02-06 2020-08-13 Fermat International, Inc. Analytics, algorithm architecture, and data processing system and method
CN111597038B (zh) * 2020-01-08 2023-07-14 中国空气动力研究与发展中心计算空气动力研究所 一种超级计算机i/o转发结点轮询映射方法
US20220035663A1 (en) * 2020-07-31 2022-02-03 EMC IP Holding Company LLC Techniques for managing cores for storage
CN116401990B (zh) * 2023-01-30 2023-10-20 芯华章科技(北京)有限公司 处理中断事件的方法、装置、系统和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713294B2 (en) * 2009-11-13 2014-04-29 International Business Machines Corporation Heap/stack guard pages using a wakeup unit
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US9727113B2 (en) * 2013-08-08 2017-08-08 Linear Algebra Technologies Limited Low power computational imaging
US9910675B2 (en) * 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US9626324B2 (en) * 2014-07-08 2017-04-18 Dell Products L.P. Input/output acceleration in virtualized information handling systems
JP2017004175A (ja) * 2015-06-08 2017-01-05 キヤノン株式会社 管理システムおよびその制御方法、情報処理装置、並びにプログラム

Also Published As

Publication number Publication date
US20190391940A1 (en) 2019-12-26

Similar Documents

Publication Publication Date Title
DE102020114142A1 (de) Technologien für unterbrechungs-disassoziierte warteschlangenbildung für multi-warteschlangen-i/o-vorrichtungen
US9485310B1 (en) Multi-core storage processor assigning other cores to process requests of core-affined streams
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
US11494212B2 (en) Technologies for adaptive platform resource assignment
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE102018212479A1 (de) Technologien zum Verwalten einer flexiblen Host-Schnittstelle eines Netzwerkschnittstellen-Controllers
DE102020113544A1 (de) Bedarfsgesteuerte paketwarteschlangen in einer netzwerkvorrichtung
DE102020109669A1 (de) Dienstgüte-verkehrsmanagement in hochgeschwindigkeitspaketverarbeitungssystemen
JP2005092875A (ja) スレッドスケジューリングを使用してデータスループットを向上させるためのシステムおよび方法
US20190044892A1 (en) Technologies for using a hardware queue manager as a virtual guest to host networking interface
US10932202B2 (en) Technologies for dynamic multi-core network packet processing distribution
CN113918101B (zh) 一种写数据高速缓存的方法、系统、设备和存储介质
DE102019105881A1 (de) Technologien zur bereitstellung von effizienter detektion leerlaufender abfrageschleifen
CN106776395B (zh) 一种共享集群的任务调度方法及装置
US20190042305A1 (en) Technologies for moving workloads between hardware queue managers
US20120297216A1 (en) Dynamically selecting active polling or timed waits
CN113110916B (zh) 一种虚拟机数据读写方法、装置、设备及介质
EP2983089A1 (de) Verfahren, vorrichtung und chip zur durchführung eines gegenseitigen exklusiven betriebs von mehreren threads
DE102020129690A1 (de) Semiflexibler paketzusammenführungs-steuerweg
DE102020130555A1 (de) Adaptiver datenversand basierend auf lastfunktionen
CN112306652A (zh) 带有上下文提示的功能的唤醒和调度
CN110659222A (zh) 用于将高速缓存行降级到共享高速缓存的技术
DE102019101114A1 (de) System, Vorrichtung und Verfahren zum Bereitstellen einer Fabric für einen Beschleuniger
US20190042293A1 (en) Technologies for dynamic statistics management
CN116132369A (zh) 云网关服务器中多网口的流量分发方法及相关设备