DE112011100392B4 - Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss) - Google Patents

Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss) Download PDF

Info

Publication number
DE112011100392B4
DE112011100392B4 DE112011100392.7T DE112011100392T DE112011100392B4 DE 112011100392 B4 DE112011100392 B4 DE 112011100392B4 DE 112011100392 T DE112011100392 T DE 112011100392T DE 112011100392 B4 DE112011100392 B4 DE 112011100392B4
Authority
DE
Germany
Prior art keywords
data processing
memory
processing system
pair
device driver
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.)
Active
Application number
DE112011100392.7T
Other languages
English (en)
Other versions
DE112011100392T5 (de
Inventor
Omar Cardona
Matthew Ryan Ochs
James Brian Cunningham
Rakesh Sharma
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011100392T5 publication Critical patent/DE112011100392T5/de
Application granted granted Critical
Publication of DE112011100392B4 publication Critical patent/DE112011100392B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • H04L61/5014Internet protocol [IP] addresses using dynamic host configuration protocol [DHCP] or bootstrap protocol [BOOTP]
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

Verfahren, in einem Datenverarbeitungssystem (400), zur Bereitstellung von Ressourcenaffinität für einen Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung von Hardware Ressourcen das Datenverarbeitungssystems, wobei das Datenverarbeitungssystem einen Speicher (408) und den Netzadapter (412) umfasst, wobei das Verfahren umfasst:das Zuweisen, durch einen Einheitentreiber (402) im Datenverarbeitungssystem, eines anfänglichen Warteschlangenpaars (406a) in dem Speicher;das Bestimmen, durch den Einheitentreiber, ob die Auslastung des Datenverarbeitungssystems über einen vorbestimmten oberen Schwellenwert gestiegen ist;wenn die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, das Zuweisen und Initialisieren, durch den Einheitentreiber, eines zusätzlichen Warteschlangenpaars (406b-406n) in dem Speicher;das Programmieren, durch den Einheitentreiber, eines Mechanismus zur empfangsseitigen Skalierung (RSS) (414) in dem Netzadapter (412), um ein Hashing von Sendetupeln in das anfängliche Warteschlangenpaar, durch den Einheitentreiber zu aktivieren um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, die dem zusätzlichen Warteschlangenpaar und dem anfänglichen Warteschlangenpaar zugeordnet ist; unddas Aktivieren, durch den Einheitentreiber, des Hashings von Sendetupeln in das zusätzliche Warteschlangenpaar.

Description

  • HINTERGRUND
  • Die vorliegende Anmeldung betrifft allgemein eine verbesserte Datenverarbeitungsvorrichtung und ein verbessertes Datenverarbeitungsverfahren, und insbesondere Mechanismen zur Gewährleistung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung.
  • Mit zunehmender Geschwindigkeit der Ethernet-Medien nimmt die Notwendigkeit zu, mehr Systemressourcen zu nutzen, um die theoretische Maximalleistung bei einer niedrigstmöglichen Latenzzeit zu erreichen. Der Systemressourcenbedarf von Ethernet-Adaptern schließt aufgrund der Notwendigkeit einer großen Zahl von Sende-/Empfangsdeskriptoren und -puffern einen großen physikalischen Speicherbedarf und entsprechende Abbildungsressourcen für DMA-Ein-/ Ausgabespeicher ein. Ein 10-GBit/s-Ethernet-Treiber belegt typischerweise etwa 150 bis 300 MB physikalischen Systemspeicher und DMA-Ein-/Ausgabespeicher pro Adapter.
  • Unter traditionellen Treibermodellen weist ein Einheitentreiber Sende-/ Empfangsressourcen in einer Menge zu, die es dem Adapter erlauben würde, seine theoretisch maximale Leistung zu erreichen. Wenn die Auslastung oder der Netzverkehr aber derart ist, dass die maximalen Leistungsgrenzen nicht benötigt werden, belegt der Treiber mehr Ressourcen als erforderlich, was eine Verschwendung von Systemressourcen darstellt. Darüber hinaus hat dieses Modell nicht die Fähigkeit, veränderliche Auslastungen auf effiziente Weise zu handhaben.
  • In der US 7548513 B2 ist eine mit einer empfangsseitigen Skalierunq (RSS) kompatible Computerumgebung offenbart, wobei die Computerumgebung die zumindest eine Wiedergewinnungswarteschlange jeder Empfangswarteschlange, die voll oder zu langsam funktionierend ist, zuweisen kann.
  • In der US 2008 / 0 181 245 A1 sind ein System und ein Verfahren zur Mehrkernbearbeitung eines Datenverkehrs zwischen Datenverarbeitungsgeräten offenbart, wobei eine Vielzahl von Techniken beschrieben ist, die hohe Geschwindigkeit des Datenverkehrs durch Verteilung von Sendungs- und Empfangsbearbeitung über mehrere Verarbeitungskerne zu ermöglichen.
  • In der US 2003 / 0 076 849 A1 sind eine dynamische Zuordnung einer Warteschlange und eine dynamische Aufhebung der Zuordnung der Warteschlange zum Managen eines Datenverkehrs über einen Vermittlungsknoten offenbart.
  • ÜBERBLICK
  • In einem Ausführungsbeispiel wird ein Verfahren in einem Datenverarbeitungssystem bereitgestellt, um durch dynamische Rekonfigurierung Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen zu gewährleisten. Das Ausführungsbeispiel weist ein anfängliches Warteschlangenpaar in einem Speicher zu. Das Ausführungsbeispiel bestimmt, ob eine Auslastung des Datenverarbeitungssystems über einen vorbestimmten oberen Schwellenwert gestiegen ist. Wenn die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, weist das Ausführungsbeispiel ein zusätzliches Warteschlangenpaar im Speicher zu und initialisiert es. Das Ausführungsbeispiel programmiert einen Mechanismus zur empfangsseitigen Skalierung (RSS) in einem Netzadapter, um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, die dem zusätzlichen Warteschlangenpaar zugeordnet ist. Das Ausführungsbeispiel aktiviert das Hashing von Sendetupeln in das zusätzliche Warteschlangenpaar.
  • In einem anderen Ausführungsbeispiel wird ein Computerprogrammerzeugnis bereitgestellt, umfassend ein computernutzbares oder -lesbares Speichermedium mit einem computerlesbaren Programmcode. Wenn es auf einer Recheneinrichtung ausgeführt wird, veranlasst das computerlesbare Programm die Recheneinrichtung, verschiedene Einzeloperationen und Kombinationen von Operationen durchzuführen, die oben in Bezug auf das Ausführungsbeispiel des Verfahrens beschrieben wurden.
  • In einem weiteren Ausführungsbeispiel wird ein System/eine Vorrichtung bereitgestellt. Das System/die Vorrichtung kann einen oder mehrere Prozessor(en) und einen Speicher umfassen, der mit dem oder den Prozessor(en) verbunden ist. Der Speicher kann Befehle umfassen, die, wenn sie vom Prozessor oder von den Prozessoren ausgeführt werden, bewirken, dass der oder die Prozessor(en) verschiedene Einzeloperationen oder Kombinationen von Operationen durchführen, die oben in Bezug auf das Ausführungsbeispiel des Verfahrens beschrieben wurden. Diese und andere Merkmale und Vorteile der vorliegenden Erfindung werden in der folgenden detaillierten Beschreibung der beispielhaften Ausführungsformen der vorliegenden Erfindung beschrieben oder für einen Fachmann offensichtlich werden.
  • Figurenliste
  • Die Erfindung sowie ein bevorzugter Anwendungsmodus und weitere Aufgaben und Vorteile davon gehen am besten aus der folgenden detaillierten Beschreibung von Ausführungsbeispielen in Verbindung mit den beigefügten Zeichnungen hervor, wobei:
    • 1 eine bildliche Darstellung eines beispielhaften verteilten Datenverarbeitungssystems zeigt, in welchem Aspekte der Ausführungsbeispiele realisiert sein können;
    • 2 ein Blockdiagramm eines Datenverarbeitungssystems zeigt, mit welchem Aspekte der Ausführungsbeispiele vorteilhafterweise genutzt werden können;
    • 3 ein Blockdiagramm einer beispielhaften logisch partitionierten Plattform zeigt, in welcher die Ausführungsbeispiele realisiert sein können;
    • 4 eine beispielhafte Realisierung eines Mechanismus zeigt, der Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel gewährleistet; und
    • 5 ein Flussdiagramm zeigt, das beispielhafte Operationen zur Bereitstellung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel beschreibt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die Ausführungsbeispiele stellen einen Mechanismus bereit, der durch dynamische Rekonfigurierung der zugrundeliegenden Hardware Ressourcenaffinität für Active Memory Sharing (AMS) und die CPU-Nutzung gewährleistet, um den Bedürfnissen veränderlicher Auslastungen ohne Unterbrechung in der Leistung oder im Dienst zu entsprechen. Moderne Adapter können für eine maximale Leistung mehrere Paket-Warteschlangenpaare (QPs) bereitstellen. Diese Adapter können in der Lage sein, durch die Verwendung von mehreren Sende-/Empfangswarteschlangen (QPs) pro Schnittstelle eine parallele Netzdatenverarbeitung durchzuführen, was ein wesentliches Merkmal für hohe Transaktionslasten und das Erreichen höherer Übertragungsgeschwindigkeiten mit kleinen Paketgrößen ist. Der Eingangs- bzw. Empfangsverkehr kann durch den Adapter nach dem Hash-Verfahren tupelweise dem geeigneten QP und dem zugeordneten Interrupt für die Betriebssystemverarbeitung zugeführt werden. Der Ausgangs- bzw. Sendeverkehr kann durch den Betriebssystem (OS)-Treiber nach dem Hash-Verfahren tupelweise an den Adapter ausgegeben werden. Adapter und OS-Treiber weisen typischerweise mehrere QPs mit genügend Deskriptoren und Puffern zu, um eine maximale Leistung zu erreichen, normalerweise zwei bis vier QPs bei einem durchschnittlichen Speicherbedarf von etwa 250 MB pro Adapter. Jedes QP kann einen zugeordneten Empfangsinterrupt haben, weshalb ein zusätzlicher CPU-Nutzungsaufwand auftritt, der auf die erhöhte Interruptzuteilung zurückzuführen ist, wenn mehrere QPs in Gebrauch sind und der Datenverkehr so gering ist, dass er leicht von einem einzigen QP bewältigt werden könnte. Dieses Problem ist für Performance-Teams von zunehmendem Interesse, da die Analyse bekannter Adapter zeigt, dass mehrere QPs sich in den meisten normalen Anwendungsfällen negativ auf die Leistung auswirken, aber bei bestimmten Arbeitslasten mit hoher Belastung und hohem Transaktionsaufkommen zum Erreichen der theoretischen Maximalleistung wesentlich sind.
  • Daher können die Ausführungsbeispiele in vielen verschiedenen Arten von Datenverarbeitungsumgebungen einschließlich einer verteilten Datenverarbeitungsumgebung, einer einzigen Datenverarbeitungseinheit oder dergleichen verwendet werden. Um einen Kontext für die Beschreibung der spezifischen Elemente und Funktionalitäten der Ausführungsbeispiele zu geben, werden die 1 bis 3 im Folgenden als Beispielumgebungen beschrieben, in welchen Aspekte der Ausführungsbeispiele realisiert sein können. Auch wenn die Beschreibung anhand von 1 bis 3 sich hauptsächlich auf eine Realisierung eines Mechanismus für eine einzelne Datenverarbeitungseinheit konzentriert, der durch dynamische Rekonfigurierung Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen gewährleistet, ist dies nur ein Beispiel und soll keine Einschränkung hinsichtlich der Merkmale der vorliegenden Erfindung ausdrücken oder implizieren. Im Gegenteil, die Ausführungsbeispiele sollen verteilte Datenverarbeitungsumgebungen und Ausführungsformen einschließen, in welchen Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung gewährleistet werden kann.
  • Nun auf die Zeichnungen Bezug nehmend, und insbesondere auf 1 bis 3, werden Beispieldiagramme von Datenverarbeitungsumgebungen gezeigt, in welchen Ausführungsbeispiele der vorliegenden Erfindung realisiert sein können. Es ist anzumerken, dass 1 bis 3 nur Beispiele sind und keine Einschränkungen hinsichtlich der Umgebungen ausdrücken oder implizieren sollen, in welchen Aspekte oder Ausführungsformen der vorliegenden Erfindung realisiert sein können. Viele Modifikationen können an den dargestellten Umgebungen vorgenommen werden, ohne vom Geist und Umfang der vorliegenden Erfindung abzuweichen.
  • Nun auf die Zeichnungen Bezug nehmend, zeigt 1 eine bildhafte Darstellung eines beispielhaften verteilten Datenverarbeitungssystems, in welchem Aspekte der Ausführungsbeispiele realisiert sein können. Das verteilte Datenverarbeitungssystem 100 kann ein Computernetz umfassen, in welchem Aspekte der Ausführungsbeispiele realisiert sein können. Das verteilte Datenverarbeitungssystem 100 enthält mindestens ein Netzwerk 102, welches das Medium ist, das verwendet wird, um Kommunikationsverbindungen zwischen verschiedenen Einheiten und Computern herzustellen, die im verteilten Datenverarbeitungssystem 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie drahtgebundene, drahtlose Kommunikationsverbindungen oder Lichtwellenleiter umfassen.
  • Im dargestellten Beispiel sind der Server 104 und der Server 106 zusammen mit der Speichereinheit 108 mit dem Netzwerk 102 verbunden. Zusätzlich sind auch Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Diese Clients 110, 112 und 114 können zum Beispiel PCs, Netzcomputer oder dergleichen sein. Im dargestellten Beispiel stellt der Server 104 den Clients 110, 112 und 114 Daten wie Bootdateien, Betriebssystem-Images und Anwendungen bereit. Die Clients 110, 112 und 114 sind im dargestellten Beispiel Clients zum Server 104. Das verteilte Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und sonstige Einheiten umfassen, die nicht gezeigt werden.
  • Im dargestellten Beispiel ist das verteilte Datenverarbeitungssystem 100 das Internet, wobei das Netzwerk 102 eine weltweite Sammlung von Netzwerken und Gateways darstellt, das die TCP/IP-Protokollunterstützung benutzt, um miteinander zu kommunizieren. Das Herzstück des Internets ist ein Rückgrat aus Hochgeschwindkeits-Datenübertragungsleitungen zwischen Hauptknoten oder Hostcomputern, bestehend aus Tausenden von kommerziellen, staatlichen, universitären und sonstigen Computersystemen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das verteilte Datenverarbeitungssystem 100 auch implementiert werden, um mehrere verschiedene Netzwerktypen wie z.B. ein Intranet, ein lokales Netz (LAN), ein Weitverkehrsnetz (WAN) oder dergleichen einzuschließen. Wie oben erwähnt, ist 1 als Beispiel gedacht, nicht als Beschränkung der Architektur für verschiedene Ausführungsformen der vorliegenden Erfindung, und deshalb sind die spezifischen Elemente, die in 1 gezeigt werden, hinsichtlich der Umgebungen, in welchen die Ausführungsbeispiele der vorliegenden Erfindung realisiert sein können, nicht als einschränkend zu verstehen.
  • In den Ausführungsbeispielen ist eine Computerarchitektur als eine Kombination von Hardware und Software realisiert. Der Softwareteil der Computerarchitektur kann als Mikrocode oder Millicode bezeichnet werden. Die Kombination aus Hard- und Software ergibt einen Befehlsvorrat und eine Systemarchitektur, auf welchen der Rest der Software des Computers wie z.B. das Basic Input/Output System (BIOS), Virtual-Machine-Monitore (VMM), Hypervisoren, Anwendungen usw. betrieben werden. Die Computerarchitektur, die durch die Ausgangskombination erzeugt wird, ist für die Computersoftware (BIOS usw.) unveränderlich, außer durch definierte Schnittstellen, von denen es wenige geben kann. Nun auf 2 Bezug nehmend, wird ein Blockdiagramm eines Datenverarbeitungssystems gezeigt, mit welchem Aspekte der Ausführungsbeispiele vorteilhaft genutzt werden können. Wie gezeigt, umfasst das Datenverarbeitungssystem 200 Prozessoreinheiten 211a bis 211n. Jede der Prozessoreinheiten 211a bis 211n umfasst einen Prozessor und einen Cachespeicher. Zum Beispiel enthält die Prozessoreinheit 211a einen Prozessor 212a und einen Cachespeicher 213a, und die Prozessoreinheit 211n enthält einen Prozessor 212n und einen Cachespeicher 213n.
  • Die Prozessoreinheiten 211a bis 211n sind mit dem Hauptbus 215 verbunden. Der Hauptbus 215 unterstützt die Systemplatine 220, die Prozessoreinheiten 211a bis 211n und Speicherkarten 223 enthält. Die Systemplatine 220 enthält auch einen Datenschalter 221 und einen Speichercontroller/Cache 222. Der Speichercontroller/Cache 222 unterstützt Speicherkarten 223, die lokalen Speicher 216 mit mehreren DIMM-Modulen aufweisen.
  • Der Datenschalter 221 ist mit der Busbrücke 217 und Busbrücke 218 verbunden, die auf der nativen E/A-Platine 224 liegen. Wie gezeigt, ist die Busbrücke 218 über den Systembus 219 mit PCI-Brücken 225 und 226 verbunden. Die PCI-Brücke 225 ist über den PCI-Bus 228 mit verschiedenen E/A-Geräten verbunden. Wie gezeigt, kann eine Festplatte 236 über einen SCSI-Hostadapter 230 mit dem PCI-Bus 228 verbunden sein. Ein Grafikadapter 231 kann direkt oder indirekt mit dem PCI-Bus 228 verbunden sein. Die PCI-Brücke 226 stellt über den PCI-Bus 227 durch einen Netzadapter 234 und Adapterkartensteckplätze 235a bis 235n Verbindungen für externe Datenströme bereit.
  • Ein ISA-Bus 229 ist über eine ISA-Brücke 232 mit dem PCI-Bus 228 verbunden. Die ISA-Brücke 232 stellt über einen nativen E/A-Controller 233 mit seriellen Anschlüssen Serial 1 und Serial 2 Anschlussmöglichkeiten bereit. Ein Diskettenlaufwerksanschluss, ein Tastaturanschluss und ein Mausanschluss werden vom nativen E/A-Controller 233 bereitgestellt, um dem Datenverarbeitungssystem 200 die Annahme von Daten zu erlauben, die von einem Benutzer über ein entsprechendes Eingabegerät eingegeben werden. Zusätzlich stellt ein mit dem ISA-Bus 229 verbundener nicht flüchtiger RAM (NVRAM) 240 nicht flüchtigen Speicher bereit, um bestimmte Arten von Daten vor Systemunterbrechungen oder Systemfehlern wie z.B. Stromversorgungsproblemen zu schützen. Auch eine Systemfirmware 241 ist mit dem ISA-Bus 229 verbunden, um die anfänglichen BIOS-Funktionen auszuführen. Ein Dienstprozessor 244 ist mit dem ISA-Bus 229 verbunden, um die Funktionalität für die Systemdiagnose oder Systemwartung bereitzustellen.
  • Das Betriebssystem (OS) ist auf der Festplatte 236 gespeichert, die auch Speicherplatz für zusätzliche Anwendungssoftware zur Ausführung durch ein Datenverarbeitungssystem bereitstellen kann. Der NVRAM 240 wird benutzt, um Systemvariablen und Fehlerinformation zur Isolierung vor Ort austauschbarer Einheiten (FRU) bereitzustellen. Beim Systemstart lädt das Bootprogramm das Betriebssystem und initiiert die Ausführung des Betriebssystems. Um das Betriebssystem zu laden, sucht das Bootprogramm zuerst ein Betriebssystemkern-Image auf der Festplatte 236, lädt das Kernel-Image in den Speicher und springt zu einer Anfangsadresse, die vom Betriebssystemkern vorgegeben wird. Typischerweise wird das Betriebssystem in den Arbeitsspeicher (RAM) des Datenverarbeitungssystems geladen. Sobald es geladen und initialisiert wurde, steuert das Betriebssystem die Ausführung von Programmen und kann Dienste wie die Ressourcenzuweisung, -planung, Ein-/Ausgabesteuerung und Datenverwaltung bereitstellen.
  • Das Ausführungsbeispiel kann in verschiedenen Datenverarbeitungssystemen ausgeführt werden, die unterschiedliche Hardwarekonfigurationen und Software wie z.B. Bootprogramme und Betriebssysteme verwenden. Das Datenverarbeitungssystem 200 kann zum Beispiel ein eigenständiges System oder Teil eines Netzwerks wie z.B. eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) sein. Wie oben erwähnt, ist 2 als Beispiel gedacht, nicht als Beschränkung der Architektur für verschiedene Ausführungsformen der vorliegenden Erfindung, und daher sind die spezifischen Elemente, die in 2 gezeigt werden, hinsichtlich der Umgebungen, in welchen die Ausführungsbeispiele der vorliegenden Erfindung realisiert sein können, nicht als einschränkend zu verstehen.
  • Nun auf 3 Bezug nehmend, wird ein Blockdiagramm einer beispielhaften logisch partitionierten Plattform gezeigt, in welcher die Ausführungsbeispiele realisiert sein können. Die Hardware in der logisch partitionierten Plattform 300 kann zum Beispiel mit der Hardware des Datenverarbeitungssystems 200 in 2 realisiert sein.
  • Die logisch partitionierte Plattform 300 schließt die partitionierte Hardware 330, Betriebssysteme 302, 304, 306, 308 und einen Virtual-Machine-Monitor (VMM) 310 ein. Die Betriebssysteme 302, 304, 306 und 308 können mehrere Kopien eines einzelnen Betriebssystems oder mehrere verschiedene Betriebssysteme sein, die gleichzeitig auf der logisch partitionierten Plattform 300 ausgeführt werden. Diese Betriebssysteme können zum Beispiel mit z/OS implementiert sein, das ausgelegt ist, um eine Schnittstelle zu einem Virtualisierungsmechanismus wie Partitionsverwaltungsfirmware zu bilden, z.B. einem Hypervisor. z/OS wird in diesen Ausführungsbeispielen nur als Beispiel verwendet. Natürlich können je nach Realisierung andere Arten von Betriebssystemen wie z.B. OS/400, AIX® und Linux® verwendet werden. Die Betriebssysteme 302, 304, 306 und 308 liegen jeweils in logischen Partitionen 303, 305, 307 und 309.
  • Die Hypervisor-Software ist ein Beispiel für Software, die zur Realisierung der Plattform (in diesem Beispiel Virtual-Machine-Monitor 310) verwendet werden kann und von der International Business Machines Corporation erhältlich ist. Firmware ist „Software“, die in einem Speicherchip gespeichert ist, der seinen Inhalt ohne elektrischen Strom behält, wie zum Beispiel ein Nur-Lese-Speicher (ROM), ein programmierbarer ROM (PROM), ein löschbarer programmierbarer ROM (EPROM) und ein elektrisch löschbarer programmierbarer ROM (EEPROM).
  • Die logisch partitionierte Plattform 300 kann auch das PowerVMTM Active Memory™ Sharing von IBM® verwenden, was eine erweiterte Speichervirtualisierungstechnik von IBM® PowerVM™ ist, die IBM Power Systems Speichervirtualisierungsfähigkeiten verleiht, um mehreren logischen Partitionen die Nutzung eines gemeinsamen physikalischen Speicherpools zu erlauben. Der physikalische Speicher von IBM Power Systems® kann mehreren logischen Partitionen entweder in einem dedizierten Modus oder in einem Modus für die gemeinsame Nutzung zugewiesen werden. Ein Systemadministrator hat die Möglichkeit, physikalischen Speicher einer logischen Partition und physikalischen Speicher einem Pool zuzuweisen, der von anderen logischen Partitionen gemeinsam benutzt wird. Eine Einzelpartition kann entweder dedizierten oder gemeinsam genutzten Speicher aufweisen. Das Active Memory™ Sharing kann eingesetzt werden, um die Speicherauslastung auf dem System zu erhöhen, indem der Systemspeicherbedarf verringert wird oder das Anlegen zusätzlicher logischer Partitionen auf einem bestehenden System zugelassen wird.
  • Die logischen Partitionen 303, 305, 307 und 309 umfassen auch Partitionsfirmware-Ladeprogramme 311, 313, 315 und 317. Die Partitionsfirmware-Ladeprogramme 311, 313, 315 und 317 können mit IPL- oder einleitendem Bootprogrammcode, offener Firmware nach der Norm IEEE-1275 und Laüfzeitabstraktionssoftware (RTAS) realisiert sein, die von der International Business Machines Corporation erhältlich ist.
  • Wenn die logischen Partitionen 303, 305, 307 und 309 instanziiert sind, wird eine Kopie des Bootprogrammcodes durch den Virtual-Machine-Monitor 310 in die logischen Partitionen 303, 305, 307 und 309 geladen. Danach wird die Steuerung an den Bootprogrammcode übergeben, wobei der Bootprogrammcode dann die offene Firmware und die RTAS lädt. Die Prozessoren, die den logischen Partitionen 303, 305, 307 und 309 zugeordnet oder zugewiesen sind, werden dann dem Speicher der logischen Partition zugeteilt, um die logische Partitionsfirmware auszuführen.
  • Die partitionierte Hardware 330 umfasst ein Vielzahl von Prozessoren 332 bis 338, eine Vielzahl von Systemspeichereinheiten 340 bis 346, eine Vielzahl von Ein-/Ausgabe (E/A)-Adaptern 348 bis 362 und eine Speichereinheit 370. Jeder von den Prozessoren 332 bis 338, den Speichereinheiten 340 bis 346, der NVRAM-Speicher 398 und den E/A-Adaptern 348 bis 362 kann einer von mehreren logischen Partitionen 303, 305, 307 und 309 innerhalb der logisch partitionierten Plattform 300 zugewiesen werden, wovon jede einem der Betriebssysteme 302, 304, 306 und 308 entspricht.
  • Der Virtual-Machine-Monitor 310 führt eine Anzahl von Funktionen und Dienste für die logischen Partitionen 303, 305, 307 und 309 durch, um die Partitionierung der logisch partitionierten Plattform 300 zu erzeugen und zu erzwingen. Der Virtual-Machine-Monitor 310 ist eine firmwarerealisierte virtuelle Maschine, die der zugrundeliegenden Hardware entspricht. Daher erlaubt der Virtual-Machine-Monitor 310 die gleichzeitige Ausführung unabhängiger Betriebssystem-Images 302, 304, 306 und 308, indem er alle Hardwareressourcen der logisch partitionierten Plattform 300 virtualisiert.
  • Der Dienstprozessor 390 kann verwendet werden, um verschiedene Dienste wie z.B. die Verarbeitung von Plattformfehlern in den logischen Partitionen 303, 305, 307 und 309 bereitzustellen. Der Dienstprozessor 390 kann auch als Serviceagent wirken, um Fehler an einen Anbieter wie z.B. International Business Machines Corporation zurückzumelden. Der Betrieb der verschiedenen logischen Partitionen kann über eine Hardwaresystemkonsole 380 gesteuert werden. Die Hardwaresystemkonsole 380 ist ein separates Datenverarbeitungssystem, von dem aus ein Systemadministrator verschiedene Funktionen einschließlich der Neuzuweisung von Ressourcen an andere logische Partitionen ausführen kann.
  • Die Ausführungsbeispiele sehen vor, dass ein Betriebssystem (OS)-Treiber am Anfang nur ein einziges Warteschlangenpaar (QP) zuweist, d.h., ein Sende-/Empfangs-Paar, dessen Ressourcenbedarf leicht über dem für einen Normalbetrieb erforderlichen Minimum liegt. Wenn der Datenverkehrsfluss oder die Auslastung vorbestimmte Schwellenwerte übersteigt, weist der OS-Treiber bei Bedarf auf dynamische Weise zusätzliche QPs zu. Wenn QPs zum ausgeführten OS-Treiber hinzugefügt werden und einem Adapter verfügbar gemacht werden, wird der Datenverkehr nach dem Hashverfahren sowohl den Eingangs- bzw. Empfangs- als auch den Ausgangs- bzw. Sendepfaden zu mehr Zentraleinheiten (CPUs) zugeführt, wodurch die Leistung und die CPU/Speicherressourcennutzung auf effektive Weise skaliert wird. Da die Leistungsskalierung eher über zusätzliche QPs als durch eine statische Deskriptorzahl erreicht wird, können die Systemressourcen verringert werden, wenn sie nicht mehr benötigt werden. Wenn der Datenverkehrsfluss und die Auslastung einen festgelegten Mindestschwellenwert unterschreiten, kann der OS-Treiber QPs entfernen und zu einer minimalen Ressourcennutzung für den Normalbetrieb zurückkehren. Dieser Zyklus wiederholt sich, wenn die Auslastung oder der Datenverkehr zunimmt. Dadurch erreichen die Ausführungsbeispiele auf effektive Weise die dynamische Rekonfigurierung, um die Leistung zu optimieren, während sie die CPU-Nutzung und die Active Memory Sharing-Affinität gewährleisten.
  • 4 ist ein beispielhaftes Blockdiagramm, das die Hauptkomponenten und ihre Wechselwirkungen nach einem Ausführungsbeispiel darstellt. Die in 4 gezeigten Elemente können in Hardware, Software oder jeder Kombination von Hardware und Software realisiert sein. In einem Ausführungsbeispiel sind die Elemente von 4 als Software realisiert, die auf ein oder mehr Prozessoren von ein oder mehr Datenverarbeitungseinheiten oder -systemen ausgeführt werden.
  • 4 zeigt eine beispielhafte Realisierung eines Mechanismus, der durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen bereitstellt. Das Datenverarbeitungssystem 400 umfasst den Einheitentreiber 402 im Betriebssystem 404. Der Einheitentreiber 402 stellt im Speicher 408 ein oder mehr Warteschlangenpaare 406a bis 406n zur Verwendung durch die Anwendung 410 und den Netzadapter 412 bereit. Auch wenn das Ausführungsbeispiel nur einen Einheitentreiber 402, eine Anwendung 410 und einen Netzadapter 412 darstellt, wird ein Fachmann erkennen, dass das Datenverarbeitungssystem 400 eine Vielzahl von Einheitentreibern, eine Vielzahl von Anwendungen und eine Vielzahl von Netzadaptern im Datenverarbeitungssystem 400 umfassen kann.
  • Wenn das Betriebssystem 404 startet, konfiguriert und initialisiert das Betriebssystem 404 den Einheitentreiber 402. Der Einheitentreiber 402 weist dann ein anfängliches Warteschlangenpaar 406a zu, das mehrere Empfangsdeskriptoren/-puffer und mehrere Sendedeskriptoren/-puffer im Speicher 408 umfassen kann. Der Einheitentreiber 402 startet dann den Netzadapter 412, sodass der Datenverkehr zum Netzadapter 412 übertragen werden kann. Wenn während des Betriebs nur ein Warteschlangenpaar 406a initialisiert wurde, empfängt der Einheitentreiber 402 den Datenverkehr, der an den Netzadapter 412 zu übertragen ist, und sendet den Datenverkehr zur Bereitstellung an den Netzadapter 412. Der Netzadapter 412 sendet den Datenverkehr dann über das Netzwerk 424 an eine Einheit wie den Server 416, den Server 418, den Client 420, den Client 422 oder dergleichen. Umgekehrt, wenn der Netzadapter 412 von einer Einheit wie z.B. dem Server 416, dem Server 418, dem Client 420, dem Client 422 oder dergleichen über das Netzwerk 424 Datenverkehr empfängt, der an den Einheitentreiber 402 zu übertragen ist, löst der Netzadapter 412 einen Interrupt für die Verarbeitung durch das Betriebssystem 404 aus, und der Datenverkehr wird an den Einheitentreiber 402 gesendet. Jedes der Warteschlangenpaare 406a und 406b bis 406n, die zusätzlich zugewiesen werden können, wie unten beschrieben, weist seinen eigenen zugeordneten Empfangsinterrupt auf.
  • Nachdem der Einheitentreiber 402 das Warteschlangenpaar 406a zugewiesen und instanziiert hat, überwacht der Einheitentreiber 402 ständig anhand des Datenflusses und der Ressourcenverfügbarkeit eine Auslastung des Betriebssystems 404. Der Einheitentreiber 402 kann Parameter wie z.B. die Sende-/Empfangsbytes pro Sekunde, eine Zahl der Datenfluss-Steuerrahmen, die vom Netzadapter 412 gesendet und empfangen werden, eine Zahl der DMA-Überläufe, die vom Netzadapter 412 erkannt werden, eine Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber 402 erkannt werden, eine Zahl der Empfangspakete, die vom Einheitentreiber 402 pro Interrupt verarbeitet werden, eine Zahl der Sendepakete in einer Software-Warteschlange oder dergleichen überwachen. Wenn der Einheitentreiber 402 durch die Auslastungsüberwachung wie z.B., wenn ein vorbestimmter oberer Schwellenwert überschritten wird, einen unzureichenden Ressourcenzustand erkennt, kann der Einheitentreiber 402 auf dynamische Weise ein zusätzliches Warteschlangenpaar 406b bis 406n zuweisen und initialisieren. Der Einheitentreiber 402 programmiert dann den Mechanismus 414 zur empfangsseitigen Skalierung (RSS) im Netzadapter 412, um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine, die dem Warteschlangenpaar 406a und dem zusätzlichen Warteschlangenpaar 406b bis 406n zugeordnet ist, zu erlauben. Der Einheitentreiber 402 aktiviert dann das Hashing von Sendetupeln in das Warteschlangenpaar 406a und das zusätzliche Warteschlangenpaar 406b bis 406n. Das Hashing von Empfangstupeln und die Verarbeitung durch den Netzadapter 412 werden durch die Programmierung des RSS-Mechanismus 414 automatisch aktiviert. Der Einheitentreiber 402 fährt damit fort, eines der Warteschlangenpaare 406b bis 406n hinzuzufügen, wenn es nicht bereits zugewiesen und initialisiert wurde, bis alle verfügbaren Warteschlangenpaare 406b bis 406n verbraucht sind oder bis die Warteschlangenpaare 406a bis 406n eine Zahl der Zentraleinheiten im Datenverarbeitungssystem 400 übersteigt. Der Einheitentreiber 402 programmiert auch den RSS-Mechanismus 414 im Netzadapter 412 neu, um jedes Mal, wenn ein neues Warteschlangenpaar 406b bis 406n hinzugefügt wird, das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, und aktiviert das Hashing von Sendetupeln in das neue Warteschlangenpaar 406b bis 406n.
  • Wenn der Einheitentreiber 402 eine Abnahme in der Auslastung erkennt, wie z.B., wenn die Auslastung unter einen vorbestimmten unteren Schwellenwert fällt, kann der Einheitentreiber 402 den RSS-Mechanismus 414 im Netzadapter 412 auf dynamische Weise neu programmieren, um die Löschung eines der zugewiesenen Warteschlangenpaare 406a bis 406n zu erlauben. Der Einheitentreiber 402 deaktiviert dann das Hashing von Sendetupeln in das gelöschte Warteschlangenpaar 406a bis 406n. Sobald das gelöschte Warteschlangenpaar 406a bis 406n stillgelegt wurde, entfernt der Einheitentreiber 402 das gelöschte Warteschlangenpaar 406a bis 406n, wodurch der vom gelöschten Warteschlangenpaar 406a bis 406n genutzte Speicher freigegeben wird. Wie bei der Aktivierung des Hashings von Empfangstupeln im Netzadapter 412 werden das Hashing und die Verarbeitung von Empfangstupeln durch den Netzadapter 412 durch die Neuprogrammierung des RSS-Mechanismus 414 automatisch deaktiviert.
  • Daher stellen die Ausführungsbeispiele einen Mechanismus bereit, der durch dynamische Rekonfigurierung der zugrundeliegenden Hardware Ressourcenaffinität für das Active Memory Sharing (AMS) und die CPU-Nutzung gewährleistet, um den Bedürfnissen veränderlicher Auslastungen ohne Unterbrechung in der Leistung oder im Dienst zu entsprechen. Wenn der Datenverkehrsfluss oder die Auslastung vorbestimmte Schwellenwerte übersteigt, weist der Einheitentreiber bei Bedarf auf dynamische Weise zusätzliche Warteschlangenpaare zu. Wenn der Datenverkehrsfluss und die Auslastung unter einen vorbestimmten Mindestschwellenwert abfallen, kann der Einheitentreiber Warteschlangenpaare entfernen und zur minimalen Ressourcennutzung für den Normalbetrieb zurückkehren. Dieser Zyklus wiederholt sich, wenn die Auslastung oder der Datenverkehr zu- oder abnimmt.
  • Wie der Fachmann erkennen wird, kann die vorliegende Erfindung als System, Verfahren oder Computerprogrammerzeugnis ausgeführt werden. Daher können Aspekte der vorliegenden Erfindung die Form einer kompletten Hardware-Ausführungsform, einer kompletten Software-Ausführungsform (einschließlich Firmware, speicherresidenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hierin alle allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Überdies können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammerzeugnisses annehmen, das in einem computerlesbaren Medium oder mehreren computerlesbaren Medien mit einem darauf ausgeführten computerlesbaren Programmcode ausgeführt ist. Jede Kombination eines computerlesbaren Mediums oder mehrerer computerlesbarer Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbarer Signalträger oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel, ohne aber darauf beschränkt zu sein, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleiter-System, eine entsprechende Vorrichtung oder Einheit oder jede geeignete Kombination des Vorstehenden sein. Spezifischere Beispiele (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums schließen folgendes ein: eine elektrische Verbindung mit einer oder mehreren Drahtleitungen, eine tragbare Computerdiskette, eine Festplatte, einen Arbeitsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM oder Flashspeicher), einen Lichtwellenleiter, eine CD-ROM, eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorstehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit enthalten oder speichern kann.
  • Ein computerlesbarer Signalträger kann ein verbreitetes Datensignal mit computerlesbarem Programmcode sein, der zum Beispiel im Basisband oder als Teil einer Trägerwelle darin ausgeführt ist. Ein derartiges verbreitetes Signal kann verschiedene Formen annehmen, einschließlich, ohne aber darauf beschränkt zu sein, elektromagnetisch, optisch oder jede geeignete Kombination daraus. Ein computerlesbarer Signalträger kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem oder einer entsprechenden Vorrichtung oder Einheit übertragen, verbreiten oder transportieren kann.
  • Der Programmcode, der auf einem computerlesbaren Medium ausgeführt ist, kann durch jedes geeignete Medium übertragen werden, einschließlich, ohne aber darauf beschränkt zu sein, drahtlos, drahtgebunden, Lichtwellenleiterkabel, Funkfrequenz (HF) usw., oder jede geeignete Kombination daraus.
  • Der Computerprogrammcode zur Durchführung von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java™, Smalltalk™, C++ oder dergleichen und konventioneller prozeduraler Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann gänzlich auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder gänzlich auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer durch jede Art von Netzwerk einschließlich eines lokalen Netzes (LAN) oder eines Weitverkehrsnetzes (WAN) mit dem Computer eines Benutzers verbunden sein, oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet durch einen Internet-Dienstanbieter).
  • Aspekte der vorliegenden Erfindung werden im Folgenden Bezug nehmend auf Fluss- und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systemen) und Computerprogrammerzeugnissen nach Ausführungsbeispielen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Fluss- und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockdiagrammen durch Computerprogrammbefehle realisiert sein können. Diese Computerprogrammbefehle können einem Prozessor eines Mehrzweckcomputers, Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine so bereitgestellt werden, dass die Befehle, die über den Prozessor des Computers oder der sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zur Durchführung der Funktionen/Vorgänge ergeben, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten anweisen kann, auf eine bestimmte Weise zu funktionieren, sodass die Befehle, die im computerlesbaren Medium gespeichert sind, ein Erzeugnis mit Befehlen ergeben, die Funktionen/Vorgänge realisieren, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
  • Die Computerprogrammbefehle können auch in einen Computer, in eine andere programmierbare Datenverarbeitungsvorrichtung oder in sonstige Einheiten geladen werden, um die Durchführung einer Reihe von Arbeitsgängen auf dem Computer, der anderen programmierbaren Vorrichtung oder sonstigen Einheiten zu bewirken, um einen computergestützten Prozess zu ergeben, sodass die Befehle, die auf dem Computer oder der sonstigen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ergeben, die im Block oder in Blöcken der Fluss- und/oder Blockdiagramme angegeben sind.
  • Nun auf 5 Bezug nehmend, zeigt diese Figur ein Flussdiagramm, das Beispieloperationen zur Gewährleistung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung nach einem Ausführungsbeispiel beschreibt. Am Anfang der Operation weist ein konfigurierter und initialisierter Einheitentreiber ein anfängliches Warteschlangenpaar in einem Speicher zu (Schritt 502). Der Einheitentreiber startet dann den Netzadapter, sodass der Datenverkehr zum Netzadapter übertragen werden kann (Schritt 504).
  • Nachdem der Einheitentreiber das Warteschlangenpaar zugewiesen und instanziiert hat, überwacht der Einheitentreiber ständig eine Auslastung des Betriebssystems anhand des Datenflusses und der Ressourcenverfügbarkeit (Schritt 506). Der Einheitentreiber kann Parameter wie die Sende-/Empfangsbytes pro Sekunde, eine Zahl der Datenfluss-Steuerrahmen, die vom Netzadapter gesendet und empfangen werden, eine Zahl der DMA-Überläufe, die vom Netzadapter erkannt werden, eine Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber erkannt werden, eine Zahl der Empfangspakete, die vom Einheitentreiber pro Interrupt verarbeitet werden, eine Zahl der Sendepakete in einer Software-Warteschlange oder dergleichen überwachen. Der Einheitentreiber bestimmt dann, ob ein vorbestimmter oberer Schwellenwert überschritten worden ist, was einen unzureichenden Ressourcenzustand durch die Auslastungsüberwachung anzeigt (Schritt 508). Wenn in Schritt 508 die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, weist der Einheitentreiber auf dynamische Weise ein zusätzliches Warteschlangenpaar im Speicher zu und initialisiert es (Schritt 510). Der Einheitentreiber programmiert/reprogrammiert dann den RSS-Mechanismus im Netzadapter, um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine (Schritt 512) zu erlauben, und der Einheitentreiber aktiviert das Hashing von Sendetupeln in das neu zugewiesene Warteschlangenpaar (Schritt 514), wonach die Operation zu Schritt 506 zurückkehrt.
  • Wenn die Auslastung in Schritt 508 nicht über den vorbestimmten oberen Schwellenwert gestiegen ist, bestimmt der Einheitentreiber, ob die Auslastung unter einen vorbestimmten unteren Schwellenwert gefallen ist (Schritt 516). Wenn der Einheitentreiber in Schritt 516 bestimmt, dass die Auslastung nicht unter den vorbestimmten unteren Schwellenwert gefallen ist, kehrt die Operation zu Schritt 506 zurück. Wenn der Einheitentreiber in Schritt 516 bestimmt, dass die Auslastung unter den vorbestimmten unteren Schwellenwert gefallen ist, bestimmt der Einheitentreiber, ob nur ein zuzuweisendes Warteschlangenpaar übrig ist (Schritt 518). Wenn der Einheitentreiber in Schritt 518 bestimmt, dass nur ein Warteschlangenpaar übrig ist, kehrt das Verfahren zu Schritt 506 zurück. Wenn der Einheitentreiber in Schritt 518 bestimmt, dass mehr als ein Warteschlangenpaar übrig ist, kann der Einheitentreiber den RSS-Mechanismus im Netzadapter auf dynamische Weise neu programmieren, um die Löschung eines zugewiesenen Warteschlangenpaars zu erlauben (Schritt 520). Der Einheitentreiber deaktiviert dann das Hashing von Sendetupeln in ein angegebenes Warteschlangenpaar (Schritt 522). Der Einheitentreiber bestimmt dann, ob die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt worden ist (Schritt 524). Wenn der Einheitentreiber in Schritt 524 bestimmt, dass die Auslastung zum angegebenen Warteschlangenpaar nicht stillgelegt wurde, kehrt das Verfahren zu Schritt 524 zurück. Wenn der Einheitentreiber in Schritt 524 bestimmt, dass die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt wurde, entfernt der Einheitentreiber das angegebene Warteschlangenpaar aus dem Speicher (Schritt 526), wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird. Dann kehrt die Operation zu Schritt 506 zurück.
  • Die Fluss- und Blockdiagramme in den Zeichnungen veranschaulichen die Architektur, die Funktionalität und die Arbeitsweise möglicher Realisierungen von Systemen, Verfahren und Computerprogrammprodukten nach verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Fluss- oder Blockdiagrammen ein Codemodul, ein Codesegment oder einen Codeteil darstellen, die eine oder mehrere ausführbare Befehle zur Realisierung der spezifizierten logischen Funktion(en) umfassen. Es ist auch anzumerken, dass die in den Blöcken genannten Funktionen in einigen alternativen Ausführungen in einer anderen Reihenfolge als der in der Figur genannten auftreten können. Zum Beispiel können zwei Blöcke, die aufeinanderfolgend dargestellt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können abhängig von der beteiligten Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Es ist auch anzumerken, dass jeder Block in den Block- und/oder Flussdiagrammen und Kombinationen von Blöcken in den Block- und/oder Flussdiagrammen durch Systeme auf der Basis von Spezialhardware, die die spezifizierten Funktionen der Vorgänge durchführen, oder durch Kombinationen von Spezialhardware und Computeranweisungen ausgeführt werden können.
  • Die Ausführungsbeispiele stellen also Mechanismen bereit, die durch dynamische Rekonfigurierung der zugrundeliegenden Hardware Ressourcenaffinität für das Active Memory Sharing (AMS) und die CPU-Nutzung bereitstellen, um den Bedürfnissen veränderlicher Auslastungen ohne Unterbrechung in der Leistung oder im Dienst zu entsprechen. Wenn der Datenverkehrsfluss oder die Auslastung vorbestimmte Schwellenwerte übersteigt, weist der Einheitentreiber bei Bedarf auf dynamische Weise zusätzliche Warteschlangenpaare zu. Wenn der Datenverkehrsfluss und die Auslastung unter einen vorbestimmten Mindestschwellenwert fallen, kann der Einheitentreiber Warteschlangenpaare entfernen und zur minimalen Ressourcennutzung für den Normalbetrieb zurückkehren. Dieser Zyklus wiederholt sich, wenn die Auslastung oder der Datenverkehr zu- oder abnimmt.
  • Wie oben erwähnt, versteht es sich, dass die Ausführungsbeispiele die Form einer kompletten Hardware-Ausführungsform, einer kompletten Software-Ausführungsform oder einer Ausführungsform annehmen können, die sowohl Hardware- als auch Softwareelemente enthält. In einer beispielhaften Ausführungsform sind die Mechanismen der Ausführungsbeispiele in Software oder Programmcode ausgeführt, was Firmware, residente Software, Mikrocode usw. einschließt, ohne aber darauf beschränkt zu sein.
  • Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, wird mindestens einen Prozessor einschließen, der über einen Systembus direkt oder indirekt mit Speicherelementen verbunden ist. Die Speicherelemente können einen Lokalspeicher, der während der eigentlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Caches einschließen, die für die temporäre Speicherung mindestens bestimmter Programmcodeteile sorgen, um die Häufigkeit zu verringern, mit welcher der Code bei der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Ein-/Ausgabe- oder E/A-Einheiten (einschließlich, aber ohne darauf beschränkt zu sein, Tastaturen, Anzeigen, Zeigereinheiten usw.) können entweder direkt oder durch dazwischenliegende E/A-Controller mit dem System verbunden sein. Auch Netzadapter können mit dem System verbunden sein, um die Verbindung des Datenverarbeitungssystems mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netze zu erlauben. Modems, Kabelmodems und Ethernetkarten sind nur einige der aktuell verfügbaren Netzadaptertypen.
  • Die Beschreibung der vorliegenden Erfindung soll der Veranschaulichung und Beschreibung dienen, ohne aber erschöpfend oder auf die Erfindung in der offenbarten Form eingeschränkt zu sein. Einem Fachmann werden viele Modifikationen und Varianten einfallen. Die Ausführungsform wurde gewählt und beschrieben, um die Prinzipien der Erfindung und die praktische Anwendung am besten zu erklären und um anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifikationen, wie sie für die vorgesehene spezifische Anwendung geeignet sind, zu ermöglichen.

