DE102020133273A1 - Leistungsüberwachung und Ressorcenverwaltung - Google Patents

Leistungsüberwachung und Ressorcenverwaltung Download PDF

Info

Publication number
DE102020133273A1
DE102020133273A1 DE102020133273.4A DE102020133273A DE102020133273A1 DE 102020133273 A1 DE102020133273 A1 DE 102020133273A1 DE 102020133273 A DE102020133273 A DE 102020133273A DE 102020133273 A1 DE102020133273 A1 DE 102020133273A1
Authority
DE
Germany
Prior art keywords
application
core
registers
telemetry
workload
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020133273.4A
Other languages
English (en)
Inventor
Patrick G. Kutch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020133273A1 publication Critical patent/DE102020133273A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/046Network management architectures or arrangements comprising network management agents or mobile agents therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/76Admission control; Resource allocation using dynamic resource allocation, e.g. in-call renegotiation requested by the user or requested by the network in response to changing network conditions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • H04L41/0897Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/16Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Hierin beschriebene Beispiele betreffen einen Kern, der eine Anwendung ausführt, wobei die Anwendung ausgelegt ist, Anwendungsleistungsmesswerte in ein oder mehrere Telemetrieregister zu schreiben, die mit dem Kern assoziiert sind. In einigen Beispielen können das eine oder die mehreren Telemetrieregister für die Anwendung designiert sein, um Leistungsmesswerte von der Anwendung zu speichern. In einigen Beispielen kann eine Orchestrierungseinheit das eine oder die mehreren Telemetrieregister lesen, die mit dem Kern assoziiert sind. In einigen Beispielen bewirkt die Orchestrierungseinheit selektiv eine Modifikation einer Ressourcenzuteilung zu der Anwendung auf Grundlage der gelesenen Inhalte des einen oder der mehreren Telemetrieregister. Die Nutzung des Kerns kann 100 % betragen, wohingegen die Leistungsmesswerte einen Auslastungspegel der Anwendung anzeigen können. In einigen Beispielen enthalten die Leistungsmesswerte eines oder mehrere von: einem Anwendungsauslastungspegel, über ein Zeitintervall verarbeiteten Paketen, einer Anzahl von über ein Zeitintervall verlorenen Paketen, einer Anzahl von über ein Zeitintervall verarbeiteten Videoframes, von Schreibvorgängen pro Sekunde, Lesevorgängen pro Sekunde oder einer Anzahl von anstehenden Schreibvorgängen.

