-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf das Gebiet eines Computerspeichers und im Besonderen auf einen Lastausgleich auf Speicherebene.
-
HINTERGRUND
-
Non-Volatile Memory Express (NVMe™) ist eine optimierte, hochgradig leistungsfähige und skalierbare Host-Controller-Schnittstelle, die für die Erfordernisse von Computerspeichersystemen ausgelegt ist, die einen Halbleiterspeicher auf Grundlage der PCIe®-Schnittstelle (Peripheral Component Interconnect Express®) verwenden. NVMe wurde von Grund auf für nicht flüchtige Arbeitsspeichertechnologien entworfen und ist dafür ausgelegt, einen effizienten Zugriff auf Speichereinheiten bereitzustellen, die mit einem nicht flüchtigen Speicher ausgestattet werden, von der gegenwärtigen NAND-Flash-Technologie bis zu künftigen, leistungsfähigeren persistenten Arbeitsspeichertechnologien.
-
Das NVMe-Protokoll nutzt parallele, latenzarme Datenpfade zu den zugrunde liegenden Medien, ähnlich wie dies bei Hochleistungs-Prozessorarchitekturen der Fall ist. Dies bietet eine bedeutend höhere Leistung und geringere Latenzen gegenüber herkömmlichen Speicherschnittstellen wie z.B. SAS-Protokollen (Serial Attached SCSI) und SATA-Protokollen (Serial Advanced Technology Attachment). NVMe kann bis zu 65.535 Eingabe/Ausgabe(E/A)-Warteschlangen unterstützen, mit 65.535 Einträgen pro Warteschlange. Herkömmliche SAS- und SATA-Schnittstellen können nur einzelne Warteschlangen unterstützen, wobei jede SAS-Warteschlange 254 Einträge und jede SATA-Warteschlange nur 32 Einträge hat. Die NVMe-Host-Software kann Warteschlangen bis zu dem durch den NVMe-Controller zulässigen Maximalwert erzeugen, abhängig von Systemkonfiguration und erwarteter Arbeitslast. NVMe unterstützt Scatter/Gather-E/As, wodurch die CPU-Last bei Datenübertragungen minimiert wird, und stellt sogar die Fähigkeit bereit, deren Priorität auf Grundlage von Arbeitslastanforderungen zu ändern.
-
NVMe over Fabrics (NVMe-oF) ist ein Netzwerkprotokoll, das verwendet wird, um über ein Netzwerk (d.h. ein Fabric bzw. eine Struktur) Daten zwischen einem Host und einem Speichersystem austauschen. NVMe-oF definiert eine gemeinsame Architektur, die eine Reihe von Speichernetzwerkstrukturen für ein NVMe-Blockspeicherprotokoll über eine Speichernetzwerkstruktur unterstützt. Dies enthält ein Ermöglichen einer Front-Side-Schnittstelle mit dem Speichersystem, ein Erweitern auf eine große Anzahl von NVMe-Einheiten und ein Ausdehnen der Entfernung, über die ein Zugriff auf NVMe-Einheiten und NVMe-Teilsysteme möglich ist.
-
KURZDARSTELLUNG
-
Ein Aspekt der vorliegenden Erfindung enthält ein computerrealisiertes Verfahren für einen Lastausgleich auf Speicherebene. Bei einer ersten Ausführungsform wird das Lastniveau eines Speichersystems überwacht, wobei das Lastniveau ein Auslastungsprozentsatz einer Mehrzahl von CPU-Kernen in dem Speichersystem ist. Eine Überlastungsbedingung wird auf Grundlage dessen erkannt, dass der Auslastungsprozentsatz eines oder mehrerer CPU-Kerne einen Schwellenwert überschreitet, wobei die Überlastungsbedingung durch eine Überlappung einer oder mehrerer E/A-Warteschlangen von mehreren Host-Computern verursacht wird, die auf einen einzelnen CPU-Kern in dem Speichersystem zugreifen. Als Reaktion auf ein Erkennen der Überlastungsbedingung wird in einem zweiten CPU-Kern in dem Speichersystem eine neue E/A-Warteschlange (I/O Queue, IOQ) ausgewählt, wobei der zweite CPU-Kern einen Auslastungsprozentsatz hat, der unter einem zweiten Schwellenwert liegt. Eine Empfehlung wird an einen Host-Computer gesendet, wobei die Empfehlung lautet, E/A-Datenverkehr von dem ersten CPU-Kern in die neue E/A-Warteschlange in dem zweiten CPU-Kern zu verlagern, um das Lastniveau des Speichersystems neu auszugleichen.
-
Ein weiterer Aspekt der vorliegenden Erfindung enthält ein computerrealisiertes Verfahren für einen Lastausgleich auf Speicherebene. Bei einer zweiten Ausführungsform werden als Reaktion auf ein Empfangen eines Befehls von einem Host-Computer, um ein E/A-Warteschlangenpaar zu erstellen, Prozessor- und Arbeitsspeicherressourcen in einem Speichersystem zugeordnet, wobei das Speichersystem die NVMe-oF-Architektur (Non-Volatile Memory Express over Fabrics) realisiert. In einem CPU-Kern in dem Speichersystem wird eine Überlastungsbedingung erkannt, wobei die Überlastungsbedingung eine Überlappung einer Mehrzahl von Host-Computern unter Verwendung desselben E/A-Warteschlangenpaars ist. Als Reaktion auf ein Erkennen der Überlastungsbedingung wird eine Empfehlung an einen Host-Computer gesendet, wobei die Empfehlung lautet, E/A-Datenverkehr von dem ersten CPU-Kern in eine neue E/A-Warteschlange in einem zweiten CPU-Kern zu verlagern, um ein Lastniveau des Speichersystems neu auszugleichen.
-
Figurenliste
-
- 1 ist ein funktionales Blockschaubild, das eine verteilte Datenverarbeitungsumgebung gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
- 2 ist ein Beispiel für eine Zuordnung eines NVMe-CPU-Kerns zu einer Warteschlange für ein Speichersystem in einer Datenverarbeitungseinheit innerhalb der verteilten Datenverarbeitungsumgebung aus 1 für einen Lastausgleich auf Speicherebene gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3a ist ein Beispiel für ein nicht ausgeglichenes Speichersystem in einer Datenverarbeitungseinheit innerhalb der verteilten Datenverarbeitungsumgebung aus 1 für einen Lastausgleich auf Speicherebene gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3b ist ein Beispiel für ein Speichersystem, das die vorliegende Erfindung enthält, in einer Datenverarbeitungseinheit innerhalb der verteilten Datenverarbeitungsumgebung aus 1 für einen Lastausgleich auf Speicherebene gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3c ist ein Beispiel für ein ausgeglichenes Speichersystem, das die vorliegende Erfindung enthält, in einer Datenverarbeitungseinheit innerhalb der verteilten Datenverarbeitungsumgebung aus 1 für einen Lastausgleich auf Speicherebene gemäß einer Ausführungsform der vorliegenden Erfindung.
- 4 ist ein Ablaufplan der Schritte des Warteschlangen-Ausgleichsprogramms innerhalb des Computersystems aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung.
- 5 stellt ein Blockschaubild von Komponenten der Datenverarbeitungseinheiten dar, die das Warteschlangen-Ausgleichsprogramm innerhalb der verteilten Datenverarbeitungsumgebung aus 1 gemäß einer Ausführungsform der vorliegenden Erfindung ausführen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Mit der rasanten Zunahme von Datenmenge und -nutzung in modernen Datenverarbeitungssystemen werden neue Verfahren benötigt, um den Durchsatz zu erhöhen und die Latenz einer Datenübertragung zwischen dem Host und dem Speicher in modernen Systemen zu verringern. In einem typischen System gibt es mehrere Transportkanäle und -protokolle, die in einem Speichersystem parallel vorhanden sein und NVMe Remote Direct Memory Access (NVMe-RDMA), NVMe over Fiber Channel (NVMe-FC), Fiber Channel-to-Small Computer System Interface (FC-SCSI), Fiber Channel over Ethernet (FCoE), Internet Small Computer Systems Interface (iSCSI) usw. enthalten können.
-
NVMe ist ein Speicherprotokoll, das für eine schnellere Datenübertragung zwischen Servern, Speichereinheiten und Flash-Controllern ausgelegt ist, die üblicherweise den PCle-Bus als Transportmechanismus verwenden. Die NVMe-Spezifikation stellt eine Registerschnittstelle und einen Befehlssatz bereit, der eine Hochleistungs-E/A ermöglicht. NVMe ist eine Alternative zu den herkömmlichen SCSI-Standards (Small Computer System Interface) (und anderen Standards wie SAS, SATA usw.) für eine Datenübertragung zwischen Hosts und Speichersystemen. Einer der bedeutenderen Vorteile, die ein PCIe-Flash auf NVMe-Grundlage gegenüber SSDs auf SAS- und SATA-Grundlage hat, besteht in einer geringeren Zugriffslatenz in dem Host-Software-Stack, was zu mehr Eingabe/Ausgabe-Operationen pro Sekunde (Input/Output Operations Per Second, IOPS) und einer geringeren CPU-Auslastung führt.
-
NVMe unterstützt eine parallele E/A-Verarbeitung mit Mehrkernprozessoren, was zu einer schnelleren E/A-Zuteilung und damit zu einer geringeren E/A-Latenz führt. Da mehrere CPU-Kerne gleichzeitig E/A-Anforderungen verarbeiten, steigt die Systemleistung aufgrund einer optimalen Auslastung der CPU-Ressourcen. Zusätzlich hierzu ist NVMe so ausgelegt, dass weniger CPU-Anweisungen pro E/A verwendet werden. NVMe unterstützt außerdem 64.000 Befehle in einer einzigen Nachrichtenwarteschlange und maximal 65.535 E/A-Warteschlangen.
-
NVMe over Fabrics (NVMe-oF) ist eine Erweiterung des lokalen PCIe-NVMe, das die Vorzüge einer hohen Leistung und geringen Latenz von NVMe bietet, allerdings über Netzwerkstrukturen anstatt einer lokalen Verbindung. Server und Speichereinheiten können über ein Ethernet-Netzwerk oder über Fibre Channel (FC) verbunden werden, die beide NVMe-over-Fabrics-Befehle unterstützen und die Vorteile des NVMe-Protokolls auf miteinander verbundene Systemkomponenten ausdehnen. Das erklärte Entwurfsziel für NVMe-oF bestand darin, bei einer Datenübertragung zwischen einem NVMe-Host-Computer und mit einem Netzwerk verbundenen NVMe-Speichereinheiten maximal 10 Mikrosekunden Latenz hinzuzufügen, zusätzlich zu der Latenz, die dem Zugriff auf die PCIe-NVMe-Speichereinheit zugehörig ist.
-
NVMe-oF unterstützt mehrere E/A-Warteschlangen für eine reguläre E/A-Operation von Host- zu Speichersystemen. NVMe unterstützt maximal 65.535 Warteschlangen mit bis zu 65.535 Einträgen pro Warteschlange. Es ist die Aufgabe des Host-Treibers, Warteschlangen zu erzeugen, nachdem die Verbindung hergestellt ist. Nachdem der Host mit dem Zielsystem verbunden wird, wird eine Spezial-Warteschlange erzeugt, die als Admin-Warteschlange bezeichnet wird. Wie der Name nahelegt, wird die Admin-Warteschlange verwendet, um Übertragungssteuerungsbefehle von einem Initiator an die Zieleinheit zu übertragen. Nachdem die Admin-Warteschlange erzeugt wird, wird sie durch einen Host verwendet, um auf Grundlage von Systemanforderungen E/A-Warteschlangen zu erzeugen. Der Host kann mehrere E/A-Warteschlangen für einen einzigen Controller mit demselben NQN (qualifizierter NVMe-Name, der zum Identifizieren des entfernt angeordneten NVMe-Speicherziels verwendet wird) erstellen und mehrere ihm zugeordnete Namensbereiche (oder Datenträger) haben. Nachdem E/A-Warteschlangen erzeugt werden, werden E/A-Befehle an die E/A-Übergabewarteschlange (Submission Queue, SQ) übergeben, und E/A-Antworten werden aus der Abschluss-Warteschlange (Completion Queue, CQ) erfasst. Diese E/A-Warteschlangen können unter Verwendung von Steuerungsanweisungen hinzugefügt oder entfernt werden, die über die Admin-Warteschlange für diese Sitzung gesendet werden.
-
Wenn ein Befehl für eine Erzeugung einer E/A-Warteschlange empfangen wird, führt die Zieleinheit zunächst Systemprüfungen auf die maximal unterstützte Anzahl an Warteschlangen und andere relevante Felder durch, erzeugt eine E/A-Warteschlange und weist die E/A-Warteschlange einem CPU-Kern in dem Speicher-Controller zu. Als Nächstes sendet die Zieleinheit über die Admin-Abschluss-Warteschlange eine Antwort auf die Anforderung für eine Warteschlangenerzeugung. Jede E/A-Warteschlange wird einem anderen CPU-Kern in dem Speicher-Controller zugewiesen. Dies ermöglicht Parallelität und steigert den Durchsatz des Systems. In dem Ziel-Speicher-Controller wird Kernzuweisungslogik umgesetzt, und auf Grundlage einer vordefinierten Richtlinie in dem Speicher-Controller wird eine Zuordnung von E/A-Warteschlangen zu einem CPU-Kern durchgeführt.
-
Das Problem beim Stand der Technik besteht in einem Leistungsabfall aufgrund einer Warteschlangenüberlappung. NVMe kann rund 65.535 Warteschlangen unterstützen, die verschiedenen CPU-Kernen zugewiesen werden können, um Parallelität zu erreichen. Wenn ein Host einen Befehl zum Erstellen eines E/A-Warteschlangenpaars für das Speichersystem ausgibt, ordnet das Speichersystem dem E/A-Warteschlangenpaar Prozessorressourcen und Arbeitsspeicherressourcen zu. Zum Beispiel sollen zwei oder mehr Hosts Verbindungen zu einem gemeinsamen NVMe-Ziel herstellen. Mit einiger Wahrscheinlichkeit beginnen die durch die mehreren Hosts erzeugten E/A-Warteschlangen, sich in einzelnen CPU-Kernen zu überlappen, d.h. die primären E/A-Warteschlangen eines Hosts „A“ in einem Kern 1 können sich mit den primären E/A-Warteschlangen eines Hosts „B“ in einem Kern 1 überlappen. Bei derartigen Szenarien werden E/A-Arbeitslasten, die über NVMe-Warteschlangen aus einem E/A-Warteschlangenpaar von beiden Hosts übertragen werden, durch einen einzigen Kern in dem Speicher-Controller verarbeitet. Dies verringert die Parallelität aufseiten des Speicher-Controllers und wirkt sich negativ auf die E/A-Leistung einer Host-Anwendung aus. Nach gegenwärtigem Stand der Technik gibt es kein Mittel, um die CPU-Kernzuweisung mit erwarteten Arbeitslasten zu verknüpfen, und dies kann zu einem beträchtlichen E/A-Lastungleichgewicht über die CPU-Kerne hinweg führen, die in den Speicher-Controller-Knoten verfügbar sind. Da jeder CPU-Kern über die mehreren E/A-Warteschlangen hinweg gemeinsam genutzt wird, gibt es kein Mittel, um ein Arbeitslast-Ungleichgewicht aufgrund von überlappenden Warteschlangen von einem oder mehreren Hosts zu erkennen oder die Server über das Arbeitslast-Ungleichgewicht zu benachrichtigen. Falls mehrere Hosts über NVMe-Warteschlangen mit dem Speicherziel verbunden werden, werden aufgrund einer unterschiedlich hohen Host-E/A-Arbeitslast vermutlich manche der CPU-Kerne überlastet und manche unterausgelastet. Zusätzlich hierzu gibt es keinen Mechanismus, durch den das Speichersystem vorhersagen kann, wie viel Last durch jede Warteschlange zum Zeitpunkt der E/A-Warteschlangenerzeugung verursacht wird. In dem Host-Multipathing-Treiber verwendet der Host eine bestimmte E/A-Warteschlange als eine primäre Warteschlange. Falls mehrere Hosts primäre Warteschlangen haben, die mit demselben CPU-Kern verbunden werden, wird dieser CPU-Kern überlastet, und die Anwendungen, die auf die Daten zugreifen, verzeichnen eine erhöhte E/A-Latenz und profitieren somit nicht von den Vorteilen einer Parallelität.
-
Als Ergebnis von E/A-Warteschlangenüberlappungen können IOPS abnehmen, da die Last über CPU-Kerne hinweg nicht ausgeglichen ist. Falls der Host eine kleine, E/Aintensive Arbeitslast durchführt, wiegt diese zusätzliche Last aufgrund von überlappenden Warteschlangen noch schwerer und kann zu einer Anwendungsverlangsamung während einer Spitzen-Arbeitslast sowie zu unerwarteten E/A-Latenzproblemen führen. Dies führt auch zu Leistungsproblemen in dem Speicher-Controller, da durch nicht ausgeglichene CPU-Kerne über das Speicher-Controller-System hinweg manche CPU-Kerne zusätzlich belastet werden, während andere CPU-Kerne nicht belastet werden, was zu einer geringeren Parallelverarbeitung und zu einer insgesamt höheren Verzögerung und Latenz führt.
-
Bei verschiedenen Ausführungsformen löst die vorliegende Erfindung dieses Problem, indem sie überlappende E/A-Warteschlangen in CPU-Kernzuweisungen innerhalb eines NVMe-Speicher-Controllers erkennt und die Zuweisungen der E/A-Warteschlangen zu den CPU-Kernen neu ausgleicht. Bei einer Ausführungsform überwacht das Warteschlangen-Ausgleichsprogramm die erstellten Warteschlangen in allen verfügbaren CPU-Kernen, die Arbeitslast sowie die Verfügbarkeit von CPU-Kernen. Nachdem die Warteschlangen-Überlappungssituation festgestellt wird, ermittelt das Warteschlangen-Ausgleichsprogramm die CPU-Arbeitslast und das Last-Ungleichgewicht. Das Warteschlangen-Ausgleichsprogramm identifiziert die mit den CPU-Kernen verbundenen E/A-Warteschlangen und analysiert die E/A-Warteschlangen auf die IOPS-Arbeitslasten mit einer hohen Bandbreitenauslastung. Da die IOPS-Arbeitslasten CPU-bezogen sind, sammelt das Warteschlangen-Ausgleichsprogramm diese Informationen und ordnet den CPU-Verbrauch pro E/A-Warteschlange zu, die mit dem überlasteten CPU-Kern verbunden wird. Bei einer Ausführungsform durchläuft das Warteschlangen-Ausgleichsprogramm alle E/A-Warteschlangen, die aus denselben Hosts erzeugt werden, und analysiert auch ihre Arbeitslasten.
-
Bei einer Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm auf Grundlage der gesammelten Arbeitslastinformationen, welche E/A-Warteschlangen-Arbeitslast erhöht werden kann, um die bessere Leistung zu erlangen. Das Warteschlangen-Ausgleichsprogramm erreicht dies, indem es einen symmetrischen Arbeitslastausgleich der E/A-Warteschlangen-Arbeitslasten in dem Speichersystem durchführt.
-
Nachdem das Arbeitsschlangen-Ausgleichsprogramm die neuen Entscheidungen zur E/A-Arbeitslastübertragung trifft, werden die Informationen bei einer Ausführungsform als ein Signal an die Administrationssteuereinheit des NVMe-Controllers und als eine asynchrone Benachrichtigung über die Warteschlangen-Überlappungssituation an den Host gesendet. Diese AER-Nachricht (Advanced Error Reporting) enthält die E/A-Warteschlangen-ID (IOQ_ID), an die nach Annahme des Speichersystems Datenverkehr verlagert werden soll, um die CPU-Arbeitslast auszugleichen.
-
Nachdem das Signal an den Host gesendet wird, entscheidet der Host-NVMe-Treiber, ob mit der aktuellen E/A-Senderichtlinie fortgefahren werden soll oder ob der Vorschlag des Warteschlangen-Ausgleichsprogramms für ein Priorisieren einer bestimmten IOQ übernommen werden soll. Wenn der Host entscheidet, dass der Vorschlag des Warteschlangen-Ausgleichsprogramms übernommen werden soll, werden die IOQ-Pfadermittlungsrichtlinien durch den NVMe-Treiber auf der Host-Seite optimiert. Wenn die Hosts den Leistungsabfall tolerieren können oder der Host die Gesamtabnahme der IOPS tolerieren kann oder der Host die IOQ-Richtlinie aus einem anderen Grund nicht ändern möchte, wird in manchen Fällen der Vorschlag abgelehnt, und ein Signal wird an das Warteschlangen-Ausgleichsprogramm gesendet, das es über die Ablehnung benachrichtigt. Nachdem das Warteschlangen-Ausgleichsprogramm das Ablehnungssignal empfängt, sendet bei einer Ausführungsform das Warteschlangen-Ausgleichsprogramm eine AER-Nachricht an einen weiteren Host, um seine E/A-Arbeitslast von dem überlasteten CPU-Kern zu entfernen. Auf diese Weise sind sowohl das Warteschlangen-Ausgleichsprogramm als auch die Hosts an der Entscheidung beteiligt, und der Arbeitslastausgleich wird reibungslos erreicht, indem ein Signal an den zweiten Host gesendet wird.
-
Die Vorteile der vorliegenden Erfindung enthalten weniger Engpässe durch Warteschlangen-Überlappungen, eine bessere Leistung, eine höhere IOPS-Anzahl, die Vermeidung einer erneuten IOQ-Erzeugung und einen besseren Lastausgleich über die CPU-Kerne hinweg.
-
Die vorliegende Erfindung verringert Engpässe durch Warteschlangen-Überlappungen, da die IOQ-Präferenz des Hosts geändert wird, wodurch Ungleichgewichte der CPU-Kerne reduziert oder eliminiert werden.
-
Die vorliegende Erfindung führt zu einer besseren Leistung, da die Leistung in einer Warteschlangen-Überlappungssituation, bei der Hosts gleichzeitig E/As durchführen, abnimmt, weil der Kern eine Warteschlange nach der anderen abarbeitet. Wenn jedoch zwei Warteschlangen zu verschiedenen Hosts gehören, gleicht die vorliegende Erfindung die E/A-Warteschlangen neu aus, um einen Abfall der Gesamtleistung zu vermeiden.
-
Die vorliegende Erfindung führt zu mehr IOPS, da die Warteschlangen-Überlappungssituation vermieden wird, was die E/A-Bearbeitungszeit des Hosts verringert und somit die Gesamtzahl der IOPS erhöht.
-
Die vorliegende Erfindung vermeidet die erneute IOQ-Erzeugung, da sie die IOQs nicht von dem Speichersystem oder dem Host trennt und lediglich den Host-NVMe-Treiber anweist, das Ziel während der Verarbeitung zu wechseln, wodurch die Arbeitslast auf Speicherebene ausgeglichen und auf transparente Weise ein Leistungsgewinn erzielt wird.
-
Die vorliegende Erfindung führt zu einem besseren Lastausgleich über die CPU-Kerne hinweg, da über alle CPU-Kerne in dem Speichersystem hinweg ein besseres Gleichgewicht für die Last erreicht wird und das Speichersystem somit ausgeglichener ist.
-
1 ist ein funktionales Blockschaubild, das eine allgemein als 100 bezeichnete verteilte Datenverarbeitungsumgebung veranschaulicht, die geeignet ist, um ein Warteschlangen-Ausgleichsprogramm 112 gemäß mindestens einer Ausführungsform der vorliegenden Erfindung auszuführen. Wie hierin verwendet, beschreibt der Begriff „verteilt“ ein Computersystem, das mehrere physikalisch getrennte Einheiten enthält, die gemeinsam als ein einziges Computersystem fungieren. 1 stellt lediglich eine Veranschaulichung einer einzigen Realisierung bereit und impliziert keinerlei Beschränkungen mit Blick auf die Umgebungen, in denen verschiedene Ausführungsformen realisiert werden können. Der Fachmann kann viele Abwandlungen an der dargestellten Umgebung vornehmen, ohne von dem durch die Ansprüche geltend gemachten inhaltlichen Umfang der Erfindung abzuweichen.
-
Bei verschiedenen Ausführungsformen enthält die verteilte Datenverarbeitungsumgebung 100 eine Mehrzahl von Host-Computern. Bei der in 1 dargestellten Ausführungsform enthält die verteilte Datenverarbeitungsumgebung 100 einen Host 130, einen Host 132 und einen Host 134, die alle mit einem Netzwerk 120 verbunden werden. Das Netzwerk 120 kann zum Beispiel ein Telekommunikationsnetzwerk, ein lokales Netzwerk (Local Area Network, LAN), ein Weitverkehrsnetzwerk (Wide Area Network, WAN) wie beispielsweise das Internet oder eine Kombination hiervon sein und kann drahtgebundene, drahtlose oder Lichtwellenleiterverbindungen enthalten. Das Netzwerk 120 kann eines oder mehrere drahtgebundene und/oder drahtlose Netzwerke enthalten, die in der Lage sind, Daten-, Sprach- und/oder Videosignale zu empfangen und zu übertragen, zum Beispiel Multimediasignale, die Sprach-, Daten- und Videoinformationen enthalten. Im Allgemeinen kann das Netzwerk 120 jede beliebige Kombination aus Verbindungen und Protokollen sein, die Datenübertragungen zwischen dem Host 130, dem Host 132, dem Host 134 und anderen (nicht gezeigten) Datenverarbeitungseinheiten innerhalb der verteilten Datenverarbeitungsumgebung 100 unterstützt.
-
Bei verschiedenen Ausführungsformen können der Host 130, der Host 132 und der Host 134 jeweils eine eigenständige Datenverarbeitungseinheit, ein Verwaltungs-Server, ein Web-Server, eine mobile Datenverarbeitungseinheit oder eine beliebige andere elektronische Einheit bzw. ein beliebiges anderes elektronisches Datenverarbeitungssystem sein, die bzw. das in der Lage ist, Daten zu empfangen, zu senden und zu verarbeiten. Bei einer Ausführungsform können der Host 130, der Host 132 und der Host 134 jeweils ein Personal Computer, ein Desktop Computer, ein Laptop Computer, ein Netbook Computer, ein Tablet Computer, ein Smartphone oder eine beliebige andere programmierbare, elektronische Einheit sein, die in der Lage ist, mit anderen (nicht gezeigten) Datenverarbeitungseinheiten innerhalb der verteilten Datenverarbeitungsumgebung 100 über das Netzwerk 120 Daten auszutauschen. Bei einer weiteren Ausführungsform stehen der Host 130, der Host 132 und der Host 145 jeweils für ein Server-Datenverarbeitungssystem, das mehrere Computer als ein Server-System verwendet, z.B. in einer Cloud-Computing-Umgebung. Bei einer weiteren Ausführungsform stehen der Host 130, der Host 132 und der Host 134 für ein Datenverarbeitungssystem, das geclusterte Computer und Komponenten (z.B. Datenbank-Server-Computer), Anwendungs-Server-Computer usw.) verwendet, die als ein einziger Pool von nahtlosen Ressourcen dienen, wenn innerhalb der verteilten Datenverarbeitungsumgebung 100 darauf zugegriffen wird.
-
Bei verschiedenen Ausführungsformen enthält die verteilte Datenverarbeitungsumgebung 100 auch ein Speichersystem 110, das über eine Struktur 140 mit dem Host 130, dem Host 132 und dem Host 134 verbunden wird. Die Struktur 140 kann zum Beispiel eine Ethernet-Struktur, eine Fibre-Channel-Struktur, eine FCoE-Struktur (Fibre Channel over Ethernet) oder eine InfiniBand®-Struktur sein. Bei einer weiteren Ausführungsform kann die Struktur 140 eine beliebige der RDMA-Technologien enthalten, zum Beispiel InfiniBand, RDMA over Converged Ethernet (RoCE) und iWARP. Bei anderen Ausführungsformen kann die Struktur 140 eine beliebige Struktur sein, die in der Lage ist, eine Schnittstelle zwischen einem Host und einem Speichersystem bereitzustellen, wie dies einem Fachmann bekannt sein dürfte.
-
Bei verschiedenen Ausführungsformen kann das Speichersystem 110 eine eigenständige Datenverarbeitungseinheit, ein Verwaltungs-Server, ein Web-Server, eine mobile Datenverarbeitungseinheit oder eine beliebige andere elektronische Einheit bzw. ein beliebiges anderes elektronisches Datenverarbeitungssystem sein, die bzw. das in der Lage ist, Daten zu empfangen, zu senden und zu verarbeiten. Bei manchen Ausführungsformen kann das Speichersystem 110 über eine Struktur 140 mit dem Netzwerk 120 verbunden werden.
-
Bei einer Ausführungsform enthält das Speichersystem 110 das Warteschlangen-Ausgleichsprogramm 112. Bei einer Ausführungsform ist das Warteschlangen-Ausgleichsprogramm 112 ein Programm, eine Anwendung oder ein Teilprogramm eines größeren Programms zum intelligenten Auswählen von Transportkanälen über Protokolle hinweg nach einem Laufwerkstyp.
-
Bei einer Ausführungsform enthält das Speichersystem 110 ein Informations-Repository 114. Bei einer Ausführungsform kann das Informations-Repository 114 durch das Warteschlangen-Ausgleichsprogramm 112 verwaltet werden. Bei einer alternativen Ausführungsform kann das Informations-Repository 114 durch das Betriebssystem des Speichersystems 110 allein oder gemeinsam mit dem Warteschlangen-Ausgleichsprogramm 112 verwaltet werden. Das Informations-Repository 114 ist ein Daten-Repository, das Informationen speichern, sammeln, vergleichen und/oder kombinieren kann. Bei manchen Ausführungsformen kann das Informations-Repository 114 außerhalb des Speichersystems 110 angeordnet werden, wobei der Zugriff darauf über ein Datenverarbeitungsnetzwerk wie z.B. die Struktur 140 erfolgt. Bei manchen Ausführungsformen wird das Informations-Repository 114 in dem Speichersystem 110 gespeichert. Bei manchen Ausführungsformen kann sich das Informations-Repository 114 in einer weiteren (nicht gezeigten) Datenverarbeitungseinheit befinden, sofern durch das Speichersystem 110 auf das Informations-Repository 114 zugegriffen werden kann. Das Informations-Repository 114 kann Transportkanal- und Protokolldaten, Protokollklassen-Daten, Laufwerkstyp- und Laufwerksstufen-Daten, Verbindungsdaten, Transportkanal-Tabellen, Rohdaten, die zwischen dem Host-Initiator und den Zielspeichersystem übertragen werden sollen, andere Daten, die durch das Warteschlangen-Ausgleichsprogramm 112 von einer oder mehreren Quellen empfangen werden, sowie Daten enthalten, die durch das Warteschlangen-Ausgleichsprogramm 112 erzeugt werden.
-
Das Informations-Repository 114 kann unter Verwendung eines beliebigen flüchtigen oder nicht flüchtigen Speichermediums zum Speichern von Informationen realisiert werden, wie es nach dem Stand der Technik bekannt ist. Das Informations-Repository 114 kann zum Beispiel mit einer Bandbibliothek, einer optischen Bibliothek, einem oder mehreren unabhängigen Festplattenlaufwerken, mehreren Festplattenlaufwerken in einem redundanten Array von unabhängigen Festplatten (Redundant Array of Independent Disk, RAID), SATA-Laufwerken, Halbleiterplatten (Solid-State Drive, SSD) oder Direktzugriffsspeichern (Random-Access Memory, RAM) realisiert werden. Entsprechend kann das Informations-Repository 114 mit jeder beliebigen geeigneten Speicherarchitektur realisiert werden, die in der Technik bekannt ist, z.B. eine relationalen Datenbank, eine objektorientierte Datenbank oder eine oder mehrere Tabellen.
-
2 ist ein Beispiel für die Zuordnung von E/A-Warteschlangen zu CPU-Kernen in einem grundlegenden NVMe-Speichersystem gemäß einer Ausführungsform der Erfindung. Bei einer Ausführungsform ist ein Speichersystem 200 ein Beispiel für eine mögliche Konfiguration der Warteschlangenzuordnung des Speichersystems 110 aus 1. Bei einer Ausführungsform hat der Prozessor in dem Speichersystem 200 einen Controller-Verwaltungskern 210. Nachdem der Host mit dem Zielsystem verbunden wird, wird bei einer Ausführungsform mittels Zuweisung eine Spezial-Warteschlange erzeugt, die als die Admin-Warteschlange bezeichnet wird. Die Admin-Warteschlange wird verwendet, um Übertragungssteuerungsbefehle von einem Initiator an die Zieleinheit zu übertragen. Bei einer Ausführungsform besteht die Admin-Warteschlange in dem Controller-Verwaltungskern 210 aus einer Admin-Übergabe-Warteschlange, um E/A-Anforderungen an die E/A-Warteschlangen zu übergeben, und einer Admin-Abschluss-Warteschlange, um die Abschluss-Nachrichten von den E/A-Warteschlangen zu empfangen.
-
In einem typischen Speichersystem gibt es eine oder mehrere CPUs, wobei jede CPU eine Mehrzahl von CPU-Kernen hat. In dem in 2 veranschaulichten Beispiel hat der Prozessor in dem Speichersystem 200 n Kerne, die hier als Kern_0 212, Kern_1 214 bis Kern_n-1 216 dargestellt werden. Bei manchen Ausführungsformen der vorliegenden Erfindung hat jeder CPU-Kern eine E/A-Übergabe-Warteschlange, um Anforderungen an die E/A-Warteschlangen zu übergeben, und eine E/A-Abschluss-Warteschlange, um Abschluss-Nachrichten von den E/A-Warteschlangen zu empfangen. Das Beispiel-Speichersystem aus 2 enthält auch einen Controller 220, der gemäß manchen Ausführungsformen der vorliegenden Erfindung der Controller für das Speichersystem ist.
-
Es ist darauf zu verweisen, dass das in 2 dargestellte Beispiel nur eine einzige E/A-Warteschlange zeigt, die einem jeden CPU-Kern zugewiesen wird. Bei einer typischen Ausführungsform der vorliegenden Erfindung werden jedem CPU-Kern mehrere E/A-Warteschlangen zugewiesen. Diese typischere Ausführungsform wird weiter unten in den 3a bis 3c veranschaulicht.
-
3a ist eine Veranschaulichung einer allgemein als 300 bezeichneten typischen Speicherkonfiguration und stellt ein Beispiel für die obige Problemstellung dar. In diesem Beispiel sind ein Host A 310 und ein Host B 312 Beispiele für die Hosts (130 bis 134) in der verteilten Datenverarbeitungsumgebung 100 aus 1. Eine Struktur 320 ist die Struktur, die eine Datenübertragung zwischen einer beliebigen Anzahl von Host-Einheiten und dem Speichersystem ermöglicht. Verschiedene Datenübertragungsstrukturen, die in verschiedenen Ausführungsformen der vorliegenden Erfindung die Struktur 320 bilden können, werden oben aufgeführt. Ein Speichersystem 330 ist ein Beispiel für eine mögliche Ausführungsform des Speichersystems 110 in 1. Das Speichersystem 330 enthält ein Plattenteilsystem 336, einen Virtualisierungs- und E/A-Verwaltungs-Stack 337, einen NVMe-Warteschlangenverwalter 338 und eine CPU 335. Die CPU 335 enthält Kerne 331, 332, 333 und 334, mit denen jeweils zwei E/A-Warteschlangen verbunden werden. Bei anderen Ausführungsformen kann eine beliebige Anzahl von E/A-Warteschlangen mit den Kernen 331 bis 334 verbunden werden, bis zur unterstützten maximalen Anzahl von Warteschlangen, wie oben beschrieben. Die Verbindungen 321 und 322 sind Beispiele für die Verbindungen zwischen den CPU-Kernen und den NVMe-oF-E/A-Warteschlangen in den Hosts.
-
In diesem Beispiel wird sowohl der Host A als auch der Host B mit dem Speichersystem verbunden, und durch die Hosts werden Warteschlangen für alle vier CPU-Kerne erstellt. In diesem Beispiel haben die Warteschlangen A1 und B1 eine höhere E/A-Arbeitslast als die anderen Warteschlangen und können daher überlastet werden. Dies erzeugt ein Ungleichgewicht des Gesamtsystems und eine Unterauslastung von Ressourcen.
-
3b stellt ein Beispiel für das System aus 3a dar, wobei jedoch eine Ausführungsform der vorliegenden Erfindung enthalten ist. In diesem Beispiel sendet das Speichersystem 330 eine AER-Nachricht an den Host B, um zu signalisieren, dass der Kern 331 überlastet und der Kern 332 unterausgelastet wird, sodass ein Verlagern von Datenverkehr von dem Kern 331 in den Kern 332 das System ausgleicht und die Leistung verbessert. In diesem Beispiel wird sowohl eine Inband-Signalübertragung 341 als auch eine Außerband-Signalübertragung 342 veranschaulicht. Bei einer Ausführungsform verwendet die Außerband-Signalübertragung 342 eine Außerband-API-Instanz 339, um mit dem Host Daten auszutauschen. Bei einer Ausführungsform wird entweder eine Inband- oder eine Außerband-Signalübertragung verwendet. Bei einer weiteren Ausführungsform wird sowohl eine Inband- als auch eine Außerband-Signalübertragung veranschaulicht.
-
3c stellt ein Beispiel für das System aus 3a dar, wobei jedoch eine Ausführungsform der vorliegenden Erfindung enthalten ist. In diesem Beispiel hat das Speichersystem 330 den Datenverkehr, der sich zuvor in dem Kern 331 für die Warteschlange B1 (über die Verbindung 322) in 3b befunden hat, in den zuvor unterausgelasteten Kern 332 und die Warteschlange B2 (über die Verbindung 323) verlagert, und die Auslastung der CPU-Kerne und E/A-Warteschlangen wurde hierdurch neu ausgeglichen, was den Durchsatz erhöht und die Latenz verringert.
-
4 ist eine Ablaufplandarstellung eines Arbeitsablaufs 400, die Arbeitsschritte für das Warteschlangen-Ausgleichsprogramm 112 darstellt, um eine Arbeitslastverwaltung in IOQ-Teilsystemen zu verbessern. Bei einer Ausführungsform überwacht das Warteschlangen-Ausgleichsprogramm 112 fortlaufend den Prozentsatz der CPU-Kern-Auslastung für alle CPU-Kerne in dem NVMe-System unter Verwendung eines Dämons, der die Informationen zu dem CPU-Kern erfasst und die CPU-Kern-Auslastung für alle verfügbaren CPU-Kerne überprüft. Bei einer Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112, ob ein oder mehrere CPU-Kerne als überlastet erkannt werden und ein weiterer Satz von einem oder mehreren CPU-Kernen als unterausgelastet erkannt wird. Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass ein oder mehrere CPU-Kerne als überlastet erkannt werden und ein weiterer Satz von einem oder mehreren CPU-Kernen als unterausgelastet erkannt wird, verwendet das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform den Dämon, um ein Signal mit einer Nachricht über ein Ungleichgewicht an den NVMe-Controller zu senden. Nach dem Empfang einer Nachricht CPU_IMBALANCE von dem Überwachungsdämon durchläuft das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform alle E/A-Warteschlangen, die mit dem überlasteten CPU-Kern verbunden werden, und erfasst die E/A-Statistiken, indem es auf die Datenzugriffsübersichten zugreift, die durch den Speicher-Controller verwaltet werden. Bei einer Ausführungsform analysiert das Warteschlangen-Ausgleichsprogramm 112 alle E/A-Warteschlangen für den Host, die Teil der überlasteten CPU-Kerne sind, und es werden weitere IOQ-Informationen erfasst, die bei dem Überlastungsausgleich berücksichtigt werden. Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm 112 die neue IOQ aus, die für einen E/A-Ausgleich empfohlen werden soll. Bei einer Ausführungsform verwendet das Warteschlangen-Ausgleichsprogramm 112 den IOQ-Verwalter, um die neue IOQ_ID dem qualifizierten NVMe-Namen zuzuordnen. Bei einer Ausführungsform erzeugt das Warteschlangen-Ausgleichsprogramm 112 die AER-Nachricht mit der vorgeschlagenen neuen IOQ_ID an den angegebenen NQN, um ein Verlagern der Arbeitslast in diese IOQ zu empfehlen. Bei einer Ausführungsform empfängt das Warteschlangen-Ausgleichsprogramm 112 eine Antwort von dem Host mit der neuen IOQ, die in einem Schritt 412 ausgewählt wurde. Bei einer Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112, ob der Host die Empfehlung akzeptiert hat. Bei einer Ausführungsform ändert das Warteschlangen-Ausgleichsprogramm die Host-IOQ-Präferenzeinstellungen und sendet eine zusätzliche Arbeitslast an die Warteschlange mit der angegebenen IOQ_ID.
-
Bei einer alternativen Ausführungsform können die Schritte des Arbeitsablaufs 400 durch ein beliebiges anderes Programm durchgeführt werden, während das Warteschlangen-Ausgleichsprogramm 112 verwendet wird. Es ist darauf zu verweisen, dass Ausführungsformen der vorliegenden Erfindung mindestens ein Verbessern einer Arbeitslastverwaltung in IOQ-Teilsystemen bereitstellen. Allerdings stellt 4 lediglich eine Veranschaulichung einer einzigen Realisierung bereit und impliziert keinerlei Beschränkungen mit Blick auf die Umgebungen, in denen verschiedene Ausführungsformen realisiert werden können. Der Fachmann kann viele Abwandlungen an der dargestellten Umgebung vornehmen, ohne von dem durch die Ansprüche geltend gemachten inhaltlichen Umfang der Erfindung abzuweichen.
-
Das Warteschlangen-Ausgleichsprogramm 112 überwacht die CPU-Kern-Auslastung (Schritt 402). In dem Schritt 402 überwacht das Warteschlangen-Ausgleichsprogramm 112 fortlaufend den Prozentsatz der CPU-Kern-Auslastung für alle CPU-Kerne in dem NVMe-System unter Verwendung eines Überwachungsdämons, der die Informationen wie zum Beispiel die CPU-Kern-Auslastung und die Verfügbarkeit von E/A-Warteschlangenressourcen sowie die Auslastung für alle verfügbaren CPU-Kerne erfasst. Bei einer Ausführungsform überwacht das Warteschlangen-Ausgleichsprogramm 112 die in allen verfügbaren CPU-Kernen erstellten Warteschlangen, die Arbeitslast und die Verfügbarkeit von CPU-Kernen unter Verwendung des Überwachungsdämons, der parallel zu dem NVMe-Controller und dem Warteschlangenverwalter ausgeführt wird. Bei einer Ausführungsform erfasst das Warteschlangen-Ausgleichsprogramm 112 CPU-Kern-Auslastungsdaten aus Speichersystem-Konfigurationsübersichten und Speichersystem-Auslastungstabellen.
-
Das Warteschlangen-Ausgleichsprogramm 112 ermittelt, ob der CPU-Kern überlastet wird (Entscheidungsblock 404). Bei einer Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112, ob ein oder mehrere CPU-Kerne eine Überlastungsbedingung aufweisen und ein weiterer Satz von einem oder mehreren CPU-Kernen unterausgelastet wird. Bei einer Ausführungsform werden die Überlastung und die Unterauslastung unter Verwendung von vorgegebenen Schwellenwerten erkannt. Nachdem die Warteschlangen-Überlappungssituation gegeben ist (wie z.B. in 3a veranschaulicht, wo der Host A 310 und der Host B 312 mit demselben CPU-Kern verbunden werden), ermittelt das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform, ob die CPU-Arbeitslast und das Lastungleichgewicht einen vorgegebenen Schwellenwert überschreiten. Der Schwellenwert kann zum Beispiel darin bestehen, dass ein CPU-Kern überlastet wird, wenn der Auslastungsprozentsatz mehr als 80 % beträgt. Bei einer Ausführungsform ist der vorgegebene Schwellenwert ein System-Standardwert. Bei einer weiteren Ausführungsform wird der vorgegebene Schwellenwert während der Laufzeit von einem Benutzer empfangen.
-
Bei einer weiteren Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112, dass ein oder mehrere CPU-Kerne eine Überlastungsbedingung aufweisen, indem die durchschnittliche Auslastung eines jeden Kerns über eine Zeitspanne hinweg gemessen wird. Wenn bei dieser Ausführungsform die durchschnittliche Auslastung eines CPU-Kerns während einer Zeitspanne einen Schwellenwert überschreitet, ermittelt das Warteschlangen-Ausgleichsprogramm 112, dass der CPU-Kern überlastet wird. Der Schwellenwert kann zum Beispiel darin bestehen, dass der CPU-Kern überlastet wird, wenn er während mehr als einer Minute eine Auslastung von über 50 % aufweist. Bei einer Ausführungsform ist der durchschnittliche Auslastungprozentsatz ein System-Standardwert. Bei einer weiteren Ausführungsform wird die durchschnittlicher Auslastung während der Laufzeit von einem Benutzer empfangen. Bei einer Ausführungsform ist die Zeitspanne ein System-Standardwert. Bei einer weiteren Ausführungsform wird die Zeitspanne während der Laufzeit von einem Benutzer empfangen.
-
Bei einer weiteren Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112, dass ein CPU-Kern eine Überlastungsbedingung aufweist, wenn die Auslastung des Kern über eine kurze Zeitspanne hinweg einen Spitzenwert erreicht. Wenn bei dieser Ausführungsform die Zunahme der Auslastung eines CPU-Kerns während einer angegebenen Zeitspanne einen Schwellenwert für die Zunahme überschreitet, ermittelt das Warteschlangen-Ausgleichsprogramm 112, dass der CPU-Kern überlastet wird. Der Schwellenwert kann zum Beispiel darin bestehen, dass der CPU-Kern überlastet wird, wenn die Kernauslastung innerhalb von 10 Sekunden um 30 % zunimmt. Bei einer Ausführungsform ist der Schwellenwert für die Zunahme ein System-Standardwert. Bei einer weiteren Ausführungsform wird der Schwellenwert für die Zunahme während der Laufzeit von einem Benutzer empfangen. Bei einer Ausführungsform ist die angegebene Zeitspanne ein System-Standardwert. Bei einer weiteren Ausführungsform wird die angegebene Zeitspanne während der Laufzeit von einem Benutzer empfangen.
-
Wenn das CPU-Ungleichgewicht auf Grundlage des kumulativen Auslastungsprozentsatzes bestätigt wird, identifiziert das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform die mit den nicht ausgeglichenen CPU-Kernen verbundenen E/A-Warteschlangen und analysiert die E/A-Warteschlangen auf die IOPS-Arbeitslasten mit einer hohen Bandbreitenauslastung. Bei einer Ausführungsform ist der Schwellenwert für eine hohe Bandbreitenauslastung ein System-Standardwert. Bei einer weiteren Ausführungsform ist der Schwellenwert für eine hohe Bandbreitenauslastung ein Wert, der durch einen Benutzer während der Laufzeit gesetzt wird. Da die IOPS-Arbeitslasten CPU-bezogen sind, sammelt das Warteschlangen-Ausgleichsprogramm 112 diese Informationen und ordnet den CPU-Verbrauch pro E/A-Warteschlange zu, die mit dem überlasteten CPU-Kern verbunden wird.
-
Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass für ein oder mehrere CPU-Kerne eine Überlastungsbedingung erkannt wird und ein weiterer Satz von einem oder mehreren CPU-Kernen als unterausgelastet erkannt wird (Entscheidungsblock 312, Verzweigung „Ja“), fährt das Warteschlangen-Ausgleichsprogramm 112 mit einem Schritt 406 fort. Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass für einen oder mehrere CPU-Kerne keine Überlastungsbedingung erkannt wird oder dass kein weiterer Satz von einem oder mehreren CPU-Kernen als unterausgelastet erkannt wird (Entscheidungsblock 312, Verzweigung „Nein“), kehrt das Warteschlangen-Ausgleichsprogramm 112 zu dem Schritt 402 zurück, um mit dem Überwachen der CPU-Kern-Auslastung fortzufahren.
-
Das Warteschlangen-Ausgleichsprogramm 112 sendet eine Nachricht über ein Ungleichgewicht (Schritt 406). Bei einer Ausführungsform sendet der Überwachungsdämon ein Signal mit einer Nachricht über ein Ungleichgewicht an den NVMe-Controller. Bei einer Ausführungsform enthält die Nachricht über das Ungleichgewicht die CPU-Kerne, die als überlastet erkannt werden. Bei einer weiteren Ausführungsform enthält die Nachricht über das Ungleichgewicht die CPU-Kerne, die als unterausgelastet erkannt werden. Bei einer weiteren Ausführungsform enthält die Nachricht über das Ungleichgewicht sowohl die CPU-Kerne, die als überlastet erkannt werden, als auch die CPU-Kerne, die als unterausgelastet erkannt werden. Bei manchen Ausführungsformen enthält die Nachricht über das Ungleichgewicht den Auslastungsprozentsatz für die Kerne, die als überlastet erkannt werden, und die Kerne, die als unterausgelastet erkannt werden. Bei einer Ausführungsform sendet der Überwachungsdämon das Signal unter Verwendung der Admin-Übergabe-Warteschlange in dem CPU-Controller-Verwaltungskern, z.B. dem Controller-Verwaltungskern 210 aus 2, an den NVMe-Controller.
-
Das Warteschlangen-Ausgleichsprogramm 112 durchläuft die E/A-Warteschlangen (Schritt 408). Nach dem Empfang einer Nachricht CPU_IMBALANCE von dem Überwachungsdämon durchläuft das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform alle E/A-Warteschlangen, die mit dem überlasteten CPU-Kern verbunden werden, und erfasst die E/A-Statistiken, indem es auf die Datenzugriffsübersichten (Bandbreite und Eingabe/Ausgabe-Operationen pro Sekunde (IOPS)) zugreift, die durch den Speicher-Controller verwaltet werden.
-
Bei einer Ausführungsform untersucht das Warteschlangen-Ausgleichsprogramm 112 alle anderen CPU-Kerne in dem Speichersystem und untersucht zudem, welche Kerne zusätzliche Bandbreite haben. Bei einer Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112 den Auslastungsprozentsatz aller CPU-Kerne in dem Speichersystem, um zu ermitteln, welche Kerne unterausgelastet werden und potenziell neue E/A-Warteschlangen zugewiesen bekommen können, um das Speichersystem neu auszugleichen.
-
Das Warteschlangen-Ausgleichsprogramm 112 analysiert alle Host-E/A-Warteschlangen in den überlasteten CPU-Kernen (Schritt 410). Bei einer Ausführungsform analysiert das Warteschlangen-Ausgleichsprogramm 112 alle E/A-Warteschlangen für den Host, die Teil der überlasteten CPU-Kerne sind, und es werden weitere IOQ-Informationen erfasst. Bei einer Ausführungsform verwendet das Warteschlangen-Ausgleichsprogramm 112 die IOQ-Informationen, um die verfügbaren Optionen für einen Überlastungsausgleich zu ermitteln. Bei einer Ausführungsform enthalten die IOQ-Informationen die CPU-Kerne, die als überlastet erkannt werden, und die CPU-Kerne, die als unterausgelastet erkannt werden, um die verfügbaren Optionen für einen Überlastungsausgleich zu ermitteln. Bei einer Ausführungsform enthalten die IOQ-Informationen den Auslastungsprozentsatz für die Kerne, die als überlastet erkannt werden, und die Kerne, die als nicht überlastet erkannt werden, um die verfügbaren Optionen für einen Überlastungsausgleich zu ermitteln. Bei einer weiteren Ausführungsform enthalten die IOQ-Informationen die CPU-Kerne, die als überlastet erkannt werden, und die CPU-Kerne, die als unterausgelastet erkannt werden, sowie den Auslastungsprozentsatz für die Kerne, um die verfügbaren Optionen für einen Überlastungsausgleich zu ermitteln.
-
Das Warteschlangen-Ausgleichsprogramm 112 wählt eine neue IOQ aus, die eine zusätzliche Arbeitslast akzeptieren kann (Schritt 412). Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm 112 die neue IOQ aus, die für einen E/A-Ausgleich empfohlen wird. Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm 112 die neue IOQ auf Grundlage der Arbeitslastinformationen aus, die in dem Schritt 410 aus jeder IOQ erfasst werden. Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm 112 die neue IOQ auf Grundlage dessen aus, dass der Auslastungsprozentsatz des CPU-Kerns für die neue IOQ unter einem Schwellenwert liegt. Bei einer Ausführungsform ist der vorgegebene Schwellenwert ein System-Standardwert. Bei einer weiteren Ausführungsform wird der vorgegebene Schwellenwert während der Laufzeit von einem Benutzer empfangen. Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm die neue IOQ auf Grundlage eines symmetrischen Arbeitslastausgleichs der E/A-Warteschlangen-Arbeitslasten in dem Speichersystem aus. Zum Beispiel sollen sich die Warteschlange A1 und die Warteschlange B1 in demselben CPU-Kern befinden und hohe Arbeitslasten verursachen. Der den Warteschlangen A1 und B1 zugehörige CPU-Kern wird überlastet, und daher nimmt das Warteschlangen-Ausgleichsprogramm 112 eine Prüfung auf alle E/A-Warteschlangen vor, die durch den Host A und den Host B erzeugt werden. In diesem Beispiel klassifiziert das Warteschlangen-Ausgleichsprogramm 112 dann diese E/A-Warteschlangen für die bestehende CPU und die zugehörige Arbeitslast. In diesem Beispiel ermittelt das Warteschlangen-Ausgleichsprogramm 112, dass die IOQs A2 und B2, die sich in dem Kern 2 befinden, weniger Warteschlangen und eine geringere CPU-Arbeitslast aufweisen, weshalb das Warteschlangen-Ausgleichsprogramm 112 eine der IOQ-Arbeitslasten (entweder von A1 oder B1) in den Kern 2 verlagert.
-
Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm 112 mehrere IOQs aus, die für einen Neuausgleich der Arbeitslast verwendet werden können, und priorisiert die IOQs nach der verfügbaren Arbeitslast. Bei einer Ausführungsform wählt das Warteschlangen-Ausgleichsprogramm 112 die verfügbare IOQ mit der höchsten Priorität aus, um sie für einen IOQ-Neuausgleich zu empfehlen. Bei einer Ausführungsform ist die verfügbare IOQ mit der höchsten Priorität die IOQ, die mit dem CPU-Kern mit der geringsten Auslastung verbunden wird. Bei einer weiteren Ausführungsform wird die verfügbare IOQ mit der höchsten Priorität ermittelt, indem eine IOQ ausgewählt wird, die mit einem CPU-Kern verbunden wird, mit dem keine weiteren IOQs verbunden werden.
-
Das Warteschlangen-Ausgleichsprogramm 112 ordnet die neue IOQ_ID dem NQN zu (Schritt 414). Bei einer Ausführungsform verwendet das Warteschlangen-Ausgleichsprogramm 112 den IOQ-Verwalter, um die in dem Schritt 412 ausgewählte neue IOQ_ID dem NQN des entfernt angeordneten Speicherziels zuzuordnen, zum Beispiel dem Speichersystem 330 aus den 3a bis 3c.
-
Das Warteschlangen-Ausgleichsprogramm 112 sendet eine AER-Nachricht an den angegebenen NQN mit der IOQ_ID, um die Arbeitslast zu verlagern (Schritt 416). Bei einer Ausführungsform erzeugt das Warteschlangen-Ausgleichsprogramm 112 eine AER-Nachricht mit der vorgeschlagenen neuen IOQ_ID an den angegebenen NQN, um ein Verlagern der Arbeitslast in diese IOQ zu empfehlen. Nachdem das Arbeitsschlangen-Ausgleichsprogramm 112 die neuen Entscheidungen zur E/A-Arbeitslastübertragung trifft, werden die Informationen bei einer Ausführungsform als ein Signal an die Administrationssteuereinheit des NVMe-Controllers gesendet. Bei einer Ausführungsform sendet das Warteschlangen-Ausgleichsprogramm 112 entweder über eine interne Datenübertragung oder durch eine Datenübertragung auf Protokollebene (über einen NVMe-Befehl zur Anforderung eines asynchronen Ereignisses (Asynchronous Event Request Command)) eine asynchrone Benachrichtigung über die Warteschlangen-Überlappungssituation an den Host. Bei einer Ausführungsform enthält diese Nachricht die IOQ_ID, an die nach Annahme des Speichersystems Datenverkehr verlagert werden soll, um die CPU-Arbeitslast auszugleichen. Da das Warteschlangen-Ausgleichsprogramm 112 bereits eine neue E/A-Warteschlange mit einer neuen IOQ_ID erstellt hat, nimmt das Warteschlangen-Ausgleichsprogramm 112 an, dass der Host mehr Datenverkehr an die vorgeschlagene Warteschlange sendet, um mehr Leistung und eine bessere Parallelität zu erhalten.
-
Bei einer Ausführungsform kann die Datenübertragung zwischen dem Warteschlangen-Ausgleichsprogramm 112 und dem Host-Benachrichtiger durch ein Außerband-Protokoll (Out-Of-Band, OOB) unter Verwendung von OOB-Anwendungsprogrammierschnittstellen (Application Program Interfaces, APIs) erfolgen, die mit der Fähigkeit für eine Datenübertragung zwischen Hosts und dem geclusterten Speicher-Controller-System realisiert werden. Zum Beispiel steht das Signal 342 in 3b für eine Außerband-Datenübertragung. Bei einer weiteren Ausführungsform kann die Datenübertragung zwischen dem Warteschlangen-Ausgleichsprogramm 112 und dem Host-Benachrichtiger durch eine Inband-Datenübertragung unter Verwendung von NVMe-Standards erfolgen. Bei dieser Ausführungsform werden die Warteschlangen-Überlappungsinformationen und Aktuator-Signale über das Programm als Teil von Protokolldatenrahmen weitergeleitet. Zum Beispiel steht das Signal 341 in 3b für eine Inband-Datenübertragung.
-
Das Warteschlangen-Ausgleichsprogramm 112 empfängt eine Antwort von dem Host (Schritt 418). Bei einer Ausführungsform empfängt das Warteschlangen-Ausgleichsprogramm 112 eine Antwort von dem Host der neuen IOQ, die in dem Schritt 412 ausgewählt wurde. In dem Beispiel aus 3c ist der Host der neuen IOQ der Host B 312. Bei einer Ausführungsform kann die Antwort entweder lauten, dass der Host die Empfehlung akzeptiert oder dass der Host die Empfehlung ablehnt.
-
Das Warteschlangen-Ausgleichsprogramm 112 ermittelt, ob der Host die neue IOQ_ID akzeptiert hat (Entscheidungsblock 420). Bei einer Ausführungsform ermittelt das Warteschlangen-Ausgleichsprogramm 112, ob der Host die Empfehlung akzeptiert hat. Nachdem das Signal an den Host gesendet wird, entscheidet der Host-NVMe-Treiber bei einer Ausführungsform, ob mit der aktuellen E/A-Senderichtlinie fortgefahren werden soll oder ob der Vorschlag des Warteschlangen-Ausgleichsprogramms 112 für ein Priorisieren einer bestimmten IOQ übernommen werden soll. Wenn der Host entscheidet, den Vorschlag des Warteschlangen-Ausgleichsprogramms 112 anzunehmen, werden bei einer Ausführungsform die IOQ-Pfadermittlungsrichtlinien durch den NVMe-Treiber auf der Host-Seite optimiert, um mehr Datenverkehr an die vorgeschlagene IOQ_ID zu senden und mehr Leistung zu erhalten. Der gesamte neue Datenverkehr von dem Server/Host wird über die neu zugewiesene IOQ_ID gesendet, die zu dem neuen CPU-Kern führt, wodurch die Host-Anwendungen eine höhere Leistung verzeichnen.
-
Wenn die Hosts den Leistungsabfall tolerieren können, der Host die Gesamtabnahme der IOPS tolerieren kann oder der Host die IOQ-Richtlinie aus einem anderen Grund nicht ändern möchte, wird bei einer weiteren Ausführungsform der Vorschlag abgelehnt, und ein Signal wird gesendet, um das Warteschlangen-Ausgleichsprogramm 112 über die Ablehnung zu benachrichtigen. Nachdem das Warteschlangen-Ausgleichsprogramm 112 das Ablehnungssignal empfängt, sendet das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform die AER-Nachricht an einen weiteren Host, um seine E/A-Arbeitslast von dem überlasteten CPU-Kern zu entfernen. Auf diese Weise sind sowohl das Warteschlangen-Ausgleichsprogramm als auch die Hosts an der Entscheidung beteiligt, und der Arbeitslastausgleich wird reibungslos erreicht, indem ein Signal an den zweiten Host gesendet wird. Wenn sich zum Beispiel die Warteschlange A1 und die Warteschlange B1 überlappen und das Warteschlangen-Ausgleichsprogramm 112 einen Ausgleich der Arbeitslast ermittelt, indem die Last von der Warteschlange A1 oder der Warteschlange B1 entfernt wird, sendet das Warteschlangen-Ausgleichsprogramm ein Signal an den Host A, die Warteschlange A2 zu verwenden. Wenn der Host A den Vorschlag ablehnt, sendet das Warteschlangen-Ausgleichsprogramm das Signal, die Arbeitslast auf B2 zu verlagern, an den Host B. Dieser Prozess wiederholt sich so lange, bis ein Host die Anforderung, zu der neuen IOQ zu wechseln, akzeptiert. Diese Serialisierung wird durchgeführt, um zu vermeiden, dass ein Wechsel der bevorzugten IOQs durch mehrere Hosts gleichzeitig dazu führt, dass ein neues Ungleichgewicht entsteht.
-
Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass der Host die Empfehlung akzeptiert hat (Entscheidungsblock 312, Verzweigung „Ja“), fährt das Warteschlangen-Ausgleichsprogramm 112 mit einem Schritt 422 fort. Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass der Host die Empfehlung nicht akzeptiert hat (Entscheidungsblock 312, Verzweigung „Nein“), kehrt das Warteschlangen-Ausgleichsprogramm 112 bei einer Ausführungsform zu dem Schritt 412 zurück, um eine andere IOQ auszuwählen. Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass der Host die Empfehlung nicht akzeptiert hat (Entscheidungsblock 312, Verzweigung „Nein“), da die Arbeitslast nicht IOPS-bezogen ist, endet das Warteschlangen-Ausgleichsprogramm 112 bei einer weiteren Ausführungsform für diesen Zyklus.
-
Das Warteschlangen-Ausgleichsprogramm 112 empfängt ein ACK-Signal von dem Host, dass der IOQ-Wechsel AKZEPTIERT wurde (Schritt 422). Wenn das Warteschlangen-Ausgleichsprogramm 112 ermittelt, dass der Host die Empfehlung akzeptiert hat, ändert das Warteschlangen-Ausgleichsprogramm bei einer Ausführungsform die Host-IOQ-Präferenzeinstellungen, um mehr Arbeitslast an die Warteschlange mit der neuen IOQ_ID zu senden. Bei einer Ausführungsform empfängt das Warteschlangen-Ausgleichsprogramm 112 ein ACK-Signal mit einer AKZEPTANZ-Nachricht von dem Ziel. Hiermit ist der Neuausgleichszyklus abgeschlossen.
-
Bei einer Ausführungsform endet das Warteschlangen-Ausgleichsprogramm 112 für diesen Zyklus.
-
5 ist ein Blockschaubild, das Komponenten des Speichersystems 100 darstellt, die geeignet sind, um das Warteschlangen-Ausgleichsprogramm 112 gemäß mindestens einer Ausführungsform der Erfindung auszuführen. 5 zeigt den Computer 500, einen oder mehrere Prozessoren 504 (z.B. einen oder mehrere Computerprozessoren), eine Datenübertragungsstruktur 502, einen Arbeitsspeicher 506 wie z.B. einen Direktzugriffsspeicher (RAM) 516 und einen Cache 518, einen persistenten Speicher 508, eine Datenübertragungseinheit 512, E/A-Schnittstellen 514, eine Anzeige 522 und externe Einheiten 520. Dabei sollte klar sein, dass 5 lediglich zur Veranschaulichung einer Ausführungsform dient und keinerlei Beschränkungen mit Blick auf die Umgebungen impliziert, in denen verschiedene Ausführungsformen realisiert werden können. Vielmehr können an der dargestellten Umgebung zahlreiche Abwandlungen vorgenommen werden.
-
Wie dargestellt, wird der Computer 500 über die Datenübertragungsstruktur 502 betrieben, die eine Datenübertragung zwischen dem einem bzw. den mehreren Computerprozessoren 504, dem Arbeitsspeicher 506, dem persistenten Speicher 508, der Datenübertragungseinheit 512 und der einen bzw. den mehreren Eingabe/Ausgabe(E/A)-Schnittstellen 514 bereitstellt. Die Datenübertragungsstruktur 502 kann mit einer beliebigen Architektur realisiert werden, die dafür geeignet ist, zwischen dem einen bzw. den mehreren Prozessoren 504 (z.B. Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), dem Arbeitsspeicher 506, den externen Einheiten 520 und beliebigen anderen Hardware-Komponenten innerhalb eines Systems Daten oder Steuerungsinformationen weiterzuleiten. Die Datenübertragungsstruktur 502 kann zum Beispiel mit einem oder mehreren Bussen realisiert werden.
-
Der Arbeitsspeicher 506 und der persistente Speicher 508 sind computerlesbare Speichermedien. In der dargestellten Ausführungsform weist der Arbeitsspeicher 506 einen RAM 516 und einen Cache 518 auf. Im Allgemeinen kann der Arbeitsspeicher 506 alle geeigneten flüchtigen oder nicht flüchtigen computerlesbaren Speichermedien enthalten. Der Cache 518 ist ein schneller Arbeitsspeicher, der die Leistung des einen oder der mehreren Prozessoren 504 verbessert, indem er Daten, auf die kürzlich zugegriffen wurde, sowie Daten in der Nähe von Daten, auf die kürzlich zugegriffen wurde, aus dem RAM 516 speichert.
-
Programmanweisungen für das Warteschlangen-Ausgleichsprogramm 112 können in dem persistenten Speicher 508 oder allgemeiner in beliebigen computerlesbaren Speichermedien gespeichert werden, um über einen oder mehrere Arbeitsspeicher des Arbeitsspeichers 506 durch einen oder mehrere der betreffenden Computerprozessoren 504 ausgeführt zu werden. Der persistente Speicher 508 kann ein magnetisches Festplattenlaufwerk, eine Halbleiterplatte, eine Halbleiter-Speichereinheit, ein Nur-Lese-Speicher (Read Only Memory, ROM), ein löschbarer programmierbarer ROM (Electronically Erasable ROM, EEPROM), ein Flash-Speicher oder jedes andere computerlesbare Speichermedium sein, das in der Lage ist, Programmanweisungen oder digitale Informationen zu speichern.
-
Die durch den persistenten Speicher 508 verwendeten Medien können auch entfernbar sein. Zum Beispiel kann ein entfernbares Festplattenlaufwerk als der persistente Speicher 508 verwendet werden. Andere Beispiele enthalten optische und Magnetplatten, USB-Sticks und Smartcards, die in ein Laufwerk eingeführt werden, um eine Übertragung auf ein weiteres computerlesbares Speichermedium vorzunehmen, das ebenfalls Teil des persistenten Speichers 508 ist.
-
Die Datenübertragungseinheit 512 stellt in diesen Beispielen eine Datenübertragung mit anderen Datenverarbeitungssystemen oder -einheiten bereit. In diesen Beispielen enthält die Datenübertragungseinheit 512 eine oder mehrere Netzwerkschnittstellenkarten. Die Datenübertragungseinheit 512 kann eine Datenübertragung sowohl über physische als auch über drahtlose Datenübertragungsverbindungen bereitstellen. In Zusammenhang mit manchen Ausführungsformen der vorliegenden Erfindung kann die Quelle der verschiedenen Eingabedaten physisch entfernt von dem Computer 500 angeordnet sein, sodass die Eingabedaten über die Datenübertragungseinheit 512 empfangen und die Ausgabe entsprechend über diese übertragen werden können.
-
Die eine bzw. die mehreren E/A-Schnittstellen 514 ermöglichen eine Eingabe und Ausgabe von Daten in andere oder aus anderen Einheiten, die mit dem Computer 500 verbunden werden können. Zum Beispiel können die eine bzw. die mehreren E/A-Schnittstellen 514 eine Verbindung zu einer bzw. mehreren externen Einheiten 520 wie beispielsweise zu einer Tastatur, einem Tastenfeld, einem berührungsempfindlichen Bildschirm, einem Mikrofon, einer Digitalkamera und/oder einer anderweitigen geeigneten Eingabeeinheit bereitstellen. Die eine bzw. die mehreren externen Einheiten 520 können auch tragbare durch einen Computer lesbare Speichermedien wie z.B. USB-Sticks, tragbare optische oder Magnetplatten und Speicherkarten enthalten. Software und Daten zur praktischen Umsetzung von Ausführungsformen der vorliegenden Erfindung, z.B. das Warteschlangen-Ausgleichsprogramm 112, können auf derartigen tragbaren computerlesbaren Speichermedien gespeichert und über die eine bzw. die mehreren E/A-Schnittstellen 514 in den persistenten Speicher 508 geladen werden. Die eine bzw. die mehreren E/A-Schnittstellen 514 werden auch mit einer Anzeige 522 verbunden.
-
Die Anzeige 522 stellt einen Mechanismus bereit, um einem Benutzer Daten anzuzeigen, und kann zum Beispiel ein Computermonitor sein. Die Anzeige 522 kann auch als ein berührungsempfindlicher Bildschirm fungieren, z.B. als eine Anzeige eines Tablet Computers.
-
Die hier beschriebenen Programme werden auf Grundlage der Anwendung identifiziert, für die sie in einer spezifischen Ausführungsform der Erfindung realisiert sind. Dabei sollte jedoch klar sein, dass jede hier genannte konkrete Programmnomenklatur lediglich zum Zwecke der Vereinfachung verwendet wird und dass die Erfindung nicht darauf zu beschränken ist, ausschließlich in einer wie auch immer gearteten spezifischen Anwendung verwendet zu werden, die durch eine solche Nomenklatur angegeben und/oder impliziert wird.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder computerlesbare Speichermedien) mit darauf gespeicherten computerlesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Das computerlesbare Speichermedium kann jede gegenständliche Einheit sein, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit beibehalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des computerlesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (Random Access Memory, RAM), ein Nur-Lese-Speicher (ROM) ein löschbarer programmierbarer Nur-Lese-Speicher (EEPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert werden, und jede geeignete Kombination daraus. Ein computerlesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium auf jeweilige Datenverarbeitungs-/ Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN) und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei computerlesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction Set Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden werden, zum Beispiel ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). Bei manchen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Arrays (Field-Programmable Gate Arrays, FPGA) oder programmierbare Logik-Arrays (Programmable Logic Arrays, PLA) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels computerlesbarer Programmanweisungen ausgeführt werden können.
-
Diese computerlesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Schritte erzeugen. Diese computerlesbaren Programmanweisungen können auch auf einem computerlesbaren Speichermedium gespeichert werden, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das computerlesbare Speichermedium, auf dem Anweisungen gespeichert werden, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der bzw. des in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktion/Schritts umsetzen.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen computerrealisierten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Somit kann jeder Block der Ablaufpläne oder Blockschaubilder ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das/der ein oder mehrere ausführbare Anweisungen aufweist, mit denen sich die eine oder mehreren angegebenen logischen Funktionen realisieren lassen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Änderungen und Abwandlungen möglich sind, ohne vom inhaltlichen Umfang der Erfindung abzuweichen. Die hier verwendete Begrifflichkeit wurde gewählt, um die Grundsätze der Ausführungsform, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hier offenbarten Ausführungsformen zu ermöglichen.