Claims (18)

  1. Verfahren, in einem Datenverarbeitungssystem (400), zur Bereitstellung von Ressourcenaffinität für einen Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung von Hardware Ressourcen das Datenverarbeitungssystems, wobei das Datenverarbeitungssystem einen Speicher (408) und den Netzadapter (412) umfasst, wobei das Verfahren umfasst: das Zuweisen, durch einen Einheitentreiber (402) im Datenverarbeitungssystem, eines anfänglichen Warteschlangenpaars (406a) in dem Speicher; das Bestimmen, durch den Einheitentreiber, ob die Auslastung des Datenverarbeitungssystems über einen vorbestimmten oberen Schwellenwert gestiegen ist; wenn die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, das Zuweisen und Initialisieren, durch den Einheitentreiber, eines zusätzlichen Warteschlangenpaars (406b-406n) in dem Speicher; das Programmieren, durch den Einheitentreiber, eines Mechanismus zur empfangsseitigen Skalierung (RSS) (414) in dem Netzadapter (412), um ein Hashing von Sendetupeln in das anfängliche Warteschlangenpaar, durch den Einheitentreiber zu aktivieren um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, die dem zusätzlichen Warteschlangenpaar und dem anfänglichen Warteschlangenpaar zugeordnet ist; und das Aktivieren, durch den Einheitentreiber, des Hashings von Sendetupeln in das zusätzliche Warteschlangenpaar.
  2. Verfahren nach Anspruch 1, ferner umfassend: das Wiederholen, durch den Einheitentreiber, der Zuweisungs- und Initialisierungs-, Programmierungs- und Aktivierungsschritte jedes Mal, wenn die Auslastung des Datenverarbeitungssystems über den vorbestimmten oberen Schwellenwert steigt.
  3. Verfahren nach Anspruch 1, wobei das Bestimmen, ob die Auslastung des Datenverarbeitungssystems über den vorbestimmten oberen Schwellenwert gestiegen ist, durch Überwachen, durch den Einheitentreiber, der Auslastung des Datenverarbeitungssystems anhand des Datenflusses und der Ressourcenverfügbarkeit durchgeführt wird.
  4. Verfahren nach Anspruch 3, wobei der Einheitentreiber mindestens einen Parameter überwacht, der mit der Auslastung im Zusammenhang steht, und wobei der mindestens eine Parameter mindestens eines von Sende-/ Empfangsbytes pro Sekunde, einer Zahl von Datenfluss-Steuerrahmen, die vom Netzadapter gesendet und empfangen werden, einer Zahl von DMA-Überläufen, die vom Netzadapter erkannt werden, einer Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber erkannt werden, einer Zahl von Empfangspaketen, die vom Einheitentreiber pro Interrupt verarbeitet werden, oder einer Zahl von Sendepaketen in einer Software-Warteschlange ist.
  5. Verfahren nach Anspruch 1, ferner umfassend: das Bestimmen, durch den Einheitentreiber, ob die Auslastung unter einen vorbestimmten unteren Schwellenwert gefallen ist; wenn die Auslastung unter den vorbestimmten unteren Schwellenwert gefallen ist, das Bestimmen, durch den Einheitentreiber, ob nur noch ein zugewiesenes Warteschlangenpaar im Speicher übrig ist; wenn mehr als ein zugewiesenes Warteschlangenpaar im Speicher übrig ist, das Neuprogrammieren, durch den Einheitentreiber, des RSS-Mechanismus im Netzadapter, um die Löschung eines zugewiesenen Warteschlangenpaars zu erlauben; das Deaktivieren, durch den Einheitentreiber, des Hashings von Sendetupeln in ein angegebenes Warteschlangenpaar; das Bestimmen, durch den Einheitentreiber, ob die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt worden ist; und wenn die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt ist, das Entfernen, durch den Einheitentreiber, des angegebenen Warteschlangenpaars aus dem Speicher, wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird.
  6. Verfahren nach Anspruch 5, ferner umfassend: wenn die Arbeitslast zum angegebenen Warteschlangenpaar nicht stillgelegt worden ist, das Warten, durch den Einheitentreiber, bis die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt ist, dann das Entfernen des angegebenen Warteschlangenpaars aus dem Speicher, wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird.
  7. Computerprogrammerzeugnis, umfassend ein computerlesbares Speichermedium mit einem darin gespeicherten computerlesbaren Programm zur Bereitstellung von Ressourcenaffinität für Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung von Hardware Ressourcen einer Datenverarbeitungssystem (400), wobei das Datenverarbeitungssystem einen Speicher (408) und den Netzadapter (412) umfasst, wobei das computerlesbare Programm, wenn es auf dem Datenverarbeitungssystem ausgeführt wird, das Datenverarbeitungssystem veranlasst: ein anfängliches Warteschlangenpaar (402) in einem Speicher zuzuweisen; zu bestimmen, ob die Auslastung des Datenverarbeitungssystems über einen vorbestimmten oberen Schwellenwert gestiegen ist; wenn die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, ein zusätzliches Warteschlangenpaar (406b-406n) in dem Speicher zuzuweisen und zu initialisieren; einen Mechanismus zur empfangsseitigen Skalierung (RSS) (414) in dem Netzadapter (412) zu programmieren, um ein Hashing von Sendetupeln in das anfängliche Warteschlangenpaar zu aktivieren und um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, die dem zusätzlichen Warteschlangenpaar und dem anfänglichen Warteschlangenpaar zugeordnet ist; und das Hashing von Sendetupeln in das zusätzliche Warteschlangenpaar zu aktivieren.
  8. Computerprogrammerzeugnis nach Anspruch 7, wobei das computerlesbare Programm das Datenverarbeitungssystem außerdem veranlasst: die Zuweisung und Initialisierung, Programmierung und Aktivierung durch das computerlesbare Programm jedes Mal, wenn die Auslastung des Datenverarbeitungssystems über den vorbestimmten oberen Schwellenwert steigt, zu wiederholen.
  9. Computerprogrammerzeugnis nach Anspruch 7, wobei das computerlesbare Programm, um zu bestimmen, ob die Auslastung des Datenverarbeitungssystems über den vorbestimmten oberen Schwellenwert gestiegen ist, durch ein computerlesbares Programm durchgeführt wird, welches das Datenverarbeitungssystem ferner veranlasst, die Auslastung des Datenverarbeitungssystems anhand des Datenflusses und der Ressourcenverfügbarkeit zu überwachen.
  10. Computerprogrammerzeugnis nach Anspruch 9, wobei das computerlesbare Programm das Datenverarbeitungssystem außerdem veranlasst, mindestens einen Parameter zu überwachen, der mit der Auslastung im Zusammenhang steht, und wobei der mindestens eine Parameter mindestens eines von Sende-/ Empfangsbytes pro Sekunde, einer Zahl von Datenfluss-Steuerrahmen, die vom Netzadapter gesendet und empfangen werden, einer Zahl von DMA-Überläufen, die vom Netzadapter erkannt werden, einer Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber erkannt werden, einer Zahl von Empfangspaketen, die vom Einheitentreiber pro Interrupt verarbeitet werden, oder einer Zahl von Sendepaketen in einer Software-Warteschlange ist.
  11. Computerprogrammerzeugnis nach Anspruch 7, wobei das computerlesbare Programm das Datenverarbeitungssystem außerdem veranlasst: zu bestimmen, ob die Auslastung unter einen vorbestimmten unteren Schwellenwert gefallen ist; wenn die Auslastung unter den vorbestimmten unteren Schwellenwert gefallen ist, zu bestimmen, ob im Speicher nur ein zugewiesenes Warteschlangenpaar übrig ist; wenn mehr ein zugewiesenes Warteschlangenpaar im Speicher übrig ist, den RSS-Mechanismus im Netzadapter neu zu programmieren, um die Löschung eines zugewiesenen Warteschlangenpaars zu erlauben; das Hashing von Sendetupeln in ein angegebenes Warteschlangenpaar zu deaktivieren; zu bestimmen, ob die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt worden ist; und wenn die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt ist, das angegebene Warteschlangenpaar aus dem Speicher zu entfernen, wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird.
  12. Computerprogrammerzeugnis nach Anspruch 11, wobei das computerlesbare Programm das Datenverarbeitungssystem außerdem veranlasst: wenn die Arbeitslast zum angegebenen Warteschlangenpaar nicht stillgelegt worden ist, zu warten, bis die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt ist, dann das Entfernen des angegebenen Warteschlangenpaars aus dem Speicher, wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird.
  13. Datenverarbeitungssystem (400), umfassend: einen Netzadapter (412) einen Prozessor; und einen Speicher (408), der mit dem Prozessor verbunden ist, wobei der Speicher Befehle zur Bereitstellung von Ressourcenaffinität für den Netzadapter mit mehreren Warteschlangen durch dynamische Rekonfigurierung von Hardware Ressourcen des Datenverarbeitungssystems umfasst, die, wenn sie vom Prozessor ausgeführt werden, den Prozessor veranlassen: ein anfängliches Warteschlangenpaar (406a) in einem Speicher zuzuweisen; zu bestimmen, ob die Auslastung des Datenverarbeitungssystems über einen vorbestimmten oberen Schwellenwert gestiegen ist; wenn die Auslastung über den vorbestimmten oberen Schwellenwert gestiegen ist, ein zusätzliches Warteschlangenpaar (406b-406n) im Speicher zuzuweisen und zu initialisieren; einen Mechanismus zur empfangsseitigen Skalierung (RSS) (414) in dem Netzadapter zu programmieren, um das Hashing von Sendetupeln in das anfängliche Warteschlangenpaar zu aktivieren und um das dynamische Einfügen einer zusätzlichen Verarbeitungsengine zu erlauben, die dem zusätzlichen Warteschlangenpaar und dem anfänglichen Warteschlangenpaar zugeordnet ist; und das Hashing von Sendetupeln in das zusätzliche Warteschlangenpaar zu aktivieren.
  14. Datenverarbeitungssystem nach Anspruch 13, wobei die Befehle den Prozessor außerdem veranlassen: die Zuweisung und Initialisierung, Programmierung und Aktivierung durch das computerlesbare Programm jedes Mal zu wiederholen, wenn die Auslastung des Datenverarbeitungssystems über den vorbestimmten oberen Schwellenwert steigt.
  15. Datenverarbeitungssystem nach Anspruch 13, wobei die Befehle, um zu bestimmen, ob die Auslastung des Datenverarbeitungssystems über den vorbestimmten oberen Schwellenwert gestiegen ist, durch Befehle erfolgen, die den Prozessor außerdem veranlassen, die Auslastung des Datenverarbeitungssystems anhand des Datenflusses und der Ressourcenverfügbarkeit zu überwachen.
  16. Datenverarbeitungssystem nach Anspruch 15, wobei die Befehle den Prozessor außerdem veranlassen, mindestens einen Parameter zu überwachen, der mit der Auslastung im Zusammenhang steht, und wobei der mindestens eine Parameter mindestens eines von Sende-/Empfangsbytes pro Sekunde, einer Zahl von Datenfluss-Steuerrahmen, die vom Netzadapter gesendet und empfangen werden, einer Zahl von DMA-Überläufen, die vom Netzadapter erkannt werden, einer Zahl von Übertragungszeitüberschreitungsereignissen, die vom Einheitentreiber erkannt werden, einer Zahl von Empfangspaketen, die vom Einheitentreiber pro Interrupt verarbeitet werden, oder einer Zahl von Sendepaketen in einer Software-Warteschlange ist.
  17. Datenverarbeitungssystem nach Anspruch 13, wobei die Befehle den Prozessor außerdem veranlassen: zu bestimmen, ob die Auslastung unter einen vorbestimmten unteren Schwellenwert gefallen ist; wenn die Auslastung unter den vorbestimmten unteren Schwellenwert gefallen ist, zu bestimmen, ob im Speicher nur ein zugewiesenes Warteschlangenpaar übrig ist; wenn mehr ein zugewiesenes Warteschlangenpaar im Speicher übrig ist, den RSS-Mechanismus im Netzadapter neu zu programmieren, um die Löschung eines zugewiesenen Warteschlangenpaars zu erlauben; das Hashing von Sendetupeln in ein angegebenes Warteschlangenpaar zu deaktivieren; zu bestimmen, ob die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt worden ist; und wenn die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt ist, das angegebene Warteschlangenpaar aus dem Speicher zu entfernen, wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird.
  18. Datenverarbeitungssystem nach Anspruch 17, wobei die Befehle den Prozessor außerdem veranlassen: wenn die Arbeitslast zum angegebenen Warteschlangenpaar nicht stillgelegt worden ist, zu warten, bis die Arbeitslast zum angegebenen Warteschlangenpaar stillgelegt ist, dann das Entfernen des angegebenen Warteschlangenpaars aus dem Speicher, wodurch der Speicher, der vom angegebenen Warteschlangenpaar genutzt wurde, freigegeben wird.
