DE102019102883A1 - Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern - Google Patents

Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern Download PDF

Info

Publication number
DE102019102883A1
DE102019102883A1 DE102019102883.3A DE102019102883A DE102019102883A1 DE 102019102883 A1 DE102019102883 A1 DE 102019102883A1 DE 102019102883 A DE102019102883 A DE 102019102883A DE 102019102883 A1 DE102019102883 A1 DE 102019102883A1
Authority
DE
Germany
Prior art keywords
workload
hardware queue
queue manager
computing device
hardware
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
DE102019102883.3A
Other languages
English (en)
Inventor
Niall McDonnell
Debra Bernstein
Patrick Fleming
Chris Macnamara
Andrew Cunningham
Bruce Richardson
Brendan Ryan
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 DE102019102883A1 publication Critical patent/DE102019102883A1/de
Pending legal-status Critical Current

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern beinhalten eine Rechenvorrichtung. Die Rechenvorrichtung beinhaltet einen Satz von Hardwarewarteschlangenmanagem. Jeder Hardwarewarteschlangenmanager ist zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt und jedes Warteschlangenelement gibt einen durch einen Thread zu bearbeitenden Datensatz an. Die Rechenvorrichtung beinhaltet auch eine Schaltungsanordnung zum Ausführen einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager des Satzes von Hardwarewarteschlangenmanagem, Bestimmen, ob eine Arbeitslastmigrationsbedingung vorhanden ist, Bestimmen, ob ein zweiter Hardwarewarteschlangenmanager des Satzes von Hardwarewarteschlangenmanagem eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten, Bewegen der Arbeitslast, als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager, und Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.

