-
STAND DER TECHNIK
-
Typische Merkmale der Plattform-Dienstqualität (pQoS) einer Rechenvorrichtung ermöglichen es einem Administrator oder Benutzer der Rechenvorrichtung, für eine Anwendung den Zugriff auf bestimmte Ressourcen zu reservieren, die primär für Auswirkungen auf die Leistungscharakteristik der Anwendung verantwortlich sind. Falls die Leistungscharakteristik der Anwendung beispielsweise besonders durch die Verfügbarkeit von Daten im Low-Level-Cache (LLC) beeinflusst ist, kann ein Benutzer ein pQoS-Merkmal der Rechenvorrichtung verwenden, um eine Anzahl von Wegen im LLC zum Reduzieren der Wahrscheinlichkeit dafür zu reservieren, dass von der Anwendung häufig benutzte Daten enthaltende Cache-Leitungen aus dem LLC entleert werden. Im Ergebnis ist die Leistungscharakteristik der Anwendung durch andere gleichzeitig ausführende Anwendungen, die den LLC der Rechenvorrichtung intensiv nutzen, weniger beeinträchtigt. Die Reservierung der Ressourcen (z. B. der Wege im LLC) bleibt jedoch unabhängig davon bestehen, ob die Anwendung tatsächlich alle reservierten Ressourcen zu einem gegebenen Zeitpunkt nutzt, und zwar potenziell zum Nachteil der gleichzeitig ausführenden Anwendungen, die die Ressourcen anderenfalls verwenden würden.
-
Figurenliste
-
Die hier beschriebenen Konzepte sind in den beigefügten Zeichnungen als Beispiele und nicht als Einschränkung dargestellt. Zur Vereinfachung und Verdeutlichung der Darstellung sind in den Figuren wiedergegebene Elemente nicht unbedingt maßstabsgetreu gezeichnet. Sofern dies als angemessen betrachtet wird, wurden Kennzeichnungen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
- 1 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform eines Systems für die Bereitstellung von adaptiver Plattform-Dienstqualität;
- 2 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Rechenvorrichtung des Systems aus 2;
- 3 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Umgebung, die durch eine Rechenvorrichtung aus 1 und 2 aufgebaut werden kann; und
- 4-7 sind vereinfachte Blockdiagramme von mindestens einer Ausführungsform eines Verfahrens zur adaptiven Kontrolle einer Plattform-Dienstqualität, das durch eine Rechenvorrichtung aus 1 und 2 ausgeführt werden kann.
-
DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
-
Während die Konzepte der vorliegenden Offenbarung verschiedenen Abänderungen und alternativen Formen unterliegen können, sind spezifische diesbezügliche Ausführungsformen als Beispiele in den Zeichnungen gezeigt, die hier detailliert beschrieben werden. Es versteht sich jedoch, dass es nicht beabsichtigt ist, die Konzepte der vorliegenden Offenbarung auf die besonderen offenbarten Formen einzuschränken, sondern es sollen dagegen alle Abänderungen, Äquivalente und Alternativen abgedeckt werden, die mit der vorliegenden Offenbarung und den beigefügten Ansprüchen in Einklang stehen.
-
Verweise in der Spezifikation auf „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ und so weiter geben an, dass die beschriebene Ausführungsform besondere Merkmale, Strukturen oder Eigenschaften einschließen kann, wobei jedoch jede Ausführungsform die betreffenden Merkmale, Strukturen oder Eigenschaften einschließen kann, aber nicht zwangsläufig einschließen muss. Zudem beziehen sich derartige Formulierungen nicht notwendigerweise auf die gleiche Ausführungsform. Wenn weiter bestimmte Merkmale, Strukturen oder Eigenschaften in Verbindung mit einer Ausführungsform beschrieben sind, wird vorausgesetzt, dass der Kenntnisstand von Fachleuten auf diesem Gebiet die Ausführung derartiger Merkmale, Strukturen oder Eigenschaften in Verbindung mit anderen Ausführungsformen umfasst, sei dies explizit beschrieben oder nicht. Zusätzlich versteht es sich, dass in einer Liste enthaltene Punkte in der Form von „mindestens A, B und C“ bedeuten können (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C). Entsprechend können in der Form von „mindestens eines von A, B oder C“ aufgeführte Punkte bedeuten: (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C).
-
Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder beliebigen Kombinationen daraus implementiert sein. Die offenbarten Ausführungsformen können auch implementiert sein als Anweisungen, die auf einem temporären oder nicht temporären maschinenlesbaren (zum Beispiel computerlesbaren) Speichermedium gehalten oder gespeichert sind, dass durch einen oder mehrere Prozessoren gelesen und ausgeführt werden kann. Ein maschinenlesbares Speichermedium kann in Form von beliebigen Speichervorrichtungen, Mechanismen oder anderen physikalischen Strukturen zum Speichern oder Übertragen von Informationen in einer durch eine Maschine lesbaren Form ausgeführt sein (zum Beispiel als flüchtiger oder nichtflüchtiger Speicher, Medien-Disk oder sonstige Medienvorrichtung).
-
In den Zeichnungen können einige strukturelle oder Methodenmerkmale in spezifischen Anordnungen und/oder Zusammenstellungen gezeigt sein. Es versteht sich jedoch, dass derartige spezifische Anordnungen und/oder Zusammenstellungen nicht erforderlich sein müssen. Vielmehr können derartige Merkmale bei einigen Ausführungsformen in einer von der in den beispielhaften Figuren gezeigten unterschiedlichen Weise und/oder Zusammenstellung angeordnet sein. Zudem soll der Einschluss eines strukturellen oder methodischen Merkmals in einer bestimmten Figur nicht implizieren, dass dieses Merkmal in allen Ausführungsformen erforderlich ist, und bei einigen Ausführungsformen kann es auch nicht eingeschlossen sein, oder es kann mit anderen Merkmalen kombiniert sein.
-
Entsprechend der Darstellung in 1 schließt ein beispielhaftes System 110 zum Bereitstellen von adaptiver Plattform-Dienstqualität (pQoS) eine Gruppe von Rechenvorrichtungen 130 in Kommunikation mit einem Orchestrator-Server 140 ein. Die Gruppe schließt Rechenvorrichtungen 120, 122 und 124 ein. Während drei Rechenvorrichtungen 130 gezeigt sind, versteht es sich, dass die Gruppe bei anderen Ausführungsformen eine unterschiedliche Anzahl von Rechenvorrichtungen 130 einschließen kann. Im Betrieb führt jede Rechenvorrichtung 130 eine oder mehrere ihr zugeordnete Anwendungen aus. Die Anwendungen können durch den Orchestrator-Server 140 zugewiesen werden, beispielsweise als Reaktion auf eine Dienstanforderung von einer Client-Vorrichtung 150 in Kommunikation mit dem Orchestrator-Server 140 durch ein Netzwerk 160 oder von einer anderen Quelle. In der beispielhaften Ausführungsform erhält jede Rechenvorrichtung 130 Dienstklassendaten, die als beliebige Daten ausgeführt sein können, die einen Umfang von einer oder mehreren Ressourcen (zum Beispiel eine Anzahl von Wegen von Cache-Assoziativität, Speicher-Bandbreite usw.) angeben, die jeder Anwendung für jede Dienstklasse in einem Bereich von Dienstklassen, einer Ziel-Performance-Metrik für jede Phase jeder Anwendung und einer maximalen Dienstklasse für jede Phase jeder Anwendung zugeordnet werden sollen. Bei der beispielhaften Ausführungsform bezieht sich eine Dienstklasse auf einen Grad, bis zu dem Ressourcen der Rechenvorrichtung 130 zur Verwendung durch eine gegebene Anwendung reserviert sind (zum Beispiel bei einem Kern der Rechenvorrichtung 130, der die Anwendung ausführt), um Latenz, Durchsatz und/oder andere der Performance der Anwendung zugeordnete Merkmale zu verbessern.
-
Weiter kann bei der beispielhaften Ausführungsform jede Phase einer Anwendung als Gruppe von Vorgängen ausgeführt sein, die eine bestimmte Verwendung von Ressourcen aufweist (zum Beispiel eine relativ geringe Prozessorverwendung und eine relativ hohe Speicherverwendung, eine relativ hohe Prozessorverwendung und eine relativ geringe Speicherverwendung usw.). Im Betrieb bestimmt jede Rechenvorrichtung 130, in welcher Phase sich eine bestimmte Anwendung befindet, wenn die Rechenvorrichtung 130 die Anwendung ausführt; sie bestimmt, ob die Performance der Anwendung einer Ziel-Performance-Metrik genügt, die der derzeitigen Anwendungsphase zugeordnet ist, und falls dies nicht so ist, setzt sie die Dienstklasse auf eine höhere Dienstklasse im Bereich von der derzeitigen Phase zugeordneten Dienstklassen herauf. Falls die Performance der Anwendung dagegen der Ziel-Performance-Metrik genügt, setzt die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform die Dienstklasse iterativ herab, bis der Ziel-Performance-Metrik nicht mehr genügt werden kann (zum Beispiel, um die Mindest-Dienstklasse zu finden, die zur Erfüllung der Ziel-Performance-Metrik erforderlich ist). Dabei gibt die Rechenvorrichtung 130 adaptiv Ressourcen frei zur Verwendung durch andere Anwendungen, die gleichzeitig auf der Rechenvorrichtung 130 ausgeführt werden (zum Beispiel durch andere Kerne in der Rechenvorrichtung 130), wodurch es diesen Anwendungen möglich wird, ihre Performance zu verbessern, ohne die Fähigkeit der derzeitigen Anwendung, der Ziel-Performance-Metrik für die derzeitige Phase zu genügen, nachteilig zu beeinflussen.
-
Mit Bezug auf 2 kann jede Rechenvorrichtung 130 als Vorrichtung beliebigen Typs ausgeführt sein, die die hier beschriebenen Funktionen durchführen kann. Beispielsweise kann bei einigen Ausführungsformen jede Rechenvorrichtung 130 ohne diesbezügliche Einschränkung ausgeführt sein als ein in einem Gestell montierter Computer, ein verteiltes Computersystem, ein Server-Computer, ein Desktop-Computer, eine Workstation, ein Laptop-Computer, ein Notebook-Computer, ein Tablet-Computer, ein Smartphone, ein Multiprozessorsystem, eine Verbraucherelektronik-Vorrichtung, ein intelligentes Gerät und/oder eine beliebige andere Vorrichtung, die die Fähigkeit aufweist, Dienstklassendaten für eine auszuführende Anwendung zu erhalten; die Anwendung auszuführen; eine derzeitige Anwendungsphase in Abhängigkeit von der Verwendung von einer oder mehreren Ressourcen der Anwendung bei der Ausführung der Anwendung festzulegen; eine derzeitige Dienstklasse für die Anwendung in Abhängigkeit von der festgelegten Phase vorzugeben; zu bestimmen, ob eine derzeitige Performance-Metrik der Anwendung der Ziel-Performance-Metrik genügt; und die Dienstklasse innerhalb des Bereichs zur Erfüllung der Ziel-Performance-Metrik anzupassen, wobei es anderen Anwendungen ermöglicht wird, Ressourcen zu verwenden, die zur Erfüllung der Ziel-Performance-Metrik nicht erforderlich sind. Entsprechend der Darstellung in 2 umfasst die beispielhafte Rechenvorrichtung 130 eine zentrale Recheneinheit (CPU) 202, einen Hauptspeicher 204, ein Eingangs-/Ausgangs-(I/O)-Subsystem 206, Kommunikationsschaltung 208 und eine oder mehrere Datenspeichervorrichtungen 210. Selbstverständlich kann die Rechenvorrichtung 130 bei anderen Ausführungsformen andere oder zusätzliche Komponenten einschließen, wie z. B. solche, die üblicherweise in einem Computer vorliegen (zum Beispiel Peripherievorrichtungen, eine Anzeige usw.). Zudem können bei einigen Ausführungsformen eine oder mehrere der beispielhaften Komponenten in eine andere Komponente integriert sein oder auf sonstige Weise einen Teil davon bilden. Beispielsweise können bei einigen Ausführungsformen der Hauptspeicher 204 oder Teile davon in die CPU 202 integriert sein.
-
Die CPU 202 kann als Prozessor oder Prozessoren beliebigen Typs ausgeführt sein, die die hier beschriebenen Funktionen ausführen können. Somit kann die CPU 202 in Form von Einzelkern- oder Mehrkern-Prozessoren, einem Mikrocontroller oder einer anderen Prozessor- oder Verarbeitungs-/Steuerschaltung ausgeführt sein. Bei einigen Ausführungsformen kann die CPU 202 als eine vor Ort programmierbare Gatter-Anordnung (FPGA), als anwendungsspezifische integrierte Schaltung (ASIC), rekonfigurierbare Hardware oder Hardwareschaltung oder andere spezielle Hardware ausgeführt sein, diese aufweisen oder damit gekoppelt sein, um die Ausführung der hier beschriebenen Funktionen zu ermöglichen. Bei der beispielhaften Ausführungsform schließt die CPU 202 eine Plattform-Dienstqualität (pQoS) Logikeinheit 220 ein, die ausgeführt sein kann als beliebige Vorrichtung oder Schaltung mit der Fähigkeit, die derzeitige Phase jeder von der Rechenvorrichtung 130 ausgeführten Anwendung zu bestimmen, einen jeder Phase zugeordneten Dienstklassenbereich zu bestimmen, und den Anwendungen selektiv Dienstklassen innerhalb der festgelegten Bereiche zuzuordnen, um für die Anwendungen ausreichende Ressourcen zur Erfüllung der Ziel-Performance-Metriken bereitzustellen, ohne übermäßige Ressourcen zu reservieren, die von anderen Anwendungen eingesetzt werden könnten.
-
Bei der beispielhaften Ausführungsform schließt die CPU 202 mehrere Kerne 230 ein, die ausgeführt sein können als beliebige Vorrichtungen mit der Fähigkeit, Anwendungen separat auszuführen und bei der Ausführung der Anwendungen weitere Ressourcen der Rechenvorrichtung zu verwenden (zum Beispiel Teile eines Low-Level-Cache (LLC) 250, Hauptspeicher 204, Bandbreite des I/O-Subsystems 206, Bandbreite der Kommunikationsschaltung 208 usw.). Bei der in 2 dargestellten Ausführungsform sind zwei Kerne 232, 234 gezeigt. Es versteht sich jedoch, dass die Anzahl von Kernen 230 bei anderen Ausführungsformen unterschiedlich sein kann. Weiter schließt die CPU 202 bei der beispielhaften Ausführungsform ein oder mehrere Register 240 ein, wie zum Beispiel modellspezifische Register (MSR). Entsprechend der hier wiedergegebenen detaillierteren Beschreibung kann jedes Register 240 ausgeführt sein als beliebige Vorrichtung oder Schaltung mit der Fähigkeit, einen Wert zu speichern, auf den die Rechenvorrichtung 130 zugreifen kann (Lese- und/oder Schreibzugriff). Bei der beispielhaften Ausführungsform können eines oder mehrere der Register 240 die derzeitigen Dienstklassen für Ressourcen angeben, die von einer bestimmten Anwendung eingesetzt werden. Zusätzlich umfasst die CPU 202 bei der beispielhaften Ausführungsform den Cache 250, der als beliebige Vorrichtung oder Schaltung ausgeführt sein kann mit der Fähigkeit, Kopien von Daten von häufig verwendeten Positionen des Hauptspeichers 204 temporär zu speichern und für die Kerne 230 einen vergleichsweise schnelleren Zugriff auf die Daten bereitzustellen (d. h. im Vergleich zum Hauptspeicher 204).
-
Der Hauptspeicher 204 kann ausgeführt sein als beliebiger Typ flüchtigen Speichers (zum Beispiel dynamisches RAM (DRAM) usw.) oder nichtflüchtigen Speichers oder Datenspeichers mit der Fähigkeit, die hier beschriebenen Funktionen auszuführen. Bei einigen Ausführungsformen kann der gesamte Hauptspeicher 204 oder ein Teil davon in die CPU 202 integriert sein. Im Betrieb kann der Hauptspeicher 204 verschiedene Software und Daten speichern, die während des Betriebs verwendet werden, wie zum Beispiel durch die von den Kernen 230 ausgeführten Anwendungen verwendete Daten, Telemetriedaten, Phasendaten, Dienstklassendaten, Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Der Hauptspeicher 204 kann bei einigen Ausführungsformen auch den weiter oben beschriebenen Cache 250 einschließen.
-
Das I/O-Subsystem 206 kann ausgeführt sein als Schaltung und/oder Komponenten, um Eingabe-/Ausgabe-Vorgänge mit der CPU 202, dem Hauptspeicher 204 und anderen Komponenten der Rechenvorrichtung 130 zu ermöglichen. Beispielsweise kann das I/O-Subsystem 206 ausgeführt sein in Form von Speichersteuerknoten, Eingabe-/Ausgabe-Steuerknoten, integrierten Sensorknoten, Firmware-Vorrichtungen, Kommunikationsverbindungen (z. B. Punkt-zu-Punkt-Verbindungen, Bus-Verbindungen, Drähte, Kabel, Lichtleiter, Leiterplattenbahnen usw.) und/oder anderen Komponenten und Subsystemen, um die Eingabe-/Ausgabe-Vorgänge zu ermöglichen. Bei einigen Ausführungsformen kann das I/O-Subsystem 206 einen Teil eines System-auf-einem-Chip (SoC) bilden und zusammen mit einem oder mehreren Elementen aus der CPU 202, dem Hauptspeicher 204 und anderen Komponenten der Rechenvorrichtung 130 auf einem einzelnen Chip eines integrierten Schaltkreises untergebracht sein.
-
Der Kommunikationsschaltkreis 208 kann ausgeführt sein als beliebiger Kommunikationsschaltkreis, Vorrichtung oder Zusammenstellung davon mit der Fähigkeit, Kommunikation über das Netzwerk 160 zwischen der Rechenvorrichtung 130 und einer anderen Vorrichtung (zum Beispiel dem Orchestrator-Server 140 und/oder einer anderen Rechenvorrichtung 130) zu ermöglichen. Der Kommunikationsschaltkreis 208 kann dafür ausgelegt sein, eine oder mehrere beliebige Kommunikationstechnologien (zum Beispiel kabelgebundene oder drahtlose Kommunikation) und dazugehörige Protokolle (zum Beispiel Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) zu verwenden, um diese Kommunikation durchzuführen.
-
Der beispielhafte Kommunikationsschaltkreis 208 schließt eine Netzwerksteuerung (NIC) 212 ein, die auch als Host-Fabric-Schnittstelle (HFI) bezeichnet werden kann. Der Kommunikationsschaltkreis 208 kann auf von der CPU 202 separatem Silizium angeordnet sein, oder der Kommunikationsschaltkreis 208 kann in einem Multi-Chip-Paket mit der CPU 202 oder sogar auf dem gleichen Plättchen (Die) wie die CPU 202 eingeschlossen sein. Der NIC 212 kann ausgeführt sein als ein oder mehrere Zusatzplatinen, Tochterkarten, Netzwerkkarten, Steuer-Chips, Chipsätze, spezielle Komponenten wie eine vor Ort programmierbare Gatter-Anordnung (FPGA) oder eine anwendungsspezifische integrierte Schaltung (ASIC) oder sonstige Vorrichtungen, die von der Rechenvorrichtung 130 zur Verbindung mit einer anderen Vorrichtung verwendet werden können (zum Beispiel mit dem Orchestrator-Server 140 und/oder einer anderen Rechenvorrichtung 130). Bei einigen Ausführungsformen kann der NIC 212 ausgeführt sein als Teil eines System-auf-einem-Chip (SoC), das einen oder mehrere Prozessoren einschließt, oder er kann in einem Multi-Chip-Paket eingeschlossen sein, dass auch einen oder mehrere Prozessoren enthält. Bei einigen Ausführungsformen kann der NIC 212 einen lokalen Prozessor aufweisen (nicht dargestellt) und/oder einen lokalen Speicher (nicht dargestellt), die beide in Bezug auf den NIC 212 lokal sind. Bei derartigen Ausführungsformen kann der lokale Prozessor des NIC 212 die Fähigkeit aufweisen, eine oder mehrere der hier beschriebenen Funktionen der CPU 202 auszuführen. Zusätzlich oder alternativ dazu kann der lokale Speicher des NIC 212 bei derartigen Ausführungsformen auf Platinen-Ebene, Sockel-Ebene, Chip-Ebene und/oder anderen Ebenen in eine oder mehrere Komponenten der Rechenvorrichtung 130 integriert sein.
-
Die eine oder mehreren beispielhaften Datenspeichervorrichtungen 210 können ausgeführt sein als Vorrichtungen beliebigen Typs, ausgelegt für kurzfristige oder langfristige Datenspeicherung, wie zum Beispiel Speichervorrichtungen und -Schaltungen, Speicherkarten, Festplattenlaufwerke, Festkörperlaufwerke oder andere Datenspeichervorrichtungen. Jede Datenspeichervorrichtung 210 kann eine Systempartition einschließen, die Daten und Firmware-Code für die Datenspeichervorrichtung 210 speichert. Jede Datenspeichervorrichtung 210 kann auch eine Betriebssystem-Partition einschließen, die Datendateien und ausführbare Programme für ein Betriebssystem speichert.
-
Zusätzlich oder alternativ dazu kann die Rechenvorrichtung 130 eine oder mehrere Peripherievorrichtungen 214 einschließen. Derartige Peripherievorrichtungen 214 können Peripherievorrichtungen beliebigen Typs einschließen, die in einer Rechenvorrichtung üblicherweise anzutreffen sind, wie zum Beispiel eine Anzeige, Lautsprecher, eine Maus, eine Tastatur und/oder andere Eingabe-/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen und/oder sonstige Peripherievorrichtungen.
-
Der Orchestrator-Server 140 und die Client-Vorrichtung 150 können ähnliche Komponenten wie die in 2 beschriebenen aufweisen. Somit ist die Beschreibung der betreffenden Komponenten der Rechenvorrichtung 130 gleichermaßen anwendbar auf die Beschreibung von Komponenten des Orchestrator-Servers 140 und der Client-Vorrichtung 150 und wird hier im Interesse der Klarheit der Beschreibung nicht wiederholt, mit der Ausnahme, dass der Orchestrator-Server 140 und die Client-Vorrichtung 150 bei der beispielhaften Ausführungsform die adaptive pQoS-Logikeinheit 220 auch nicht einschließen können. Es versteht sich, dass sowohl der Orchestrator-Server 140 als auch die Client-Vorrichtung 150 jeweils andere Komponenten, Subkomponenten und Vorrichtungen einschließen können, die üblicherweise in einer Rechenvorrichtung anzutreffen sind und die vorstehend mit Bezug auf die Rechenvorrichtung 130 nicht erörtert sind und die hier im Interesse der Klarheit der Beschreibung nicht erläutert werden.
-
Entsprechend der vorstehenden Beschreibung sind die Rechenvorrichtungen 130, der Orchestrator-Server 140 und die Client-Vorrichtung 150 veranschaulichend in Kommunikation über das Netzwerk 160, das ausgeführt sein kann als kabelgebundenes oder drahtloses Kommunikationsnetzwerk beliebigen Typs einschließlich von globalen Netzwerken (zum Beispiel das Internet) sowie lokalen Netzwerken (LANs) oder Weitverkehrsnetzen (WANs), zellulären Netzwerken (zum Beispiel Global System for Mobile Communications (GSM), 3G, Long Term Evolution (LTE), Worldwide Interoperability for Microwave Access (WiMAX) usw.), DSL-Netzen (digitale Anschlussleitung), Kabelnetzen (zum Beispiel Koaxialnetzwerke, Fasernetzwerke usw.) oder beliebigen Kombinationen daraus.
-
Mit Bezug auf 3 kann bei der beispielhaften Ausführungsform jede Rechenvorrichtung 130 während des Betriebs eine Umgebung 300 herstellen. Die beispielhafte Umgebung 300 schließt einen Netzwerk-Kommunikator 320, eine Anwendungsausführungsschaltung 330 und eine Plattform-Dienstqualitätsverwaltung 340 ein. Jede der Komponenten der Umgebung 300 kann als Hardware, Firmware, Software oder Kombination daraus ausgeführt sein. Somit können bei einigen Ausführungsformen eine oder mehrere der Komponenten der Umgebung 300 ausgeführt sein als Schaltkreis oder Zusammenstellung elektrischer Vorrichtungen (zum Beispiel Netzwerk-Kommunikator-Schaltkreis 320, Anwendungsausführungsschaltung 330, Plattform-Dienstqualitäts-Verwaltungsschaltung 340 usw.). Es versteht sich, dass bei derartigen Ausführungsformen eine oder mehrere des Netzwerk-Kommunikator-Schaltkreises 320, des Anwendungs-Ausführungsschaltkreises 330 oder des Plattform-Dienstqualitäts-Verwaltungsschaltkreises 340 einen Teil von einem oder mehreren aus CPU 202, Hauptspeicher 204, I/O-Subsystem 206 und/oder anderen Komponenten der Rechenvorrichtung 130 bilden können.
-
Bei der beispielhaften Ausführungsform schließt die Umgebung 300 Telemetriedaten 302 ein, die ausgeführt sein können als beliebige Daten, die die Verwendung von Ressourcen angeben (zum Beispiel relative Werte wie Prozentsätze von durch jede Anwendung verwendeten verfügbaren Ressourcen oder Ist-Werte, die den Umfang von jeder Ressource, die durch jede Anwendung verwendet wird, angeben), die durch die Rechenvorrichtung 130 kontinuierlich bestimmt werden können (zum Beispiel in vorbestimmten Intervallen). Zusätzlich geben die Telemetriedaten 302 die Performance der Anwendungen an, wie zum Beispiel durch den jeder Anwendung zugeordneten Kern 230 ausgeführte Anweisungen pro Zyklus und/oder andere, jeder Anwendung zugeordnete Messwerte der Dienstqualität. Zusätzlich schließt die beispielhafte Umgebung 300 Phasendaten 304 ein, die ausgeführt sein können als beliebige Daten, die Anwendungsphasen und die Zeitlängen der betreffenden Phasen (d. h. Andauern der Phasen) für jede der Anwendungen angeben. Weiter schließt die beispielhaften Umgebung 300 Dienstklassendaten 306 ein, die als beliebige Daten ausgeführt sein können, die einen Umfang von einer oder mehreren Ressourcen angeben, die einer Anwendung für jede Dienstklasse in einem Bereich von Dienstklassen, einer Ziel-Performance-Metrik für jede Phase der Anwendung und einer maximalen Dienstklasse für jede Phase der Anwendung zugeordnet werden sollen. Zusätzlich können die Dienstklassendaten 306 eine Frequenz angeben, mit der die Performance einer Anwendung gemessen werden soll, und eine Angabe des Verlaufs (zum Beispiel linear, exponentiell usw.), mit dem die Dienstklasse für eine gegebene Phase einer Anwendung als Reaktion auf eine Bestimmung, dass die Anwendung die Ziel-Performance-Metrik mit den bei der derzeitigen Dienstklasse zugeordneten Ressourcen nicht erfüllt, heraufgesetzt werden soll.
-
Bei der beispielhaften Umgebung 300 ist der Netzwerk-Kommunikator 320, der ausgeführt sein kann als Hardware, Firmware, Software, virtualisierte Hardware, simulierte Architektur und/oder eine Kombination daraus entsprechend der vorstehenden Erörterung, dafür ausgelegt, eingehende und ausgehende Netzwerkkommunikationen zu bzw. von der Rechenvorrichtung 130 zu ermöglichen (zum Beispiel Netzwerkverkehr, Netzwerkpakete, Netzwerkströme usw.). Hierzu ist der Netzwerk-Kommunikator 320 dafür ausgelegt, Datenpakete zu empfangen und zu verarbeiten und Datenpakete zu einem System oder einer Rechenvorrichtung (zum Beispiel dem Orchestrator-Server 140) vorzubereiten und zu senden. Dementsprechend kann bei einigen Ausführungsformen mindestens ein Teil des Funktionsumfangs des Netzwerk-Kommunikators 320 durch die Kommunikationsschaltung 208 und bei der beispielhaften Ausführungsform durch den NIC 212 ausgeführt werden.
-
Der Anwendungs-Ausführungsschaltkreis 330, der ausgeführt sein kann als Hardware, Firmware, Software, virtualisierte Hardware, emulierte Architektur und/oder eine Kombination daraus entsprechend der vorstehenden Erörterung, ist dafür ausgelegt, der Rechenvorrichtung 130 zugeordnete Anwendungen auszuführen und Telemetriedaten im Prozess zur Verwendung durch die Plattform-Dienstqualitätsverwaltung 340 zu erzeugen. Hierzu schließt der Anwendungs-Ausführungsschaltkreis 330 bei der beispielhaften Ausführungsform einen Telemetrie-Generator 332 ein, der bei der beispielhaften Ausführungsform dafür ausgelegt ist, Daten von Komponenten der Rechenvorrichtung 130 zu erhalten, einschließlich der Kerne 230 und anderer Komponenten wie des Speichers 204, des I/O-Subsystems 206, der Kommunikationsschaltung 208 und/oder der Datenspeichervorrichtung 210, und die Daten zu analysieren und zu speichern als Telemetriedaten 302 in Verbindung mit Kennungen der dazugehörigen Komponenten und der Anwendungen, auf deren Veranlassung die Komponenten bei der Erzeugung der Daten Vorgänge ausgeführt haben. Bei der beispielhaften Ausführungsform kann der Telemetrie-Generator 332 aktiv jede der Komponenten abfragen (zum Beispiel die Kerne 230, den Speicher 204, das I/O-Subsystem 206, die Kommunikationsschaltung 208, die Datenspeichervorrichtung 210 usw.), die in der Rechenvorrichtung 130 verfügbar sind, um aktualisierte Telemetriedaten 302 auf fortlaufender Basis zu erhalten, oder er kann die Telemetriedaten 302 von den Komponenten passiv empfangen, wie zum Beispiel durch Überwachung von einem oder mehreren Registern usw.
-
Die Plattform-Dienstqualitätsverwaltung 340, die ausgeführt sein kann als Hardware, Firmware, Software, virtualisierte Hardware, simulierte Architektur und/oder eine Kombination daraus, ist dafür ausgelegt, die Dienstklassendaten 306 zu erhalten, die Telemetriedaten 302 zu analysieren, um die durch die Kerne 230 ausgeführte derzeitige Phase jeder Anwendung zu bestimmen, um zu bestimmen, ob die derzeitige Performance jeder Anwendung der in den Dienstklassendaten 306 für die derzeitige Phase jeder Anwendung angegebenen dazugehörigen Ziel-Performance-Metrik genügt, und um die einer oder mehreren der Anwendungen zugeordnete Dienstklasse selektiv anzupassen (zum Beispiel inkrementell zu erhöhen oder herabzusetzen), um der dazugehörigen Ziel-Performance-Metrik zu genügen, ohne der Anwendung Ressourcen über den zur Erfüllung der Ziel-Performance-Metrik erforderlichen Umfang hinaus zuzuweisen. Hierzu schließt die Plattform-Dienstqualitätsverwaltung 340 bei der beispielhaften Ausführungsform einen Phasenbestimmer 342, einen Performance-Bestimmer 346 und einen Dienstklassen-Anpasser 348 ein.
-
Bei der beispielhaften Ausführungsform ist der Phasenbestimmer 342 dafür ausgelegt, die jeder Anwendung zugeordneten Telemetriedaten 302 zu vergleichen mit der bekannten Phasen jeder Anwendung zugeordneten Referenz-Ressourcenverwendungscharakteristik (zum Beispiel Referenzphasen in den Phasendaten 304). Falls beispielsweise eine Phase einer Anwendung charakterisiert ist durch einen Zeitraum hoher CPU-Verwendung (zum Beispiel einen Prozentsatz oberhalb eines Schwellenprozentwerts) und niedriger Speicherverwendung (zum Beispiel einen Prozentsatz unterhalb eines Schwellenprozentwerts) und falls die der Anwendung zugeordneten Telemetriedaten 302 hohe CPU-Verwendung und niedrige Speicherverwendung angeben, kann der Phasenbestimmer 342 festlegen, dass die Anwendung in der oben beschriebenen Phase ist, die sich von einer anderen Phase unterscheidet, in der die Ressourcenverwendungen abweichend sind. Der Phasenbestimmer 342 kann zusätzlich einen Subphasen-Bestimmer 344 einschließen, der dafür ausgelegt sein kann, Subphasen in einer Phase zu erkennen. Eine Subphase kann ausgeführt sein als relativ kurzer Zeitraum, während dessen innerhalb einer Phase Variationen bei den Verwendungen von einer oder mehreren Ressourcen auftreten. Während derartiger Subphasen kann die Plattform-Dienstqualitätsverwaltung 340 Änderungen bei der Performance der Anwendung detektieren und die Dienstklasse innerhalb des der Phase der Anwendung zugeordneten Bereichs variieren, um die Ziel-Performance-Metrik aufrechtzuerhalten.
-
Der Performance-Bestimmer 346 ist bei der beispielhaften Ausführungsform dafür ausgelegt, eine oder mehrere Performance-Metriken jeder Anwendung auf fortlaufender Basis zu bestimmen. Beispielsweise kann der Performance-Bestimmer 346 kontinuierlich die Anzahl von Anweisungen pro Zyklus bestimmen, die durch den der Anwendung zugeordneten Kern 230 ausgeführt worden sind, sowie die Anzahl von Treffern (Cache-Hits) oder Fehltreffern (Cache-Misses) in einem vorbestimmten Zeitraum, die Latenz bei der Bereitstellung einer Ausgabe für eine gegebene Gruppe von Vorgängen oder andere Messwerte der Performance von jeder durch die Rechenvorrichtung 130 ausgeführten Anwendung. Bei der beispielhaften Ausführungsform kann der Performance-Bestimmer 346 die Performance-Metriken in Intervallen bestimmen, die in den Dienstklassendaten 306 angegeben sind.
-
Der Dienstklassen-Anpasser 348 ist bei der beispielhaften Ausführungsform dafür ausgelegt, die einer oder mehreren Ressourcen der Rechenvorrichtung 130 zugeordnete Dienstklasse als Reaktion auf eine Bestimmung, ob eine jeder Anwendung zugeordnete Performance-Metrik die dazugehörige Ziel-Performance-Metrik für die derzeitige Phase jeder Anwendung erfüllt, selektiv zu erhöhen oder herabzusetzen. Falls die Ziel-Performance-Metrik erfüllt ist, kann der Dienstklassen-Anpasser 348 die derzeitige Dienstklasse für eine oder mehrere einer Anwendung zugeordnete Ressourcen auf eine niedrigere Dienstklasse im Bereich der Dienstklassen für die derzeitige Phase der Anwendung reduzieren (zum Beispiel weniger Wege von Cache-Assoziativität, weniger Speicherbandbreite usw.). Als Ergebnis kann der Dienstklassen-Anpasser 348 Ressourcen zur Verwendung durch andere Anwendungen freigeben. Dagegen kann der Dienstklassen-Anpasser 348 als Reaktion auf eine Feststellung, dass die Ziel-Performance-Metrik durch eine Anwendung derzeit nicht erfüllt ist, die Dienstklasse auf eine höhere Dienstklasse im für die derzeitige Phase der Anwendung angegebenen Bereich erhöhen, um mehr Ressourcen für die Anwendung bereitzustellen und dadurch die Performance der Anwendung zu erhöhen. Durch selektives Anpassen der Dienstklassen kann der Dienstklassen-Anpasser 348 einen bestimmten Ressourcentyp identifizieren, für den die Dienstklasse erhöht werden soll (zum Beispiel mehr Wege von Cache-Assoziativität), in Abhängigkeit vom Typ der Ziel-Performance-Metrik, die nicht erfüllt ist (zum Beispiel Cache-Treffer), oder er kann die Dienstklasse für alle Ressourcen erhöhen, für die in den Dienstklassendaten 306 höhere Dienstklassen vorliegen. Zudem kann der Dienstklassen-Anpasser 348 die Dienstklassen in einem in den Dienstklassendaten angegebenen Umfang anpassen (zum Beispiel lineare Inkremente, exponentielle Inkremente usw.).
-
Es versteht sich, dass sowohl der Phasenbestimmer 342 als auch der Subphasen-Bestimmer 344, der Performance-Bestimmer 346 und der Dienstklassen-Anpasser 348 separat als Hardware, Firmware, Software, virtualisierte Hardware, simulierte Architektur und/oder eine Kombination daraus ausgeführt sein können. Beispielsweise kann der Phasenbestimmer 342 als Hardwarekomponente ausgeführt sein, während der Subphasen-Bestimmer 344, der Performance-Bestimmer 346 und/oder der Dienstklassen-Anpasser 348 jeweils als virtualisierte Hardwarekomponente oder als eine andere Kombination aus Hardware, Firmware, Software, virtualisierte Hardware, simulierte Architektur und/oder eine Kombination daraus ausgeführt sind.
-
Mit Bezug auf 4 kann jede Rechenvorrichtung 130 im Betrieb ein Verfahren 400 zur adaptiven Steuerung einer Plattform-Dienstqualität ausführen. Das Verfahren 400 beginnt mit Block 402, in dem die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform bestimmt, ob die Plattform-Dienstqualität der Rechenvorrichtung 130 verwaltet werden soll. Dabei kann die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform bestimmen, ob die CPU 202 die adaptive pQoS-Logikeinheit 220 einschließt, in dem ein Register der CPU 202 auf einen vorbestimmten Wert geprüft wird, der das Vorliegen der adaptiven pQoS-Logikeinheit 220 angibt. Bei anderen Ausführungsformen kann die Rechenvorrichtung 130 bestimmen, ob die Plattform-Dienstqualität basierend auf anderen Faktoren verwaltet werden soll. Unabhängig davon geht das Verfahren 400 als Reaktion auf eine Festlegung der Verwaltung der Plattform-Dienstqualität zum Block 404 über, in dem die Rechenvorrichtung 130 eine Zuordnung von einer oder mehreren auszuführenden Anwendungen empfängt. Dabei kann die Rechenvorrichtung 130 Kennungen der Anwendungen und/oder des Anwendungscodes selbst vom Orchestrator-Server 140 empfangen. Bei anderen Ausführungsformen kann die Rechenvorrichtung 130 die Zuordnung der einen oder mehreren Anwendungen von einer anderen Quelle empfangen, wie zum Beispiel von einem direkt mit der Rechenvorrichtung 130 interagierenden Benutzer (zum Beispiel durch eine Benutzeroberfläche), von einer anderen Rechenvorrichtung 130 oder von einer anderen Quelle. Unabhängig davon geht das Verfahren 400 nach dem Empfang der Zuordnung der einen oder mehreren auszuführenden Anwendungen zum Block 406 über, in dem die Rechenvorrichtung 130 Dienstklassendaten für die eine oder mehreren auszuführenden Anwendungen erhält (zum Beispiel die Dienstklassendaten 306). Bei anderen Ausführungsformen kann die Rechenvorrichtung 130 die Dienstklassendaten 306 vor dem Empfang der Zuordnungen erhalten. Bei noch weiteren Ausführungsformen kann die Rechenvorrichtung 130 die Dienstklassendaten 306 gleichzeitig mit dem Empfang der Zuordnung der auszuführenden Anwendungen empfangen (zum Beispiel als mit den Anwendungen assoziierte Metadaten, als Parameter für eine oder mehrere Zuordnungsanforderungen usw.).
-
Beim Erhalt der Dienstklassendaten 306 erhält die Rechenvorrichtung 130 Daten, die einen Ressourcentyp angeben (zum Beispiel Anzahl von Wegen von Cache-Assoziativität, Speicherbandbreite usw.), einen Bereich von dem Ressourcentyp zugeordneten Dienstklassen und Mengen von jeder Ressource, die einer Anwendung für jede Dienstklasse im Bereich entsprechend der Angabe in Block 408 zugeordnet werden sollen. Beispielsweise kann der Bereich von Dienstklassen für den Cache eine erste Dienstklasse einschließen, die 10 Wege von Cache-Assoziativität angibt, eine zweite Dienstklasse, die 12 Wege von Cache-Assoziativität angibt und eine dritte Dienstklasse, die 14 Wege von Cache-Assoziativität angibt und so weiter. Entsprechend kann der Bereich von Dienstklassen für Speicherbandbreite eine erste Dienstklasse einschließen, die 10 % der Speicherbandbreite angibt, eine zweite Dienstklasse, die 20 % der Speicherbandbreite angibt und eine dritte Dienstklasse, die 30 % der Speicherbandbreite angibt und so weiter. Zusätzlich erhält die Rechenvorrichtung 130 in Block 410 beim Erhalten der Dienstklassendaten 306 Daten, die eine Ziel-Performance-Metrik für jede Phase einer Anwendung angeben. Bei der beispielhaften Ausführungsform können die Daten eine Ziel-Performance-Metrik von 10 Anweisungen pro Zyklus in Phase A einer Anwendung angeben, die einer relativ hohen Prozessorverwendung und einer relativ niedrigen Speicherverwendung zugeordnet werden können. Die Daten können auch eine Ziel-Performance-Metrik von 6 Anweisungen pro Zyklus in Phase B der Anwendung angeben, die einer relativ niedrigen Prozessorverwendung und einer relativ hohen Speicherverwendung zugeordnet werden können. Die Rechenvorrichtung 130 kann für jede Phase mehrere Ziel-Performance-Metriken empfangen (zum Beispiel eine Zielnummer von Anweisungen pro Zyklus und eine Zielnummer von Cache-Fehltreffern). Entsprechend der Angabe in Block 412 erhält die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform auch Daten, die für jeden Ressourcentyp (zum Beispiel Anzahl von Wegen von Cache-Assoziativität, Speicherbandbreite usw.) eine maximale Dienstklasse, die vorgegeben werden kann, und einen Dienstklassen-Inkrementtyp für jede Phase jeder Anwendung angeben. Unter Verwendung des vorstehenden Beispiels kann die Rechenvorrichtung 130 Daten erhalten, die angeben, dass für Phase A der Anwendung die maximale Dienstklasse, die vorgegeben werden kann, die dritte Dienstklasse für jeden Ressourcentyp ist und dass für Phase B der Anwendung die Dienstklasse für die Speicherbandbreite die dritte Dienstklasse erreichen kann, wobei aber die Dienstklasse für die Anzahl von Wegen von Cache-Assoziativität nur die zweite Dienstklasse erreichen kann. Die Inkrementtypen geben an, wie schnell die Dienstklasse für einen oder mehrere Ressourcentypen als Reaktion auf die Bestimmung, dass die Performance der Anwendung einer dazugehörigen Ziel-Performance-Metrik für die derzeitige Phase der Anwendung nicht genügt, heraufgesetzt werden soll. Somit kann der Inkrementtyp einen linearen, exponentiellen oder sonstigen Verlauf aufweisen, mit dem die Dienstklasse heraufgesetzt werden soll.
-
Bei der beispielhaften Ausführungsform erhält die Rechenvorrichtung 130 in Block 414 Daten, die eine oder mehrere Performance-Metrik-Typen und Zeitintervalle zur periodischen Bestimmung der dazugehörigen Performance-Metriken der einen oder mehreren Anwendungen bei deren Ausführung angeben. Beispielsweise können die Daten angeben, dass die Anzahl von Anweisungen pro Sekunde ungefähr alle 2 bis 3 µs bestimmt werden soll und dass die Anzahl von Cache-Fehltreffern ungefähr alle 1 bis 2 µs bestimmt werden soll. Entsprechend der Angabe in Block 416 empfängt die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform die Dienstklassendaten 306 vom Orchestrator-Server 140, wie weiter oben erörtert. Bei anderen Ausführungsformen kann die Rechenvorrichtung 130 die Dienstklassendaten 306 von einer anderen Quelle erhalten (zum Beispiel direkte Eingabe durch einen Administrator über eine Benutzeroberfläche, Einlesen aus einer Konfigurationsdatei, die zuvor basierend auf vorangegangenen Ausführungen der Anwendungen durch die Rechenvorrichtung 130 geschrieben worden sein kann usw.). Anschließend geht das Verfahren 400 zum Block 418 über, in dem die Rechenvorrichtung 130 die eine oder mehreren zugeordneten Anwendungen ausführt.
-
Bei der Ausführung der Anwendungen kann die Rechenvorrichtung 130 unterschiedliche Anwendungen mit unterschiedlichen Kernen 230 der CPU 202 (zum Beispiel eine Anwendung pro Kern) entsprechend den Angaben in Block 420 ausführen. Zusätzlich erzeugt die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform bei der Ausführung der einen oder mehrere Anwendungen entsprechend der Angabe in Block 422 die Telemetriedaten 302. Weiter kann die Rechenvorrichtung 130 bei der beispielhaften Ausführungsform entsprechend der Angabe in Block 424 die Telemetriedaten 302 zur Analyse zum Orchestrator-Server 140 bereitstellen (beispielsweise senden) (z. B. Bestimmung der derzeitigen Phase jeder Anwendung). Anschließend geht das Verfahren 400 zum Block 426 aus 5 über, in dem die Rechenvorrichtung 130 die derzeitige Phase jeder Anwendung in Abhängigkeit von den Telemetriedaten 302 bestimmt.
-
Mit Bezug auf 5 kann die Rechenvorrichtung 130 bei der Bestimmung der derzeitigen Phase jeder Anwendung eine Identifizierung der derzeitigen Phase jeder Anwendung vom Orchestrator-Server 140 entsprechend der Angabe in Block 428 empfangen. Alternativ dazu und entsprechend der Angabe in Block 430 kann die Rechenvorrichtung 130 die derzeitige Phase jeder Anwendung lokal durch Vergleichen von einer oder mehreren Ressourcenverwendungen bestimmen (z. B. derzeitige Prozessorverwendung, derzeitige Speicherverwendung usw.), die in den Telemetriedaten 302 angegebenen sind, um auf mit unterschiedlichen Phasen jeder Anwendung assoziierte Ressourcenverwendungen (z. B. in den Phasendaten 304) zu verweisen. Anschließend bestimmt die Rechenvorrichtung 130 in Block 432, ob eine oder mehrere der Anwendungen in eine neue Phase eingetreten sind. Anfangs ist das Resultat ja, da die derzeitige Phase jeder Anwendung die erste seit Beginn der Ausführung bestimmte Phase ist. Als Reaktion auf eine Feststellung, dass die derzeitige Phase der einen oder mehreren Anwendungen eine neue Phase ist, geht das Verfahren 400 zu Block 434 über, in dem die Rechenvorrichtung aus den erhaltenen Dienstklassendaten 306 den Bereich von Dienstklassen für jede Ressource für die derzeitige Phase jeder Anwendung bestimmt (z. B. die in den Blöcken 408 und 412 aus 4 erhaltenen Bereiche und Daten der maximalen Dienstklasse).
-
In Block 436 setzt die Rechenvorrichtung 130 eine anfängliche Dienstklasse für jede Anwendung in Abhängigkeit von den bestimmten Bereichen fest. Dabei kann die Rechenvorrichtung 130 entsprechend der Angabe in Block 438 eine für jede Anwendung reservierte Anzahl von Wegen von Cache-Assoziativität festlegen. Entsprechend der Angabe in Block 440 kann die Rechenvorrichtung 130 einen Umfang von für jede Anwendung verfügbarer Speicherbandbreite festlegen. Weiter kann die Rechenvorrichtung 130 ein modellspezifisches Register festlegen (z. B. eines oder mehrere der Register 240), um die derzeitige Dienstklasse für jede Anwendung entsprechend der Angabe in Block 442 anzugeben. Zusätzlich kann die Rechenvorrichtung 130 entsprechend der Angabe im Block 444 eine Bitmaske oder andere Daten festlegen, um die Verfügbarkeit von einer oder mehreren der Ressourcen für andere durch die Rechenvorrichtung 130 ausgeführte Anwendungen anzugeben. Anschließend, oder falls in Block 432 keine neue Phase detektiert worden ist, geht das Verfahren 400 zu Block 446 aus 6 über, in dem die Rechenvorrichtung 130 eine oder mehrere Performance-Metriken jeder Anwendung überwacht.
-
Mit Bezug auf 6 kann die Rechenvorrichtung 130 bei der Überwachung der Performance-Metriken in der beispielhaften Ausführungsform entsprechend der Angabe in Block 448 individuelle Performance-Metriken bei den in den erhaltenen Dienstklassendaten 306 angegebenen Intervallen überwachen (z. B. bei den Intervallen aus Block 414 aus 4). Dabei kann die Rechenvorrichtung entsprechend der Angabe in Block 450 die Anzahl von Anweisungen pro Zyklus für jede Anwendung überwachen. Zusätzlich oder alternativ dazu kann die Rechenvorrichtung 130 entsprechend der Angabe in Block 452 die Anzahl von Cache-Fehltreffern für jede Anwendung überwachen. Bei anderen Ausführungsformen kann die Rechenvorrichtung 130 andere Performance-Metriken überwachen.
-
Anschließend bestimmt die Rechenvorrichtung 130 in Block 454, ob die überwachten Performance-Metriken den dazugehörigen, der derzeitigen Phase jeder Anwendung zugeordneten Ziel-Performance-Metriken genügen. Anschließend bestimmt die Rechenvorrichtung 130 in Block 456 den anschließenden Vorgangsverlauf in Abhängigkeit davon, ob die Ziel-Performance-Metriken erfüllt waren. Falls eine oder mehrere der Ziel-Performance-Metriken nicht erfüllt waren, geht das Verfahren 400 zu Block 458 über. In Block 458 setzt die Rechenvorrichtung 130 die derzeitige Dienstklasse für eine oder mehrere Ressourcen auf eine höhere Dienstklasse in dem der derzeitigen Phase jeder Anwendung, für die die dazugehörige Ziel-Performance-Metrik nicht erfüllt war, zugeordneten Bereich herauf. Dabei, und entsprechend der Angabe in Block 460, kann die Rechenvorrichtung 130 für jede in den Dienstklassendaten 306 identifizierte Ressource eine höhere Dienstklasse festlegen. Alternativ dazu kann die Rechenvorrichtung 130 die derzeitige Dienstklasse entsprechend der Angabe in Block 462 nur für eine Untermenge der in den Dienstklassen 306 identifizierten Ressourcen heraufsetzen (z. B. nur die Speicherbandbreite heraufsetzen, ohne die Wege von Cache-Assoziativität heraufzusetzen). Beim Heraufsetzen auf eine höhere Dienstklasse kann die Rechenvorrichtung 130 entsprechend der Angabe in Block 464 die Erhöhung in Abhängigkeit vom Inkrementtyp durchführen, der in den Dienstklassendaten 306 angegeben ist (z. B. eine lineare Erhöhung, eine exponentielle Erhöhung usw.). Alternativ dazu kann die Rechenvorrichtung 130 entsprechend der Angabe in Block 466 einen Fehler melden (zum Beispiel über eine Benutzeroberfläche an einen Benutzer, an den Orchestrator-Server 140 usw.), falls die derzeitige Dienstklasse bereits die maximale Dienstklasse für die derzeitige Phase ist. Anschließend springt das Verfahren 400 zurück zu Block 418 aus 4, in dem die Rechenvorrichtung 130 die Ausführung der zugewiesenen Anwendungen fortsetzt.
-
Wenn wieder mit Bezug auf Block 456 die Rechenvorrichtung 130 stattdessen bestimmt, dass die Ziel-Performance-Metriken für alle Anwendungen erfüllt worden sind, geht das Verfahren 400 zu Block 468 aus 7 über, in dem die Rechenvorrichtung 130 die derzeitige Dienstklasse für die Anwendungen auf eine niedrigere Dienstklasse im Bereich für die derzeitige Phase jeder Anwendung herabsetzt. Mit Bezug auf 7 kann die Rechenvorrichtung 130 beim Herabsetzen auf eine niedrigere Dienstklasse entsprechend der Angabe in Block 470 auf eine niedrigere Dienstklasse für jede in den Dienstklassen 306 identifizierte Ressource herabsetzen. Alternativ dazu kann die Rechenvorrichtung 130 entsprechend der Angabe in Block 472 nur für eine Untermenge der Ressourcen eine niedrigere Dienstklasse vorgeben (z. B. nur die Dienstklasse für die Speicherbandbreite herabsetzen, während die Dienstklasse der Cache-Assoziativität unverändert gelassen wird). Anschließend springt das Verfahren 400 zurück zu Block 418 aus 4, in dem die Rechenvorrichtung 130 die Ausführung der zugewiesenen Anwendungen fortsetzt. Somit gibt die Rechenvorrichtung 130 einen Umfang der Ressourcen zur Verwendung durch andere Anwendungen frei und bestimmt, ob die Ziel-Performance-Metriken noch erfüllt sind.
-
BEISPIELE
-
Veranschaulichende Beispiele der hier offenbarten Technologien sind im Folgenden bereitgestellt. Einer Ausführungsform bei Technologien kann eines oder mehrere oder eine beliebige Kombination der hier beschriebenen Beispiele einschließen.
-
Beispiel 1 weist eine Rechenvorrichtung zur adaptiven Steuerung einer Plattform-Dienstqualität auf, wobei die Rechenvorrichtung eine oder mehrere Prozessoren umfasst; wobei eine oder mehrere Speichervorrichtungen eine darin gespeicherte Mehrzahl von Anweisungen aufweisen, die bei Ausführung durch den einen oder die mehreren Prozessoren die Computervorrichtung veranlassen, Dienstklassendaten für eine auszuführende Anwendung zu erhalten, wobei die Dienstklassendaten einen Umfang von einer oder mehreren Ressourcen angeben, die der Anwendung für jede Dienstklasse in einem Bereich von Dienstklassen zugeordnet werden sollen, sowie eine Ziel-Performance-Metrik für jede Phase der Anwendung und eine maximale Dienstklasse für jede Phase der Anwendung; und die Anwendung auszuführen; in Abhängigkeit von einer oder mehreren Ressourcenverwendungen der Anwendung bei der Ausführung der Anwendung eine derzeitige Phase der Anwendung zu bestimmen; eine derzeitige Dienstklasse für die Anwendung in Abhängigkeit von der bestimmten Phase festzulegen, wobei die derzeitige Dienstklasse innerhalb des der bestimmten Phase zugeordneten Bereichs ist; zu bestimmen, ob eine derzeitige Performance-Metrik der Anwendung der Ziel-Performance-Metrik genügt; und als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik nicht genügt, die derzeitige Dienstklasse auf eine höhere Dienstklasse im Bereich heraufzusetzen.
-
Beispiel 2 weist den Gegenstand von Beispiel 1 auf, wobei die Mehrzahl von Anweisungen bei der Ausführung weiter die Rechenvorrichtung veranlasst, als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, die derzeitige Dienstklasse auf eine niedrigere Dienstklasse im Bereich herabzusetzen.
-
Beispiel 3 weist den Gegenstand von einem der Beispiele 1 und 2 auf, wobei die Mehrzahl von Anweisungen bei der Ausführung die Rechenvorrichtung weiter veranlasst, zu detektieren, ob die Anwendung eine anschließende Phase durchlaufen hat; und als Reaktion auf eine Bestimmung, dass die Anwendung eine anschließende Phase durchlaufen hat, einen zweiten Bereich von der anschließenden Phase zugeordneten Dienstphasen zu bestimmen; und eine anschließende Dienstphase für die Anwendung in Abhängigkeit von der anschließenden Phase vorzugeben, wobei die anschließende Dienstklasse innerhalb des zweiten Bereichs ist.
-
Beispiel 4 weist den Gegenstand von einem der Beispiele 1-3 auf, wobei das Erhalten der Dienstklassendaten den Empfang von Inkrementtyp-Daten umfasst, die einen Betrag angeben, um den die derzeitige Dienstklasse als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik nicht der Ziel-Performance-Metrik genügt, heraufgesetzt werden soll.
-
Beispiel 5 weist den Gegenstand von einem der Beispiele 1-4 auf, wobei das Heraufsetzen der Dienstklasse das Heraufsetzen einer Anzahl von für die Anwendung verfügbaren Wegen von Cache-Assoziativität umfasst.
-
Beispiel 6 weist den Gegenstand von einem der Beispiele 1-5 auf, wobei das Heraufsetzen der Dienstklasse das Heraufsetzen einer für die Anwendung verfügbaren Speicherbandbreite umfasst.
-
Beispiel 7 weist den Gegenstand von einem der Beispiele 1-6 auf, wobei die Mehrzahl von Anweisungen bei der Ausführung weiter die Rechenvorrichtung veranlasst, ein modellspezifisches Register vorzugeben, um die derzeitige Dienstklasse der Anwendung anzugeben.
-
Beispiel 8 weist den Gegenstand von einem der Beispiele 1-7 auf, wobei die Mehrzahl von Anweisungen bei der Ausführung weiter die Rechenvorrichtung veranlasst, eine Bitmaske vorzugeben, die eine Verfügbarkeit von einer oder mehreren Ressourcen für andere Anwendungen angibt.
-
Beispiel 9 weist den Gegenstand von einem der Beispiele 1-8 auf, wobei die Bestimmung, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, das Bestimmen umfasst, ob eine derzeitige Anzahl von Anweisungen pro Zyklus einer Zielanzahl von Anweisungen pro Zyklus genügt.
-
Beispiel 10 weist den Gegenstand von einem der Beispiele 1-9 auf, wobei die Bestimmung, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, das Bestimmen umfasst, ob eine derzeitige Anzahl von Cache-Fehltreffern einer Zielanzahl von Cache-Fehltreffern genügt.
-
Beispiel 11 weist den Gegenstand von einem der Beispiele 1-10 auf, wobei das Heraufsetzen der derzeitigen Dienstklasse das Heraufsetzen eines Umfangs einer der Anwendung zugeordneten Ressource umfasst.
-
Beispiel 12 weist den Gegenstand von einem der Beispiele 1-11 auf, wobei das Heraufsetzen der derzeitigen Dienstklasse das Heraufsetzen eines Umfangs von mehreren der Anwendung zugeordneten Ressourcen umfasst.
-
Beispiel 13 weist den Gegenstand von einem der Beispiele 1-12 auf, wobei die Mehrzahl von Anweisungen bei der Ausführung weiter die Rechenvorrichtung veranlasst, Telemetriedaten, die Ressourcenverwendungen durch die Anwendung angeben, an einen Orchestrator-Server zu melden; und wobei die Bestimmung der derzeitigen Phase der Anwendung den Empfang einer Identifizierung der derzeitigen Phase vom Orchestrator-Server umfasst.
-
Beispiel 14 weist den Gegenstand von einem der Beispiele 1-13 auf, wobei die Bestimmung der derzeitigen Phase der Anwendung das Vergleichen der Ressourcenverwendung der Anwendung mit unterschiedlichen Phasen zugeordneten Referenz-Ressourcenverwendungen umfasst.
-
Beispiel 15 weist den Gegenstand von einem der Beispiele 1-14 auf, wobei der eine oder die mehreren Prozessoren mehrere Kerne einschließen und wobei das Ausführen der Anwendung die Ausführung mehrerer Anwendungen mit unterschiedlichen Kernen der Rechenvorrichtung umfasst.
-
Beispiel 16 weist ein Verfahren zur adaptiven Steuerung einer Plattform-Dienstqualität auf, wobei das Verfahren das Erhalten von Dienstklassendaten für eine auszuführende Anwendung durch eine Rechenvorrichtung umfasst, wobei die Dienstklassendaten einen Umfang von einer oder mehreren Ressourcen angeben, die der Anwendung für jede Dienstklasse in einem Bereich von Dienstklassen zugeordnet werden sollen, sowie eine Ziel-Performance-Metrik für jede Phase der Anwendung und eine maximale Dienstklasse für jede Phase der Anwendung; und die Ausführung der Anwendung durch die Rechenvorrichtung; die Bestimmung, in Abhängigkeit von einer oder mehreren Ressourcenverwendungen der Anwendung bei der Ausführung der Anwendung, einer derzeitigen Phase der Anwendung durch die Rechenvorrichtung; die Vorgabe einer derzeitigen Dienstklasse für die Anwendung in Abhängigkeit von der bestimmten Phase durch die Rechenvorrichtung, wobei die derzeitige Dienstklasse innerhalb des der bestimmten Phase zugeordneten Bereichs ist; die Bestimmung durch die Rechenvorrichtung, ob eine derzeitige Performance-Metrik der Anwendung der Ziel-Performance-Metrik genügt; und das Heraufsetzen der derzeitigen Dienstklasse auf eine höhere Dienstklasse im Bereich als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik nicht genügt.
-
Beispiel 17 weist den Gegenstand von Beispiel 16 auf, weiter aufweisend das Herabsetzen der derzeitigen Dienstklasse auf eine niedrigere Dienstklasse im Bereich durch die Rechenvorrichtung als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt.
-
Beispiel 18 weist den Gegenstand von einem der Beispiele 16 und 17 auf, weiter aufweisend das Detektieren durch die Rechenvorrichtung, ob die Anwendung eine nachfolgende Phase durchlaufen hat; die Bestimmung durch die Rechenvorrichtung als Reaktion auf eine Bestimmung, dass die Anwendung eine nachfolgende Phase durchlaufen hat, eines zweiten Bereichs von der nachfolgenden Phase zugeordneten Dienstklassen; und die Vorgabe durch die Rechenvorrichtung einer nachfolgenden Dienstklasse für die Anwendung in Abhängigkeit von der nachfolgenden Phase, wobei die nachfolgende Dienstklasse im zweiten Bereich ist.
-
Beispiel 19 weist den Gegenstand von einem der Beispiele 16-18 auf, wobei das Erhalten der Dienstklassendaten den Empfang von Inkrementtyp-Daten umfasst, die einen Umfang angeben, um den die derzeitige Dienstklasse als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik nicht der Ziel-Performance-Metrik genügt, heraufgesetzt werden soll.
-
Beispiel 20 weist den Gegenstand von einem der Beispiele 16-19 auf, wobei das Heraufsetzen der Dienstklasse das Heraufsetzen einer Anzahl von für die Anwendung verfügbaren Wegen von Cache-Assoziativität umfasst.
-
Beispiel 21 weist den Gegenstand von einem der Beispiele 16-20 auf, wobei das Heraufsetzen der Dienstklasse das Heraufsetzen einer für die Anwendung verfügbaren Speicherbandbreite umfasst.
-
Beispiel 22 weist den Gegenstand von einem der Beispiele 16-21 auf, weiter umfassend die Vorgabe eines modellspezifischen Registers durch die Rechenvorrichtung, um die derzeitige Dienstklasse der Anwendung anzugeben.
-
Beispiel 23 weist den Gegenstand von einem der Beispiele 16-22 auf, weiter umfassend die Vorgabe einer Bitmaske, die eine Verfügbarkeit von einer oder mehreren Ressourcen für andere Anwendungen angibt, durch die Rechenvorrichtung.
-
Beispiel 24 weist den Gegenstand von einem der Beispiele 16-23 auf, wobei die Bestimmung, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, das Bestimmen umfasst, ob eine derzeitige Anzahl von Anweisungen pro Zyklus einer Zielanzahl von Anweisungen pro Zyklus genügt.
-
Beispiel 25 weist den Gegenstand von einem der Beispiele 16-24 auf, wobei die Bestimmung, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, das Bestimmen umfasst, ob eine derzeitige Anzahl von Cache-Fehltreffern einer Zielanzahl von Cache-Fehltreffern genügt.
-
Beispiel 26 weist den Gegenstand von einem der Beispiele 16-25 auf, wobei das Heraufsetzen der derzeitigen Dienstklasse das Heraufsetzen eines Umfangs einer der Anwendung zugeordneten Ressource umfasst.
-
Beispiel 27 weist den Gegenstand von einem der Beispiele 16-26 auf, wobei das Heraufsetzen der derzeitigen Dienstklasse das Heraufsetzen eines Umfangs von mehreren der Anwendung zugeordneten Ressourcen umfasst.
-
Beispiel 28 weist den Gegenstand von einem der Beispiele 16-27 auf, weiter aufweisend das Melden von Telemetriedaten, die Ressourcenverwendungen durch die Anwendung angeben, an einen Orchestrator-Server durch die Rechenvorrichtung; wobei die Bestimmung der derzeitigen Phase der Anwendung den Empfang einer Identifizierung der derzeitigen Phase vom Orchestrator-Server umfasst.
-
Beispiel 29 weist den Gegenstand von einem der Beispiele 16-28 auf, wobei die Bestimmung der derzeitigen Phase der Anwendung das Vergleichen der Ressourcenverwendung der Anwendung mit unterschiedlichen Phasen zugeordneten Referenz-Ressourcenverwendungen umfasst.
-
Beispiel 30 weist den Gegenstand von einem der Beispiele 16-29 auf, wobei das Ausführen der Anwendung die Ausführung mehrerer Anwendungen mit unterschiedlichen Kernen der Rechenvorrichtung umfasst.
-
Beispiel 31 weist ein oder mehrere maschinenlesbare Speichermedien auf, umfassend eine Mehrzahl von darauf gespeicherten Anweisungen, die als Reaktion auf ihre Ausführung eine Rechenvorrichtung veranlassen, das Verfahren nach einem der Beispiele 16-30 durchzuführen.
-
Beispiel 32 weist eine Rechenvorrichtung zur adaptiven Steuerung einer Plattform-Dienstqualität auf, wobei die Rechenvorrichtung einen oder mehrere Prozessoren umfasst, und eine oder mehrere Speichervorrichtungen mit einer darin gespeicherten Mehrzahl von Anweisungen, die bei Ausführung durch den einen oder die mehrere Prozessoren die Rechenvorrichtung veranlassen, das Verfahren nach einem der Beispiele 16-30 durchzuführen.
-
Beispiel 33 weist eine Rechenvorrichtung auf, umfassend Mittel zum Durchführen des Verfahrens nach einem der Beispiele 16-30.
-
Beispiel 34 weist eine Rechenvorrichtung zur adaptiven Steuerung einer Plattform-Dienstqualität auf, wobei die Rechenvorrichtung einen Plattform-Dienstqualitäts-Verwaltungsschaltkreis umfasst, um Dienstklassendaten für eine auszuführende Anwendung zu erhalten, wobei die Dienstklassendaten einen Umfang von einer oder mehreren Ressourcen angeben, die der Anwendung für jede Dienstklasse in einem Bereich von Dienstklassen zugeordnet werden sollen, sowie eine Ziel-Performance-Metrik für jede Phase der Anwendung und eine maximale Dienstklasse für jede Phase der Anwendung; und einen Anwendungs-Ausführungsschaltkreis zum Ausführen der Anwendung; wobei der Plattform-Dienstqualitäts-Verwaltungsschaltkreis weiter in Abhängigkeit von einer oder mehreren Ressourcenverwendungen der Anwendung bei der Ausführung der Anwendung eine derzeitige Phase der Anwendung bestimmt; eine derzeitige Dienstklasse für die Anwendung in Abhängigkeit von der bestimmten Phase vorgibt, wobei die derzeitige Dienstklasse innerhalb des der bestimmten Phase zugeordneten Bereichs ist; bestimmt, ob eine derzeitige Performance-Metrik der Anwendung der Ziel-Performance-Metrik genügt; und als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik nicht genügt, die derzeitige Dienstklasse auf eine höhere Dienstklasse im Bereich heraufsetzt.
-
Beispiel 35 weist den Gegenstand von Beispiel 34 auf, wobei der Plattform-Dienstqualitäts-Verwaltungsschaltkreis weiter als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, die derzeitige Dienstklasse auf eine niedrigere Dienstklasse im Bereich herabsetzt.
-
Beispiel 36 weist den Gegenstand von einem der Beispiele 34 und 35 auf, wobei der Plattform-Dienstqualitäts-Verwaltungsschaltkreis weiter detektiert, ob die Anwendung eine nachfolgende Phase durchlaufen hat; als Reaktion auf eine Bestimmung, dass die Anwendung zu einer nachfolgenden Phase übergegangen ist, einen zweiten Bereich von der nachfolgenden Phase zugeordneten Dienstklassen bestimmt; und in Abhängigkeit von der nachfolgenden Phase eine nachfolgende Dienstklasse für die Anwendung vorgibt, wobei die nachfolgende Dienstklasse im zweiten Bereich ist.
-
Beispiel 37 weist den Gegenstand von einem der Beispiele 34-36 auf, wobei das Erhalten der Dienstklassendaten den Empfang von Inkrementtyp-Daten umfasst, die einen Umfang angeben, um den die derzeitige Dienstklasse als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik nicht der Ziel-Performance-Metrik genügt, heraufgesetzt werden soll.
-
Beispiel 38 weist den Gegenstand von einem der Beispiele 34-37 auf, wobei das Heraufsetzen der Dienstklasse das Heraufsetzen einer Anzahl von für die Anwendung verfügbaren Wegen von Cache-Assoziativität umfasst.
-
Beispiel 39 weist den Gegenstand von einem der Beispiele 34-38 auf, wobei das Heraufsetzen der Dienstklasse das Heraufsetzen einer für die Anwendung verfügbaren Speicherbandbreite umfasst.
-
Beispiel 40 weist den Gegenstand von einem der Beispiele 34-39 auf, wobei der Plattform-Dienstqualitäts-Verwaltungsschaltkreis weiter ein modellspezifisches Register vorgibt, um die derzeitige Dienstklasse der Anwendung anzugeben.
-
Beispiel 41 weist den Gegenstand von einem der Beispiele 34-40 auf, wobei der Plattform-Dienstqualitäts-Verwaltungsschaltkreis weiter eine Bitmaske vorgibt, die eine Verfügbarkeit von einer oder mehreren Ressourcen für andere Anwendungen angibt.
-
Beispiel 42 weist den Gegenstand von einem der Beispiele 34-41 auf, wobei die Bestimmung, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, das Bestimmen umfasst, ob eine derzeitige Anzahl von Anweisungen pro Zyklus einer Zielanzahl von Anweisungen pro Zyklus genügt.
-
Beispiel 43 weist den Gegenstand von einem der Beispiele 34-42 auf, wobei die Bestimmung, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, das Bestimmen umfasst, ob eine derzeitige Anzahl von Cache-Fehltreffern einer Zielanzahl von Cache-Fehltreffern genügt.
-
Beispiel 44 weist den Gegenstand von einem der Beispiele 34-43 auf, wobei das Heraufsetzen der derzeitigen Dienstklasse das Heraufsetzen eines Umfangs einer der Anwendung zugeordneten Ressource umfasst.
-
Beispiel 45 weist den Gegenstand von einem der Beispiele 34-44 auf, wobei das Heraufsetzen der derzeitigen Dienstklasse das Heraufsetzen eines Umfangs von mehreren der Anwendung zugeordneten Ressourcen umfasst.
-
Beispiel 46 weist den Gegenstand von einem der Beispiele 34-45 auf, weiter aufweisend einen Netzwerk-Kommunikator-Schaltkreis, um Telemetriedaten, die Ressourcenverwendungen durch die Anwendung angeben, an einen Orchestrator-Server zu melden; und wobei die Bestimmung der derzeitigen Phase der Anwendung den Empfang einer Identifizierung der derzeitigen Phase vom Orchestrator-Server umfasst.
-
Beispiel 47 weist den Gegenstand von einem der Beispiele 34-46 auf, wobei die Bestimmung der derzeitigen Phase der Anwendung das Vergleichen der Ressourcenverwendung der Anwendung mit unterschiedlichen Phasen zugeordneten Referenz-Ressourcenverwendungen umfasst.
-
Beispiel 48 weist den Gegenstand von einem der Beispiele 34-47 auf, wobei das Ausführen der Anwendung die Ausführung mehrerer Anwendungen mit unterschiedlichen Kernen der Rechenvorrichtung umfasst.
-
Beispiel 49 weist eine Rechenvorrichtung zur adaptiven Steuerung einer Plattform-Dienstqualität auf, wobei die Rechenvorrichtung einen Schaltkreis umfasst, um Dienstklassendaten für eine auszuführende Anwendung zu erhalten, wobei die Dienstklassendaten einen Umfang von einer oder mehreren Ressourcen angeben, die der Anwendung für jede Dienstklasse in einem Bereich von Dienstklassen zugeordnet werden sollen, sowie eine Ziel-Performance-Metrik für jede Phase der Anwendung und eine maximale Dienstklasse für jede Phase der Anwendung; sowie einen Schaltkreis zum Ausführen der Anwendung; Mittel zum Bestimmen, in Abhängigkeit von einer oder mehreren Ressourcenverwendungen der Anwendung bei der Ausführung der Anwendung, einer derzeitigen Phase der Anwendung; Mittel zum Vorgeben einer derzeitigen Dienstklasse für die Anwendung in Abhängigkeit von der bestimmten Phase, wobei die derzeitige Dienstklasse innerhalb des der bestimmten Phase zugeordneten Bereichs ist; Mittel zum Bestimmen, ob eine derzeitige Performance-Metrik der Anwendung der Ziel-Performance-Metrik genügt; und Mittel zum Heraufsetzen, als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik nicht genügt, der derzeitigen Dienstklasse auf eine höhere Dienstklasse im Bereich.
-
Beispiel 50 weist den Gegenstand von Beispiel 49 auf, weiter aufweisend Mittel zum Herabsetzen, als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, der derzeitigen Dienstklasse auf eine niedrigere Dienstklasse im Bereich.
-
Beispiel 51 weist den Gegenstand von einem der Beispiele 49 und 50 auf, weiter aufweisend Mittel zum Detektieren, ob die Anwendung eine nachfolgende Phase durchlaufen hat; Mittel zur Bestimmung, als Reaktion auf eine Bestimmung, dass die Anwendung zu einer nachfolgenden Phase übergegangen ist, eines zweiten Bereichs von der nachfolgenden Phase zugeordneten Dienstklassen; und Mittel zum Vorgeben einer nachfolgenden Dienstklasse für die Anwendung in Abhängigkeit von der nachfolgenden Phase, wobei die nachfolgende Dienstklasse im zweiten Bereich ist.
-
Beispiel 52 weist den Gegenstand von einem der Beispiele 49-51 auf, wobei der Schaltkreis zum Erhalten der Dienstklassendaten einen Schaltkreis zum Empfangen von Inkrementtyp-Daten umfasst, die einen Umfang angeben, um den die derzeitige Dienstklasse als Reaktion auf eine Bestimmung, dass die derzeitige Performance-Metrik nicht der Ziel-Performance-Metrik genügt, heraufgesetzt werden soll.
-
Beispiel 53 weist den Gegenstand von einem der Beispiele 49-52 auf, wobei die Mittel zum Heraufsetzen der Dienstklasse einen Schaltkreis zum Heraufsetzen einer Anzahl von für die Anwendung verfügbaren Wegen von Cache-Assoziativität umfassen.
-
Beispiel 54 weist den Gegenstand von einem der Beispiele 49-53 auf, wobei Mittel zum Heraufsetzen der Dienstklasse einen Schaltkreis zum Heraufsetzen einer für die Anwendung verfügbaren Speicherbandbreite umfassen.
-
Beispiel 55 weist den Gegenstand von einem der Beispiele 49-54 auf, weiter umfassend einen Schaltkreis zum Vorgeben eines modellspezifischen Registers, um die derzeitige Dienstklasse der Anwendung anzugeben.
-
Beispiel 56 weist den Gegenstand von einem der Beispiele 49-55 auf, weiter umfassend einen Schaltkreis zum Vorgeben einer Bitmaske, die eine Verfügbarkeit von einer oder mehreren Ressourcen für andere Anwendungen angibt.
-
Beispiel 57 weist den Gegenstand von einem der Beispiele 49-56 auf, wobei die Mittel zum Bestimmen, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, einen Schaltkreis zur Bestimmung umfassen, ob eine derzeitige Anzahl von Anweisungen pro Zyklus einer Zielanzahl von Anweisungen pro Zyklus genügt.
-
Beispiel 58 weist den Gegenstand von einem der Beispiele 49-57 auf, wobei die Mittel zum Bestimmen, ob die derzeitige Performance-Metrik der Ziel-Performance-Metrik genügt, einen Schaltkreis zur Bestimmung umfassen, ob eine derzeitige Anzahl von Cache-Fehltreffern einer Zielanzahl von Cache-Fehltreffern genügt.
-
Beispiel 59 weist den Gegenstand von einem der Beispiele 49-58 auf, wobei die Mittel zum Heraufsetzen der Dienstklasse einen Schaltkreis zum Heraufsetzen eines Umfangs einer der Anwendung zugeordneten Ressource umfassen.
-
Beispiel 60 weist den Gegenstand von einem der Beispiele 49-59 auf, wobei die Mittel zum Heraufsetzen der Dienstklasse einen Schaltkreis zum Heraufsetzen eines Umfangs von mehreren der Anwendung zugeordneten Ressourcen umfassen.
-
Beispiel 61 weist den Gegenstand von einem der Beispiele 49-60 auf, weiter aufweisend einen Schaltkreis zum Melden von Telemetriedaten, die Ressourcenverwendungen durch die Anwendung angeben, an einen Orchestrator-Server; wobei die Mittel zur Bestimmung der derzeitigen Phase der Anwendung einen Schaltkreis zum Empfangen einer Identifizierung der derzeitigen Phase vom Orchestrator-Server umfassen.
-
Beispiel 62 weist den Gegenstand von einem der Beispiele 49-61 auf, wobei die Mittel zur Bestimmung der derzeitigen Phase der Anwendung einen Schaltkreis zum Vergleichen der Ressourcenverwendung der Anwendung mit unterschiedlichen Phasen zugeordneten Referenz-Ressourcenverwendungen umfassen.
-
Beispiel 63 weist den Gegenstand von einem der Beispiele 49-62 auf, wobei der Schaltkreis zum Ausführen der Anwendung einen Schaltkreis zur Ausführung mehrerer Anwendungen mit unterschiedlichen Kernen der Rechenvorrichtung umfasst.