DE112011100392.7T 2010-04-23 2011-03-01 Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss) Active DE112011100392B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/766,282 2010-04-23
US12/766,282 US8589941B2 (en) 2010-04-23 2010-04-23 Resource affinity via dynamic reconfiguration for multi-queue network adapters
PCT/EP2011/052992 WO2011131400A1 (en) 2010-04-23 2011-03-01 Resource affinity via dynamically adding or removing queue pairs for network adapters with receive side scaling (rss) software

Publications (2)

Publication Number Publication Date
DE112011100392T5 DE112011100392T5 (de) 2012-12-20
DE112011100392B4 true DE112011100392B4 (de) 2019-02-21

Family

ID=43770668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011100392.7T Active DE112011100392B4 (de) 2010-04-23 2011-03-01 Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)

Country Status (7)

Country Link
US (3) US8589941B2 (de)
JP (1) JP5689526B2 (de)
CN (1) CN102859491B (de)
DE (1) DE112011100392B4 (de)
GB (1) GB2492433B (de)
TW (1) TW201218083A (de)
WO (1) WO2011131400A1 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589941B2 (en) * 2010-04-23 2013-11-19 International Business Machines Corporation Resource affinity via dynamic reconfiguration for multi-queue network adapters
ES2639643T3 (es) 2010-06-23 2017-10-27 Telefonaktiebolaget Lm Ericsson (Publ) Gestión de interferencias de señales de referencia en despliegues de redes heterogéneas
KR101699770B1 (ko) * 2010-09-06 2017-02-13 삼성전자주식회사 가상화 시스템 및 그 가상화 시스템에서 자원 할당 방법
US8627333B2 (en) * 2011-08-03 2014-01-07 International Business Machines Corporation Message queuing with flexible consistency options
US8842562B2 (en) 2011-10-25 2014-09-23 Dell Products, Lp Method of handling network traffic through optimization of receive side scaling
US9736211B2 (en) * 2012-08-27 2017-08-15 Vmware, Inc. Method and system for enabling multi-core processing of VXLAN traffic
US9164809B2 (en) * 2012-09-04 2015-10-20 Red Hat Israel, Ltd. Virtual processor provisioning in virtualized computer systems
US9189260B2 (en) 2012-09-27 2015-11-17 International Business Machines Corporation Resource allocation for virtual machines and logical partitions
JP6033183B2 (ja) * 2013-07-31 2016-11-30 京セラドキュメントソリューションズ株式会社 画像形成装置、及び画像形成装置の起動方法
US9887960B2 (en) 2013-08-14 2018-02-06 Nicira, Inc. Providing services for logical networks
US9952885B2 (en) 2013-08-14 2018-04-24 Nicira, Inc. Generation of configuration files for a DHCP module executing within a virtualized container
US9843540B2 (en) * 2013-08-26 2017-12-12 Vmware, Inc. Traffic and load aware dynamic queue management
US9323544B2 (en) 2013-10-09 2016-04-26 International Business Machines Corporation Dynamic reconfiguration of queue pairs
CN103942097B (zh) * 2014-04-10 2017-11-24 华为技术有限公司 一种数据处理方法、装置及具备相应装置的计算机
US9495217B2 (en) 2014-07-29 2016-11-15 International Business Machines Corporation Empirical determination of adapter affinity in high performance computing (HPC) environment
US9465643B1 (en) * 2015-06-04 2016-10-11 Dell Products, L.P. Systems and methods for monitoring a primary operating system (OS) and/or migrating data using an OS hypervisor
CN104991829B (zh) * 2015-06-30 2018-01-23 广东欧珀移动通信有限公司 管理移动终端内存的方法和相关设备
US10795608B2 (en) 2016-02-19 2020-10-06 Hitachi, Ltd. Computer, communication driver, and communication control method
US10841273B2 (en) 2016-04-29 2020-11-17 Nicira, Inc. Implementing logical DHCP servers in logical networks
US10484515B2 (en) 2016-04-29 2019-11-19 Nicira, Inc. Implementing logical metadata proxy servers in logical networks
CN106407055B (zh) * 2016-09-13 2019-09-24 郑州云海信息技术有限公司 一种RSS Key值离散性评价方法及系统
US10481951B2 (en) * 2016-11-15 2019-11-19 Red Hat Israel, Ltd. Multi-queue device assignment for application groups
CN106789152A (zh) * 2016-11-17 2017-05-31 东软集团股份有限公司 基于多队列网卡的处理器扩展方法及装置
US10554554B2 (en) 2016-12-06 2020-02-04 Microsoft Technology Licensing, Llc Hybrid network processing load distribution in computing systems
US10826841B2 (en) 2016-12-06 2020-11-03 Microsoft Technology Licensing, Llc Modification of queue affinity to cores based on utilization
US10715424B2 (en) 2016-12-06 2020-07-14 Microsoft Technology Licensing, Llc Network traffic management with queues affinitized to one or more cores
US10802878B2 (en) * 2017-03-31 2020-10-13 Bmc Software, Inc. Phased start and stop of resources in a mainframe environment
CN107247626A (zh) * 2017-06-14 2017-10-13 山东开创云软件有限公司 一种适用于高并发业务模块调度的方法
CN111127293B (zh) * 2018-10-31 2024-04-26 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和计算机程序产品
JP7070372B2 (ja) * 2018-11-27 2022-05-18 日本電信電話株式会社 トラフィックモニタリング方法、トラフィックモニタリング装置、及びプログラム
CN109586965A (zh) * 2018-12-04 2019-04-05 郑州云海信息技术有限公司 一种网卡rss自动配置方法、装置、终端及存储介质
US11182205B2 (en) * 2019-01-02 2021-11-23 Mellanox Technologies, Ltd. Multi-processor queuing model
US11144226B2 (en) 2019-04-11 2021-10-12 Samsung Electronics Co., Ltd. Intelligent path selection and load balancing
US11216190B2 (en) * 2019-06-10 2022-01-04 Samsung Electronics Co., Ltd. Systems and methods for I/O transmissions in queue pair-based NVMeoF initiator-target system
US11240294B2 (en) 2019-08-23 2022-02-01 Samsung Electronics Co., Ltd. Systems and methods for spike detection and load balancing resource management
US11509578B2 (en) * 2019-12-13 2022-11-22 Cisco Technology, Inc. Flexible policy semantics extensions using dynamic tagging and manifests
CN113759891A (zh) * 2020-08-17 2021-12-07 北京京东乾石科技有限公司 参数确定的方法、装置、电子设备和存储介质
US11860784B1 (en) * 2022-06-27 2024-01-02 Advanced Micro Devices, Inc. Live profile-driven cache aging policies

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030076849A1 (en) 2001-10-10 2003-04-24 Morgan David Lynn Dynamic queue allocation and de-allocation
US20080181245A1 (en) 2007-01-31 2008-07-31 Claude Basso System and Method for Multicore Communication Processing
US7548513B2 (en) 2005-02-17 2009-06-16 Intel Corporation Techniques to provide recovery receive queues for flooded queues

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100000B1 (en) * 1999-05-28 2006-08-29 International Business Machines Corporation System and methods for processing audio using multiple speech technologies
AU7437600A (en) * 1999-09-28 2001-04-30 International Business Machines Corporation Workload management in a computing environment
JP2002202959A (ja) * 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US7307998B1 (en) 2002-08-27 2007-12-11 3Com Corporation Computer system and network interface supporting dynamically optimized receive buffer queues
US7089378B2 (en) 2003-03-27 2006-08-08 Hewlett-Packard Development Company, L.P. Shared receive queues
CN1327677C (zh) * 2003-11-21 2007-07-18 清华大学 基于ecn且带预测验证的拥塞控制方法
US7448044B1 (en) 2005-02-02 2008-11-04 Sun Microsystems, Inc. Systems and methods for efficient queue pair number re-use
US7363399B2 (en) * 2005-08-17 2008-04-22 International Business Machines Corporation Method, apparatus and computer program product providing storage network dynamic tuning of I/O flow with Queue Depth
CN100418313C (zh) * 2005-12-21 2008-09-10 中国科学院计算技术研究所 适于带宽变化的链路分层共享和管理域的带宽重分配方法
JP4702127B2 (ja) * 2006-03-22 2011-06-15 日本電気株式会社 仮想計算機システム及びその物理リソース再構成方法並びにプログラム
JP2008060700A (ja) * 2006-08-29 2008-03-13 Oki Electric Ind Co Ltd バッファ制御装置及びバッファ制御方法
US20090055831A1 (en) * 2007-08-24 2009-02-26 Bauman Ellen M Allocating Network Adapter Resources Among Logical Partitions
US8160085B2 (en) 2007-12-21 2012-04-17 Juniper Networks, Inc. System and method for dynamically allocating buffers based on priority levels
US8208396B2 (en) 2009-05-12 2012-06-26 International Business Machines Corporation Discovery and capability exchange management in a virtualized computing platform utilizing a SR-IOV adapter
US8266290B2 (en) * 2009-10-26 2012-09-11 Microsoft Corporation Scalable queues on a scalable structured storage system
US8131772B2 (en) * 2009-12-04 2012-03-06 Unisys Corporation Method and apparatus for improving the performance of object-oriented queues
US8346999B2 (en) * 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8446824B2 (en) * 2009-12-17 2013-05-21 Intel Corporation NUMA-aware scaling for network devices
US8589941B2 (en) * 2010-04-23 2013-11-19 International Business Machines Corporation Resource affinity via dynamic reconfiguration for multi-queue network adapters

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030076849A1 (en) 2001-10-10 2003-04-24 Morgan David Lynn Dynamic queue allocation and de-allocation
US7548513B2 (en) 2005-02-17 2009-06-16 Intel Corporation Techniques to provide recovery receive queues for flooded queues
US20080181245A1 (en) 2007-01-31 2008-07-31 Claude Basso System and Method for Multicore Communication Processing