Description

  • HINTERGRUND
  • Manche Rechenvorrichtungen beinhalten mehrere Kerne (z. B. Verarbeitungseinheiten, die jeweils Befehle lesen und ausführen, wie etwa in getrennten Threads), die an Daten unter Verwendung von Warteschlangen und einem Credit-Schema arbeiten. Das Credit-Schema arbeitet als ein Mechanismus zum Bestimmen, ob eine Warteschlange Platz für zusätzliche zu bearbeitende Daten aufweist (z. B. durch einen Thread). In dem Credit-Schema können manche Threads Warteschlangenelemente produzieren, die Sätze von Daten (z. B. Pakete) repräsentieren, die durch andere Threads zu bearbeiten sind. Durch das Hinzufügen eines Warteschlangenelements, das durch einen anderen Thread (z. B. einen Arbeiter-Thread oder einen Verbraucher-Thread) zu verarbeiten ist, subtrahiert ein Produzenten-Thread einen Credit von einem Credit-Pool. Umgekehrt fügt ein Thread, der das Warteschlangenelement aus der Warteschlange entfernt und die Daten bearbeitet, wieder einen Credit zu dem Credit-Pool hinzu. Die Verwaltung dieser Warteschlangen und Credits kann in Software oder bei manchen Rechenvorrichtungen in einer spezialisierten Schaltungsanordnung (z. B. Hardwarewarteschlangenmanager) durchgeführt werden, die eine effizientere Verwaltung der Warteschlangen und Credits ermöglicht. Bei Systemen, die Hardwarewarteschlangenmanager nutzen (z. B. zum Bereitstellen von Warteschlangen- und Credit-Verwaltungsoperationen für eine relativ große Anzahl an Kernen und Arbeitslasten), können Ineffizienzen entstehen, da jeder Hardwarewarteschlangenmanager unabhängig davon, ob der Hardwarewarteschlangenmanager eine relativ geringe Last oder eine relativ große Last verwaltet, mit voller Leistung (z. B. nicht in einem Niederleistungszustand) arbeitet.
  • Figurenliste
  • Die hier beschriebenen Konzepte sind beispielhaft und nicht einschränkend in den beigefügten Figuren veranschaulicht. Aus Gründen der Einfachheit und Klarheit der Darstellung sind Elemente, die in den Figuren veranschaulicht sind, nicht notwendigerweise maßstabsgetreu gezeichnet. Wo es als angebracht angesehen wurde, wurden Bezugszeichen zwischen den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
    • 1 ist ein vereinfachtes Diagramm wenigstens einer Ausführungsform einer Rechenvorrichtung zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagem;
    • 2 ist ein vereinfachtes Blockdiagramm wenigstens einer Ausführungsform einer Umgebung, die durch die Rechenvorrichtung von 1 eingerichtet werden kann;
    • 3-5 sind vereinfachte Flussdiagramme wenigstens einer Ausführungsform eines Verfahrens zum Bewegen einer Arbeitslast zwischen Hardwarewarteschlangenmanagem, das durch die Rechenvorrichtung aus 1 durchgeführt werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Wenngleich die Konzepte der vorliegenden Offenbarung verschiedenen Modifikationen und alternativen Formen unterliegen können, sind spezielle Ausführungsformen davon beispielhaft in den Zeichnungen gezeigt worden und werden hierin ausführlich beschrieben werden. Es versteht sich jedoch, dass nicht beabsichtigt ist, die Konzepte der vorliegenden Offenbarung auf die besonderen offenbarten Formen zu beschränken; es besteht vielmehr im Gegenteil die Absicht, alle Modifikationen, Äquivalente und Alternativen, die mit der vorliegenden Offenbarung und den angehängten Ansprüchen übereinstimmen, abzudecken.
  • Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „Ausfiihrungsform“, „eine veranschaulichende Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein besonderes Merkmal, eine besondere Struktur oder Eigenschaft beinhalten kann, wobei allerdings jede Ausführungsform dieses besondere Merkmal, die besondere Struktur oder Eigenschaft möglicherweise enthält oder nicht notwendigerweise enthält. Darüber hinaus verweisen solche Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Wenn ein besonderes Merkmal, eine besondere Struktur oder eine besondere Eigenschaft des Weiteren in Verbindung mit einer Ausführungsform beschrieben wird, wird außerdem unterstellt, dass es im Kenntnisbereich eines Fachmanns liegt, ein derartiges Merkmal, eine derartige Struktur oder eine derartige Eigenschaft in Verbindung mit anderen Ausführungsformen zu bewirken, ob es nun explizit beschrieben wurde oder nicht. Zusätzlich versteht sich, dass Einträge in einer Liste der Form „wenigstens eines von A, B und C“ Folgendes bedeuten können: (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C). Gleichermaßen können aufgelistete Einträge in der Form von „wenigstens eines von A, B oder C“ Folgendes bedeuten: (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C).
  • Die offenbarten Ausführungsformen können in manchen Fällen in Hardware, Firmware, Software oder einer beliebigen Kombination davon implementiert sein. Die offenbarten Ausführungsformen können ebenfalls als Anweisungen implementiert sein, die von einem flüchtigen oder nichtflüchtigen maschinenlesbaren (z. B. computerlesbaren) Speicherungsmedium getragen oder in diesem gespeichert werden, das von einem oder mehreren Prozessoren ausgelesen und ausgeführt werden kann. Ein maschinenlesbares Speicherungsmedium kann als eine beliebige Speicherungsvorrichtung, ein Mechanismus oder als eine andere physische Struktur zum Speichern oder Übertragen von Informationen in einer durch eine Maschine lesbaren Form (z. B. einem flüchtigen oder nicht flüchtigen Speicher, einer Medien-Disc oder einer anderen Medienvorrichtung) ausgeführt sein.
  • In den Zeichnungen sind manche strukturelle oder Verfahrensmerkmale möglicherweise in speziellen Anordnungen und/oder Abfolgen gezeigt. Es versteht sich jedoch, dass solche speziellen Anordnungen und/oder Reihenfolgen möglicherweise nicht erforderlich sind. Vielmehr können, bei manchen Ausführungsformen, derartige Merkmale auf eine andere Weise und/oder in einer anderen Reihenfolge als in den veranschaulichenden Figuren dargestellten angeordnet sein. Zusätzlich soll die Einschließung eines strukturellen oder Verfahrensmerkmals in einer bestimmten Figur nicht bedeuten, dass ein derartiges Merkmal in allen Ausführungsformen erforderlich ist, und kann, in einigen Ausführungsformen, nicht eingeschlossen oder mit anderen Merkmalen kombiniert sein.
  • Nun unter Bezugnahme auf 1 befindet sich eine Rechenvorrichtung 110 zum Bewegen einer Arbeitslast (z. B. einer Anwendung, einer virtuellen Maschine, eines Prozesses usw.) zwischen Hardwarewarteschlangenmanagem (HQMs: Hardware Queue Managers) 130 durch ein Netz 160 in Kommunikation mit einer Client-Vorrichtung 150. Die Rechenvorrichtung 110 kann im Betrieb mehrere Arbeitslasten (z. B. im Auftrag der Client-Vorrichtung 150) unter Verwendung getrennter Hardwarewarteschlangenmanager 130 (z. B. einen für jede Arbeitslast) ausführen und Arbeitslasten selektiv von einem der Hardwarewarteschlangenmanager 130 zu einem anderen der Hardwarewarteschlangenmanager 130 bewegen, um zu ermöglichen, dass der ursprüngliche Hardwarewarteschlangenmanager 130 in einen Niederleistungsmodus platziert (z. B. deaktiviert) wird. Dadurch, und wie hier ausführlicher besprochen wird, bestimmt die Rechenvorrichtung 110 kontinuierlich, ob vorliegende Bedingungen ermöglichen würden, dass eine Arbeitslast von einem Hardwarewarteschlangenmanager 130 zu einem anderen Hardwarewarteschlangenmanager 130 bewegt wird, einschließlich Bestimmen, ob das vorliegende Aktivitätsniveau der Arbeitslast eine Schwelle erfüllt (z. B. relativ niedrig ist) und ob ein in der Rechenvorrichtung 110 vorhandener Hardwarewarteschlangenmanager 130 eine ausreichende Kapazität zum Verwalten der Arbeitslast aufweist. Durch das Bewegen von Arbeitslasten von einem Hardwarewarteschlangenmanager 130 weg, kann die Rechenvorrichtung 110 die Arbeitslasten auf weniger als die Gesamtmenge an in der Rechenvorrichtung 110 vorhandenen Hardwarewarteschlangenmanagem 130 zusammenfassen und jene deaktivieren, die momentan keine Arbeitslasten verwalten, wodurch die Leistungseffizienz der Rechenvorrichtung 110 gegenüber typischen Rechenvorrichtungen verbessert wird.
  • Die Rechenvorrichtung 110 kann als ein beliebiger Typ von Vorrichtung ausgeführt sein, die zum Durchführen der hier beschriebenen Funktionen, fähig ist, die Folgendes beinhalten: Ausführen einer Arbeitslast mit einem Hardwarewarteschlangenmanager 130 eines Satzes von Hardwarewarteschlangenmanagem 130, Bestimmen, ob eine Arbeitslastmigrationsbedingung vorhanden ist, Bestimmen, ob ein anderer Hardwarewarteschlangenmanager 130 in dem Satz von Hardwarewarteschlangenmanagem 130 eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten, Bewegen der Arbeitslast, als Reaktion auf eine Bestimmung, dass der andere Hardwarewarteschlangenmanager 130 eine ausreichende Kapazität aufweist, zu dem anderen Hardwarewarteschlangenmanager 130, und Reduzieren einer Leistungsverwendung des Hardwarewarteschlangenmanagers 130, von dem die Arbeitslast bewegt wurde, nach dem Bewegen der Arbeitslast zu dem anderen Hardwaremanager 130.
  • Wie in 1 gezeigt, beinhaltet die veranschaulichende Rechenvorrichtung 110 eine Rechen-Engine112, ein Eingabe/Ausgabe(E/A)-Untersystem 118, eine Kommunikationsschaltungsanordnung 120 und eine oder mehrere Datenspeicherungsvorrichtungen 124. Natürlich kann die Rechenvorrichtung 110 bei anderen Ausführungsformen andere oder zusätzliche Komponenten aufweisen, wie etwa jene, die gewöhnlich in einem Computer gefunden werden (z. B. eine Anzeige, Peripherievorrichtungen usw.). Zusätzlich können bei manchen Ausführungsformen eine oder mehrere der veranschaulichenden Komponenten in einer anderen Komponente eingebunden sein oder anderweitig einen Teil von dieser bilden. Die Rechen-Engine 112 kann als ein beliebiger Typ von Vorrichtung oder Sammlung von Vorrichtungen ausgeführt sein, die zum Durchführen verschiedener hier beschriebener Rechenfunktionen in der Lage ist. Bei manchen Ausführungsformen kann die Rechen-Engine 112 als eine einzige Vorrichtung ausgeführt sein, wie etwa ein integrierter Schaltkreis, ein eingebettetes System, ein vor Ort programmierbares Gatter-Array (FPGA), ein System-on-Chip (SOC) oder ein anderes integriertes System oder eine andere integrierte Vorrichtung. Bei der veranschaulichenden Ausführungsform beinhaltet die Rechen-Engine 112 einen Prozessor 114 oder einen Speicher 116 oder ist als diese ausgeführt. Der Prozessor 114 kann als ein beliebiger Typ von Prozessor ausgeführt sein, der zum Durchführen der hier beschriebenen Funktionen in der Lage ist. Der Prozessor 114 kann zum Beispiel als (ein) Mehrfachkernprozessor(en), ein Mikrocontroller oder ein anderer Prozessor oder Verarbeitungs-/Steuerschaltkreis ausgeführt sein. Bei manchen Ausführungsformen kann der Prozessor 114 als ein FPGA, ein anwendungsspezifischer integrierter Schaltkreis (ASIC), eine rekonfigurierbare Hardware oder Hardwareschaltungsanordnung oder eine andere spezialisierte Hardware zum Fördern einer Leistungsfähigkeit der hier beschriebenen Funktionen ausgeführt sein, diese beinhalten oder mit diesen gekoppelt sein. Bei der veranschaulichenden Ausführungsform beinhaltet der Prozessor 114 einen Satz von Hardwarewarteschlangenmanagem 132, 134, 136 und 138 und einen entsprechenden Satz von Kernen 142, 144, 146 und 148 (gemeinsam die Kerne 140). Die Hardwarewarteschlangenmanager 130 können jeweils als eine beliebige Vorrichtung oder Schaltungsanordnung ausgeführt sein, die zum Verwalten des Einreihens der Warteschlangeelemente von Produzenten-Threads und Zuweisen der Warteschlangenelemente zu Arbeiter-Threads und Verbraucher-Threads einer Arbeitslast zur Bearbeitung der mit jedem Warteschlangenelement assoziierten Daten in der Lage ist. Jeder der Kerne 140 kann als eine beliebige Vorrichtung oder Schaltungsanordnung ausgeführt sein, die zum Empfangen von Befehlen und Durchführen von Berechnungen oder Handlungen basierend auf diesen Befehlen und Ausführen der Threads einer Arbeitslast in der Lage ist, um Warteschlangenelemente zu produzieren und die Warteschlangenelemente zu bearbeiten (z. B. mit Arbeiter- und/oder Verbraucher-Threads). Obwohl vier Hardwarewarteschlangenmanager 130 und vier Kerne 140 in dem Prozessor 114 gezeigt sind, versteht es sich, dass die Anzahl an Hardwarewarteschlangenelementen 130 und Kernen 140 bei anderen Ausführungsformen unterschiedlich sein kann.
  • Der Hauptspeicher 116 kann als ein beliebiger Typ von flüchtigem (z. B. dynamischer Direktzugriffsspeicher (DRAM) usw.) oder nichtflüchtigem Speicher oder Datenspeicherung ausgeführt sein, der/die dazu in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Ein flüchtiger Speicher kann ein Speicherungsmedium sein, das Leistung zum Aufrechterhalten des Zustands von durch das Medium gespeicherten Daten benötigt. Nichtbeschränkende Beispiele für flüchtigen Speicher können verschiedene Typen von Direktzugriffsspeicher (RAM), wie etwa dynamischen Direktzugriffsspeicher (DRAM) oder statischen Direktzugriffsspeicher (SRAM), einschließen. 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ührungsformen kann DRAM einer Speicherkomponente einem Standard entsprechen, der von JEDEC veröffentlicht wurde, wie etwa 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 auf www.jedec.org verfügbar). 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 einer Ausführungsform ist die Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie etwa jene, die auf NAND- oder NOR-Technologien basieren. Eine Speichervorrichtung kann auch eine dreidimensionale Kreuzungspunktspeichervorrichtung (z. B. Intel-3D-XPoint™-Speicher) oder andere Byteadressierbare nichtflüchtige Speichervorrichtungen mit ortsfestem Schreiben beinhalten. Bei einer Ausführungsform kann die Speichervorrichtung eine Speichervorrichtung sein oder solche beinhalten, die Chalkogenidglas, Mehrfachschwellenebene-NAND-Flash-Speicher, NOR-Flash-Speicher, Einzel- oder Mehrfachebenen-Phasenwechselspeicher (PCM: Phase Change Memory), einen resistiven Speicher, Nanodrahtspeicher, Ferroelektrischer-Transistor-Direktzugriffsspeicher (FeTRAM), antiferroelektrischen Speicher, magnetoresistiven Direktzugriffsspeicher (MRAM), der Memristor-Technologie integriert, resistiven Speicher, einschließlich der Metall-Oxid-Basis, den Sauerstoffleerstellenbasis- und den Leitfähige-Brücke-Direktzugriffsspeicher (CB-RAM) oder Spin-Transfer-Torque(STT)-MRAM, eine auf spintronischem Magnetübergangspeicher basierte Vorrichtung, eine Magnettunnelübergang(MTJ)-basierte Vorrichtung, eine DW(Domänenwand)- und SOT(Spin-Orbit-Transfer)-basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung, eine Kombination von beliebigen der obigen oder einen anderen Speicher verwendet. Die Speichervorrichtung kann auf den Die selbst und/oder ein gekapseltes Speicherprodukt verweisen.
  • Bei manchen Ausführungsformen kann ein 3D-Kreuzungspunktspeicher (z. B. Intel-3D-XPoint™-Speicher) eine transistorlose stapelbare Kreuzungspunktarchitektur umfassen, wobei Speicherzellen am Schnittpunkt von Wortleitungen und Bitleitungen sitzen und einzeln adressierbar sind und wobei eine Bitspeicherung auf einer Änderung des Volumenwiderstands basiert. Bei manchen Ausführungsformen kann der gesamte oder ein Teil des Hauptspeichers 116 in dem Prozessor 114 integriert sein. Im Betrieb kann der Speicher 116 verschiedene Software und Daten, die während eines Betriebs verwendet werden, wie etwa Arbeitslastdaten, Hardwarewarteschlangenmanagerdaten. Migrationszustandsdaten, Anwendungen, Programme, Bibliotheken und Treiber, speichern.
  • Die Rechen-Engine 112 ist über das E/A-Untersystem 118, das als eine Schaltungsanordnung und/oder Komponenten realisiert sein kann, kommunikativ mit anderen Komponenten der Rechenvorrichtung 110 gekoppelt, um Eingabe-/Ausgabe-Operationen mit der Rechen-Engine 112 (z. B. mit dem Prozessor 114 und/oder dem Hauptspeicher 116) und anderen Komponenten der Rechenvorrichtung 110 zu erleichtern. Zum Beispiel kann das E/A-Untersystem 118 als Speichersteuerung-Hubs, Eingabe-/Ausgabe-Steuerungs-Hubs, integrierte Sensor-Hubs, Firmwarevorrichtungen, Kommunikation-Links (z. B. Punkt-zu-Punkt-Links, Bus-Links, Drähte, Kabel, Lichtleiter, Leiterplattenbahnen usw.) und/oder andere Komponenten und Untersysteme zum Ermöglichen von Eingabe-/Ausgabe-Operationen ausgeführt sein oder diese anderweitig beinhalten. Bei manchen Ausführungsformen kann das E/A-Untersystem 118 einen Teil eines System-auf-Chip (SoC: System-On-a-Chip) bilden und zusammen mit dem Prozessor 114, dem Hauptspeicher 116 und/oder anderen Komponenten der Rechenvorrichtung 110 in der Rechen-Engine 112 eingebunden sein.
  • Die Kommunikationsschaltungsanordnung 120 kann als ein(e) beliebige(r) Kommunikationsschaltkreis, Vorrichtung oder Sammlung davon ausgeführt sein, der/die zum Ermöglichen von Kommunikationen über das Netz 160 zwischen der Rechenvorrichtung 110 und einer anderen Rechenvorrichtung (z. B. der Client-Vorrichtung 150 usw.) in der Lage ist. Die Kommunikationsschaltungsanordnung 120 kann dazu konfiguriert sein, eine oder mehrere beliebige Kommunikationstechnologien (z. B. drahtgebundene oder drahtlose Kommunikationen) und damit assoziierte Protokolle (z. B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) zu verwenden, um eine solche Kommunikation zu bewirken.
  • Die veranschaulichende Kommunikationsschaltungsanordnung 120 beinhaltet eine Netzwerkschnittstellensteuerung (NIC) 122, die auch als eine Host-Fabric-Schnittstelle (HFI: Host Fabric Interface) bezeichnet werden kann. Die NIC 122 kann als eine oder mehrere Erweiterungskarten, Tochterkarten, Netzwerkschnittstellenkarten, Controller-Chips, Chipsätze oder andere Vorrichtungen, die von der Rechenvorrichtung 110 verwendet werden können, ausgeführt sein, um sich mit einer anderen Rechenvorrichtung (z. B. der Client-Vorrichtung 150 usw.) zu verbinden. Bei manchen Ausführungsformen kann die NIC 122 als Teil eines System-auf-Chip (SoC) ausgeführt sein, das einen oder mehrere Prozessoren beinhaltet, oder auf einem Mehrfachchipgehäuse enthalten sein, das auch einen oder mehrere Prozessoren enthält. Bei manchen Ausführungsformen kann die NIC 122 einen lokalen Prozessor (nicht gezeigt) und/oder einen lokalen Speicher (nicht gezeigt) beinhalten, die beide lokal für die NIC 122 sind. Bei solchen Ausführungsformen kann der lokale Prozessor der NIC 122 dazu in der Lage sein, eine oder mehrere der Funktionen der hier beschriebenen Rechen-Engine 112 durchzuführen. Zusätzlich oder alternativ dazu kann bei solchen Ausführungsformen der lokale Speicher der NIC 122 in eine oder mehrere Komponenten der Rechenvorrichtung 110 auf der Platinenebene, Sockelebene, Chipebene und/oder anderen Ebenen integriert sein.
  • Die eine oder die mehreren veranschaulichenden Datenspeichervorrichtungen 124 können als eine beliebige Art von Vorrichtungen ausgeführt sein, die zu Kurz- oder Langzeitspeicherung von Daten ausgelegt sind, wie zum Beispiel Speichervorrichtungen und -schaltungen, Speicherkarten, Festplatten, Solid-State-Laufwerke oder andere Datenspeichervorrichtungen. Jede Datenspeicherungsvorrichtung 124 kann eine Systempartition beinhalten, die Date und Firmwarecode für die Datenspeicherungsvorrichtung 124 speichert. Jede Datenspeicherungsvorrichtung 124 kann auch eine oder mehrere Betriebssystempartitionen beinhalten, die Datendateien und Ausführungsprogramme für Betriebssysteme beinhalten.
  • Die Client-Vorrichtung 150 kann Komponenten aufweisen, die jenen in 1 unter Bezugnahme auf die Rechenvorrichtung 110 beschriebenen ähnlich sind. Die Beschreibung jener Komponenten der Rechenvorrichtung 110 ist gleichermaßen auf die Beschreibung von Komponenten der Client-Vorrichtung zutreffend und wird hier der Klarheit der Beschreibung halber nicht wiederholt. Ferner versteht es sich, dass die Rechenvorrichtung 110 und die Client-Vorrichtung 150 andere Komponenten, Subkomponenten und Vorrichtungen beinhalten können, die üblicherweise in einer Rechenvorrichtung gefunden werden und die oben unter Bezugnahme auf die Rechenvorrichtung 110 nicht besprochen sind und hier der Klarheit der Beschreibung halber nicht besprochen sind.
  • Wie oben beschrieben, befinden sich die Rechenvorrichtung 110 und die Client-Vorrichtung 150 veranschaulichend in Kommunikation über das Netz 160, das als ein beliebiger Typ eines drahtgebundenen oder drahtlosen Kommunikationsnetzes ausgeführt sein kann, einschließlich globaler Netze (z. B. des Internets), lokaler Netzwerke (LANs: Local Area Networks) oder Weitverkehrsnetze (WANs: Wide Area Networks), zellularer Netze (z. B. Global System for Mobile Communications (GSM), 3G, Long Term Evolution (LTE), Worldwide Interoperability for Microwave Access (WiMAX) usw.), DSL-Netzen (DSL: Digital Subsriber Line - digitaler Teilnehmeranschluss), Kabelnetzen (z. B. Koaxialnetzen, Fasernetzen usw.) oder einer beliebigen Kombination davon.
  • Nun unter Bezugnahme auf 2 kann die Rechenvorrichtung 110 eine Umgebung 200 während des Betriebs einrichten. Die veranschaulichende Umgebung 200 beinhaltet einen Netzkommunikator 210 und einen Arbeitslastmanager 220. Jede der Komponenten der Umgebung 200 kann als Hardware, Firmware, Software oder als eine Kombination davon ausgeführt sein. Von daher können bei manchen Ausführungsformen eine oder mehrere der Komponenten der Umgebung 200 als Schaltungsanordnung oder eine Sammlung von elektrischen Vorrichtungen (z. B. Netzkommunikatorschaltungsanordnung 210, Arbeitslastmanagerschaltungsanordnung 220 usw.) ausgeführt sein. Es versteht sich, dass bei solchen Ausführungsformen die Netzkommunikatorschaltungsanordnung 210 und/oder die Arbeitslastmanagerschaltungsanordnung 220 einen Teil der Rechen-Engine 112 und/oder des Prozessors und/oder des Speichers 116 und/oder der Kommunikationsschaltungsanordnung 120 und/oder des E/A-Untersystems 118 und/oder anderer Komponenten der Rechenvorrichtung 110 bilden können. Bei der veranschaulichenden Ausführungsform beinhaltet die Umgebung 200 Arbeitslastdaten 202, die als beliebige Daten, die Arbeitslasten und die mit jeder Arbeitslast assoziierten Threads angeben, Eingangsdaten, die durch jede Arbeitslast zu bearbeiten sind (z. B. von der Client-Vorrichtung 150 empfangene Daten), und Ausgangsdaten, die durch jede Arbeitslast erzeugt werden (z. B. an die Client-Vorrichtung 150 zu sendende Daten) ausgeführt sein können. Die veranschaulichende Umgebung 200 beinhaltet auch Hardwarewarteschlangenmanagerdaten 204, die als beliebige Daten ausgeführt sein können, die Kennungen der Hardwarewarteschlangenmanager 130, die vorliegend verfügbaren Ressourcen auf jedem Hardwarewarteschlangenmanager 130 (z. B. Ports, Warteschlangenkennungen usw.), Zuweisungen von Arbeitslasten zu Hardwarewarteschlangenmanagem 130, Speicheradressen, die von jedem Hardwarewarteschlangenmanager 130 verwendet werden, den Status (z. B. die Anzahl an Warteschlangenentitäten in jeder Warteschlange) jeder von jedem Hardwarewarteschlangenmanager 130 verwalteten Warteschlange und die Anzahl an Credits in einem Credit-Pool (z. B. eine globale Variable, die von den Threads einer gegebenen Arbeitslast geteilt wird) für jede mit dem entsprechenden Hardwarewarteschlangenmanager 130 assoziierte Arbeitslast angeben. Außerdem beinhaltet die veranschaulichende Umgebung 200 Migrationsbedingungsdaten 206, die als beliebige Daten ausgeführt sein können, die Bedingungen angeben, unter denen eine Arbeitslast von einem Hardwarewarteschlangenmanager 130 zu einem anderen Hardwarewarteschlangenmanager 130 migriert werden sollten (z. B. ein vordefiniertes Aktivitätsniveau, wie etwa eine Zahl an Warteschlangenelementen, die von den Threads der Arbeitslast über eine vordefinierte Zeitperiode verarbeitet werden, eine Zeitperiode, die typischerweise mit einem relativ niedrigen Aktivitätsniveau oder einem relativ hohen Aktivitätsniveau assoziiert ist usw.), um entweder Arbeitslasten auf eine geringere Anzahl an Hardwarewarteschlangenmanagem 130 zusammenzufassen (z. B. während Perioden niedriger Aktivität) und die anderen Hardwarewarteschlangenmanager 130 zu deaktivieren oder um die Arbeitslasten über mehrere der Hardwarewarteschlangenmanager 130 zu verteilen (z. B. während Perioden mit höherer Aktivität).
  • Bei der veranschaulichenden Umgebung 200 ist der Netzkommunikator 210, der als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon wie oben besprochen ausgeführt sein kann, dazu konfiguriert, eingehende und ausgehende Netzkommunikationen (z. B. Netzverkehr, Netzpakete, Netzflüsse usw.) zu bzw. von der Rechenvorrichtung 110 zu ermöglichen. Hierzu ist der Netzkommunikator 210 dazu konfiguriert, Datenpakete von einem System oder einer Rechenvorrichtung (z. B. der Client-Vorrichtung 150 usw.) zu empfangen und zu verarbeiten und Datenpakete vorzubereiten und an eine Rechenvorrichtung oder ein System (z. B. die Client-Vorrichtung 150 usw.) zu senden. Dementsprechend kann bei manchen Ausführungsformen wenigstens ein Teil der Funktionalität des Netzkommunikators 210 durch die Kommunikationsschaltungsanordnung 120 und bei der veranschaulichenden Ausführungsform durch die NIC 122 durchgeführt werden.
  • Der Arbeitslastmanager 220, der als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination davon ausgeführt sein kann, ist dazu konfiguriert, Arbeitslasten auszuführen und Arbeitslasten zu einer relativ geringen Anzahl an Hardwarewarteschlangenmanagem 130 zusammenzufassen (z. B. während Perioden geringer Aktivität) und nichtverwendete Hardwarewarteschlangenmanager 130 zu deaktivieren oder die Arbeitslasten über relativ mehr Hardwarewarteschlangenmanager 130 zu verteilen (z. B. während Perioden höherer Aktivität). Hierzu beinhaltet bei der veranschaulichenden Ausführungsform der Arbeitslastmanager 220 einen Arbeitslastausführer 222, einen Migrationsbedingungsbestimmer 224 und einen Migrationskoordinator 226. Der Arbeitsausführer 222 ist bei der veranschaulichenden Ausführungsform dazu konfiguriert, Arbeitslasten unter Verwendung der Kerne 140 des Prozessors 114 auszuführen. Dadurch kann der Arbeitslastausführer 222 Pakete von der Kommunikationsschaltungsanordnung 120 unter Verwendung eines dedizierten Kerns 142 (z. B. eines Rx-Kerns) empfangen, um (ein) Warteschlangenelement(e) zu produzieren, das (die) die Daten in den empfangenen Paketen repräsentiert (repräsentieren). Ferner kann der Arbeitslastausführer 222 die Daten in den mit dem (den) Warteschlangenelement(en) assoziierten Paketen unter Verwendung von Arbeiter-Threads, die anderen Kernen, wie etwa den Kernen 144, 146, entsprechen, bearbeiten und kann ausgehende Pakete, die aus den Operationen der Arbeiter-Threads resultieren, unter Verwendung eines anderen Kerns, wie etwa des Kerns 148 (z. B. eines Tx-Kerns), senden.
  • Der Migrationsbedingungsbestimmer 224 ist bei der veranschaulichenden Ausführungsform dazu konfiguriert, kontinuierlich zu bestimmen, ob eine Bedingung aufgetreten ist, unter der eine oder mehrere Arbeitslasten zwischen Hardwarewarteschlangenmanagem 130 bewegt werden sollten, entweder um die Arbeitslasten auf weniger Hardwarewarteschlangenmanager 130 zusammenzufassen oder um die Arbeitslasten über mehr Hardwarewarteschlangenmanager 130 zu verteilen. Bei der veranschaulichenden Ausführungsform kann der Migrationsbedingungsbestimmer 224 ein vorliegendes Aktivitätsniveau, das mit jeder Arbeitslast assoziiert ist (z. B. eine Anzahl an Paketen, die durch die Threads der Arbeitslast während einer vordefinierten Zeitperiode, wie etwa einer Sekunde oder einer Minute, verarbeitet wird) vergleichen und bestimmen, ob das Aktivitätsniveau niedrig genug ist, um eine vordefinierte Schwelle zu erfüllen, die ein niedriges Aktivitätsniveau angibt, unter welchem die Arbeitslast zu einem anderen Hardwarewarteschlangenmanager 130 bewegt werden sollte, um zu ermöglichen, dass der Hardwarewarteschlangenmanager 130 (z. B. der Hardwarewarteschlangenmanager 130, von dem die Arbeitslast bewegt wird) deaktiviert wird. Umgekehrt kann der Migrationsbedingungsbestimmer 224 bestimmen, ob das Aktivitätsniveau eine höhere vordefinierte Schwelle erfüllt, wobei in diesem Fall die Arbeitslast zu einem weniger stark belastetem Hardwarewarteschlangenmanager 130 bewegt werden sollte. Bei manchen Ausführungsformen kann der Migrationsbedingungsbestimmer 224 dazu konfiguriert sein, zu bestimmen, ob die vorliegende Zeit innerhalb einer Zeitperiode liegt, von der bekannt ist, dass sie mit einem niedrigen Aktivitätsniveau für eine Arbeitslast assoziiert ist, und, falls ja, zu bestimmen, dass die Arbeitslast mit anderen Arbeitslasten auf einen anderen Hardwarewarteschlangenmanager 130 zusammengefasst werden sollte, oder umgekehrt, dass die Arbeitslast zu einem weniger stark belasteten Hardwarewarteschlangenmanager 130 bewegt werden sollte, um ein erwartetes höheres Aktivitätsniveau zu berücksichtigen. Der Migrationskoordinator 226 ist bei der veranschaulichenden Ausführungsform dazu konfiguriert, zu bestimmen, welcher Hardwarewarteschlangenmanager 130 eine ausreichende Kapazität (z. B. eine Schwellenanzahl an Ports, Warteschlangenkennungen usw.) aufweist, um die Warteschlangen für eine zu bewegende Arbeitslast zu verwalten. Der Migrationskoordinator ist ferner dazu ausgelegt, Signale an die Threads der Arbeitslast zu liefern, dass die Arbeitslast zu einem anderen Hardwarewarteschlangenmanager 130 zu bewegen ist, und die Arbeitslast zu dem Hardwarewarteschlangenmanager 130 zu bewegen, von dem bestimmt wurde, dass er eine ausreichende Kapazität aufweist, einschließlich Neuzuordnen von Speicheradressen, die von der Arbeitslast verwendet werden, um zu ermöglichen, dass die Threads der Arbeitslast mit dem Zielhardwarewarteschlangenmanager 130 (z. B. dem Hardwarewarteschlangenmanager 130, zu dem die Arbeitslast bewegt werden wird) anstelle des Quellenhardwarewarteschlangenmanagers 130 (z. B. des Hardwarewarteschlangenmanagers 130, von die die Arbeitslast bewegt werden wird) kommunizieren.
  • Nun unter Bezugnahme auf 3 kann die Rechenvorrichtung 110 im Betrieb ein Verfahren 300 zum Bewegen einer Arbeitslast zwischen Hardwarewarteschlangenmanagem 130 ausführen. Das Verfahren 300 beginnt mit Block 302, in welchem die Rechenvorrichtung 110 eine Arbeitslast ausführt. Dadurch, und wie in Block 304 angegeben ist, verwaltet die Rechenvorrichtung 110 Warteschlangen der Arbeitslast mit einem Quellenhardwarewarteschlangenmanager 130, der mit der Arbeitslast assoziiert ist (z. B. dem Hardwarewarteschlangenmanager 130, dem die Arbeitslast derzeit zugewiesen ist). Beim Verwalten der Warteschlangen verfolgt die Rechenvorrichtung 110 bei der veranschaulichenden Ausführungsform den Status des Credit-Pools, der mit der Arbeitslast assoziiert ist, wie in Block 306 angegeben ist. Ferner verwaltet die Rechenvorrichtung 110 bei der veranschaulichenden Ausführungsform das Einreihen von Warteschlangenelementen (z. B. durch einen oder mehrere Produzenten-Threads der Arbeitslast) und das Entfernen der Warteschlangenelemente aus der Warteschlange (z. B. durch Arbeiter-Threads und andere Verbraucher-Threads der Arbeitslast), wie bei Block 308 angegeben ist. Wie in Block 310 angegeben, bestimmt die Rechenvorrichtung 110 auch, ob eine Arbeitslastmigrationsbedingung vorliegt. Dadurch kann die Rechenvorrichtung 110 bestimmen, ob ein Aktivitätsniveau der Arbeitslast eine vordefinierte Schwelle erfüllt, wie in Block 312 angegeben ist. Wie oben beschrieben, kann das Aktivitätsniveau als die Anzahl an Paketen, die durch die Threads der Arbeitslast über eine vordefinierte Zeitperiode verarbeitet werden, oder ein anderes Maß eines Durchsatzes der Arbeitslast ausgeführt sein. Wie in Block 314 angegeben, kann die Rechenvorrichtung 110 bestimmen, ob die Anzahl an Inflight(in Übertragung befindlichen)-Paketen (z. B. Warteschlangenelemente, die noch nicht vollständig durch den (die) Verbraucher-Thread(s) verarbeitet wurden) eine vordefinierte Schwelle erfüllt. Bei manchen Ausführungsformen kann die Rechenvorrichtung 110, falls die Anzahl an Inflight-Paketen gleich einer vordefinierten Anzahl oder größer als diese ist, bestimmen, dass das Risiko des Verlierens der Pakete während einer Migration zu groß ist und dass eine Migrationsbedingung nicht vorliegt. Zusätzlich oder alternativ dazu, wie in Block 316 angegeben, kann die Rechenvorrichtung 110 bestimmen, ob die vorliegende Zeit innerhalb eines vordefinierten Zeitfensters liegt (z. B. eines Zeitfensters, das mit einem speziellen Aktivitätsniveau assoziiert ist, das das Bewegen der Arbeitslast zu einem anderen Hardwarewarteschlangenmanager 130 garantiert).
  • In Block 318 bestimmt die Rechenvorrichtung 110 den anschließenden Handlungsablauf als eine Funktion davon, ob in Block 310 bestimmt wurde, dass eine Migrationsbedingung vorliegt. Falls keine Migrationsbedingung vorliegt, macht das Verfahren 300 eine Schleife zurück zu Block 302, in dem die Rechenvorrichtung 110 eine Ausführung der Arbeitslast fortsetzt. Andernfalls, falls eine Migrationsbedingung vorliegt, geht das Verfahren 300 zu Block 320 über, in dem die Rechenvorrichtung 110 einen Hardwarewarteschlangenmanager 130 aus dem Satz von Hardwarewarteschlangenmanagem 130 als einen Kandidaten zum Empfangen der Arbeitslast auswählt. In Block 322 bestimmt die Rechenvorrichtung 110, ob der Kandidatenhardwarewarteschlangenmanager 130 eine ausreichende Kapazität zum Verwalten der Warteschlangen der Arbeitslast aufweist. Dadurch bestimmt die Rechenvorrichtung 110, ob der Kandidatenhardwarewarteschlangenmanager 130 ausreichend verfügbare Ports für die Arbeitslast aufweist (z. B. die Anzahl der Ports, die der (die) Thread(s) der Arbeitslast derzeit auf dem Quellenhardwarewarteschlangenmanager 130 nutzt (nutzen), wie in Block 324 angegeben ist. Zusätzlich oder alternativ dazu kann die Rechenvorrichtung 110 bestimmen, welcher Kandidatenhardwarewarteschlangenmanager 130 ausreichende Warteschlangen-IDs (z. B. verfügbare Indices zum Zuweisen zu Warteschlangen, die durch die Threads der Arbeitslast genutzt werden) aufweist, wie in Block 326 angegeben ist. Außerdem, und wie in Block 328 angegeben, kann die Rechenvorrichtung 110 einen Credit (z. B. in einer atomaren Operation) von einer anderen Arbeitslast unter Nutzung des Kandidatenhardwarewarteschlangenmanagers 130 subtrahieren, um zusätzliche Kapazität für die Arbeitslast bereitzustellen, die zu bewegen ist. Anschließend geht das Verfahren 300 zu Block 330 aus 4 über, in dem die Rechenvorrichtung 110 bestimmt, ob der Kandidatenhardwarewarteschlangenmanager 130 eine ausreichende Kapazität zum Verwalten der Warteschlangen der Arbeitslast aufweist.
  • Nun unter Bezugnahme auf 4 geht das Verfahren 300, falls die Rechenvorrichtung 110 bestimmt hat, dass der Kandidatenhardwarewarteschlangenmanager 130 keine ausreichende Kapazität aufweist, zu Block 332 über, in dem die Rechenvorrichtung 110 bestimmt, ob andere Hardwarewarteschlangenmanager 130 in der Rechenvorrichtung 110 vorhanden sind, die nicht bezüglich ihrer Kapazität getestet wurden. Falls ja, macht das Verfahren 300 eine Schleife zurück zu Block 320 aus 3, in dem die Rechenvorrichtung 110 einen der anderen Hardwarewarteschlangenmanager 130 auswählt und bestimmt, ob der Hardwarewarteschlangenmanager 130 eine ausreichende Kapazität für die Arbeitslast aufweist. Ansonsten macht das Verfahren 300 eine Schleife zurück zu Block 302, in dem die Rechenvorrichtung 110 eine Ausführung der Arbeitslast fortsetzt. Wieder unter Bezugnahme auf Block 330 geht das Verfahren 300, falls die Rechenvorrichtung 110 stattdessen bestimmt, dass der Kandidatenhardwarewarteschlangenmanager 130 eine ausreichende Kapazität aufweist, zu Block 334 über, in dem die Rechenvorrichtung 110 die Arbeitslast zu dem Kandidatenhardwarewarteschlangenmanager 130 bewegt, der in den anschließenden Blöcken als der Zielhardwarewarteschlangenmanager 130 bezeichnet wird.
  • Beim Bewegen der Arbeitslast zu dem Zielhardwarewarteschlangenmanager 130 kann die Rechenvorrichtung 110 mit einem oder mehreren Produzenten-Threads (z. B. mit einem oder mehreren der Kerne, die zum Liefern von Paketen an einen Hardwarewarteschlangenmanager 130 zum Einfügen in eine Warteschlange als Warteschlangenelement(e)) überprüfen, ob in dem Credit-Pool (z. B. eine globale Variable, die die Anzahl an Credits angibt, die zur Verwendung durch Threads der Arbeitslast verfügbar sind) ein Bewegungs-Flag (z. B. ein designiertes Bit) gesetzt wurde (z. B. auf eins), wie in Block 336 angegeben ist. Als Reaktion auf das Detektieren, dass das Bewegungs-Flag gesetzt wurde, kann die Rechenvorrichtung 110 beliebige ausstehende Credits an den Credit-Pool übergeben, wie in Block 338 angegeben ist. Ferner kann (können) der (die) Produzenten-Thread(s) der Arbeitslast als Reaktion auf eine Detektion, dass das Bewegungs-Flag gesetzt wurde, eine Bewegungsanforderung an einen Treiber für die Hardwarewarteschlangenmanager 130 (z. B. durch einen Anwendungsprogrammierungsschnittstellen(API)-Aufruf) senden, wie in Block 340 angegeben ist. Ferner kann (können) der (die) Produzenten-Thread(s) eingehende Pakete (z. B. von der Kommunikationsschaltungsanordnung 120) zu dem Zielhardwarewarteschlangenmanager 130 lenken, wie in Block 342 angegeben ist. Bei manchen Ausführungsformen bewirkt der API-Aufruf zu dem Treiber die Umlenkung von eingehenden Paketen zu dem Zielhardwarewarteschlangenmanager 130 (z. B. ordnet der Treiber die Seitentabellen der Arbeitslast neu zu, so dass der Zielhardwarewarteschlangenmanager 130 dem Speicherort zugeordnet ist, dem der Quellenhardwarewarteschlangenmanager 130 zuvor zugeordnet war.
  • Wie in Block 344 angegeben, kann die Rechenvorrichtung 110 mit einem oder mehreren Verbraucher-Threads (z. B. Threads, die Warteschlangenelemente aus der Warteschlange entfernen und an den zugrundeliegenden Daten arbeiten) überprüfen, ob ein Bewegungsbit in einem beliebigen der Warteschlangenelemente gesetzt wurde. Ferner kann (können) als Reaktion auf die Detektion, dass das Bewegungsbit gesetzt wurde, der (die) Verbraucher-Thread(s) das (die) Warteschlangenelemente als Dummy-Warteschlangenelement(e) (z. B. falsche(s) Warteschlangenelement(e)) verwerfen und eine Bewegungsanforderung an einen Treiber für die Hardwarewarteschlangenmanager 130 (z. B. durch einen API-Aufruf) senden, wie in Block 346 angegeben ist. Während die Blöcke 336 bis 342 durch den (die) Produzenten-Thread(s) durchgeführt wird (werden) und die Blöcke 344 bis 346 durch den (die) Verbraucher-Thread(s) durchgeführt wird (werden), werden bei der veranschaulichenden Ausführungsform die Blöcke 348 bis 362 durch einen Kernel durchgeführt, der durch die Rechenvorrichtung 110 durchgeführt wird, um die Bewegung abzuschließen. In Block 348 weist die Rechenvorrichtung 110 logische Adressen, die durch die Arbeitslast verwendet werden, von physischen Adressen, die durch den Quellenhardwarewarteschlangenmanager 130 verwendet werden, zu physischen Adressen, die durch den Zielhardwarewarteschlangenmanager 130 verwendet werden, neu zu. Wie in Block 350 angegeben, kann die Rechenvorrichtung 110 den Credit-Pool (z. B. eine globale Variable) für die Arbeitslast neu zuordnen. Ferner kann, wie in dem Block angegeben, die Rechenvorrichtung 110 Ports, die durch die Arbeitslast verwendet werden, jenen des Zielhardwarewarteschlangenmanagers 130 neu zuordnen (z. B. logische Speicheradressen, die durch den (die) Thread(s) der Arbeitslast verwendet werden, physischen Speicheradressen für Ports des Zielhardwarewarteschlangenmanagers 130 anstelle von physischen Speicheradressen für Ports des Quellenhardwarewarteschlangenmanagers 130 zuordnen). Wie in Block 354 angegeben, kann die Rechenvorrichtung 110 mit dem Kernel ein vordefiniertes Bewegungs-Flag setzen, um den (die) Produzenten-Thread(s) der Arbeitslast zu warnen, dass sie zu dem Zielhardwarewarteschlangenmanager 130 bewegt werden sollen (z. B. den Flag, auf den oben in Block 336 Bezug genommen wurde). Wie in Block 356 angegeben, kann die Rechenvorrichtung 110 darauf warten, dass Warteschlangenelemente von dem Quellenhardwarewarteschlangenmanager 130 abgegeben werden (z. B. durch die Arbeiter- und Verbraucher-Threads der Arbeitslast verarbeitet und aus den Warteschlangen entfernt werden). Die Rechenvorrichtung 110 kann kontinuierlich den internen Zustand des Hardwarewarteschlangenmanagers 130 abfragen, um zu bestimmen, wann die Warteschlangenelemente vollständig von dem Quellenhardwarewarteschlangenmanager 130 abgegeben wurden. Wie in Block 358 angegeben, kann die Rechenvorrichtung 110, nachdem die Warteschlangenelemente von dem Quellenhardwarewarteschlangenmanager 130 abgegeben wurden, (ein) Dummy-Warteschlangenelement(e) mit einem gesetzten Bewegungs-Bit in die Warteschlangen der Verbraucher-Threads schreiben (z. B. die Warteschlangenelemente, auf die in Blöcken 344 und 346 Bezug genommen wurde). Außerdem ordnet die Rechenvorrichtung 110 bei der veranschaulichenden Ausführungsform Verbraucherwarteschlangenzeiger entsprechenden Warteschlangenelementen in dem Zielhardwarewarteschlangenmanager (z. B. Warteschlangenelemente, die daraus resultieren, dass der (die) Produzenten-Thread(s) eingehende Pakete zu dem Zielhardwarewarteschlangenmanager 130 in Block 342 umleiten) zu, wie in Block 360 angegeben ist. Ferner kann die Rechenvorrichtung 110 durch den Kernel Ressourcen des Quellenhardwarewarteschlangenmanagers zurücksetzen (z. B. Löschen beliebiger Variablen oder anderer Daten, die durch den Quellenhardwarewarteschlangenmanager beibehalten werden), wie in Block 362 angegeben ist. Anschließend geht das Verfahren 300 zu Block 364 aus 5 über, in dem die Rechenvorrichtung 110 einen Leistungsverbrauch des Quellenhardwarewarteschlangenmanagers reduzieren kann (z. B. falls der Quellenhardwarewarteschlangenmanager nicht mehr irgendwelchen Arbeitslasten zugewiesen ist). Dadurche reaktiviert (z. B. versorgt Gatte vollständig mit Leistung) die Rechenvorrichtung bei der veranschaulichenden Ausführungsform den Quellenhardwarewarteschlangenmanager 130, wie in Block 366 angegeben ist. Anschließend macht das Verfahren 300 eine Schleife zurück zu Block 302, in dem die Rechenvorrichtung 110 eine Ausführung der Arbeitslast fortsetzt.
  • BEISPIELE
  • Veranschaulichende Beispiele der hier offenbarten Technologien sind unten bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere und eine beliebige Kombination der unten beschriebenen Beispiele beinhalten.
  • Beispiel 1 beinhaltet eine Rechenvorrichtung, die Folgendes umfasst: mehrere Hardwarewarteschlangenmanager, wobei jeder Hardwarewarteschlangenmanager zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt ist und wobei jedes Warteschlangenelement einen durch einen Thread zu bearbeitenden Datensatz angibt; und eine Schaltungsanordnung zum (i) Ausführen einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager, (ii) Bestimmen, ob eine Arbeitslastmigrationsbedingung vorhanden ist, (iii) Bestimmen, ob ein zweiter Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten, (iv) Bewegen der Arbeitslast, als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager, und (v) Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.
  • Beispiel 2 beinhaltet den Gegenstand aus Beispiel 1, und wobei das Reduzieren des Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers Deaktivieren des ersten Hardwarewarteschlangenmanagers umfasst.
  • Beispiel 3 beinhaltet den Gegenstand aus einem der Beispiele 1 und 2, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob ein Aktivitätsniveau der Arbeitslast eine vordefinierte Schwelle erfüllt, umfasst.
  • Beispiel 4 beinhaltet den Gegenstand aus einem der Beispiele 1-3, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob die momentane Zeit innerhalb eines vordefinierten Zeitfensters liegt, umfasst.
  • Beispiel 5 beinhaltet den Gegenstand aus einem der Beispiele 1-4, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob eine Anzahl an Inflight-Paketen, die mit der Arbeitslast assoziiert sind, eine vordefinierte Schwelle erfüllt, umfasst.
  • Beispiel 6 beinhaltet den Gegenstand aus einem der Beispiele 1-5, und wobei das Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine vordefinierte Anzahl an verfügbaren Ports aufweist, umfasst.
  • Beispiel 7 beinhaltet den Gegenstand aus einem der Beispiele 1-6, und wobei die Schaltungsanordnung ferner zum Subtrahieren eines oder mehrerer Credits von einem Credit-Pool, die mit einer durch den zweiten Hardwarewarteschlangenmanager verwalteten Arbeitslast assoziiert sind, vor dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager ausgelegt ist.
  • Beispiel 8 beinhaltet den Gegenstand aus einem der Beispiele 1-7, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Neuzuordnen einer logischen Adresse, die durch die Arbeitslast verwendet wird, von einer ersten physischen Adresse, die durch den ersten Hardwarewarteschlangenmanager verwendet wird, zu einer zweiten physischen Adresse, die durch den zweiten Hardwarewarteschlangenmanager verwendet wird, umfasst.
  • Beispiel 9 beinhaltet den Gegenstand aus einem der Beispiele 1-8, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Lenken von Paketen von einem oder mehreren Produzenten-Threads der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager umfasst.
  • Beispiel 10 beinhaltet den Gegenstand aus einem der Beispiele 1-9, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines vordefinierten Bewegungs-Flags in einem Credit-Pool, der durch einen oder mehrere Produzenten-Threads der Arbeitslast verwendet wird, umfasst.
  • Beispiel 11 beinhaltet den Gegenstand aus einem der Beispiele 1-10, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines Bewegungsbits in einem Warteschlangenelement und Einreihen des Warteschlangenelements in eine Warteschlange, die durch einen Verbraucher-Thread der Arbeitslast verwendet wird, umfasst.
  • Beispiel 12 beinhaltet den Gegenstand aus einem der Beispiele 1-11, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Senden, als Reaktion auf die Detektion eines Bewegungs-Flags in einem Credit-Pool oder in einem Warteschlangenelement, einer Bewegungsanforderung von einem Thread der Arbeitslast an einen Hardwarewarteschlangenmanagertreiber umfasst.
  • Beispiel 13 beinhaltet den Gegenstand aus einem der Beispiele 1-12, und beinhaltet ferner mehrere Prozessorkerne, wobei jeder Kern einem Thread der Arbeitslast entspricht.
  • Beispiel 14 beinhaltet ein oder mehrere computerlesbare Speicherungsmedien, die mehrere darauf gespeicherte Befehle umfassen, die als Reaktion darauf, dass sie ausgeführt werden, eine Rechenvorrichtung zu Folgendem veranlassen: Ausführen einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanagem, wobei jeder Hardwarewarteschlangenmanager zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt ist und wobei jedes Warteschlangenelement einen durch einen Thread zu bearbeitenden Datensatz angibt; Bestimmen, ob eine Arbeitslastmigrationsbedingung vorhanden ist; Bestimmen, ob ein zweiter Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten; Bewegen der Arbeitslast, als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager; und Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.
  • Beispiel 15 beinhaltet den Gegenstand aus Beispiel 14, und wobei das Reduzieren des Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers Deaktivieren des ersten Hardwarewarteschlangenmanagers umfasst.
  • Beispiel 16 beinhaltet den Gegenstand aus einem der Beispiele 14 und 15, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob ein Aktivitätsniveau der Arbeitslast eine vordefinierte Schwelle erfüllt, umfasst.
  • Beispiel 17 beinhaltet den Gegenstand aus einem der Beispiele 14-16, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob die momentane Zeit innerhalb eines vordefinierten Zeitfensters liegt, umfasst.
  • Beispiel 18 beinhaltet den Gegenstand aus einem der Beispiele 14-17, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob ein Anzahl an Inflight-Paketen, die mit der Arbeitslast assoziiert sind, eine vordefinierte Schwelle erfüllt, umfasst.
  • Beispiel 19 beinhaltet den Gegenstand aus einem der Beispiele 14-18, und wobei das Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine vordefinierte Anzahl an verfügbaren Ports aufweist, umfasst.
  • Beispiel 20 beinhaltet den Gegenstand aus einem der Beispiele 14-19, und wobei die Schaltungsanordnung ferner zum Subtrahieren eines oder mehrerer Credits von einem Credit-Pool, die mit einer durch den zweiten Hardwarewarteschlangenmanager verwalteten Arbeitslast assoziiert sind, vor dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager ausgelegt ist.
  • Beispiel 21 beinhaltet den Gegenstand aus einem der Beispiele 14-20, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Neuzuordnen einer logischen Adresse, die durch die Arbeitslast verwendet wird, von einer ersten physischen Adresse, die durch den ersten Hardwarewarteschlangenmanager verwendet wird, zu einer zweiten physischen Adresse, die durch den zweiten Hardwarewarteschlangenmanager verwendet wird, umfasst.
  • Beispiel 22 beinhaltet den Gegenstand aus einem der Beispiele 14-21, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Lenken von Paketen von einem oder mehreren Produzenten-Threads der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager umfasst.
  • Beispiel 23 beinhaltet den Gegenstand aus einem der Beispiele 14-22, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines vordefinierten Bewegungs-Flags in einem Credit-Pool, der durch einen oder mehrere Produzenten-Threads der Arbeitslast verwendet wird, umfasst.
  • Beispiel 24 beinhaltet den Gegenstand aus einem der Beispiele 14-23, und wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines Bewegungsbits in einem Warteschlangenelement und Einreihen des Warteschlangenelements in eine Warteschlange, die durch einen Verbraucher-Thread der Arbeitslast verwendet wird, umfasst.
  • Beispiel 25 beinhaltet eine Rechenvorrichtung, die Folgendes umfasst: eine Schaltungsanordnung zum Ausführen einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanagem, wobei jeder Hardwarewarteschlangenmanager zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt ist und wobei jedes Warteschlangenelement einen durch einen Thread zu bearbeitenden Datensatz angibt; ein Mittel zum Bestimmen, ob eine Arbeitslastmigrationsbedingung vorhanden ist; ein Mittel zum Bestimmen, ob ein zweiter Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten; ein Mittel zum Bewegen der Arbeitslast, als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager; und eine Schaltungsanordnung zum Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.
  • Beispiel 26 beinhaltet ein Verfahren, das Folgendes umfasst: Ausführen, durch eine Rechenvorrichtung, einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanagem, wobei jeder Hardwarewarteschlangenmanager zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt ist und wobei jedes Warteschlangenelement einen durch einen Thread zu bearbeitenden Datensatz angibt; Bestimmen durch die Rechenvorrichtung, ob eine Arbeitslastmigrationsbedingung vorhanden ist; Bestimmen durch die Rechenvorrichtung, ob ein zweiter Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten; Bewegen der Arbeitslast, durch die Rechenvorrichtung und als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager; und Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers durch die Rechenvorrichtung und nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.
  • Beispiel 27 beinhaltet den Gegenstand aus Beispiel 26, und wobei das Reduzieren des Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers Deaktivieren des ersten Hardwarewarteschlangenmanagers umfasst.
  • Beispiel 28 beinhaltet den Gegenstand aus einem der Beispiele 26 und 27, und wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob ein Aktivitätsniveau der Arbeitslast eine vordefinierte Schwelle erfüllt, umfasst.

Claims (25)

  1. Rechenvorrichtung, die Folgendes umfasst: mehrere Hardwarewarteschlangenmanager, wobei jeder Hardwarewarteschlangenmanager zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt ist und wobei jedes Warteschlangenelement einen durch einen Thread zu bearbeitenden Datensatz angibt; und eine Schaltungsanordnung zum (i) Ausführen einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager, (ii) Bestimmen, ob eine Arbeitslastmigrationsbedingung vorhanden ist, (iii) Bestimmen, ob ein zweiter Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten, (iv) Bewegen der Arbeitslast, als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager, und (v) Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.
  2. Rechenvorrichtung nach Anspruch 1, wobei das Reduzieren des Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers Deaktivieren des ersten Hardwarewarteschlangenmanagers umfasst.
  3. Rechenvorrichtung nach Anspruch 1, wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob ein Aktivitätsniveau der Arbeitslast eine vordefinierte Schwelle erfüllt, umfasst.
  4. Rechenvorrichtung nach Anspruch 1, wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob die momentane Zeit innerhalb eines vordefinierten Zeitfensters liegt, umfasst.
  5. Rechenvorrichtung nach Anspruch 1, wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob eine Anzahl an Inflight-Paketen, die mit der Arbeitslast assoziiert sind, eine vordefinierte Schwelle erfüllt, umfasst.
  6. Rechenvorrichtung nach Anspruch 1, wobei das Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine vordefinierte Anzahl an verfügbaren Ports aufweist, umfasst.
  7. Rechenvorrichtung nach Anspruch 1, wobei die Schaltungsanordnung ferner zum Subtrahieren eines oder mehrerer Credits von einem Credit-Pool, die mit einer durch den zweiten Hardwarewarteschlangenmanager verwalteten Arbeitslast assoziiert sind, vor dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager ausgelegt ist.
  8. Rechenvorrichtung nach Anspruch 1, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Neuzuordnen einer logischen Adresse, die durch die Arbeitslast verwendet wird, von einer ersten physischen Adresse, die durch den ersten Hardwarewarteschlangenmanager verwendet wird, zu einer zweiten physischen Adresse, die durch den zweiten Hardwarewarteschlangenmanager verwendet wird, umfasst.
  9. Rechenvorrichtung nach Anspruch 1, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Lenken von Paketen von einem oder mehreren Produzenten-Threads der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager umfasst.
  10. Rechenvorrichtung nach Anspruch 1, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines vordefinierten Bewegungs-Flags in einem Credit-Pool, der durch einen oder mehrere Produzenten-Threads der Arbeitslast verwendet wird, umfasst.
  11. Rechenvorrichtung nach Anspruch 1, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines Bewegungsbits in einem Warteschlangenelement und Einreihen des Warteschlangenelements in eine Warteschlange, die durch einen Verbraucher-Thread der Arbeitslast verwendet wird, umfasst.
  12. Rechenvorrichtung nach Anspruch 1, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Senden, als Reaktion auf die Detektion eines Bewegungs-Flags in einem Credit-Pool oder in einem Warteschlangenelement, einer Bewegungsanforderung von einem Thread der Arbeitslast an einen Hardwarewarteschlangenmanagertreiber umfasst.
  13. Verfahren, das Folgendes umfasst: Ausführen, durch eine Rechenvorrichtung, einer Arbeitslast mit einem ersten Hardwarewarteschlangenmanager von mehreren Hardwarewarteschlangenmanagem, wobei jeder Hardwarewarteschlangenmanager zum Verwalten einer oder mehrerer Warteschlangen aus Warteschlangenelementen ausgelegt ist und wobei jedes Warteschlangenelement einen durch einen Thread zu bearbeitenden Datensatz angibt; Bestimmen durch die Rechenvorrichtung, ob eine Arbeitslastmigrationsbedingung vorhanden ist; Bestimmen durch die Rechenvorrichtung, ob ein zweiter Hardwarewarteschlangenmanager der mehreren Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, um einen Satz von mit der Arbeitslast assoziierten Warteschlangen zu verwalten; Bewegen der Arbeitslast, durch die Rechenvorrichtung und als Reaktion auf eine Bestimmung, dass der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, zu dem zweiten Hardwarewarteschlangenmanager; und Reduzieren eines Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers durch die Rechenvorrichtung und nach dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager.
  14. Verfahren nach Anspruch 13, wobei das Reduzieren des Leistungsverbrauchs des ersten Hardwarewarteschlangenmanagers Deaktivieren des ersten Hardwarewarteschlangenmanagers umfasst.
  15. Verfahren nach Anspruch 13, wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob ein Aktivitätsniveau der Arbeitslast eine vordefinierte Schwelle erfüllt, umfasst.
  16. Verfahren nach Anspruch 13, wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob die momentane Zeit innerhalb eines vordefinierten Zeitfensters liegt, umfasst.
  17. Verfahren nach Anspruch 13, wobei das Bestimmen, ob eine Arbeitslastmigrationsbedingung vorliegt, Bestimmen, ob eine Anzahl an Inflight-Paketen, die mit der Arbeitslast assoziiert sind, eine vordefinierte Schwelle erfüllt, umfasst.
  18. Verfahren nach Anspruch 13, wobei das Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine ausreichende Kapazität aufweist, Bestimmen, ob der zweite Hardwarewarteschlangenmanager eine vordefinierte Anzahl an verfügbaren Ports aufweist, umfasst.
  19. Verfahren nach Anspruch 13, das ferner Subtrahieren eines oder mehrerer Credits von einem Credit-Pool, die mit einer durch den zweiten Hardwarewarteschlangenmanager verwalteten Arbeitslast assoziiert sind, vor dem Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager umfasst.
  20. Verfahren nach Anspruch 13, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Neuzuordnen einer logischen Adresse, die durch die Arbeitslast verwendet wird, von einer ersten physischen Adresse, die durch den ersten Hardwarewarteschlangenmanager verwendet wird, zu einer zweiten physischen Adresse, die durch den zweiten Hardwarewarteschlangenmanager verwendet wird, umfasst.
  21. Verfahren nach Anspruch 13, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Lenken von Paketen von einem oder mehreren Produzenten-Threads der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager umfasst.
  22. Verfahren nach Anspruch 13, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines vordefinierten Bewegungs-Flags in einem Credit-Pool, der durch einen oder mehrere Produzenten-Threads der Arbeitslast verwendet wird, umfasst.
  23. Verfahren nach Anspruch 13, wobei das Bewegen der Arbeitslast zu dem zweiten Hardwarewarteschlangenmanager Setzen eines Bewegungsbits in einem Warteschlangenelement und Einreihen des Warteschlangenelements in eine Warteschlange, die durch einen Verbraucher-Thread der Arbeitslast verwendet wird, umfasst.
  24. Maschinenlesbares Speicherungsmedium oder maschinenlesbare Speicherungsmedien, das bzw. die mehrere darauf gespeicherte Befehle umfasst bzw. umfassen, die als Reaktion darauf, dass sie ausgeführt werden, bewirken, dass eine Rechenvorrichtung das Verfahren nach einem der Ansprüche 13-23 durchführt.
  25. Rechenvorrichtung, die ein Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 13-22 umfasst.
DE102019102883.3A 2018-03-06 2019-02-06 Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern Pending DE102019102883A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/912,746 US20190042305A1 (en) 2018-03-06 2018-03-06 Technologies for moving workloads between hardware queue managers
US15/912,746 2018-03-06

Publications (1)

Publication Number Publication Date
DE102019102883A1 true DE102019102883A1 (de) 2019-09-12

Family

ID=65229478

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019102883.3A Pending DE102019102883A1 (de) 2018-03-06 2019-02-06 Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern

Country Status (3)

Country Link
US (1) US20190042305A1 (de)
CN (1) CN110231982A (de)
DE (1) DE102019102883A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392561B2 (en) 2018-09-28 2022-07-19 Oracle International Corporation Data migration using source classification and mapping
US20200104377A1 (en) * 2018-09-28 2020-04-02 Oracle International Corporation Rules Based Scheduling and Migration of Databases Using Complexity and Weight
US11847103B2 (en) 2018-09-28 2023-12-19 Oracle International Corporation Data migration using customizable database consolidation rules
CN110058816B (zh) * 2019-04-10 2020-09-18 中国人民解放军陆军工程大学 一种基于ddr的高速多用户队列管理器及方法
WO2021050951A1 (en) 2019-09-11 2021-03-18 Intel Corporation Hardware queue scheduling for multi-core computing environments
US20220391243A1 (en) * 2021-06-05 2022-12-08 EMC IP Holding Company LLC Dynamically redistributing i/o jobs among operating system threads
US11841871B2 (en) * 2021-06-29 2023-12-12 International Business Machines Corporation Managing extract, transform and load systems
WO2024072374A1 (en) * 2022-09-27 2024-04-04 Intel Corporation Port selection for hardware queuing management device

Also Published As

Publication number Publication date
CN110231982A (zh) 2019-09-13
US20190042305A1 (en) 2019-02-07

Similar Documents

Publication Publication Date Title
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102018006894A1 (de) Technologien zum Auslagern von Beschleunigungsaufgaben-Ablaufplanungsoperationen an Beschleunigerschlitten
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102012216568B4 (de) Scheduling und Managen von Rechentasks mit unterschiedlichen Ausführungsprioritätsstufen
DE112018004798T5 (de) Technologien für ein bereitstellen von effizientem speicherzugriff auf einem beschleunigerschlitten
DE102019130686A1 (de) Technologien zur bereitstellung dynamischer auswahl von edge- und lokalen beschleunigerressourcen
DE102016100902A1 (de) Verfahren zum dynamischen Zuteilen von Ressourcen von konfigurierbaren Datenverarbeitungsressourcen
DE112020001833T5 (de) Netzwerkschnittstelle für Datentransport in heterogenen Rechenumgebungen
DE102016221811A1 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102020201834A1 (de) Technologien für netzvorrichtungslastausgleichseinrichtungen für beschleunigte funktionen-als-dienst
DE112017001808T5 (de) Technologien für einen verteilten hardwarewarteschlangenmanager
DE102020133269A1 (de) Konfigurieren von Parametern von Zielsubsystemen von nichtflüchtigem Speicher für die Arbeitslast-Anforderungs-Servicequalität
DE202010017668U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE102010001985A1 (de) Vorrichtung zum Schalten des Betriebs einer virtuellen Maschine zwischen mehreren Computern, die der gleichen Computerplattform zugeordnet sind, und entsprechende Schaltverfahren
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102019105881A1 (de) Technologien zur bereitstellung von effizienter detektion leerlaufender abfrageschleifen
DE102019120573A1 (de) Technologien zur rechnerischen speicherung über ablade-kernel-erweiterungen
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE102020201546A1 (de) Technologien zum Bereitstellen von Hardwarebetriebsmitteln als Dienst mit direkter Betriebsmitteladressierbarkeit
DE102022124530A1 (de) Speicherpoolmanagement
DE112016004367T5 (de) Technologien für automatische Prozessorkern-Zuordnungsverwaltung und -Kommunikation unterVerwendung direkter Datenplatzierung in private Zwischenspeicher