Description

  • Der Einsatz von Cloud-Computing und mobilen Vorrichtungen hat eine Nutzung von verdrahteten und drahtlosen Netzwerken erhöht. Bei Rechennetzen und Rechenzentren können Zentralprozessoreinheiten (CPUs) ausgelegt sein, verschiedene Netzwerkverarbeitungsoperationen auszuführen, um eine Netzwerkverarbeitung von Paketen rasch zu handhaben. Beispiele von Netzwerkverarbeitungsoperationen enthalten unter anderem 5G-Basisstationen, 5G-Funktionen auf Benutzerebene (UPF), virtuelle Cable Modem Termination Systems (CMTS), virtuelle Firewalls, Router, Lastenausgleichseinheiten und mehr.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Verarbeitungssystems.
    • 2 zeigt ein beispielhaftes System.
    • 3 zeigt ein Beispiel von Telemetrieregistern für einen Kern.
    • 4 zeigt einen beispielhaften Prozess.
    • 5 zeigt einen beispielhaften Prozess.
    • 6 zeigt ein System.
    • 7 zeigt eine beispielhafte Umgebung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In einigen Fällen wird Netzwerkprotokoll-Verarbeitungssoftware in einer virtualisierten Umgebung ausgeführt, wie einer virtuellen Maschine oder einem Container. Derzeit wird eine Meldung eines Betriebsbefindens der Netzwerkprotokoll-Verarbeitungssoftware unter Verwendung von maßgeschneiderter Software durchgeführt. Beispielsweise können einer Orchestrierungseinheit virtualisierte Umgebungen ein Betriebsbefinden der Netzwerkprotokoll-Verarbeitungssoftware unter Verwendung eines maßgeschneiderten Softwaresockels für eine netzwerkbasierte Kommunikation mit der Orchestrierungseinheit melden. Beispielsweise können Überwachungs- und Zeitreihendatenbanksoftwares InfluxDB, Grafana, Graphite oder Prometheus verwendet werden, um ein Betriebsbefinden wie „in gutem Zustand“ oder „in schlechtem Zustand“ zu melden. Die Orchestrierungseinheit kann Plattformressourcen erhöhen, die der virtuellen Umgebung auf Grundlage davon zugeteilt sind, dass das Betriebsbefinden in schlechtem Zustand ist, oder Plattformressourcen beibehalten oder verringern, die der virtuellen Umgebung auf Grundlage davon zugeteilt sind, dass das Betriebsbefinden in gutem Zustand ist. Das Melden des Betriebsbefindens unter Verwendung eines Netzwerkverbindungssockels kann dazu führen, dass ein Melden von Betriebsbefindensinformationen und ein Reagieren auf Betriebsbefindensinformationen zu langsam erfolgen, da ein Senden von Betriebsbefindens-Telemetrie über ein Netzwerk eine mit einem Durchqueren des Netzwerks verbundene Latenz erfährt. Beispielsweise können Daten, die einer Orchestrierungseinheit von einer virtuellen Umgebung über einen Sockel bereitgestellt werden, eine Verzögerungszeit von 2-3 Sekunden ab der Verfügbarkeit der Betriebsbefindens-Telemetriedaten erleiden, bis die Orchestrierungseinheit die Betriebsbefindens-Telemetriedaten abrufen kann, und dieses Verzögerungsausmaß kann unakzeptabel sein. Bis die Orchestrierungseinheit Plattformressourcen anpasst, die der virtuellen Umgebung verfügbar gemacht werden, kann sich das Betriebsbefinden der virtuellen Umgebung geändert haben, und die zugeteilten Ressourcen passen möglicherweise nicht zu den aktuellen Betriebsbedingungen.
  • In einigen Fällen kann Software, die auf einer Plattform ausgeführt wird, eine höchste erwartete Ressourcennutzung einer Zentralverarbeitungseinheitsfrequenz (CPU-Frequenz) sowie eine Zwischenspeicherzuteilung, Arbeitsspeicherzuteilung und Netzwerkschnittstellenzuteilung zugeteilt werden, um eine Arbeitslast im Schlimmstfallszenario zu handhaben und ein Verletzen von Dienstleistungsbedingungen zu vermeiden, wie zum Beispiel Anforderungen einer Dienstgütevereinbarung (SLA). Beispielsweise kann eine CPU-Nutzung für Prozesse, die mit dem Data Plane Development Kit (DPDK) oder dem Storage Performance Development Kit (SPDK) kompatibel sind und innerhalb einer virtuellen Umgebung ausgeführt werden, auf 100 % festgelegt werden, auch wenn es keine Pakete oder Daten zu verarbeiten gibt. Ein Zuteilen von Ressourcen für ein Schlimmstfallszenario kann jedoch zu einer Unterauslastung von Ressourcen führen und Gesamtbetriebskosten (TCO) der Ressourcen erhöhen, da die Ressourcen verwendet werden könnten, um andere Software auszuführen, oder für andere ertragsgenerierende Einsätze. Ein Übermitteln von Leistung oder Auslastung von Prozessen, die innerhalb einer virtuellen Umgebung laufen, kann eine effizientere Ressourcenreservierung, -zuteilung und -nutzung ermöglichen.
  • Verschiedene Ausführungsformen stellen eine Anwendung zum Melden bestimmter Leistungsmetriken an bestimmte CPU-Register und Ermöglichen bereit, dass ein Dienstsicherungsagent die Register direkt ohne Verwendung einer Netzwerkverbindung liest. Verschiedene Ausführungsformen stellen eine vom Betriebssystem (OS) unabhängige Weise zum Melden von Metriken bereit. In einigen Beispielen sind die Register mit einem bestimmten Kern assoziiert und der Kern kann nur eine Anwendung oder einen Typ von Anwendung ausführen, sodass der Dienstsicherungsagent Metriken eindeutig identifizieren kann, die mit einer bestimmten Anwendung assoziiert sind. Beispielsweise können Anwendungen oder Arbeitslasten verankert werden, sodass sie auf dedizierten, isolierten CPU-Kernen laufen, die keine anderen unterschiedlichen Anwendungen ausführen. Nicht einschränkende Beispiele von Anwendungen können DPDK-basierte Anwendungen, SPDK-basierte Anwendungen, Medientranscodieren (z. B. Codieren eines Datenelements in einem anderen Format) und so weiter enthalten.
  • Der Dienstsicherungsagent kann ausgelegt sein, zu identifizieren, welche Arbeitslast auf einem bestimmten CPU-Kern ausgeführt wird, und Leistungsmetriken aus mit den Leistungsmeldungen durch die Arbeitslast assoziierten Registern zu lesen. Beispielsweise könnte eine Arbeitslast-YAML-Datei oder eine Beschreibung anzeigen, welcher Typ von Metriken der Dienstsicherungsagent liest. Die Orchestrierungseinheit kann auf Grundlage aktueller Leistungsmetriken, vergangener Leistungsmetriken oder einem Trend von Leistungsmetriken für die Arbeitslast ein Entscheidungsschema anwenden, das für die auf dem Kern ausgeführte Arbeitslast spezifisch ist.
  • Der Dienstsicherungsagent kann eine Ressourcenzuteilung zum Kern auf Grundlage der aus den Registern gelesenen Metriken modifizieren. Beispielsweise kann der Dienstsicherungsagent dem Kern, auf dem eine Arbeitslast oder Anwendung ausgeführt wird, Ressourcen zuteilen, indem er eines oder mehrere modifiziert von: einer Betriebsfrequenz des Kerns, einer Arbeitsspeicherzuteilung zum Kern, einer Zwischenspeicherzuteilung zum Kern, einer Netzwerkschnittstellenbandbreitenzuteilung zum Kern und so weiter. Beispielsweise kann der Dienstsicherungsagent auf Grundlage der Metriken für die Arbeitslast oder Anwendung, die auf einem Kern läuft, und relativ zu den Standards für diese Arbeitslast oder Anwendung und zur Richtlinie für eine Ressourcenmodifikation für diese Arbeitslast oder Anwendung, falls die Arbeitslast oder Anwendung Pakete übermäßig verliert oder beinahe null nicht verwendete Zyklen aufgewiesen hat, eine dem Kern zugeteilte Ressource erhöhen oder veranlassen, dass ein oder mehrere Kerne zugeteilt werden, um die Anwendung auszuführen. Beispielsweise kann der Dienstsicherungsagent auf Grundlage der Metriken für die Arbeitslast oder Anwendung, die auf einem Kern läuft, und relativ zu den Standards für diese Arbeitslast oder Anwendung und zur Richtlinie für eine Ressourcenmodifikation für diese Arbeitslast oder Anwendung eine Arbeitslast oder Anwendung zu einem Kern mit höherer Frequenz migrieren, falls der Dienstsicherungsagent ermittelt, dass die Arbeitslast mehr CPU-Verarbeitungsleistung benötigt. Beispielsweise kann der Dienstsicherungsagent auf Grundlage der Metriken für die Arbeitslast oder Anwendung, die auf einem Kern läuft, und relativ zu den Standards für diese Arbeitslast oder Anwendung und zur Richtlinie für eine Ressourcenmodifikation für diese Arbeitslast oder Anwendung, falls die Arbeitslast oder Anwendung als nicht ausgelastet angesehen wird, eine dem Kern zugeteilte Ressource verringern oder die Anwendung veranlassen, zu einem anderen Kern zu migrieren, um Energie zu sparen oder Ressourcen zur Verwendung durch andere Prozesse oder virtuelle Umgebungen freizugeben.
  • 1 ist ein Blockdiagramm eines Verarbeitungssystems 100 nach einer Ausführungsform. Das System 100 kann in einem Einzelprozessor-Desktopsystem, einem Mehrprozessor-Arbeitsplatzsystem, einem Serversystem mit einer großen Anzahl von Prozessoren 102 oder Prozessorkernen 107, einem beliebigen Rack, einer beliebigen Zeile, einem beliebigen Edge-Netzwerk oder Rechenzentrum verwendet werden. In einigen Ausführungsformen ist das System 100 eine Verarbeitungsplattform, die in einen integrierten Ein-Chip-System-Schaltkreis (SoC-Schaltkreis) zur Verwendung in mobilen, tragbaren oder eingebetteten Vorrichtungen, wie zum Beispiel in Internet-der-Dinge(IdD)-Vorrichtungen mit verkabelter oder kabelloser Konnektivität mit einem lokalen oder Weitverkehrsnetz, eingebunden ist.
  • In einigen Ausführungsformen kann das System 100 enthalten, koppeln mit oder integriert sein in: einer serverbasierten Gamingplattform; einer Spielekonsole, einschließlich einer Spiele- und Medienkonsole; einer mobilen Gamingkonsole, einer tragbaren Spielekonsole oder einer Online-Spielekonsole. In einigen Ausführungsformen ist das System 100 ein Teil eines Mobiltelefons, Smartphones, einer Tablet-Rechenvorrichtung oder mobilen, mit dem Internet verbundenen Vorrichtung, wie eines Laptops mit geringer interner Speicherkapazität. Das Verarbeitungssystem 100 kann auch eine tragbare Vorrichtung enthalten, an eine solche koppeln oder in eine solche integriert sein, wie eine tragbare Smartwatch-Vorrichtung; Smart-Brillen oder Kleidung, die mit Funktionen erweiterter Realität (AR) oder virtueller Realität (VR) erweitert ist bzw. sind, um visuelle, Audio- oder taktile Ausgaben bereitzustellen, um reale visuelle, Audio- oder taktile Erfahrungen zu ergänzen oder anderweitig Text, Audio, Grafik, Video, holografische Bilder oder holografisches Video oder eine taktile Rückmeldung bereitzustellen; eine andere Vorrichtung für erweiterte Realität (AR); oder eine andere Vorrichtung für virtuelle Realität (VR). In einigen Ausführungsformen enthält das Verarbeitungssystem 100 einen Fernseher oder eine Set-Top-Box-Vorrichtung oder ist Teil dieses bzw. dieser. In einigen Ausführungsformen kann das System 100 enthalten, koppeln mit oder integriert sein in ein selbstfahrendes Fahrzeug, wie einem Bus, Traktoranhänger, Auto, Motorrad oder elektrisch angetriebenen Fahrrad, einem Flugzeug oder Gleitflieger (oder einer beliebigen Kombination daraus). Das selbstfahrende Fahrzeug kann das System 100 verwenden, um die um das Fahrzeug herum erfasste Umgebung zu verarbeiten.
  • In einigen Ausführungsformen enthalten der eine oder die mehreren Prozessoren 102 jeweils einen oder mehrere Prozessorkerne 107, um Anweisungen zu verarbeiten, die bei Ausführung Operationen für System- oder Benutzersoftware durchführen. In einigen Ausführungsformen ist mindestens einer des einen oder der mehreren Prozessorkerne 107 ausgelegt, einen bestimmten Anweisungssatz 109 zu verarbeiten. In einigen Ausführungsformen kann der Anweisungssatz 109 ein Rechnen mit komplexem Anweisungssatz (CISC), ein Rechnen mit reduziertem Anweisungssatz (RISC) oder ein Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. Ein oder mehrere Prozessorkerne 107 können einen anderen Anweisungssatz 109 verarbeiten, der Anweisungen enthalten kann, um die Emulation anderer Anweisungssätze zu ermöglichen. Der Prozessorkern 107 kann auch andere Verarbeitungsvorrichtungen wie einen digitalen Signalprozessor (DSP) enthalten.
  • In einigen Ausführungsformen enthält der Prozessor 102 einen Zwischenspeicher 104. Der Zwischenspeicher 104 kann Level-0-, Level-1- oder Level-2-Zwischenspeicher enthalten. Abhängig von der Architektur kann der Prozessor 102 einen einzelnen internen Zwischenspeicher oder mehrere Ebenen von internen Zwischenspeichern aufweisen. In einigen Ausführungsformen wird der Zwischenspeicher unter verschiedenen Komponenten des Prozessors 102 gemeinsam genutzt. In einigen Ausführungsformen verwendet der Prozessor 102 auch einen externen Zwischenspeicher (z. B. einen Level-3(L3)-Zwischenspeicher oder einen Last-Level-Zwischenspeicher (LLC)) (nicht gezeigt), der von den Prozessorkernen 107 unter Verwendung bekannter Zwischenspeicherkohärenztechniken gemeinsam genutzt werden kann. Eine Registerdatei 106 kann zusätzlich im Prozessor 102 enthalten sein und kann unterschiedliche Arten von Registern zum Speichern unterschiedlicher Datentypen enthalten (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister). Einige Register können Universalregister sein, während andere Register für das Design des Prozessors 102 spezifisch sein können. In einigen Beispielen können Register Registerbänke enthalten.
  • In einigen Beispielen kann die Registerdatei 106 modellspezifische Register (MSR) enthalten. Beispielsweise können das modellspezifische Register (MSR) und/oder die Registerdatei 106 Steuerregister enthalten, die zur Nachverfolgung von Programmausführung, Umschalten von Rechenmerkmalen und/oder Leistungsüberwachung verwendet werden. Das MSR kann eines oder mehrere enthalten von: einer Steuerung und einem Status eines Arbeitsspeicherreihungspuffers (MOB); Seitenfehlercodes; Leeren von Einträgen in Seitenverzeichniszwischenspeicher und Übersetzungspuffer (TLB); Steuerung der verschiedenen Zwischenspeicher in der Zwischenspeicherhierarchie des Mikroprozessors, wie ein Deaktivieren von Abschnitten oder der Gesamtheit eines Zwischenspeichers, Abschalten von Energie von Abschnitten oder der Gesamtheit eines Zwischenspeichers und Ungültigmachen von Zwischenspeichertags; Mikrocode-Korrekturmechanismussteuerung; Debugsteuerung; Prozessorbussteuerung; Hardwaredaten- und Anweisungs-Vorabrufsteuerung; Energieverwaltungssteuerung, wie Standby- und Aufwachsteuerung, Zustandsübergänge wie von Advanced-Configuration-and-Power-Interface(ACPI)-Industrienormen definiert (z. B. P-Zustände und C-Zustände) und Deaktivieren von Taktgebern oder Energie zu verschiedenen funktionalen Blöcken; Steuerung und Zustand von Anweisungszusammenführung; Fehlerkorrekturcode(ECC)-Arbeitsspeicher-Fehlerstatus; Busparitäts-Fehlerstatus; Steuerung und Zustand von Wärmemanagement; Steuerung und Zustand eines Dienstprozessors; Kommunikation zwischen Kernen; Kommunikation zwischen Chips; Funktionen in Verbindung mit Sicherungen des Mikroprozessors; Spannungsidenifikatorsteuerung eines Spannungsreglermoduls; Phasenregelkreis(PLL)-Steuerung; Zwischenspeicher-Snoop-Steuerung; Steuerung und Zustand eines Write-Combine-Puffers; Übertaktungs-Merkmalssteuerung; Steuerung und Zustand einer Unterbrechungssteuerung; Steuerung und Zustand eines Temperatursensors; Aktivieren und Deaktivieren verschiedener Merkmale, wie Verschlüsselung/Entschlüsselung, MSR-Passwortschutz, Stellen paralleler Anforderungen an den L2-Zwischenspeicher und den Prozessorbus, individueller Verzweigungsvorhersagemerkmale, Anweisungszusammenführung, Zeitüberschreitung bei Mikroanweisungen, Leistungszähler, Speicherweiterleitung und spekulatives Durchlaufen von Tabellen; Ladewarteschlangengröße; Zwischenspeichergröße; Steuerung, wie Zugriffe auf nicht definierte MSRs gehandhabt werden; Mehrkernkonfiguration; Konfiguration eines Zwischenspeichers (z. B. Abwählen einer Spalte mit Bitzellen in einem Zwischenspeicher und Ersetzen der Spalte mit einer redundanten Spalte mit Bitzellen), Arbeitstakte und/oder Taktverhältnis von Phasenregelkreisen (PLLs) des Mikroprozessors und dem Festlegen von Spannungsidentifikations(VID)-Pins, die eine Spannungsquelle zum Mikroprozessor steuern.
  • In einigen Ausführungsformen ist bzw. sind ein oder mehrere Prozessor(en) 102 an einen oder mehrere Schnittstellenbusse 110 gekoppelt, um Kommunikationssignale wie Adressen, Daten oder Steuersignale zwischen dem Prozessor 102 und anderen Komponenten im System 100 zu übertragen. Der Schnittstellenbus 110 kann in einigen Ausführungsformen ein Prozessorbus, zum Beispiel eine Version des Direct-Media-Interface(DMI)-Busses sein. Prozessorbusse sind jedoch nicht auf den DMI-Bus beschränkt und können einen oder mehrere Peripheral-Component-Interconnect-Busse (z. B. PCI, PCI Express), Arbeitsspeicherbusse oder andere Arten von Schnittstellenbussen enthalten. In einigen Ausführungsformen enthält bzw. enthalten der Prozessor bzw. die Prozessoren 102 eine integrierte Arbeitsspeichersteuerung 116 und einen Plattformsteuerungshub 130. Die Arbeitsspeichersteuerung 116 ermöglicht eine Kommunikation zwischen einer Arbeitsspeichervorrichtung und anderen Komponenten des Systems 100, während der Plattformsteuerungshub (PCH) 130 Verbindungen mit E/A-Vorrichtungen über einen lokalen E/A-Bus bereitstellt.
  • Die Arbeitsspeichervorrichtung 120 kann eine dynamische Arbeitsspeichervorrichtung mit wahlfreiem Zugriff (DRAM-Vorrichtung), eine statische Arbeitsspeichervorrichtung mit wahlfreiem Zugriff (SRAM-Vorrichtung), eine Flashspeichervorrichtung, eine Phasenwechselspeichervorrichtung oder eine andere Arbeitsspeichervorrichtung mit geeigneter Leistung sein, um als Prozessarbeitsspeicher zu dienen. In einigen Ausführungsformen kann die Arbeitsspeichervorrichtung 120 als Systemarbeitsspeicher für das System 100 arbeiten, um Daten 122 und Anweisungen 121 zur Verwendung zu speichern, wenn der eine oder die mehreren Prozessoren 102 eine Anwendung oder einen Prozess ausführen. Die Arbeitsspeichersteuerung 116 koppelt auch an einen optionalen externen Grafikprozessor 118, der mit dem einen oder den mehreren Grafikprozessoren 108 in den Prozessoren 102 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In einigen Ausführungsformen können Grafik-, Medien- oder Rechenoperationen durch einen Beschleuniger 112 unterstützt werden, der ein Coprozessor ist, der ausgelegt sein kann, einen Sondersatz von Grafik-, Medien- oder Rechenoperationen durchzuführen. In einigen Ausführungsformen ist der Beschleuniger 112 zum Beispiel ein Matrixmultiplikations-Beschleuniger, der verwendet wird, um maschinelles Lernen oder Rechenoperationen zu optimieren. In einigen Ausführungsformen enthält der Beschleuniger 112 einen Raytracing-Beschleuniger, der verwendet werden kann, um zusammen mit dem Grafikprozessor 108 Raytracing-Operationen durchzuführen. In einigen Ausführungsformen kann ein externer Beschleuniger 119 anstelle des Beschleunigers 112 oder zusammen mit diesem verwendet werden.
  • In einigen Ausführungsformen kann eine Anzeigevorrichtung 111 an den bzw. die Prozessor(en) 102 anbinden. Die Anzeigevorrichtung 111 kann eine oder mehrere von einer internen Anzeigevorrichtung, wie zum Beispiel in einer mobilen elektronischen Vorrichtung oder einer Laptopvorrichtung, oder eine externe Anzeigevorrichtung sein, die über eine Anzeigeschnittstelle (z. B. DisplayPort, eingebetteter DisplayPort, MIPI, HDMI usw.) angebunden ist. In einigen Ausführungsformen kann die Anzeigevorrichtung 111 eine am Kopf montierte Anzeige (HMD) wie eine stereoskopische Anzeigevorrichtung zur Verwendung in Anwendungen mit virtueller Realität (VR) oder Anwendungen mit erweiterter Realität (AR) sein.
  • In einigen Ausführungsformen ermöglicht der Plattformsteuerungshub 130, dass Peripherieeinrichtungen über einen Hochgeschwindigkeits-E/A-Bus an die Arbeitsspeichervorrichtung 120 und den Prozessor 102 anbinden. Die E/A-Peripherieeinrichtungen enthalten unter anderem eine Audiosteuerung 146, eine Netzwerksteuerung 134, eine Firmwareschnittstelle 128, einen drahtlosen Sende-Empfänger 126, Berührungssensoren 125, eine Datenspeichervorrichtung 124 (z. B. nichtflüchtigen Arbeitsspeicher, flüchtigen Arbeitsspeicher, ein Festplattenlaufwerk, Flashspeicher, NAND, 3D NAND, 3D XPoint usw.). Die Datenspeichervorrichtung 124 kann über eine Speicherschnittstelle (z. B. SATA) oder über einen peripheren Bus, wie einen Peripheral-Component-Interconnect-Bus (z. B. PCI, PCI Express) verbunden sein. Die Berührungssensoren 125 können Berührungsbildschirmsensoren, Drucksensoren oder Fingerabdrucksensoren enthalten. Der drahtlose Sende-Empfänger 126 kann ein WiFi-Sende-Empfänger, ein Bluetooth-Sende-Empfänger oder ein Sende-Empfänger für mobile Netzwerke sein, wie ein 3G-, 4G-, 5G- oder Long-Term-Evolution(LTE)-Sende-Empfänger. Die Firmwareschnittstelle 128 ermöglicht eine Kommunikation mit Systemfirmware und kann beispielsweise eine Unified Extensible Firmware Interface (UEFI) sein. Die Netzwerksteuerung 134 kann eine Netzwerkverbindung mit einem verdrahteten Netzwerk ermöglichen. In einigen Ausführungsformen koppelt eine Hochleistungsnetzwerksteuerung (nicht gezeigt) an den Schnittstellenbus 110. Die Audiosteuerung 146 ist in einigen Ausführungsformen eine hochauflösende Mehrkanal-Audiosteuerung. In einigen Ausführungsformen enthält das System 100 eine optionale Alt-E/A-Steuerung 140, um Alt-Vorrichtungen (z. B. Personal System 2 (PS/2)) an das System zu koppeln. Der Plattformsteuerungshub 130 kann auch an eine oder mehrere Universal-Serial-Bus(USB)-Steuerungen 142 anbinden, um Eingabevorrichtungen wie Tastatur- und Mauskombinationen 143, eine Kamera 144 oder andere USB-Eingabevorrichtungen anzubinden.
  • Es ist klar, dass das gezeigte System 100 beispielhaft und nicht einschränkend ist, da andere Arten von Datenverarbeitungssystemen, die unterschiedlich konfiguriert sind, ebenfalls verwendet werden können. Eine Instanz der Arbeitsspeichersteuerung 116 und des Plattformsteuerungshubs 130 kann zum Beispiel in einen diskreten externen Grafikprozessor, wie den externen Grafikprozessor 118 integriert sein. In einigen Ausführungsformen können der Plattformsteuerungshub 130 und/oder die Arbeitsspeichersteuerung 116 zum einen oder zu den mehreren Prozessoren 102 extern sein. Das System 100 kann zum Beispiel eine externe Arbeitsspeichersteuerung 116 und einen externen Plattformsteuerungshub 130 enthalten, die als ein Arbeitsspeichersteuerungshub und ein peripherer Steuerungshub innerhalb eines Systemchipsatzes konfiguriert sein können, der in Kommunikation mit dem bzw. den Prozessor(en) 102 steht.
  • Beispielsweise können Leiterplatten („Schlitten“) verwendet werden, auf denen Komponenten wie CPUs, Arbeitsspeicher und andere Komponenten platziert sind und die für erhöhte Wärmeleistung konstruiert sind. In einigen Beispielen befinden sich Verarbeitungskomponenten wie die Prozessoren auf einer Oberseite eines Schlittens, wohingegen naher Arbeitsspeicher, wie doppelreihige Arbeitsspeichermodule (DIMMs), auf einer Unterseite des Schlittens angeordnet ist. Als Ergebnis des verbesserten Luftstroms, der von diesem Design geboten wird, können die Komponenten mit höheren Frequenzen und Energiepegeln als in typischen Systemen arbeiten, wodurch die Leistung verbessert wird. Darüber hinaus sind die Schlitten ausgelegt, blind mit Energie- und Datenkommunikationskabeln in einem Rack zusammenzupassen, wodurch ihre Fähigkeit verbessert wird, schnell entfernt, nachgerüstet, neu installiert und/oder ausgetauscht zu werden. Gleichermaßen sind individuelle Komponenten, die sich auf den Schlitten befinden, wie Prozessoren, Beschleuniger, Arbeitsspeicher und Datenspeicherlaufwerke, ausgelegt, aufgrund ihrer erhöhten Beabstandung voneinander leicht hochgerüstet zu werden. In der veranschaulichenden Ausführungsform enthalten die Komponenten zusätzlich Hardwarebestätigungsmerkmale, um ihre Echtheit zu beweisen.
  • Ein Rechenzentrum kann eine einzelne Netzwerkarchitektur („Fabric“) einsetzen, die mehrere andere Netzwerkarchitekturen einschließlich Ethernet und Omni-Path unterstützt. Die Schlitten können über Lichtwellenleiter, die eine höhere Bandbreite und geringere Latenz als übliche verdrillte Leitungskabel (z. B. Kategorie 5, Kategorie 5e, Kategorie 6 usw.) bieten, an Switches gekoppelt sein. Aufgrund der hohen Bandbreite, Zwischenverbindungen mit geringer Latenz und Netzwerkarchitektur kann das Rechenzentrum in Verwendung Ressourcen wie Arbeitsspeicher, Beschleuniger (z. B. GPUs, Grafikbeschleuniger, FPGAs, ASICs, neuronale Netze und/oder Beschleuniger mit künstlicher Intelligenz usw.) und Datenspeicherlaufwerke, die physisch getrennt sind, zusammenlegen und diese Rechenressourcen (z. B. Prozessoren) bei Bedarf bereitstellen, was den Rechenressourcen ermöglicht, auf die zusammengelegten Ressourcen zuzugreifen, als ob sie lokal wären.
  • Eine Energieversorgung oder -quelle kann das System 100 oder eine beliebige Komponente oder ein beliebiges System, die bzw. das hierin beschrieben ist, mit Spannung und/oder Strom versorgen. In einem Beispiel enthält die Energieversorgung einen Wechselstrom-auf-Gleichstrom(AC-DC)-Adapter, der in eine Wandsteckdose zu stecken ist. Eine derartige Wechselstromversorgung kann eine Energiequelle erneuerbarer Energie (z. B. Sonnenenergie) sein. In einem Beispiel enthält die Energiequelle eine Gleichstromquelle, wie einen externen AC-DC-Wandler. In einem Beispiel enthält die Energieversorgung oder die Energiequelle drahtlose Ladehardware, um über eine Nähe zu einem Ladefeld aufzuladen. In einem Beispiel kann die Energiequelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Energieversorgung, eine Solar-Energieversorgung oder eine Brennstoffzellenquelle enthalten.
  • Ein beliebiger Prozessor oder Kern kann eine virtualisierte Ausführungsumgebung ausführen. Eine virtualisierte Ausführungsumgebung (VEE) kann zumindest eine virtuelle Maschine oder einen Container enthalten. VEEs können in Bare-Metal-Umgebungen (z. B. mit einzelnem Mandanten) oder gehosteten Umgebungen (z. B. mit mehreren Mandanten) ausgeführt werden. Eine virtuelle Maschine (VM) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch eine Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine Einstellungsdatei für nichtflüchtigen Arbeitsspeicher mit wahlfreiem Zugriff (NVRAM) und die Protokolldatei definiert sein und wird von den physischen Ressourcen einer Hostrechenplattform gestützt. Eine VM kann ein OS oder eine Anwendungsumgebung sein, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endbenutzer hat das gleiche Erlebnis auf einer virtuellen Maschine, wie er auf dedizierter Hardware haben würde. Spezialisierte Software, als Hypervisor bezeichnet, emuliert den PC-Client oder die CPU des Servers, Arbeitsspeicher, Festplatte, Netzwerk und andere Hardwareressourcen vollständig, was virtuellen Maschinen ermöglicht, die Ressourcen gemeinsam zu nutzen. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, was virtuellen Maschinen ermöglicht, Linux®-, FreeBSD-, VMWare- oder Windows® Server-Betriebssysteme auf demselben zugrunde liegenden physischen Host auszuführen.
  • Ein Container kann ein Softwarepaket von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen von einer Rechenumgebung zu einer anderen zuverlässig laufen. Container können ein Betriebssystem gemeinsam nutzen, das auf der Serverplattform installiert ist, und als isolierte Prozesse laufen. Ein Container kann ein Softwarepaket sein, das alles beinhaltet, das die Software benötigt, um zu laufen, wie Systemwerkzeuge, Bibliotheken und Einstellungen. Container werden nicht wie herkömmliche Softwareprogramme installiert, was ihnen ermöglicht, von der anderen Software und dem Betriebssystem selbst isoliert zu sein. Die Isolation kann einen erlaubten Zugriff auf einen Bereich mit adressierbarem Arbeitsspeicher oder Speicher durch einen bestimmten Container, aber nicht durch einen anderen Container enthalten. Die isolierte Natur von Containern bietet mehrere Vorteile. Erstens läuft die Software in einem Container in unterschiedlichen Umgebungen auf die gleiche Weise. Ein Container, der zum Beispiel PHP und MySQL enthält, kann auf sowohl einem Linux-Computer als auch einer Windows®-Maschine identisch laufen. Zweitens bieten Container zusätzliche Sicherheit, da die Software das Hostbetriebssystem nicht beeinflusst. Während eine installierte Anwendung Systemeinstellungen ändern kann und Ressourcen modifizieren kann, wie die Windows®-Registrierungsdatenbank, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.
  • Ein virtualisierter Infrastrukturmanager (VIM) oder Hypervisor (nicht gezeigt) können den Lebenszyklus einer VEE (z. B. Erzeugung, Wartung und Entfernung von mit einer oder mehreren physischen Ressourcen assoziierten VEEs) verwalten, VEE-Instanzen nachverfolgen, eine Leistung, Fehler und Sicherheit von VEE-Instanzen und zugehörigen physischen Ressourcen nachverfolgen und VEE-Instanzen und zugehörige physische Ressourcen gegenüber anderen Verwaltungssystemen offenbaren.
  • Beispielsweise kann eine Anwendung, eine Arbeitslast oder Software innerhalb einer VEE in einer Bare-Metal- oder Mehrmandantenumgebung ausgeführt werden. In einigen Ausführungsformen wird die Anwendung, Arbeitslast oder Software auf einem oder mehreren dedizierten Kernen ausgeführt und der Kern führt keine andere Anwendung aus, aber kann mehrere Instanzen einer Anwendung ausführen. Ein CPU-Kern kann eine Anzahl von Telemetrieregistern (TMR) offenbaren, auf die Software oder eine VEE zugreifen kann. Beispielsweise kann die Registerdatei 106 Telemetrieregister (TMR) enthalten. In einigen Ausführungsformen kann eine Anwendung oder andere Software, die auf einem bestimmten Kern ausgeführt wird, bestimmte Leistungsmetriken in ein oder mehrere bestimmte TMRs in der Registerdatei 106 schreiben. Die Software kann dann bestimmte Leistungs- oder Telemetrieinformationen in jedes der TMR schreiben. In einigen Beispielen können die Telemetrieregister Hardwareregister sein. In einigen Beispielen können Telemetrieregister ausschließlich zugeteilt sein, um Leistungs- oder Telemetrieinformationen zu speichern. In einigen Beispielen können Telemetrieregister im (z. B. flüchtigem oder nicht flüchtigem) Arbeitsspeicher zugeteilt sein.
  • In einigen Beispielen kann bzw. können ein oder mehrere TMRs einer Anwendung zugeteilt sein und ein Kern kann dediziert sein, um eine Anwendung auszuführen, sodass ein Dienstsicherungsagent die Leistungs- oder Telemetrieinformationen der Anwendung ermitteln kann, die Inhalten eines TMR entsprechen. In einigen Beispielen dürfen Telemetrieinformationen, die von einer Anwendung in ein oder mehrere bestimmte Register geschrieben werden, nicht mit von einer anderen Anwendung geschriebenen Telemetrieinformationen kollidieren, da nur eine Anwendung auf dem Kern läuft. In einigen Beispielen ist nur einer Anwendung, die auf einem Kern läuft, erlaubt, in ein oder mehrere bestimmte TMRs eines Kerns zu schreiben.
  • Der Dienstsicherungsagent kann ausgelegt sein, auf Grundlage eines bestimmten Registers, in den Inhalte geschrieben sind, Inhalte zu erkennen, die die Telemetrieinformationen übermitteln (z. B. verlorene Pakete pro Zeitintervall, Auslastungspegel, Paketverarbeitungsaktivität (z. B. pro Zeitintervall verarbeitete Pakete), pro Zeitintervall verarbeitete Videoframes und so weiter). Ein Abbilden eines Telemetrieinformationstyps oder von Telemetrieinformationsinhalten auf einen bestimmten TMR kann über eine Beschreibung der Arbeitslast (z. B. in Attributen für eine einsetzbare Kubernetes-Einheit (z. B. einen Pod)) übermittelt werden. Der Dienstsicherungsagent kann bestimmte Anwendungen oder Software bestimmten Kernen zur Ausführung fest zuweisen und den Typ von entsprechenden Telemetrieinformationen für die Anwendung auf Grundlage davon identifizieren, welches bestimmte TMR gelesen wurde, und auf Grundlage der Anwendung, der erlaubt ist, in das TMR zu schreiben. Der Dienstsicherungsagent kann ausgelegt sein, ein bestimmtes Ressourcenzuteilungsschema für eine bestimmte Anwendung anzuwenden, wobei das Schema auf Grundlage von gemessenen Telemetrieinformationen angibt, wie der Dienstsicherungsagent die der Anwendung zugeteilten Ressourcen zu modifizieren hat. Beispielsweise kann der Dienstsicherungsagent Informationen von einer Leistungsüberwachungseinheit (PMU) empfangen, die ein Verzweigungs-Teffer-/Verfehlungs-Verhältnis übermittelt, das eine Auslastung durch die Verarbeitung von empfangenen Paketen oder einen Prozessorstillstand anzeigt.
  • Dem Dienstsicherungsagenten können Rechte (z. B. vertrauenswürdige Roots (RoT) oder Rechte auf Kernelebene) gewährt werden, sodass der Dienstsicherungsagent Ressourceneinstellungen ändern kann, um sie den Bedürfnissen der Anwendungsarbeitslast anzupassen. Um Energie-, Frequenz-, Arbeitsspeicherzuteilungs- oder Zwischenspeichereinstellungen des Kerns bzw. der Kerne zu modifizieren, kann der Dienstsicherungsagent das OS anweisen, diese Einstellungen durchzuführen, oder mit hinreichenden Rechten kann der Dienstsicherungsagent in bestimmte Registerdateien schreiben, um Betriebsparameter festzulegen.
  • 2 zeigt ein beispielhaftes System. Das System kann verwendet werden, um Leistungstelemetrie durch Schreiben der Leistungstelemetrie in ein oder mehrere Register gemeinsam zu nutzen, und das System kann eine Ressourcenzuteilung auf Grundlage der Leistungstelemetriewerte oder -indikatoren konfigurieren. Der Arbeitsspeicher 200 kann Anweisungen zur Ausführung in einer Anwendung oder einer innerhalb einer VEE durch beliebige der Kerne 202-0 bis 202-N ausgeführten Anwendung speichern, wobei N eine ganze Zahl und größer als oder gleich 3 ist. Eine beliebige Anzahl von Kernen kann verwendet werden, einschließlich eines oder zweier Kerne. Eine Anwendung, die auf den Kernen 202-0 bis 202-N ausgeführt wird, kann in jeweilige Register 204-0 bis 204-N schreiben oder aus diesen lesen. In einigen Beispielen wird eine einzige Anwendung auf einem Kern ausgeführt und eine andere Anweisung wird nicht auf dem Kern ausgeführt. Beispielsweise, falls die Anwendung innerhalb einer VEE ausgeführt wird, wird nur eine einzige Instanz der Anwendung innerhalb einer VEE auf einem Kern ausgeführt. In einigen Beispielen ist eine Anwendung ausgelegt, Anwendungstelemetrieinformationen in ein oder mehrere bestimmte Register zu schreiben und keine andere Anwendung kann in diese Register schreiben. Für jeden der Kerne 202-0 bis 202-N können die jeweiligen Register 204-0 bis 204-N Telemetrieregister enthalten, die zugeteilt sind, Anwendungstelemetrie wie eine Bank von Registern tmr0 bis tmr15 zu speichern, obwohl eine beliebige Anzahl von Telemetrieregistern unterstützt werden kann. In einigen Beispielen weisen einige Kerne keine assoziierten Telemetrieregister auf.
  • Beispielsweise, wie in 2 gezeigt, können Instanzen von Anwendung 0, die auf den Kernen 202-0 und 202-1 läuft, ausgelegt sein, eine Anwendungstelemetrie in dieselben bestimmten Register unter den Registern 204-0 und 204-1 oder eines der Register 204-0 und 204-1 zu schreiben. Wie gezeigt kann Anwendung 1, die innerhalb einer VEE auf dem Kern 202-2 ausgeführt wird, ausgelegt sein, Anwendungstelemetrieinformationen in bestimmte Register in den Registern 204-2 zu schreiben. Wie gezeigt kann Anwendung N, die auf dem Kern 202-N ausgeführt wird, ausgelegt sein, Anwendungstelemetrie in bestimmte Register in den Registern 204-N zu schreiben. Beispielsweise, für eine in einer VEE laufende, DPDK-basierte VNF-Anwendung, kann die VNF-Anwendung Telemetrie in Telemetrieregister eines Kerns schreiben, dem die DPDK-Anwendung zugewiesen ist.
  • In einigen Beispielen ist eine Anwendung oder Software ausgelegt, in bestimmte Register in eine Registerdatei oder Bank zu schreiben. Anwendungsentwickler können die Anwendung oder Software codieren, um Telemetrieinformationen in ein oder mehrere Register zu schreiben (falls das gemeinsame Telemetrienutzungsmerkmal aktiviert ist), und zu codieren, welche Telemetrieinformationen in jedes Register zu schreiben sind. Beispielsweise kann eine Anwendung oder Software von einer CPU oder einem Betriebssystem abfragen, um Fähigkeiten zu lernen, wie unter anderem CPU-Fähigkeiten wie gemeinsame Telemetrienutzungsfähigkeiten über Telemetrieregister, Unterstützung für SIMD-Streamingerweiterungen (SSE), die Art von Gleitkommaunterstützung und so weiter. Für DPDK oder SPDK können Bibliotheken verfügbar sein, um eine Anwendung zu konfigurieren, Telemetrieinformationen in bestimmte Register zu schreiben, oder dass eine Orchestrierungseinheit Telemetrieinformationen aus bestimmten Registern liest. Eine Telemetriemeldungs-Anwendungsprogrammierschnittstelle (API) (die z. B. in C++ geschrieben ist) kann Entwicklern zur Verwendung zur Verfügung gestellt werden und ein Anwendungscompiler (z. B. zur Compilierzeit oder zur Laufzeit) kann eine Maschinensprachversion der Anwendung generieren, die ausgelegt ist, Telemetrieinformationen in ein oder mehrere Telemetrieregister in eine Registerdatei oder - bank zu schreiben.
  • Beispielsweise kann der folgende Pseudocode Anweisungen repräsentieren, die eine Anwendung konfigurieren, Anwendungstelemetrie in ein Telemetrieregister 0, einen Wert 80 in eine Registerdatei für einen Kern zu schreiben, den die Anwendung ausführt.
    mov tmr0, 80
  • Der Wert 80 kann einen Auslastungspegel der Anwendung darstellen.
  • Eine Anwendung kann Anwendungstelemetrie in bestimmte Telemetrieregister auf dem Kern bzw. den Kernen, auf denen die Anwendung ausgeführt wird, in einem Zeitintervall oder für andere Auslöser schreiben, wie auf Pro-Schleifen- oder Pro-Intervall-Basis. Falls es für eine bestimmte Telemetriekomponente nichts zu melden gibt, dann kann eine „0“ oder ein anderer bestimmter Wert, der der Arbeitslast bekannt ist, in ein Register geschrieben werden und die Orchestrierungseinheit 206 kann identifizieren, dass es keine neuen oder anderen gemeldeten Telemetrieinformationen gibt. In Fällen, in denen keine neuen oder anderen Telemetrieinformationen gemeldet werden, kann die Orchestrierungseinheit 206 wählen, keine Ermittlung durchzuführen, ob eine Ressourcenzuteilung zum Kern oder zur Anwendung anzupassen ist, und dadurch Energie oder CPU-Zyklen sparen.
  • Beispielsweise kann eine Anwendung, Arbeitslast oder Software eine Paketverarbeitung auf Grundlage eines oder mehrerer von Data Plane Development Kit (DPDK), Storage Performance Development Kit (SPDK), OpenDataPlane, Network Function Virtualization (NFV), Software-Defined Networking (SDN), Evolved Packet Core (EPC) oder 5G-Netzwerksegmentierung durchführen. Einige beispielhafte Implementierungen von NFV sind in Spezifikationen des Europäischen Instituts für Telekommunikationsnormen (ETSI) oder Open Source NFV Management and Orchestration (MANO) von ETSls Gruppe Open Source Mano (OSM) beschrieben. Eine virtuelle Netzwerkfunktion (VNF) kann eine Dienstkette oder Folge von virtualisierten Aufgaben, die auf generischer konfigurierbarer Hardware wie Firewalls ausgeführt werden, Domain Name System (DNS), Zwischenspeichern oder Netzwerkadressenübersetzung (NAT) enthalten und können in VEEs laufen. VNFs können zusammen als eine Dienstkette verknüpft sein. In einigen Beispielen ist EPC eine 3GPP-spezifizierte Kernarchitektur zumindest für Long-Term-Evolution(LTE)-Zugriff. 5G-Netzwerksegmentierung kann ein Multiplexing von virtualisierten und unabhängigen logischen Netzwerken auf derselben physischen Netzwerkinfrastruktur bereitstellen. Einige Anwendungen können eine Videoverarbeitung oder Medientranscodierung durchführen (z. B. ein Ändern der Codierung von Audio-, Bild- oder Videodateien).
  • Die Orchestrierungseinheit 206 kann bestimmte Register lesen, die mit jedem Kern assoziiert sind, und die Register speichern Anwendungstelemetrie. Die Orchestrierungseinheit 206 kann zum Beispiel periodisch nach Aktualisierungen eines oder mehrerer Telemetrieregister für einen oder mehrere Kerne abfragen. Beispielsweise kann die Orchestrierungseinheit 206 ausgelegt sein, aus einem oder mehreren bestimmten Registern unter Verwendung von Pseudocode wie in den Beispielen unten zu lesen, um einen Inhalt eines Telemetrieregisters eines bestimmten Kerns Nummer 34 zu bewegen, zu kopieren oder zu lesen, und einen Inhalt eines Telemetrieregisters Nummer 5 zu lesen und den Inhalt in ein erweitertes Akkumulatorregister (EAX) zu schreiben.
    mov eax, 34 // TMR von Kern Nr. 34 lesen
    rtmr eax, 5 // Inhalt von TMR5 (für Kern 34) erlangen und in EAX stellen
  • Die Orchestrierungseinheit 206 kann unabhängig von einem Typ von eingesetztem Betriebssystem (OS) arbeiten. Die Orchestrierungseinheit 206 kann sicher auf einen Registerinhalt zugreifen, der nicht über ein Netzwerk in einem Paket übertragen wird. Die Orchestrierungseinheit 206 kann auf einer selben CPU oder einer anderen CPU wie die eines beliebigen Registers, das gelesen oder aktualisiert wird, demselben Server oder einem anderen Server als der eines beliebigen Registers, das gelesen oder aktualisiert wird, demselben Rack oder einem anderen Rack als das eines beliebigen Registers, das gelesen oder aktualisiert wird, derselben Zeile von Racks oder einer anderen Zeile von Racks als der eines beliebigen Registers, das gelesen oder aktualisiert wird, oder demselben Rechenzentrum oder einem anderen Rechenzentrum als das eines beliebigen Registers arbeiten, das gelesen oder aktualisiert wird.
  • Die Orchestrierungseinheit 206 kann Anwendungstelemetrie einsetzen, um zu ermitteln, ob Änderungen an einer Ressourcenzuteilung zu einer Anwendung zu erwirken sind. Für eine Anwendung, die auf einem Kern läuft, können Änderungen ein Ändern einer Zwischenspeicherzuteilung zum Kern, einem Anpassen einer CPU-Frequenz des Kerns, ein Ändern einer Arbeitsspeicherzuteilung zum Kern, ein Ändern einer Netzwerkschnittstellenbandbreite, die dem Kern zugewiesen ist, und so weiter enthalten. Die Orchestrierungseinheit 206 kann ausgelegt sein, Telemetrieinformationen einer Anwendung zu korrelieren, um eine Ressourcenzuteilung anzupassen, um eine Leistung oder Stabilität der Anwendung zu verbessern oder eine Energie des Kerns zu reduzieren. Beispielsweise kann die Orchestrierungseinheit 206 die Anwendung zu einem langsameren CPU-Kern bewegen, da die Anwendung nicht aktiv die Gesamtheit des Kerns nutzt, dem sie aktuell zugewiesen ist, und den früheren Kern in einen Ruhe- oder weniger Energie verbrauchenden Zustand oder einen Zustand mit geringerer Betriebsfrequenz platzieren. In einigen Beispielen, falls die Anwendung eine niedrige Kernnutzung zeigt, kann die Orchestrierungseinheit 206 bewirken, dass die Anwendung in einer VEE mit einer oder mehreren anderen Anwendungen auf einem Kern ausgeführt wird.
  • Die Orchestrierungseinheit 206 kann Kernbetriebsparameter durch Anfordern anpassen, dass ein OS eine Energie oder Frequenz anpasst, die einem Kern zugeordnet ist. In einigen Beispielen können der Ochestrierungseinheit 206 Rechte (z. B. vertrauenswürdige Roots (RoT) oder Rechte auf Kernelebene) gewährt werden, um eine Kernfrequenz oder Zwischenspeicherzuteilungseinstellungen zu ändern. Die Orchestrierungseinheit 206 kann Energie-, Frequenz-, Zwischenspeichereinstellungen eines Kerns bzw. von Kernen durch Schreiben in bestimmte Dateien, um Werte zu setzen, und Lesen aus anderen Dateien modifizieren, um die aktuellen Einstellungen zu lesen.
  • In einigen Beispielen kann die Orchestrierungseinheit 206 Intel® Resource Director Technology (Intel® RDT) einsetzen, um zu überwachen und zu steuern, wie gemeinsam genutzte Ressourcen wie Last-Level-Zwischenspeicher (LLC) und Arbeitsspeicherbandbreite von Anwendungen oder VEE verwendet werden. Der Dienstsicherungsagent kann Cache Allocation Technology (CAT) oder Speed Select Technology Base Frequency (SST-BF) verwenden, um zu überwachen und zu steuern, wie gemeinsam genutzte Ressourcen wie Zwischenspeicherzuteilung (z. B. L-0, L-1, L-2, L-3 oder LLC), oder eine Kernfrequenz festzulegen. In einigen Beispielen kann die Orchestrierungseinheit 206 eine Ressourcenzuteilung durchführen, die ein Modifizieren einer Serverzusammensetzung enthält, wie eines oder mehrere von: Hinzufügen oder Entfernen eines Kerns, Hinzufügen oder Entfernen von adressierbarem Arbeitsspeicherplatz, Hinzufügen oder Entfernen eines Beschleunigers. In einigen Beispielen können Ressourcen disaggregiert und aus einer Ressourcenzuteilung von Vorrichtungen in einem selben oder einem anderen Server, einem selben oder anderen Rack, einer selben oder einer anderen Zeile von Racks oder einem selben oder anderen Rechenzentrum zusammengesetzt sein.
  • Beispielsweise können die in 2 gezeigten Handlungen 0, 1 und 2 jeweils entsprechen: (0), dass eine Anwendung Telemetrieinformationen in bestimmte Register schreibt, (1), dass die Orchestrierungseinheit 206 Telemetrieinformationen aus bestimmten Registern liest, und (2), dass die Orchestrierungseinheit 206 Leistungsparameter in Steuerparameterregister für einen Kern oder eine Plattform schreibt.
  • 3 zeigt ein Beispiel von Telemetrieregistern für einen Kern. Bestimmte Telemetrieregister (TMR0 bis TMRn) können zugeteilt sein, um Telemetrieinformationen zu speichern, die von einem Dienstsicherungsagenten wie einer Orchestrierungseinheit oder einem Rackmanager oder Multirackmanager (z. B. Podmanager) gelesen werden können. Der Wert n kann eine ganze Zahl sein, die vier oder mehr beträgt. Die Register können pro Kern zugeteilt sein.
  • 4 zeigt einen beispielhaften Prozess. Eine Arbeitslast 402 (z. B. eine Anwendung oder eine in einer VEE laufende Anwendung), die auf Kern n läuft, kann bei 404 ihren Auslastungspegel ermitteln. Beispielsweise kann der Auslastungspegel innerhalb eines Bereichs von 0-100 ermittelt werden, wobei Pegel 0 0 verarbeitete Pakete seit einer letzten Aktualisierung anzeigt, und Pegel 100 anzeigt, dass die VNF ein Paket in jeder Schleife im Abrufmodustreiber verarbeitet hat. Bei 406 kann die Arbeitslast den Auslastungspegel in TM-Register 1 schreiben. Bei 408 kann die Arbeitslast eine Anzahl von pro Sekunde verarbeiteten Paketen in TM-Register 2 schreiben. Bei 410 kann die Arbeitslast eine Anzahl von verlorenen Paketen berechnen (z. B., wie viele Pakete über das letzte Intervall verloren wurden). Bei 412 kann die Arbeitslast die Anzahl von verlorenen Paketen in TM-Register x schreiben.
  • Bei 432 kann die Orchestrierung 430 Telemetrieregister von Kern n lesen. Bei 434 kann die Orchestrierung eine Ressourcenzuteilung zum Kern n auf Grundlage von Telemetrieregisterinhalten ermitteln. Bei 436 kann die Orchestrierung auf Grundlage der Telemetrieinformationen ermitteln, ob die Ressourcenzuteilung zum Kern n anzupassen ist. Falls die Telemetrieinformationen beispielsweise anzeigen, dass der Kern fähig ist, die Arbeitslast durchzuführen und geltende Leistungsanforderungen zu erfüllen, können keine Änderungen in der Ressourcenzuteilung stattfinden und der Prozess kann zu 432 zurückkehren. Falls die Telemetrieinformationen zum Beispiel anzeigen, dass der Kern nicht ausgelastet ist oder die Arbeitslast nicht handhaben kann und dabei gleichzeitig geltende Leistungsanforderungen erfüllen kann, kann die Orchestrierung mit 438, 440 und 442 fortfahren.
  • Die Orchestrierung 430 kann ausgelegt sein, eines oder mehrere von 438, 440 und 442 durchzuführen, um Ressourcen zum Kern oder zur Anwendung zu reduzieren oder dem Kern oder der Anwendung zusätzliche Ressourcen bereitzustellen, um die Arbeitslast durchzuführen. Beispielsweise kann 438 ein Erhöhen oder Verringern der Zwischenspeicherzuteilung (z. B. L-0, L-1, L-2, LLC) zum Kern oder seiner Arbeitslast enthalten. Beispielsweise kann 440 ein Erhöhen oder Verringern einer Betriebsfrequenz von Kern n enthalten. Beispielsweise kann 442 ein Erhöhen oder Verringern einer Arbeitsspeicher- oder Bandbreitenzuteilung zum Kern oder seiner Arbeitslast enthalten. Andere Ressourcenzuteilungsänderungen können erfolgen, wie Änderungen an der Serverzusammensetzung (z. B. ein Ändern von lokal zugänglichen Ressourcen eines Servers oder einer Fabric oder von netzwerkzugänglichen Ressourcen eines Servers).
  • 5 zeigt einen beispielhaften Prozess. Bei 502 kann eine Anwendung bestimmte Leistungsinformationen ermitteln und diese in ein bestimmtes oder mehrere bestimmte Register eines Kerns schreiben. In einigen Beispielen wird die Anwendung auf einem Kern ausgeführt und der Kern führt keine andere Anwendung aus. In einigen Beispielen führt der Kern nur eine Instanz oder eine Anwendung aus. Die Anwendung kann beispielsweise innerhalb einer VEE ausgeführt werden, die auf einem bestimmten Kern ausgeführt wird. Die Anwendung kann programmiert sein, bestimmte Informationen in bestimmte Register des Kerns zu schreiben.
  • Bei 504 kann eine Orchestrierungseinheit Leistungsinformationen aus bestimmten Registern des Kerns lesen. Registerinhalt und bestimmte Arten von Telemetrieinformationen (z. B. Auslastung, Paketverluste pro Zeiteinheit, verarbeitete Pakete pro Zeiteinheit und so weiter) können der Anwendung durch eine Konfiguration zugewiesen werden. Für SPDK-basierte Arbeitslasten, die von einem Kern ausgeführt werden, kann der Registerinhalt zum Beispiel eines oder mehrere angeben von: Schreibvorgänge pro Sekunde, Lesevorgänge pro Sekunde oder Anzahl von anstehenden Schreibvorgängen. Die Konfiguration kann in einer Beschreibung der Anwendung (z. B. in Attributen für einen Kubernetes-POD) oder einer YAML-Datei definiert sein. Bei 506 kann die Orchestrierungseinheit ermitteln, ob die Ressourcenzuteilung an die auf dem Kern laufende Arbeitslast anzupassen ist. Beispielsweise kann die Orchestrierungseinheit auf Grundlage von bestimmten Leistungsanforderungen für die Anwendung und eines bestimmten Ressourcenanpassungsschemas für die Anwendung ermitteln, die Ressourcenzuteilung anzupassen. Falls zum Beispiel gegen Leistungsanforderungen verstoßen wird, kann die Ressourcenzuteilung in Übereinstimmung mit dem Ressourcenanpassungsschema angepasst werden. Falls zum Beispiel nicht gegen Leistungsanforderungen verstoßen wird, kann die Ressourcenzuteilung in Übereinstimmung mit dem Ressourcenanpassungsschema beibehalten oder angepasst werden, um einen Energieverbrauch zu reduzieren. Falls eine Ressourcenzuteilung nicht anzupassen ist, kann der Prozess zu 504 zurückkehren. Falls eine Ressourcenzuteilung anzupassen ist, kann der Prozess mit 508 fortfahren.
  • Bei 508 kann die Orchestrierungseinheit die Ressourcenzuteilung an einen Kern oder eine Arbeitslast anpassen. Falls zum Beispiel gegen Leistungsanforderungen verstoßen wird, in Übereinstimmung mit dem Ressourcenanpassungsschema für die Anwendung, kann die Orchestrierungseinheit eines oder mehrere durchführen von: Erhöhen einer Frequenz des Kerns, Erhöhen einer Zwischenspeicherzuteilung, Erhöhen einer Arbeitsspeicherzuteilung, Erhöhen einer Netzwerkschnittstellenbandbreite für die Anwendung oder Anpassen einer Zusammensetzung eines Servers (z. B. Anpassen von disaggregierten Ressourcen, die dem Server zugeteilt sind). Falls zum Beispiel nicht gegen Leistungsanforderungen verstoßen wird, in Übereinstimmung mit dem Ressourcenanpassungsschema für die Anwendung, kann die Orchestrierungseinheit eines oder mehrere durchführen von: Verringern einer Frequenz des Kerns, Verringern einer Zwischenspeicherzuteilung, Verringern einer Arbeitsspeicherzuteilung oder Verringern einer Netzwerkschnittstellenbandbreite für die Anwendung. In einigen Beispielen kann die Orchestrierungseinheit eine Migration der Anwendung zu einem anderen Kern bewirken und bewirken, dass der frühere Kern in den Ruhezustand tritt, in Übereinstimmung mit dem Ressourcenanpassungsschema für die Anwendung.
  • 6 zeigt ein System. Das System kann hierin beschriebene Ausführungsformen verwenden, um Telemetrieinformationen in Register zu schreiben und eine Ressourcenzuteilung in Übereinstimmung mit einem Anwendungsressourcenanpassungsschema anzupassen. Das System 600 enthält einen Prozessor 610, der eine Verarbeitung, eine Operationsverwaltung und eine Ausführung von Anweisungen für das System 600 bereitstellt. Der Prozessor 610 kann eine beliebige Art von Mikroprozessor, einer Zentralprozessoreinheit (CPU), einer Grafikverarbeitungseinheit (GPU), eines Verarbeitungskerns oder einer anderen Verarbeitungshardware, um die Verarbeitung für das System 600 bereitzustellen, oder eine Kombination von Prozessoren enthalten. Der Prozessor 610 steuert den Gesamtbetrieb des Systems 600 und kann ein oder mehrere programmierbare Universal- oder Sondermikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikvorrichtungen (PLDs) oder Ähnliches oder eine Kombination derartiger Vorrichtungen sein oder diese enthalten.
  • In einem Beispiel enthält das System 600 eine Schnittstelle 612, die an den Prozessor 610 gekoppelt ist, die eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentiert, die Verbindungen mit höherer Bandbreite benötigen, wie ein Arbeitsspeichersubsystem 620 oder Grafikschnittstellenkomponenten 640 oder Beschleuniger 642. Die Schnittstelle 612 repräsentiert einen Schnittstellenschaltkreis, der eine eigenständige Komponente oder auf einem Prozessorchip integriert sein kann. Wo vorhanden, koppelt die Grafikschnittstelle 640 an Grafikkomponenten zum Bereitstellen einer visuellen Anzeige für einen Benutzer des Systems 600. In einem Beispiel kann die Grafikschnittstelle 640 eine hochauflösende (HD) Anzeige ansteuern, die einem Benutzer eine Ausgabe zur Verfügung stellt. Hochauflösung kann eine Anzeige bezeichnen, die eine Pixeldichte von ungefähr 100 ppi (Pixel pro Zoll) oder darüber aufweist, und kann Formate wie volle HD-Auflösung (z. B. 1080p), Retina-Anzeigen, 4K (Ultrahochauflösung oder UHD) oder andere enthalten. In einem Beispiel kann die Anzeige eine Berührungsbildschirmanzeige enthalten. In einem Beispiel generiert die Grafikschnittstelle 640 eine Anzeige auf Grundlage von Daten, die in einem Arbeitsspeicher 630 gespeichert sind, oder auf Grundlage von Operationen, die vom Prozessor 610 ausgeführt werden, oder von beidem. In einem Beispiel generiert die Grafikschnittstelle 640 eine Anzeige auf Grundlage von Daten, die in einem Arbeitsspeicher 630 gespeichert sind, oder auf Grundlage von Operationen, die vom Prozessor 610 ausgeführt werden, oder von beidem.
  • Die Beschleuniger 642 können eine programmierbare Auslagerungsengine oder eine mit fester Funktion sein, auf die durch einen Prozessor 610 zugegriffen werden kann oder die von diesem verwendet werden kann. Zum Beispiel kann ein Beschleuniger unter den Beschleunigern 642 eine Komprimierungsfähigkeit (DC-Fähigkeit), Kryptografiedienste wie Verschlüsselung mit öffentlichem Schlüssel (PKE), eine Chiffre, Hash-/Authentifizierungfähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. In einigen Ausführungsformen stellt ein Beschleuniger unter den Beschleunigern 642 zusätzlich oder alternativ Feldauswahlsteuerungsfähigkeiten wie hierin beschrieben bereit. In einigen Fällen können die Beschleuniger 642 in einen CPU-Sockel (z. B. einem Anschluss an eine Hauptplatine oder Leiterplatte, die eine CPU enthält und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 642 einen einzelnen oder Mehrkernprozessor, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit, Zwischenspeicher auf einer einzelnen oder mehreren Ebenen, funktionale Einheiten, die verwendbar sind, um Programme oder Threads unabhängig auszuführen, anwendungsspezifische integrierte Schaltkreise (ASICs), Prozessoren für neuronale Netze (NNPs), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gatearrays (FPGAs) enthalten. Die Beschleuniger 642 können mehrere neuronale Netze, CPUs, Prozessorkerne, Universal-Grafikverarbeitungseinheiten bereitstellen, oder Grafikverarbeitungseinheiten können zur Verwendung durch Modelle für künstliche Intelligenz (AI) oder maschinelles Lernen (ML) verfügbar gemacht werden. Beispielsweise kann das AI-Modell beliebige oder eine Kombination von Folgendem enthalten: einem Schema für bestärkendes Lernen, Q-Lernschema, tiefes Q-Lernen oder Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netz, einem rekurrenten kombinatorischen neuronalen Netz oder einem anderen AI- oder ML-Modell. Mehrere neuronale Netze, Prozessorkerne oder Grafikverarbeitungseinheiten können zur Verwendung durch AI- oder ML-Modelle verfügbar gemacht werden.
  • Ein Arbeitsspeichersubsystem 620 stellt den Hauptspeicher des Systems 600 dar und stellt einen Speicher für Code, der vom Prozessor 610 auszuführen ist, oder für Datenwerte bereit, die beim Ausführen einer Routine zu verwenden sind. Das Arbeitsspeichersubsystem 620 kann eine oder mehrere Arbeitsspeichervorrichtungen 630, wie schreibgeschützten Arbeitsspeicher (ROM), Flashspeicher, eine oder mehrere Varianten von Arbeitsspeicher mit wahlfreiem Zugriff (RAM) wie DRAM, oder andere Arbeitsspeichervorrichtungen oder eine Kombination solcher Vorrichtungen enthalten. Der Arbeitsspeicher 630 speichert und hostet unter anderem ein Betriebssystem (OS) 632, um eine Softwareplattform zur Ausführung von Anweisungen im System 600 bereitzustellen. Zusätzlich können Anwendungen 634 auf der Softwareplattform des OS 632 aus dem Arbeitsspeicher 630 ausgeführt werden. Die Anwendungen 634 repräsentieren Programme, die ihre eigene Betriebslogik aufweisen, um eine Ausführung einer oder mehrerer Funktionen durchzuführen. Prozesse 636 repräsentieren Agenten oder Routinen, die dem OS 632 oder einer oder mehreren Anwendungen 634 oder einer Kombination zusätzliche Funktionen bereitstellen. Das OS 632, die Anwendungen 634 und Prozesse 636 stellen Softwarelogik bereit, um Funktionen für das System 600 bereitzustellen. In einem Beispiel enthält das Arbeitsspeichersubsystem 620 eine Arbeitsspeichersteuerung 622, die eine Arbeitsspeichersteuerung ist, um Befehle an den Arbeitsspeicher 630 zu erzeugen und dieser zu erteilen. Es ist klar, dass die Arbeitsspeichersteuerung 622 ein physischer Teil des Prozessors 610 oder ein physischer Teil der Schnittstelle 612 sein könnte. Die Arbeitsspeichersteuerung 622 kann zum Beispiel eine integrierte Arbeitsspeichersteuerung sein, die auf einen Schaltkreis mit dem Prozessor 610 integriert ist.
  • Während nicht eigens veranschaulicht, versteht sich, dass das System 600 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen enthalten kann, wie einen Arbeitsspeicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten miteinander kommunikativ oder elektrisch koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse enthalten physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Verschaltung oder eine Kombination. Busse können beispielsweise einen oder mehrere von einem Systembus, einem Peripheral-Component-Interconnect(PCI)-Bus, einem HyperTransport- oder Industry-Standard-Architecture(ISA)-Bus, einem Small-Computer-System-Interface(SCSI)-Bus, einem Universal Serial Bus (USB) oder einem Bus nach der Norm 1394 des Institute of Electrical and Electronics Engineers (IEEE) (Firewire) enthalten.
  • In einem Beispiel enthält das System 600 eine Schnittstelle 614, die an die Schnittstelle 612 gekoppelt sein kann. In einem Beispiel repräsentiert die Schnittstelle 614 einen Schnittstellenschaltkreis, der eigenständige Komponenten und eine integrierte Verschaltung enthalten kann. In einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder periphere Komponenten oder beides an die Schnittstelle 614. Die Netzwerkschnittstelle 650 stellt dem System 600 die Fähigkeit bereit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Computervorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 650 kann einen Ethernetadapter, drahtlose Zwischenverbindungskomponenten, Mobilfunknetz-Zwischenverbindungskomponenten, USB (Universal Serial Bus) oder andere verdrahtete oder drahtlose, auf Normen basierende oder proprietäre Schnittstellen enthalten. Die Netzwerkschnittstelle 650 kann Daten an eine Vorrichtung senden, die sich in demselben Rechenzentrum oder Rack oder in derselben entfernen Vorrichtung befindet, was ein Senden von im Arbeitsspeicher gespeicherten Daten enthalten kann. Die Netzwerkschnittstelle 650 kann Daten von einer entfernten Vorrichtung empfangen, was ein Speichern der empfangenen Daten in einen Arbeitsspeicher enthalten kann. Verschiedene Ausführungsformen können in Verbindung mit der Netzwerkschnittstelle 650, dem Prozessor 610 und dem Arbeitsspeichersubsystem 620 verwendet werden.
  • In einem Beispiel enthält das System 600 eine oder mehrere Eingabe/Ausgabe(E/A)-Schnittstelle(n) 660. Die E/A-Schnittstelle 660 kann eine oder mehrere Schnittstellenkomponenten enthalten, über die ein Benutzer mit dem System 600 wechselwirkt (z. B. Audio-, alphanumerische, taktile/Berührungs- oder andere Schnittstellen). Eine periphere Schnittstelle 670 kann eine beliebige Hardwareschnittstelle enthalten, die oben nicht spezifisch erwähnt wurde. Peripheriegeräte bezeichnen allgemein Vorrichtungen, die abhängig mit dem System 600 verbunden sind. Eine abhängige Verbindung ist eine, bei der das System 600 die Softwareplattform oder Hardwareplattform oder beides bereitstellt, auf der der Vorgang ausgeführt wird und mit der ein Benutzer wechselwirkt.
  • In einem Beispiel enthält das System 600 ein Speichersubsystem 680, um Daten auf nichtflüchtige Weise zu speichern. In einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten des Speichers 680 mit Komponenten des Arbeitsspeichersubsystems 620 überlappen. Ein Speichersubsystem 680 enthält (eine) Speichervorrichtung(en) 684, die ein beliebiges herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder ein solches enthalten kann bzw. können, wie eine oder mehrere Magnet-, Festkörper- oder optische Platten oder eine Kombination davon. Der Speicher 684 hält Code oder Anweisungen und Daten 686 in einem persistenten Zustand (z. B. wird der Wert trotz Unterbrechung der Energie zum System 600 beibehalten). Der Speicher 684 kann allgemein als ein „Arbeitsspeicher“ angesehen werden, obwohl der Arbeitsspeicher 630 üblicherweise der ausführende oder Betriebsarbeitsspeicher ist, um dem Prozessor 610 Anweisungen bereitzustellen. Während der Speicher 684 nichtflüchtig ist, kann der Arbeitsspeicher 630 flüchtigen Arbeitsspeicher enthalten (z. B. ist der Wert oder Zustand der Daten unbestimmt, falls die Energie zum System 600 unterbrochen wird). In einem Beispiel enthält das Speichersubsystem 680 eine Steuerung 682, um an den Speicher 684 zu koppeln. In einem Beispiel ist die Steuerung 682 ein physischer Teil der Schnittstelle 614 oder des Prozessors 610 oder kann Schaltkreise oder Logik sowohl im Prozessor 610 als auch der Schnittstelle 614 enthalten.
  • Ein flüchtiger Arbeitsspeicher ist ein Arbeitsspeicher, dessen Zustand (und deshalb der darauf gespeicherten Daten) unbestimmt ist, falls Energiezufuhr zur Vorrichtung unterbrochen ist. Ein dynamischer flüchtiger Arbeitsspeicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um den Zustand beizubehalten. Ein Beispiel eines dynamischen flüchtigen Arbeitsspeichers enthält DRAM (dynamischen Arbeitsspeicher mit wahlfreiem Zugriff) oder eine Variante wie synchronen DRAM (SDRAM). Ein weiteres Beispiel von flüchtigem Arbeitsspeicher enthält Zwischenspeicher oder statischen Arbeitsspeicher mit wahlfreiem Zugriff (SRAM). Ein Arbeitsspeichersubsystem, wie es hierin beschrieben ist, kann mit einer Anzahl an Arbeitsspeichertechnologien kompatibel sein, wie DDR3 (doppelte Datenrate Version 3, ursprüngliche Version von JEDEC (Joint Electronic Device Engineering Council) vom 27. Juni 2007), DDR4 (DDR-Version 4, anfängliche Spezifikation im September 2012 von JEDEC veröffentlicht), DDR4E (DDR-Version 4), LPDDR3 (Niedrigenergie-DDR-Version 3, JESD209-3B, August 2013 von JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich von JEDEC im August 2014 veröffentlicht), WIO2 (Breit-Eingabe/Ausgabe-Version 2, JESD229-2, ursprünglich von JEDEC im August 2014 veröffentlicht, HBM (Arbeitsspeicher mit hoher Bandbreite, JESD325, ursprünglich von JEDEC im Oktober 2013 veröffentlicht), LPDDR5 (derzeit im Gespräch durch JEDEC), HBM2 (HBM-Version 2), derzeit im Gespräch durch JEDEC, und/oder andere oder Kombinationen von Arbeitsspeichertechnologien und Technologien, die auf Derivaten oder Erweiterungen dieser Spezifikationen basieren. Die JEDEC-Standards sind auf www.jedec.org verfügbar.
  • Eine nichtflüchtige Arbeitsspeichervorrichtung (NVM-Vorrichtung) ist ein Arbeitsspeicher, dessen Zustand bestimmt ist, auch wenn die Energiezufuhr zur Vorrichtung unterbrochen ist. In einigen Ausführungsformen kann die NVM-Vorrichtung eine blockadressierbare Arbeitsspeichervorrichtung umfassen, wie NAND-Technologien oder genauer NAND-Flashspeicher mit mehreren Schwellenpegeln (zum Beispiel eine Einzelpegelzelle („SLC“), eine Mehrpegelzelle („MLC“), Vierpegel-Zelle („QLC“), Dreipegelzelle („TLC“) oder einen anderen NAND). Eine NVM-Vorrichtung kann auch eine byteadressierbare, dreidimensionale in situ beschreibbare Koppelpunkt-Arbeitsspeichervorrichtung oder eine andere byteadressierbare in situ beschreibbare NVM-Vorrichtung (auch als ein persistenter Arbeitsspeicher bezeichnet), wie Phasenwechselspeicher (PCM) mit einem oder mehreren Pegeln oder Phasenwechselspeicher mit einem Schalter (PCMS), Intel® Optane™-Arbeitsspeicher, NVM-Vorrichtungen, die Chalkogen-Phasenwechselmaterial (zum Beispiel Chalkogenglas) verwenden, einen resistive Arbeitsspeicher, einschließlich auf Metalloxidbasis, Sauerstofffehlstellenbasis und Leiterbrückenarbeitsspeicher mit wahlfreiem Zugriff (CB-RAM), Nanodrahtarbeitsspeicher, ferroelektrischen Arbeitsspeicher mit wahlfreiem Zugriff (FeRAM, FRAM), magnetoresistiven Arbeitsspeicher mit wahlfreiem Zugriff (MRAM), der Memristortechnologie einbindet, Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Spintronik-Magnetübergangs-Arbeitsspeicherbasis, eine Vorrichtung auf Magnettunnelübergangsbasis (MTJ-Basis), eine Vorrichtung auf Domänenwand(DW)- und SOT(Spin-Orbit-Transfer)-Basis, eine Arbeitsspeichervorrichtung auf Thyristorbasis oder eine Kombination von beliebigem von oben oder einen anderen Arbeitsspeicher umfassen.
  • Eine Energiequelle (nicht gezeigt) stellt den Komponenten des Systems 600 Energie bereit. Genauer koppelt die Energiequelle üblicherweise an eine oder mehrere Energieversorgungen im System 600, um die Komponenten des Systems 600 mit Energie zu versorgen. In einem Beispiel enthält die Energieversorgung einen Wechselstrom-auf-Gleichstrom(AC-DC)-Adapter, der in eine Wandsteckdose zu stecken ist. Eine derartige Wechselstromversorgung kann eine Energiequelle erneuerbarer Energie (z. B. Sonnenenergie) sein. In einem Beispiel enthält die Energiequelle eine Gleichstromquelle, wie einen externen AC-DC-Wandler. In einem Beispiel enthält die Energieversorgung oder die Energiequelle drahtlose Ladehardware, um über eine Nähe zu einem Ladefeld aufzuladen. In einem Beispiel kann die Energiequelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Energieversorgung, eine Solar-Energieversorgung oder eine Brennstoffzellenquelle enthalten.
  • In einem Beispiel kann das System 600 unter Verwendung von miteinander verbundenen Rechenschlitten mit Prozessoren, Arbeitsspeichern, Speichern, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeits-Zwischenverbindungen können verwendet werden, wie zum Beispiel PCIe, Ethernet oder optische Zwischenverbindungen (oder eine Kombination davon).
  • 7 zeigt eine Umgebung 700, enthält mehrere Rechenracks 702, die jeweils einen Switch oben am Rack (ToR) 704, einen Podmanager 706 und eine Vielzahl von gepoolten Systemeinschüben enthalten. Die Umgebung kann hierin beschriebene Ausführungsformen verwenden, um Telemetrieinformationen in Register zu schreiben und eine Ressourcenzuteilung in Übereinstimmung mit einem Anwendungsressourcenanpassungsschema anzupassen. Im Allgemeinen können die gepoolten Systemeinschübe gepoolte Recheneinschübe und gepoolte Speichereinschübe enthalten. Optional können die gepoolten Systemeinschübe auch gepoolte Arbeitsspeichereinschübe und gepoolte Eingabe/Ausgabe(E/A)-Einschübe enthalten. In der veranschaulichten Ausführungsform enthalten die gepoolten Systemeinschübe einen gepoolten Intel® XEON®-Computereinschub 708 und einen gepoolten Intel® ATOM™-Recheneinschub 710, einen gepoolten Speichereinschub 712, einen gepoolten Arbeitsspeichereinschub 714 und einen gepoolten E/A-Einschub 716. Jeder der gepoolten Systemeinschübe ist mit dem ToR-Switch 704 über eine Hochgeschwindigkeitsverbindung 718 wie einer 40-Gigabit/Sekunde(Gb/s)- oder 100-Gb/s-Ethernet-Verbindung oder einer optischen 100+-Gb/s-Siliziumphotonik(SiPh)-Verbindung verbunden. In einigen Ausführungsformen umfasst die Hochgeschwindigkeitsverbindung 718 eine optische 800-Gb/s-SiPh-Verbindung.
  • Mehrere der Rechenracks 702 können über ihre ToR-Switches 704 (z. B. mit einem Switch auf Pod-Ebene oder einem Rechenzentrums-Switch) miteinander verbunden sein, wie durch Verbindungen zu einem Netzwerk 720 veranschaulicht. In einigen Ausführungsformen sind Gruppen von Rechenracks 702 über (einen) Podmanager 706 als separate Pods verwaltet. In einigen Ausführungsformen wird ein einziger Podmanager verwendet, um alle der Racks im Pod zu verwalten. Alternativ können verteilte Podmanager für Podmanagementvorgänge verwendet werden.
  • Die Umgebung 700 enthält ferner eine Verwaltungsschnittstelle 722, die verwendet wird, um verschiedene Aspekte der Umgebung zu verwalten. Dies enthält ein Verwalten einer Rackkonfiguration, wobei entsprechende Parameter als Rackkonfigurationsdaten 724 gespeichert sind. Die Umgebung 700 kann für Rechenracks verwendet werden.
  • Ausführungsformen hierin können in verschiedenen Arten von Rechen- und Netzwerkgeräten implementiert sein, wie Switches, Router, Racks und Bladeserver, wie diejenigen, die in einem Rechenzentrum und/oder einer Serverfarmumgebung eingesetzt werden. Die in Rechenzentren und Serverfarmen verwendeten Server umfassen Serverkonfigurationen in Anordnungen wie rackbasierte Server oder Bladeserver. Diese Server sind in Kommunikation über verschiedene Netzwerkzuweisungen miteinander verbunden, wie einer Partitionierung von Gruppen von Servern in lokale Netzwerke (LANs) mit angemessenen Schalt- und Leitanlagen zwischen den LANs, um ein privates Intranet zu bilden. Cloudhostinganlagen können zum Beispiel üblicherweise große Rechenzentren mit vielen Servern einsetzen. Ein Blade umfasst eine separate Rechenplattform, die ausgelegt ist, Funktionen vom Servertyp durchzuführen, das heißt, ein „Server auf einer Karte“. Dementsprechend enthält jedes Blade Komponenten, die in herkömmlichen Servern üblich sind, einschließlich einer gedruckten Hauptplatine (Hauptplatine), die interne Verdrahtung (z. B. Busse) zum Koppeln angemessener integrierter Schaltkreise (ICs) und anderer auf der Platine montierter Komponenten bereitstellt.
  • Verschiedene Beispiele können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beidem implementiert sein. In einigen Beispielen können Hardwareelemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltkreise, Schaltkreiselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltkreise, ASICs, PLDs, DSPs, FPGAs, Arbeitsspeichereinheiten, Logikgatter, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze und so weiter enthalten. In einigen Beispielen können Softwareelemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon enthalten. Das Ermitteln, ob ein Beispiel unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert ist, kann in Übereinstimmung mit einer beliebigen Anzahl von Faktoren variieren, wie beispielsweise einer gewünschten Berechnungsrate, von Leistungspegeln, Wärmetoleranzen, einem Verarbeitungszyklusbudget, von Eingabedatenraten, Ausgabedatenraten, Arbeitsspeicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen, wie für eine gegebene Implementierung gewünscht. Es wird angemerkt, dass Hardware-, Firmware- und/oder Softwareelemente hierin gemeinsam oder individuell als „Modul“ oder „Logik“ bezeichnet werden können. Ein Prozessor kann eine oder mehrere Kombinationen einer Hardwarezustandsmaschine, digitaler Steuerlogik, einer Zentralverarbeitungseinheit oder beliebiger Hardware-, Firmware- und/oder Softwareelemente sein.
  • Einige Beispiele können unter Verwendung eines Fabrikats oder mindestens eines computerlesbaren Mediums oder als ein solches implementiert sein. Ein computerlesbares Medium kann ein nicht transitorisches Speichermedium enthalten, um Logik zu speichern. In einigen Beispielen kann das nicht transitorische Speichermedium eine oder mehrere Arten von computerlesbaren Speichermedien enthalten, die elektronische Daten speichern können, einschließlich von flüchtigem Arbeitsspeicher oder nichtflüchtigem Arbeitsspeicher, entfernbarem oder nicht entfernbarem Arbeitsspeicher, löschbarem oder nicht löschbarem Arbeitsspeicher, schreibbarem oder wiederbeschreibbarem Arbeitsspeicher und so weiter. In einigen Beispielen kann die Logik verschiedene Softwareelemente enthalten, wie zum Beispiel Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon.
  • Nach einigen Beispielen kann ein computerlesbares Medium ein nicht transitorisches Speichermedium enthalten, um Anweisungen zu speichern oder aufzubewahren, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System ausgeführt werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Verfahren und/oder Operationen in Übereinstimmung mit den beschriebenen Beispielen durchzuführen. Die Anweisungen können einen beliebigen geeigneten Typ von Code enthalten, wie Quellcode, compilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code und dergleichen. Die Anweisungen können in Übereinstimmung mit einer vordefinierten Computersprache, Art oder Syntax zum Anweisen einer Maschine, einer Rechenvorrichtung oder eines Systems implementiert werden, um eine bestimmte Funktion durchzuführen. Die Anweisungen können unter Verwendung einer beliebigen höheren, systemnahen, objektorientierten, visuellen, compilierten und/oder interpretierten Programmiersprache implementiert werden.
  • Ein oder mehrere Aspekte mindestens eines Beispiels können durch repräsentative Befehle implementiert werden, die auf mindestens einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie von einer Maschine, einer Rechenvorrichtung oder einem System gelesen wird, bewirkt, dass die Maschine, die Rechenvorrichtung oder das System Logik erzeugt, um die hierin beschriebenen Techniken durchzuführen. Solche Repräsentationen, als „IP-Kerne“ bekannt, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Fertigungsanlagen geliefert werden, um in die Fertigungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einziges Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise immer auf das gleiche Beispiel oder die gleiche Ausführungsform. Jeder hierin beschriebene Gesichtspunkt kann mit jedem anderen hierin beschriebenen Gesichtspunkt oder einem ähnlichen Gesichtspunkt kombiniert werden, unabhängig davon, ob die Gesichtspunkte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Das Aufteilen, Weglassen oder Einschließen von Blockfunktionen, die in den beigefügten Figuren dargestellt sind, lässt nicht darauf schließen, dass die Hardwarekomponenten, Schaltkreise, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise in Ausführungsformen aufgeteilt, weggelassen oder enthalten wären.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit deren Ableitungen beschrieben werden. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander gedacht. Zum Beispiel können Beschreibungen unter Verwendung der Ausdrücke „verbunden“ und/oder „gekoppelt“ anzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander stehen. Der Ausdruck „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch miteinander zusammenarbeiten oder wechselwirken.
  • Die Begriffe „erster/erste/erstes“, „zweiter/zweite/zweites“ und dergleichen bezeichnen hierin keine Reihenfolge, Menge oder Wichtigkeit, sondern werden vielmehr verwendet, um ein Element von einem anderen zu unterscheiden. Die Begriffe „einer“, „eine“ und „eines“ bezeichnen hierin keine Beschränkung der Menge, sondern bezeichnen das Vorhandensein von mindestens einem der genannten Elemente. Der hierin in Bezug auf ein Signal verwendete Begriff „festgestellt“ bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anlegen eines beliebigen Logikpegels, entweder logisches 0 oder logisches 1, auf das Signal erzielt werden kann. Die Begriffe „folgen“ oder „nach“ können unmittelbar folgend oder nach einem anderen Ereignis oder anderen Ereignissen folgend bezeichnen. Andere Abfolgen von Schritten können auch nach alternativen Ausführungsformen durchgeführt werden. Ferner können zusätzliche Schritte hinzugefügt oder entfernt werden, abhängig von den bestimmten Anwendungen. Eine beliebige Kombination von Änderungen kann verwendet werden und Durchschnittsfachleute mit dem Vorteil dieser Offenbarung würden die vielen Variationen, Modifikationen und alternativen Ausführungsformen davon verstehen.
  • Disjunktive Sprache wie der Ausdruck „mindestens eines von X, Y oder Z“ wird, sofern nicht ausdrücklich anders angegeben, im Kontext anders verstanden, als allgemein verwendet, um darzustellen, dass ein Element, ein Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon (z. B. X, Y und/oder Z) sein können. Deshalb soll und sollte eine derartige disjunktive Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass jeweils mindestens eines von X, mindestens eines von Y oder mindestens eines von Z vorhanden ist. Darüber hinaus sollte Konjunktivsprache wie der Ausdruck „mindestens eines von X, Y und Z“, sofern nicht ausdrücklich anders angegeben, auch als X, Y, Z oder eine beliebige Kombination davon verstanden werden, einschließlich „X, Y und/oder Z“.
  • Nachstehend werden veranschaulichende Beispiele der hierin offenbarten Vorrichtungen, Systeme und Verfahren bereitgestellt. Eine Ausführungsform der Vorrichtungen, Systeme und Verfahren kann eine oder mehrere und eine beliebige Kombination der nachfolgend beschriebenen Beispiele enthalten.
  • Ablaufdiagramme, wie sie hierin veranschaulicht sind, liefern Beispiele für Abfolgen verschiedener Prozessschritte. Die Ablaufdiagramme können Vorgänge anzeigen, die von einer Software- oder Firmware-Routine ausgeführt werden, sowie physikalische Vorgänge. In einigen Ausführungsformen kann ein Ablaufdiagramm den Zustand eines endlichen Zustandsautomaten (EA) illustrieren, der in Hardware und/oder Software implementiert werden kann. Obwohl in einer bestimmten Abfolge oder Reihenfolge angegeben, kann die Reihenfolge der Schritte geändert werden, sofern nicht anders angegeben. Daher sollten die veranschaulichten Ausführungsformen nur als ein Beispiel verstanden werden, und der Prozess kann in einer anderen Reihenfolge durchgeführt werden, und einige Schritte können parallel ausgeführt werden. Zusätzlich können eine oder mehrere Schritte in verschiedenen Ausführungsformen weggelassen werden; deshalb sind nicht alle Schritte in jeder Ausführungsform erforderlich. Andere Prozessabläufe sind möglich.
  • Verschiedene hierin beschriebene Komponenten können ein Mittel zum Ausführen der beschriebenen Vorgänge oder Funktionen sein. Jede hierin beschriebene Komponente enthält Software, Hardware oder eine Kombination davon. Die Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z. B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), digitale Signalprozessoren (DSPs) usw.), eingebettete Steuerungen, fest verdrahtete Schaltungen und so weiter implementiert werden.