Also Published As

Publication number Publication date
WO2011131400A1 (en) 2011-10-27
GB2492433B (en) 2017-06-21
CN102859491A (zh) 2013-01-02
JP2013530573A (ja) 2013-07-25
US8954997B2 (en) 2015-02-10
US20110265095A1 (en) 2011-10-27
GB201204440D0 (en) 2012-04-25
CN102859491B (zh) 2016-01-20
JP5689526B2 (ja) 2015-03-25
GB2492433A (en) 2013-01-02
TW201218083A (en) 2012-05-01
US8589941B2 (en) 2013-11-19
US20120210337A1 (en) 2012-08-16
DE112011100392T5 (de) 2012-12-20
US20150095472A1 (en) 2015-04-02

Similar Documents

Publication Publication Date Title
DE112011100392B4 (de) Ressourcenaffinität durch dynamisches hinzufügen oder entfernen von warteschlangenpaaren für netzadapter mit software zur empfangsseitigen skalierung (rss)
DE102016221811B4 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE112013006063B4 (de) Funktionsübernahme für einen Datenübertragungskanal in einem Netzwerk mit Hochleistungsdatenverarbeitung
DE112014002847B4 (de) Verwenden von Client-Ressourcen während Mobilitätsoperationen
DE112017001762T5 (de) Technologien für den einsatz dynamischer underlay-netzwerke in cloud-computing-infrastrukturen
DE112021006003T5 (de) Intelligente datenebenenbeschleunigung durch auslagern zu verteilten smart- network-interfaces
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE102010001985A1 (de) Vorrichtung zum Schalten des Betriebs einer virtuellen Maschine zwischen mehreren Computern, die der gleichen Computerplattform zugeordnet sind, und entsprechende Schaltverfahren
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
US9804874B2 (en) Consolidation of idle virtual machines on idle logical processors
DE112012003776T5 (de) Migration logischer Partitionen mit zustandsbehafteten Auslagerungsdatenverbindungen während des laufenden Betriebs unter Verwendung der Kontextherauslösung und -einfügung
US9811346B2 (en) Dynamic reconfiguration of queue pairs
DE112012002404B4 (de) Konfiguration und Management virtueller Netzwerke
DE112015004564B4 (de) Ereignisgesteuerte Reoptimierung einer logisch partitionierten Umgebung zur Energieverwaltung
DE102018202432A1 (de) Strukturunterstützung für die Dienstgüte
DE112017001800T5 (de) Technologien für dynamisches arbeitswarteschlangenmanagement
DE102016203808A1 (de) Verringern der Bevorrechtigung virtueller Maschinen in einer virtualisierten Umgebung
DE102020122714A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE112019000965T5 (de) Technologien zur reduzierung der nic-anschlüsse mit beschleunigter schaltung
DE102013100054B4 (de) Verlagern von zusammengehörigen Ressourcenpartitionen
CN114691286A (zh) 服务器系统、虚拟机创建方法及装置
DE112016007292T5 (de) Technologien für paravirtualisierte netzwerkvorrichtungswarteschlangen und speicherverwaltung
DE112011100854B4 (de) Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren
DE102020123164A1 (de) Techniken zum konfigurieren eines prozessors, um wie mehrere, separate prozessoren zu funktionieren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final