Claims (20)

  1. Verfahren, umfassend: einen Kern, der eine Anwendung ausführt, wobei die Anwendung ausgelegt ist, Anwendungsleistungsmesswerte in ein oder mehrere Telemetrieregister zu schreiben, die mit dem Kern assoziiert sind, wobei das eine oder die mehreren Telemetrieregister für die Anwendung designiert sind, um Leistungsmesswerte von der Anwendung zu speichern; eine Orchestrierungseinheit, die das eine oder die mehreren Telemetrieregister liest, die mit dem Kern assoziiert sind; und wobei die Orchestrierungseinheit selektiv eine Modifikation einer Ressourcenzuteilung zu der Anwendung auf Grundlage der gelesenen Inhalte des einen oder der mehreren Telemetrieregister bewirkt.
  2. Verfahren nach Anspruch 1, wobei eine Nutzung des Kerns 100 % beträgt und die Leistungsmesswerte einen Auslastungspegel der Anwendung anzeigen.
  3. Verfahren nach Anspruch 1, wobei die Leistungsmesswerte eines oder mehrere umfassen von: einem Anwendungsauslastungspegel, über ein Zeitintervall verarbeiteten Paketen, einer Anzahl von über ein Zeitintervall verlorenen Paketen, einer Anzahl von über ein Zeitintervall verarbeiteten Videoframes, von Schreibvorgängen pro Sekunde, Lesevorgängen pro Sekunde oder einer Anzahl von anstehenden Schreibvorgängen.
  4. Verfahren nach Anspruch 1, wobei die Orchestrierungseinheit eine vertrauenswürdige Entität umfasst und der Orchestrierungseinheit erlaubt ist, Inhalte des einen oder der mehreren Telemetrieregister zu lesen.
  5. Verfahren nach Anspruch 1, wobei die Telemetrieregister mit nur der Anwendung und die gelesenen Inhalte mit bestimmten Arten von Leistungsmesswerten assoziiert sind.
  6. Verfahren nach Anspruch 1, wobei die Orchestrierungseinheit ein Entscheidungsschema anzuwenden hat, um eine Ressourcenzuteilung zur Anwendung auf Grundlage der Leistungsmesswerte zu modifizieren, wobei die Ressourcenzuteilung eines oder mehrere umfasst von: Prozessorfrequenz, Zwischenspeicherzuteilung, Arbeitsspeicherzuteilung, Netzwerkschnittstellenbandbreitenzuteilung oder Serverzusammensetzung.
  7. Verfahren nach Anspruch 6, wobei die Orchestrierungseinheit ausgelegt ist, ein bestimmtes Entscheidungsschema für eine bestimmte Anwendung anzuwenden, wobei das Entscheidungsschema für eine Anwendung von einem Entscheidungsschema verschieden ist, das für eine andere Anwendung angewandt wird.
  8. Nicht transitorisches computerlesbares Medium, das darauf gespeicherte Anweisungen umfasst, die bei Ausführung durch einen Prozessor bewirken, dass der Prozessor eine Arbeitslast ausführt, die: Leistungsmesswerte in ein oder mehrere Telemetrieregister zu schreiben hat, die mit dem Prozessor assoziiert sind, wobei das eine oder die mehreren Telemetrieregister ausschließlich für die Arbeitslast designiert sind, um Leistungsmesswerte der Arbeitslast zu speichern.
  9. Nicht transitorisches computerlesbares Medium nach Anspruch 8, wobei der Prozessor, der die Arbeitslast ausführt, die Arbeitslast innerhalb einer virtualisierten Ausführungsumgebung ausführt.
  10. Nicht transitorisches computerlesbares Medium nach Anspruch 8, wobei die Leistungsmesswerte eines oder mehrere umfassen von: einem Anwendungsauslastungspegel, über ein Zeitintervall verarbeiteten Paketen, einer Anzahl von über ein Zeitintervall verlorenen Paketen, einer Anzahl von über ein Zeitintervall verarbeiteten Videoframes, von Schreibvorgängen pro Sekunde, Lesevorgängen pro Sekunde oder einer Anzahl von anstehenden Schreibvorgängen.
  11. Nicht transitorisches computerlesbares Medium nach Anspruch 8, das darauf gespeicherte Anweisungen umfasst, die bei Ausführung durch einen Prozessor bewirken, dass der Prozessor eine Orchestrierungseinheit ausführt, die: das eine oder die mehreren Telemetrieregister zu lesen hat, die mit dem Prozessor assoziiert sind, der die Arbeitslast ausführt, einen Typ von Leistungsmesswerten, die mit Inhalten assoziiert sind, die aus den Registern gelesen wurden, auf Grundlage einer Identifizierung des Prozessors und von Registeridentifikatoren zu identifizieren hat; und eine Ressourcenzuteilung zur Arbeitslast zumindest auf Grundlage des identifizierten Typs von Leistungsmesswerten und der Inhalte aus den Registern zu modifizieren hat.
  12. Nicht transitorisches computerlesbares Medium nach Anspruch 11, wobei die Orchestrierungseinheit eine vertrauenswürdige Entität umfasst, der erlaubt ist, Inhalte des einen oder der mehreren Telemetrieregister zu lesen.
  13. Nicht transitorisches computerlesbares Medium nach Anspruch 11, wobei die Orchestrierungseinheit ausgelegt ist, Inhalte des einen oder der mehreren Telemetrieregister nur mit der Arbeitslast zu assoziieren.
  14. Nicht transitorisches computerlesbares Medium nach Anspruch 11, wobei die Orchestrierungseinheit ein Entscheidungsschema anzuwenden hat, um eine Ressourcenzuteilung zur Arbeitslast auf Grundlage der Leistungsmesswerte zu modifizieren, wobei die Ressourcenzuteilung eines oder mehrere umfasst von: Prozessorfrequenz, Zwischenspeicherzuteilung, Arbeitsspeicherzuteilung, Netzwerkschnittstellenbandbreitenzuteilung oder Serverzusammensetzung.
  15. Nicht transitorisches computerlesbares Medium nach Anspruch 14, wobei die Orchestrierungseinheit ausgelegt ist, ein bestimmtes Entscheidungsschema für eine bestimmte Arbeitslast anzuwenden, wobei das Entscheidungsschema für eine Arbeitslast von einem Entscheidungsschema verschieden ist, das für eine andere Arbeitslast verwendet wird.
  16. Einrichtung, umfassend: einen Kern und einen Satz von Registern, der für den Kern zugeteilt ist, wobei dem Kern erlaubt ist, ein oder mehrere Register ausschließlich zu konfigurieren, Telemetrieinformationen zu speichern, wobei das eine oder die mehreren Register designiert sind, Leistungsmesswerte zu speichern.
  17. Einrichtung nach Anspruch 16, wobei der Kern die Anwendung innerhalb einer virtualisierten Ausführungsumgebung auszuführen hat.
  18. Einrichtung nach Anspruch 16, wobei die Leistungsmesswerte eines oder mehrere umfassen von: einem Anwendungsauslastungspegel, über ein Zeitintervall verarbeiteten Paketen, einer Anzahl von über ein Zeitintervall verlorenen Paketen, einer Anzahl von über ein Zeitintervall verarbeiteten Videoframes, von Schreibvorgängen pro Sekunde, Lesevorgängen pro Sekunde oder einer Anzahl von anstehenden Schreibvorgängen.
  19. Einrichtung nach Anspruch 16, die einen zweiten Kern umfasst, wobei der zweite Kern einen Dienstsicherungsagenten auszuführen hat, um: eine Ressourcenzuteilung zur Anwendung auf Grundlage der Leistungsmesswerte zu modifizieren, wobei die Ressourcenzuteilung eines oder mehrere umfasst von: Prozessorfrequenz, Zwischenspeicherzuteilung, Arbeitsspeicherzuteilung, Netzwerkschnittstellenbandbreitenzuteilung oder Serverzusammensetzung.
  20. Einrichtung nach Anspruch 19, wobei der Dienstsicherungsagent ausgelegt ist, ein Entscheidungsschema anzuwenden, das spezifisch mit der Anwendung assoziiert ist, um eine Ressourcenzuteilung zur Anwendung auf Grundlage der Leistungsmesswerte zu modifizieren.
DE102020133273.4A 2020-07-08 2020-12-14 Leistungsüberwachung und Ressorcenverwaltung Pending DE102020133273A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/923,856 US20200348973A1 (en) 2020-07-08 2020-07-08 Performance monitoring and resource management
US16/923,856 2020-07-08

Publications (1)

Publication Number Publication Date
DE102020133273A1 true DE102020133273A1 (de) 2022-01-13

Family

ID=73016464

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020133273.4A Pending DE102020133273A1 (de) 2020-07-08 2020-12-14 Leistungsüberwachung und Ressorcenverwaltung

Country Status (2)

Country Link
US (1) US20200348973A1 (de)
DE (1) DE102020133273A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3417582B1 (de) * 2016-02-18 2020-11-25 NEC Corporation Zeitgeschützte flussregelinstallation
US11455232B2 (en) * 2019-08-28 2022-09-27 Micron Technology, Inc. Debug operations on artificial intelligence operations
JP2021197612A (ja) * 2020-06-12 2021-12-27 株式会社リコー リソース管理システム、リソース管理装置、リソース管理方法、及びプログラム
US11991077B2 (en) * 2021-03-01 2024-05-21 Juniper Networks, Inc. Data interfaces with isolation for containers deployed to compute nodes
US11822411B2 (en) * 2021-05-06 2023-11-21 Apple Inc. Telemetry push aggregation
US11928511B2 (en) * 2021-10-28 2024-03-12 Dell Products L.P. Systems and methods for prioritizing memory allocation for isolated computing workspaces executing on information handling systems
CN115098238B (zh) * 2022-07-07 2023-05-05 北京鼎成智造科技有限公司 一种应用程序任务调度方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6098169A (en) * 1997-12-23 2000-08-01 Intel Corporation Thread performance analysis by monitoring processor performance event registers at thread switch
US8468532B2 (en) * 2006-06-21 2013-06-18 International Business Machines Corporation Adjusting CPU time allocated to next thread based on gathered data in heterogeneous processor system having plurality of different instruction set architectures
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US20190104022A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Policy-based network service fingerprinting
US20210357156A1 (en) * 2020-05-15 2021-11-18 Unisys Corporation Defining and accessing dynamic registers in a virtual processor system

Also Published As

Publication number Publication date
US20200348973A1 (en) 2020-11-05

Similar Documents

Publication Publication Date Title
DE102020133273A1 (de) Leistungsüberwachung und Ressorcenverwaltung
US11625321B2 (en) Apparatuses and methods for memory address translation during block migration using depth mapping table based on mapping state
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102022107621A1 (de) Resourcenauswahl, die zum teil auf der arbeitslast basiert
DE102014003704B4 (de) Plattform-agnostisches Powermanagement
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102020133738A1 (de) Firmware-update-techniken
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020007986A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
DE102018128601A1 (de) Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen
US20210042228A1 (en) Controller for locking of selected cache regions
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
DE112017001020T5 (de) Unterstützung einer vielzahl von speichertypen in einem speichersteckplatz
US11809252B2 (en) Priority-based battery allocation for resources during power outage
DE202012011944U1 (de) Vorrichtung und System zur Energie-Effizienz und Energie-Einsparung mit einem Strom- und Leistungsabgleich zwischen mehreren Verarbeitungselementen
US20210117244A1 (en) Resource manager access control
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE102022124530A1 (de) Speicherpoolmanagement
DE102021117226A1 (de) Konfigurierbarer reduzierter speicherstart
DE102020102820A1 (de) Zeitstempel-Ausrichtung über mehrere Rechenknoten
DE102022119777A1 (de) VERFAHREN ZUM MINIMIEREN VON MEHRAUFWAND BEI DETEKTION VON HEIßEN/KALTEN SEITEN BEI LAUFENDEN ARBEITSLASTEN
DE102018204931A1 (de) Dauerhaftes Caching eines arbeitsspeicherseitigen Cache-Inhalts
DE102020130965A1 (de) Technologien für rasches booten mit fehlerkorrekturcode-arbeitsspeicher
DE102020128675A1 (de) Puffer zum verringern von schreibverstärkung fehlausgerichteter schreiboperationen
US20220222117A1 (en) Techniques to expose application telemetry in a virtualized execution environment