DE102022124530A1 - Speicherpoolmanagement - Google Patents

Speicherpoolmanagement Download PDF

Info

Publication number
DE102022124530A1
DE102022124530A1 DE102022124530.6A DE102022124530A DE102022124530A1 DE 102022124530 A1 DE102022124530 A1 DE 102022124530A1 DE 102022124530 A DE102022124530 A DE 102022124530A DE 102022124530 A1 DE102022124530 A1 DE 102022124530A1
Authority
DE
Germany
Prior art keywords
storage
memory
storage pool
data
pool
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
DE102022124530.6A
Other languages
English (en)
Inventor
Francois DUGAST
Florent PIROU
Sujoy Sen
Lidia Warnes
Thomas Willis
Durgesh Srivastava
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 DE102022124530A1 publication Critical patent/DE102022124530A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die hier beschriebenen Beispiele beziehen sich auf die Bereitstellung einer Schnittstelle für ein Betriebssystem (OS), um verschiedene Speicherpoolklassen zu erstellen, die einem oder mehreren Prozessen zugewiesen werden, und um eine Speicherpoolklasse einem Prozess des einen oder der mehreren Prozesse zuzuweisen. In einigen Beispielen definiert eine Speicherpoolklasse der verschiedenen Speicherpoolklassen eine Mischung von Speichervorrichtungen in mindestens einem Speicherpool, auf die der eine oder die mehreren Prozesse zugreifen können. In einigen Beispielen sind die Speichervorrichtungen mehreren Speicherpoolklassen zugeordnet, um mehrere verschiedene Kategorien von Speicherressourcenfähigkeiten bereitzustellen.

Description

  • HINTERGRUND
  • Cloud Computing stellt einer Client-Vorrichtung (client device) Zugriff auf Rechen- und Speicherungsressourcen von entfernten Computern bereit. Der Client kann einen entfernten Computer oder ein Cluster von Computern nutzen, um eine Vielzahl von Verarbeitungs- oder Rechenoperationen sowie entfernte Datenverarbeitung und Datenspeicherung oder -abruf durchzuführen. Ein Client kann z. B. ein Smartphone, eine Internet der Dinge (IoT; Internet of Things)-kompatible Vorrichtung wie ein Smart Home, Haustechnik (z. B. Kühlschrank, Licht, Kamera oder Schloss), eine tragbare Vorrichtung (z. B. Gesundheitsmonitor, Smart Watch, Smart Glasses), ein verbundenes Fahrzeug (z. B. selbstfahrendes Auto) und eine Smart City (z. B. Verkehrssensor, Parksensor, Energieverbrauchssensor) sein. Entfernte Computer oder Cluster von Computern können ein Rechenzentrum umfassen, das unter Verwendung einer Hochgeschwindigkeits-Netzwerkverbindung mit dem Client verbunden ist. Die Übertragung von Daten aus dem Client zu einem entfernten Computer kann jedoch bei zeitempfindlichen Anwendungen, die strenge Anforderungen an den sofortigen Empfang von Ergebnissen von dem entfernten Computer stellen, eine inakzeptable Latenz verursachen.
  • Einige entfernte Cluster von Vorrichtungen umfassen einen Speicherpool, auf den ein oder mehrere Rechenknoten zugreifen können. Speicherseiten, auf die häufig zugegriffen wird, können im lokalen Speicher eines Rechenknotens gespeichert werden, während Speicherseiten, auf die weniger häufig zugegriffen wird, in einem weiter entfernten Speicherpool gespeichert werden können. Speicherpools weisen unterschiedliche Latenzcharakteristika relativ zu einem Rechenknoten auf, wobei der Rechenknoten aus einigen Speicherpools schneller schreiben oder lesen kann als bei anderen Speicherpools.
  • Cloud-Dienst-Anbieter können Infrastruktur und Server hinzufügen, um Infrastructure as a Service (IaaS) und Platform as a Service (PaaS) zu unterstützen. Einige Lösungen erweitern die Speicherkapazität durch Hinzufügen neuer Pools von Speicher. Die Nachfrage nach Hardwareressourcen ist elastisch und das Hinzufügen zusätzlicher Infrastruktur kann teuer sein und die Gesamtbetriebskosten (TCO; total cost of ownership) eines Rechenzentrums in die Höhe treiben, z. B., wenn die Nachfrage nach Hardwareressourcen gering ist.
  • Figurenliste
    • 1 zeigt ein Beispiel für ein System, in dem ein Rechenknoten auf Speicherpools zugreifen kann.
    • 2 zeigt ein Beispiel für eine Steuergruppe-Zuordnung zu CPUs, Netzwerkklassen und Speicherpools.
    • 3 zeigt ein Beispiel für die Zuweisung von Speicher aus verschiedenen Speicherpools auf der Grundlage von Steuergruppe-Richtlinien zu einem Prozess.
    • 4 zeigt eine beispielhafte Weise für die Konfiguration einer Steuergruppen von Ressourcen.
    • 5 zeigt ein Beispiel für die Zuordnung von Containern zu SLA-Klassen.
    • 6 zeigt ein Beispiel für eine Änderung einer SLA-Klasse, die einem Container zugeordnet ist.
    • 7 zeigt ein Beispiel für die Zuordnung einer SLA-Klasse zu einem Container in Abhängigkeit von der Arbeitslastkritikalität.
    • 8 zeigt ein Beispiel für einen Lastausgleich über Knoten auf der Grundlage der Speicherpoolverfügbarkeit.
    • 9 stellt einen beispielhaften Prozess dar.
    • 10 zeigt ein Beispielsystem.
    • 11, 12, 13A und 13B zeigen ein Beispiel für das Clustering von Seiten in Cluster und die Vorhersage künftiger Zugriffe auf Daten, um zu bestimmen, welche Daten aus dem Cache und/oder dem lokalen Speicher auf einen Speicherpool migriert, aus einem Speicherpool auf einen langsameren Speicherpool migriert oder in ihrem derzeitigen Speicher beibehalten werden sollen.
    • 14 stellt einen beispielhaften Prozess dar.
    • 15 zeigt ein Beispielsystem.
  • Detaillierte Beschreibung
  • Bei einigen Beispielen wird Speicher aus lokalen und entfernten Speicherpools zugewiesen, indem der zugewiesene Speicher einem oder mehreren Steuergruppe-Identifizierern zugewiesen wird. Der lokale Speicher kann Teil eines System-auf-einem-Chip (SoC; system on chip) sein oder mit einer Schaltungsplatine einer Rechenplattform verbunden und für diese zugänglich sein. Der gepoolte Speicher kann durch Verbindungen zu Schaltern und Routern hinzugefügt werden und die Rechenplattform kann auf ihn über ein Netzwerk oder eine Struktur (fabric) zugreifen. Eine Steuergruppe kann aus lokalen Speichervorrichtungen oder einem oder mehreren entfernten Speicherpools zugewiesenen Speicher repräsentieren. Durch die Verwendung von Steuergruppen kann die Verwendung von Speicherpools durch Arbeitslasten begrenzt und gedrosselt werden. Orchestratoren können Steuergruppe-Identifizierer verwenden, um den Zugriff einer Mischung aus lokalem Speicher und Speicherpools verschiedener Typen oder Latenz zu steuern. Bei einigen Beispielen kann ein Orchestrator einen bestimmten Server unter mehreren Servern in einem Rechenzentrum auswählen, um einen Prozess auszuführen, basierend auf der Fähigkeit des bestimmten Servers, auf eine oder mehrere Speichervorrichtungen zuzugreifen, die einer Steuergruppe in einer Weise zugeordnet sind, die ein dem Prozess zugeordnetes Service Level Agreement (SLA) erfüllt oder übertrifft. Cloud-Dienst-Anbieter können einen Umfang der Nutzung von Speicherpools und lokalem Speicher steuern und zwischen verschiedenen Ebenen von Speicherpools unterscheiden.
  • Eine Steuergruppe-Anwendungsprogrammschnittstelle (API; application program interface) oder -Konfigurationsdatei kann definieren, auf welche Speicherregion innerhalb der Mischung aus lokalem Speicher und Speicherpools eine Anwendung oder ein Prozess zugreifen kann. Bei einigen Beispielen kann ein Betriebssystem (OS; operating system) eine Steuergruppe-API bereitstellen und ein Systemadministrator kann die Steuergruppe-API zum Definieren von umfassten Speicherressourcen und, ob ein Speicherpool verwendet werden kann oder nicht, verwenden. Einige Beispiele stellen dem OS die Fähigkeit bereit, einen Speicherpool unter heterogenen Speicherpools mit unterschiedlichen Zugriffsraten relativ zu einer Rechenplattform auszuwählen, auf der das OS ausgeführt wird. Auf einer OS-Ebene kann eine Mischung aus lokalem Speicher und Speicherpools ausgebildet oder definiert werden, um die Verwendung von lokalen oder Speicherpool-Ressourcen und bestimmten Speicherpool-Ressourcen unter den Speicherpools zu begrenzen oder zu erweitern. Die Verwendung der Steuergruppe-API kann Speicherzuweisungsrichtlinien erlauben, durch ein Bereitstellen einer Steuerung darüber, welche Speicherhardware für eine Arbeitslast auf der Grundlage ihrer Steuergruppe zu verwenden ist. Eine Mischung von für eine Arbeitslast verfügbarem Speicher kann unter Verwendung des OS auftreten und die Arbeitslast muss die Speicherzuweisung nicht managen.
  • Einige Beispiele sehen vor, dass Cloud-Dienst-Anbieter speicherpoolbewusste Orchestrierungsrichtlinien für containerisierte Arbeitslasten unterstützen. Containerisierte Arbeitslasten können auf der Grundlage von feinen Speicheranforderungen (z. B. Latenz, Bandbreite), die durch die Steuergruppe-API gesteuert werden, auf Rechenknoten orchestriert werden. Bei einigen Beispielen kann eine Steuergruppe-API es CSPs erlauben, die Zuweisung der Speicherpools zu containerisierten Arbeitslasten zu managen. Beispielsweise können einige Arbeitslasten Zugriff auf entfernte Speicherpools mit höherer Latenz und geringerer Netzwerkübertragungsbandbreite empfangen, während andere Arbeitslasten Zugriff auf lokalen Speicher und Speicherpools mit geringerer Latenz und höherer Netzwerkübertragungsbandbreite empfangen können.
  • Bei einigen Beispielen können Service Level Agreements (SLAs) Mischungen von Hardware-Speicherressourcen zugeordnet sein. Ein Rechenknoten kann für die Ausführung einer Arbeitslast ausgewählt werden, auf der Grundlage von verfügbarem Speicher auf dem Rechenknoten und dessen, ob die SLA der Arbeitslast durch verfügbare Speichersteuergruppen erfüllt werden kann.
  • 1 zeigt ein Beispiel für ein System, in dem ein Rechenknoten auf Speicherpools zugreifen kann. Ein Rechenknoten 100 kann Prozessoren 102 (z. B. zentrale Verarbeitungseinheiten (CPUs; central processing units), Grafikverarbeitungseinheiten (GPUs; graphics processing unit), Kerne, feldprogrammierbares Gate-Array (FPGA; field programmable gate arrays), anwendungsspezifische integrierte Schaltung (ASIC; application specific integrated circuit) und/oder Beschleuniger) sowie Speicherressourcen (z. B. Speicher, Speicherung und/oder Cache) umfassen. Bei einigen Beispielen kann ein Kern unter anderem von Intel®, ARMOO, AMDOO, QualcommOO, IBMOO, Texas Instruments® verkauft oder entwickelt werden. Beispielsweise kann der Rechenknoten 100 einen Prozess ausführen, der eines oder mehrere umfasst aus: Anwendungen, virtuellen Maschinen, Containern, Microservices, serverlosen Anwendungen usw. Ein Prozessor kann ein Betriebssystem ausführen. Beispielsweise kann der Rechenknoten 100 als ein Server, Rack von Servern, Rechenplattform oder anderes implementiert sein. Der Rechenknoten 100 kann ähnliche Technologien wie System 1400 umfassen.
  • Verschiedene hierin beschriebene Beispiele können eine aus Microservices zusammengesetzte Anwendung ausführen, bei der ein Microservice in seinem eigenen Prozess läuft und unter Verwendung von Protokollen (z. B. Anwendungsprogrammschnittstelle (API), ein Hypertext Transfer Protocol- (HTTP-) Ressourcen-API, Nachrichtendienst, Remote Procedure Calls (RPC) oder Google RPC (gRPC)) kommuniziert. Microservices können unter Verwendung eines Dienstnetzes (service mesh) miteinander kommunizieren und in einem oder mehreren Rechenzentren oder Edge-Netzwerken ausgeführt werden. Microservices können unabhängig unter Verwendung eines zentralisierten Managements dieser Services eingesetzt werden. Das Managementsystem kann in verschiedenen Programmiersprachen geschrieben sein und verschiedene Datenspeicherungstechnologien verwenden. Ein Microservice kann charakterisiert sein durch eines oder mehrere von: polyglotte Programmierung (z. B. in mehreren Sprachen geschriebener Code zur Erfassung zusätzlicher Funktionen und Effizienz, die in einer einzigen Sprache nicht verfügbar sind) oder Einsatz von leichten Containern oder virtuellen Maschinen und dezentralisierte kontinuierliche Lieferung von Microservices.
  • Eine virtuelle Maschine (VM; virtual machine) kann Software sein, die ein Betriebssystem und eine oder mehrere Anwendungen ausführt. Eine VM kann durch Spezifikation, Konfigurationsdateien, eine virtuelle Plattendatei, eine nichtflüchtige Direktzugriffsspeicher- (NVRAM; non-volatile random access memory) Einstellungsdatei und die Protokolldatei definiert werden und wird durch die physischen Ressourcen einer Host-Rechenplattform gesichert. Eine VM kann ein Betriebssystem (OS) oder eine Anwendungsumgebung umfassen, die auf Software installiert ist, die dedizierte Hardware imitiert. Der Endnutzer hat auf einer virtuellen Maschine die gleiche Erfahrung, die er auf dedizierter Hardware hätte. Spezialisierte Software, genannt Hypervisor, emuliert die CPU-, Speicher-, Festplatten-, Netzwerk- und andere Hardwareressourcen des PC-Clients oder Servers vollständig und ermöglicht es virtuellen Maschinen, die Ressourcen gemeinschaftlich zu verwenden. Der Hypervisor kann mehrere virtuelle Hardwareplattformen emulieren, die voneinander isoliert sind, was es virtuellen Maschinen erlaubt, Linux®, Windows® Server, VMware ESXi und andere Betriebssysteme auf dem gleichen zugrunde liegenden physischen Host auszuführen.
  • Ein Container kann ein Software-Package von Anwendungen, Konfigurationen und Abhängigkeiten sein, sodass die Anwendungen zuverlässig auf einer Rechenumgebung im Hinblick auf eine andere laufen. Container können ein Betriebssystem, das auf der Serverplattform installiert ist, gemeinschaftlich verwenden und als isolierte Prozesse laufen. Ein Container kann ein Software-Package sein, das alles umfasst, was die Software zur Ausführung benötigt, wie beispielsweise Systemwerkzeuge, Bibliotheken und Einstellungen. Container können von der anderen Software und dem Betriebssystem selbst isoliert sein. Die isolierte Natur der Container stellt mehrere Vorteile bereit. Erstens läuft die Software in einem Container in unterschiedlichen Umgebungen gleich. Beispielsweise kann ein Container, der PHP und MySQL umfasst, sowohl auf einem Linux®-Computer als auch auf einer Windows®-Maschine identisch ausgeführt werden. Zweitens stellen Container zusätzliche Sicherheit bereit, da die Software das Host-Betriebssystem nicht beeinträchtigt. Während eine installierte Anwendung Systemeinstellungen abändern und Ressourcen, wie beispielsweise die Windows-Registrierung, modifizieren kann, kann ein Container nur Einstellungen innerhalb des Containers modifizieren.
  • Der Speicher 104 kann eines oder mehrere umfassen aus: ein oder mehreren Registern, ein oder mehreren Cache-Vorrichtungen (z. B. Level-1- (Ebene-1-) Cache (L1), Level-2-Cache (L2), Level-3-Cache (L3), Lower-Level-Cache (LLC)), flüchtiger Speichervorrichtung, nichtflüchtiger Speichervorrichtung oder dauerhafter Speichervorrichtung. Beispielsweise kann der Speicher 102 eine statischer Direktzugriffsspeicher- (SRAM-; static random access memory) Speichertechnologie oder eine Speichertechnologie umfassen, die mit einem Hohe-Bandbreite-Speicher (HBM; high bandwidth memory) oder Double Data Rate (DDR) übereinstimmt, unter anderem. Ein Speicher 104 kann mit den Prozessoren 102 und/oder einer Netzwerkschnittstelle 106 unter Verwendung einer Hochgeschwindigkeitsschnittstelle (z. B. Double Data Rate (DDR), Compute Express Link (CXL) (z. B. Compute Express Link Specification Revision 2.0, Version 0.9 (2020) sowie frühere Versionen, Revisionen oder Variationen davon), Peripheral Component Interconnect express (PCIe) (z. B. PCI Express Base Specification 1.0 (2002) sowie frühere Versionen, Revisionen oder Variationen davon) oder anderer Schnittstellen verbunden sein. Bei einigen Beispielen kann der Rechenknoten 100 als ein System-auf-einem-Chip (SoC) gebildet sein.
  • Der Rechenknoten 100 kann eine Netzwerk- oder Struktur-Schnittstelle 104 zur Kommunikation mit einem oder mehreren Speicherpoolknoten 150-0 bis 150-N unter Verwendung eines Netzwerks oder einer Struktur umfassen. Ein Speicherpoolknoten 150 kann eine Netzwerk- oder Struktur-Schnittstelle 152, Prozessoren 154 (z. B. CPUs, GPUs, Beschleuniger usw.) und Speicherpool-Ressourcen 156 (z. B. Speicher, dauerhafter Speicher, Speicherung und/oder Cache) umfassen. Obwohl bei diesem Beispiel nur ein Rechenknoten gekoppelt mit mehreren Speicherpoolknoten gezeigt ist, können mehrere Rechenknoten mit mehreren Speicherpoolknoten gekoppelt sein. Beispielsweise können ein oder mehrere der Speicherpoolknoten 150-0 bis 150-N unter Verwendung einer Netzwerkschnittstelle und ein oder mehrerer Schalter oder Router mit der Netzwerkschnittstelle 106 gekoppelt sein.
  • Ein Speichersteuergruppemanager 108 kann eine Mischung von Speichervorrichtungen aus dem lokalen Speicher 104 und den Speicherpoolknoten 150-0 bis 150-N auf einen Steuergruppe-Identifizierer abbilden. Bei einigen Beispielen kann der lokale Speicher 104 eine höchste Speicherzugriffsrate bereitstellen (Lesen von Speichermedien oder Schreiben auf Speichermedien), der Speicherpoolknoten 150-0 kann eine nächsthöchste Speicherzugriffsrate bereitstellen (Lesen von Speichermedien oder Schreiben auf Speichermedien), und der Speicherpoolknoten 150-N kann eine niedrigste Speicherzugriffsrate bereitstellen (Lesen von Speichermedien oder Schreiben auf Speichermedien). Bei einigen Beispielen wird der Speicherinhalt mit einer Seitengranularität gemanagt, obwohl größere oder kleinere Regionen von Speicher gemanagt werden können. Eine Speicherseite kann 4096 Bytes oder eine andere Größe haben.
  • Der Speichersteuergruppemanager 108 kann bei einigen Beispielen einen Steuergruppe-Identifizierer einem SLA-Speicherparameter zuordnen. Beispielsweise können SLA-Klassen unter Verwendung einer Benutzerraum-API auf Steuergruppe-Identifizierer abgebildet werden und für einen Benutzerraum-Prozess wie eine virtuelle Maschine, einen Container, eine Anwendung, einen Microservice oder eine serverlose Anwendung zugänglich sein. Ein Systemadministrator oder Orchestrator kann einen Speicherpool-Steuergruppe-Identifizierer einer benutzerdefinierten SLA-Klasse zuordnen. SLA-Klassen für Speicher können Klassen ergänzen und zusätzlich zu diesen verwendet werden, die Ressourcenzuweisungsrichtlinien für Steuergruppen wie CPU-Affinität (z. B. Linux®-Steuergruppen (cgroups)), Netzwerkpaketprioritäten usw. definieren.
  • Der Speichersteuergruppemanager 108 kann eine Mischung von Speichervorrichtungen, die einem Steuergruppe-Identifizierer zugeordnet sind, zur Laufzeit (at runtime) rekonfigurieren. Die rekonfigurierte Mischung erfüllt möglicherweise nicht ein zugeordnetes SLA und muss möglicherweise einer niedrigeren SLA-Stufe (tier) für Speichervorrichtungs-Zugriffsraten (z. B. Rate für den Zugriff auf Daten aus einem Speicher oder Speicherungsmedium) zugeordnet werden.
  • Um einen Steuergruppe-Identifizierer und zugeordnete Speicherressourcen anzufragen, kann ein Prozess eine Steuergruppeerstellungs-API [Steuergruppe-Identifizierer] an ein OS ausgeben. Das OS kann Steuergruppe-Identifizierer und zugeordnete Speichervorrichtungen managen. Zum Beispiel können verschiedene Formate von Steuergruppe-APIs verwendet werden.
    • Steuergruppe-API [Speicherpool-Identifizierer, Menge an Prozessen einer Steuergruppe zuzuweisendem Speicher] oder
    • Steuergruppe-API [Speicherpool-Identifizierer, Prozentsatz des dem Prozess zugewiesenen Speichers aus verfügbarem lokalem Speicher und Speicherpool].
  • Bei einigen Beispielen kann der Speichersteuergruppemanager 108 durch einen Prozess ausgeführt werden, der durch Prozessoren 102 oder Programmierbare- oder Feste-Funktion-Schaltungsanordnung ausgeführt wird.
  • 2 zeigt ein Beispiel für eine Steuergruppe-Zuordnung zu CPUs, Netzwerkklassen und Speicherpools. Steuergruppen stellen Fähigkeiten bereit, die Verwendung spezifischer CPU, Netzwerkschnittstellenvorrichtungs-Ressourcen und Speicherressourcen durch Arbeitslasten zu begrenzen oder zu drosseln. Der OS-Kemel kann adressierbare Speicherregionen in Speichervorrichtungen einer Steuergruppe zuweisen. Auf eine Steuergruppe-API im Benutzerraum kann zugegriffen werden, so dass ein Systemadministrator oder ein Orchestrator eine Mischung von Speichervorrichtungen und zugeordneten Speicheradressbereichen in den Speichervorrichtungen konfigurieren kann, die für einen Zugriff verfügbar sind. Die folgende Tabelle 1 stellt ein Beispiel für die Abbildung von Prozessorressourcen, Netzwerkschnittstellenvorrichtungs-Übertragungsraten und Speicherpools auf SLA-Stufen dar. Tabelle 1: Abbildung von Speicherpool-Verwendungsrichtlinien auf SLA-Klassen
    SLA Klasse A (Premium) SLA Klasse B (Basis) SLA Klasse C (Einstieg (entry))
    CPU-Affinität 0-63 64-70 71-72
    Netzwerkübertragungsrate-Klasse Priorität 1 Priorität 2 Priorität 3
    Speicherpool 1 (Schnelle-Speicher-Zugriffsrate, geringe Speichergröße) max. 4 GB pro Prozess max. 512 MB pro Prozess max. 60 % pro Prozess Keine Verwendung
    Speicherpool 2 (Schnelle-Speicher-Zugriffsrate, mittlere Speichergröße) max. 8 GB pro Prozess max. 4 GB pro Prozess max. 512 MB pro Prozess max. 40 % pro Prozess
    Speicherpool 3 (Langsame-Speicher-Zugriffsrate, große Speichergröße) Unbegrenzte Verwendung max. 8 GB pro Prozess max. 4 GB pro Prozess
    Speicherpool 4 (langsame Speicherzugriffsrate, große Speichergröße) Unbegrenzte Verwendung Unbegrenzte Verwendung Unbegrenzte Verwendung
  • Bei diesem Beispiel können Steuergruppe-Identifizierer Klasse A, Klasse B und Klasse C sein.
  • Bei einigen Beispielen, für einen Speicherpool, kann ein Steuergruppe-Identifizierer die Einstellung ermöglichen von:
    • Werten für die maximale und die minimale Menge an Speicher, die jedem Prozess in einer Gruppe zugewiesen werden kann (z. B. 512 MB aus Pool A, 32 MB aus Pool B, 0 MB aus Pool C);
    • Werten für die maximale und die minimale Menge an Speicher, die einem oder mehreren Prozessen aus der gesamten Gruppe zugewiesen werden kann (z. B. 8 GB aus Pool A, 1 GB aus Pool B, 0 MB aus Pool C); und/oder
    • dem Anteil an Speicher, der aus jedem Speicherpool zuzuweisen ist (Beispiel: 60 % aus Pool A, 40 % aus Pool B).
  • 3 zeigt ein Beispiel für die Zuweisung von Speicher aus verschiedenen Speicherpools auf der Grundlage von Steuergruppe-Richtlinien zu einem Prozess. Verschiedene Speicherpools weisen unterschiedliche Charakteristika auf. Beispielsweise können mehrere Speicherpools 302, 304 und 306 für die Verwendung durch Prozess A und Prozess B verfügbar sein. Beispielsweise kann der Speicherpool 302 einen lokalen Speicherpool (für die Prozessoren, die Prozess A und B ausführen) mit der höchsten Datenzugriffsrate (z. B. Lese- und/oder Schreibrate) bereitstellen, jedoch eine geringste Größe (z. B. Menge an Daten, die gelesen oder geschrieben werden kann) und die höchsten Kosten relativ zu den Speicherpools 304 und 306 aufweisen. Der Speicherpool 302 kann einen ersten Non-Uniform Memory Access- (NUMA-) Knoten repräsentieren.
  • Beispielsweise kann der Speicherpool 304 einen lokalen Speicherpool (für die Prozessoren, die Prozess A und B ausführen) mit einer zweithöchsten Datenzugriffsrate (z. B. Lese- und/oder Schreibrate) bereitstellen, jedoch eine mittlere Größe und die höchsten Kosten relativ zu den Speicherpools 302 und 306 aufweisen. Der Speicherpool 304 kann einen zweiten NUMA-Knoten repräsentieren. Ein zweiter NUMA-Knoten kann eine andere NUMA-Domain als die des ersten NUMA-Knotens repräsentieren. Der zweite NUMA-Knoten kann eine andere Zugriffszeit auf Speicher im zweiten NUMA-Knoten bereitstellen als die Zugriffszeit auf Speicher des ersten NUMA-Knotens.
  • Beispielsweise kann der Speicherpool 306 einen entfernten Speicherpool (für die Prozessoren, die Prozess A und B ausführen) mit einer niedrigsten höchsten Datenzugriffsrate (z. B. Lese- und/oder Schreibrate) bereitstellen, jedoch eine größte Größe und die niedrigsten Kosten relativ zu den Speicherpools 302 und 304 aufweisen.
  • Den Speicherpools 302-306 können unterschiedliche Steuergruppe-Identifizierer 308 zugewiesen werden. Beispielsweise können Steuergruppe-Identifizierer 0, 1 und 2 jeweiligen Speicherpools 302, 304 und 306 zugeordnet werden. Es wird darauf hingewiesen, dass sich Speichervorrichtungen innerhalb der Speicherpools 302-306 ändern können und eine zugeordnete Geschwindigkeit, Größe und Kosten gleich bleiben können.
  • Eine Memory Management Unit (MMU; Speichermanagementeinheit) 310 kann eine Virtuellezu-physische-Speicher-Adressübersetzung durchführen. Die MMU 310 kann dem Prozess A Zugriff auf einen Speicheradressbereich in einem Speicherpool oder -pools bereitstellen, der/die einem Steuergruppe-Identifizierer zugeordnet ist/sind, der dem Prozess A zugewiesen ist. Ähnlich kann die MMU 310 dem Prozess B Zugriff auf einen Speicheradressbereich in einem Speicherpool oder -pools bereitstellen, der/die einem Steuergruppe-Identifizierer zugeordnet ist/sind, der dem Prozess B zugewiesen ist. Der Steuergruppe-Identifizierer, der Prozess A und Prozess B zugewiesen ist, kann derselbe oder anders sein.
  • 4 zeigt eine beispielhafte Weise für die Konfiguration einer Steuergruppen von Ressourcen. Beispielsweise kann unter Verwendung einer Steuergruppe-API 402 ein Betriebssystem 400 einen Steuergruppe-Identifizierer konfigurieren oder eine Konfiguration eines Steuergruppe-Identifizierers empfangen. Der Steuergruppe-Identifizierer kann sich auf eine Speicherpoolzuweisung 410 aus nur lokalem Speicher, nur einem oder mehreren Speicherpools oder einer Mischung aus lokalem Speicher und einem oder mehreren Speicherpools, wie hierin beschrieben, beziehen. Ein Dienst oder Daemon kann dem OS 400 die Speicherpoolzuweisung 410 unter Verwendung der Steuergruppe-API 402 kommunizieren, um Speichervorrichtungen in einer Speicherpool-Steuergruppe zu erstellen und zu konfigurieren. Bei einigen Beispielen kann eine Steuergruppe unter Verwendung einer Linux-cgconfig-Datei erstellt werden. Die Speicherpool-Steuergruppe-Erstellung kann bei einigen Beispielen beim OS-Booten oder Rebooten auftreten.
  • Die Speicherpoolzuweisung 410 kann eine Zuweisung der maximalen Menge an Speicher, die in einem oder mehreren Speicherpools zugewiesen ist, der Spitzen-Speicherzugriffsrate und des relativen Prozentsatzes des verfügbaren Speichers, der einem Prozess zur Verfügung steht, umfassen, selbst wenn der dem Prozess zugewiesene Speicher geringer ist als die maximale Menge an Speicher, die in einem oder mehreren dem Prozess zugewiesenen Speicherpools zugewiesen ist. Beispielsweise kann die Speicherpoolzuweisung 410 anzeigen, dass einem Prozess, der einem unter Verwendung der API 402 definierten Steuergruppe-Identifizierer zugeordnet ist, höchstens 2 GB oder höchstens 10 % des zugewiesenen Speichers aus Pool A, 4 GB aus Pool B und nichts aus Pool C zugewiesen wird. Die Speicherpoolzuweisung 410 kann einem Steuergruppe-Identifizierer 0 zugeordnet sein. Es können mehr Steuergruppen mit unterschiedlichen Werten definiert werden, um verschiedene Richtlinien zu implementieren.
  • Steuergruppe-APIs für andere Ressourcen 404 können eine Zuweisung von Prozessor- und/oder Netzwerkschnittstelle-Ressourcen bereitstellen, die einem Steuergruppe-Identifizierer für die Zuweisung zu einem Prozess (z. B. Prozess 1 oder 2) zugeordnet sind. Als Reaktion auf eine Anfrage über eine MMU - API 406 von Prozess 1 oder 2 kann Prozess 1 oder 2 Speicher zugewiesen werden, der dem Steuergruppe-Identifizierer 0 zugeordnet ist. Die Speicherzuweisung (malloc(); memory allocation) gemäß der Steuergrupperichtlinie kann durch den Kernel gehandhabt werden.
  • In Bezug auf die 5-8 können, obwohl Container dargestellt sind, VMs, Microservices, Anwendungen, serverlose Anwendungen oder andere Prozesse SLA-Klassen zugeordnet werden. 5 zeigt ein Beispiel für die Zuordnung von Containern zu SLA-Klassen. Beispielsweise können die Container 1 und 4 SLA A zugeordnet werden; können die Container 3, 5 und 6 SLA B zugeordnet werden; und kann der Container 2 SLA C zugeordnet werden. Prozesse, die in Containern laufen, können auf die Ressourcen zugreifen, die einer zugeordneten SLA-Klasse zur Verfügung stehen, so dass eine Ressourcenkonfiguration pro Prozess oder Arbeitslast nicht stattfinden muss und der Speicherpool (und andere Ressourcen) aufgrund der SLA-Klasse eines Containers verfügbar sein kann.
  • Da SLA-Klassen benutzerdefiniert sind, kann die tatsächliche Abbildung von SLA-Klassen auf Systemressourcen von System zu System variieren. Im obigen Beispiel kann ein System existieren, in dem keine SLA-Klasse C definiert ist und kein entfernter Speicherpool verfügbar ist.
  • 6 zeigt ein Beispiel für eine Änderung einer SLA-Klasse, die einem Container zugeordnet ist. Ein Container kann einer hoch- oder herabgestuften SLA-Klasse zugeordnet werden, indem eine andere SLA-Klasse dem Container zugeordnet wird. Der einem Container zur Verfügung stehende Speicher kann angepasst werden, indem dem Container eine andere SLA-Klasse zugeordnet wird. CSPs können einen einem Container zugewiesenen Speicherressource-Steuergruppe-Identifizierer ändern, für eine Änderung in Verbindung mit einer Änderung der SLA-Klasse. Einem Container zugewiesene Speicherressourcen können sich zur Container-Laufzeit dynamisch ändern, basierend auf der Gesamtressourcenverfügbarkeit oder basierend auf dem Produktangebot.
  • Beispielsweise kann eine Premium-SLA-Klasse Zugriff auf lokale Speicherressourcen bereitstellen und gleichzeitig eine erweiterte Speicherunterstützung aus einem entfernten Speicherpool bieten. Eine Einstiegs-SLA-Klasse kann begrenzten Zugriff auf den lokalen Speicher bieten und die Verwendung eines entfernten Speichers bevorzugen. Es können einige Optionen bereitgestellt werden, um die SLA-Klasse einer Arbeitslast für eine gegebene Periode temporär von Einstieg auf Premium hochzustufen, um eine schnelle Datenverarbeitung zu erlauben. Nach Ablauf der Datenverarbeitungsperiode kehrt die SLA-Klasse der Arbeitslast zu Einstieg zurück.
  • 7 zeigt ein Beispiel für die Zuordnung einer SLA-Klasse zu einem Container in Abhängigkeit von der Arbeitslastkritikalität. Die Arbeitslastanforderungen in konsolidierten Systemen mit gemischter Kritikalität variieren von Arbeitslast zu Arbeitslast. Beispielsweise können in industriellen Systemen Soft-SPS (speicherprogrammierbare Steuerung)-Arbeitslasten für Echtzeit- und 5G Time Sensitive Networking (TSN)-Anwendungen einen Zugriff mit geringer und deterministischer Latenz auf den lokalen Speicher anfragen. Andererseits können Arbeitslasten von geringer Kritikalität verfügbare Ressourcen opportunistisch nutzen. Dies kann der Fall sein bei containerisierten Mensch-Maschine-Schnittstellen (HMIs; human machine interfaces) oder Informationstechnologie (IT)-Systemen mit Operational Technology (OT)-Gateways. Mit den SLA-Klassen, die Steuergruppe-Identifizierern zugeordnet sind, können Richtlinien durchgesetzt werden, um solchen Arbeitslasten nur einen spezifischen Speicherpool bereitzustellen. Bei einem Fall gemischter Kritikalität kann ein spezifischer Speicherpool ein entfernter Speicher sein, der eine geringere Performance als lokaler Speicher bietet. Beispielsweise kann ein Orchestrator die Ausführung von Best-Effort-Arbeitslasten mit geringer Kritikalität auf einem Pool von Rechenknoten managen, während er bereitstellt, dass für das Funktionieren des Systems benötigte Speicherressourcen ausschließlich Arbeitslasten mit hoher Kritikalität zugewiesen werden. Beispiele für Orchestratoren umfassen Kubernetes, Management and Orchestration (MANO), Docker und so weiter.
  • In einer Microservice-Architektur sind containerisierte Arbeitslasten möglicherweise nicht an eine spezifische Hardwareressource gebunden und können eine bessere Nutzung von Ressourcen und weniger nicht ausgenutzte Ressourcen erlauben. Als ein Beispiel sind bei einer HMI-Arbeitslast Rendern und Anzeigen entkoppelt, derart, dass das Rendern auf einem Knoten stattfindet und zu einem anderen Knoten mit einer Anzeige des Videostroms gestreamt wird. Bei diesem Beispiel hat die Render-Arbeitslast eine geringe Kritikalität und kann an die SLA-Klasse C gepinnt werden und entfernten Speicher nutzen. Wenn die GPU-Ressource gering wird, weil eine Arbeitslast der SLA-Klasse B sie anfragt, kann der Orchestrator diese Arbeitslast auf einen Rechenknoten migrieren, auf dem die GPU frei ist, und gleichzeitig sicherstellen, dass Speicherressourcen der SLA-Klasse-C-Richtlinie folgen.
  • 8 zeigt ein Beispiel für einen Lastausgleich über Knoten auf der Grundlage der Speicherpoolverfügbarkeit. Die Orchestrierung der Ausführung von Containern auf Knoten kann speicherbewusst sein, derart, dass Container auf verschiedene Knoten migriert werden und die Speicherperformance beibehalten können. Ein System von Knoten kann durch einen gemeinsamen Orchestrator gesteuert werden, der die Steuergruppe kennt. Wenn ein Speicherpool zu einer Steuergruppe zugeordneten Ressourcen hinzugefügt wird, kann der Orchestrator den Speicherpool bei Bedarf nutzen, zusätzlich zu bestehenden Ressourceneinschränkungen wie CPU oder Netzwerklastausgleich.
  • Beispielsweise kann ein Container innerhalb einer gleichen (a same) SLA-Klasse A von Knoten 2 auf Knoten 3 migriert werden und die Nutzung derselben Speichersteuergruppe beibehalten. Wenn beispielsweise die Verfügbarkeit des lokalen Speicherpools auf Knoten 2 gering ist, kann der Container auf Knoten 3 migriert werden, um die Speicherressourcenfähigkeit beizubehalten.
  • Beispielsweise kann ein Container innerhalb derselben SLA-Klasse C von Knoten 3 auf Knoten 2 migriert werden, wenn ein Pool von entferntem Speicher für die SLA-Klasse C auf Knoten 3 nicht mehr verfügbar ist, um die Speicherressourcenfähigkeit bei der Ausführung auf Knoten 2 beizubehalten.
  • 9 stellt einen beispielhaften Prozess dar. Der Prozess kann durch ein oder mehrere durchgeführt werden aus: einem Betriebssystem, einem Orchestrator, einem Prozessor oder einer Schaltungsanordnung. Bei 902 kann eine Auswahl aus einer Mischung von Speichervorrichtungen aus dem lokalen Speicher und einem oder mehreren Speicherpools stattfinden. Bei einigen Beispielen können verschiedene Speicherpools unterschiedliche Menge an adressierbaren Speicheradressen, Speicherzugriffslatenz (z. B. Rate des Schreibens oder Lesens von Daten) und Kosten oder die gleiche(n) Größe, Speicherzugriffslatenz und Kosten aufweisen. Bei einigen Beispielen kann die Mischung keinen lokalen Speicher und lediglich adressierbare Speicherregionen umfassen, die in einem oder mehreren Speicherpools zugewiesen sind.
  • Bei 904 kann ein Steuergruppe-Identifizierer der Mischung von Speichervorrichtungen zugeordnet werden. Verschiedene Steuergruppe-Identifizierer können eine unterschiedliche Mischungen von Speichervorrichtungen mit unterschiedlichen Charakteristika der Menge an adressierbaren Speicheradressen, Speicherzugriffslatenz und Kosten identifizieren. Bei 906 kann der Steuergruppe-Identifizierer einer benutzerdefinierten Service Level Agreement- (SLA-) Klasse oder Stufe zugeordnet werden. Beispielsweise kann ein Steuergruppe-Identifizierer, der Charakteristika der Menge an adressierbaren Speicheradressen, Speicherzugriffslatenz und Kosten zugeordnet ist, einer SLA-Klasse oder -Stufe zugeordnet werden, die Speichervorrichtungscharakteristika spezifiziert, die durch die dem Steuergruppe-Identifizierer zugeordneten erfüllt oder übertroffen werden.
  • Bei 908 kann einem Prozess ein Steuergruppe-Identifizierer zugewiesen werden, um Zugriff auf Speicherressourcen bereitzustellen. Beispielsweise kann eine API verwendet werden, um einem Prozess Speicherressourcen auf der Grundlage der dem Prozess zugeordneten SLA-Klasse oder - Stufe zuzuweisen. Bei einigen Beispielen können bei 910, basierend auf der Migration der Ausführung des Prozesses auf einen anderen Rechenknoten, für den Prozess verfügbare Speicherressourcen beibehalten werden. Zum Beispiel kann eine gleiche Mischung von Speichervorrichtungen weiterhin für den Prozess verfügbar sein, der auf einem anderen Rechenknoten ausgeführt wird. Ändern sich jedoch die Charakteristika der Speichervorrichtungen auf der Grundlage einer Änderung des Rechenknotens, der den Prozess ausführt, wie z. B. eine höhere Latenz, bis zu einem Punkt, dass ein SLA für den Prozess nicht erfüllt wird bei Ausführung auf dem anderen Knoten, kann der Prozess zu 906 zurückkehren, um dem Prozess eine andere Gruppierung von Speichervorrichtungen zuzuweisen, um eine SLA-Klasse oder -Stufe des Prozesses zu erfüllen.
  • Bei 912 kann auf der Grundlage einer Änderung der SLA-Klasse oder -Stufe, die dem Prozess zugeordnet ist, eine andere Gruppierung von Speichervorrichtungen dem Prozess zugewiesen werden. Die andere Gruppierung von Speichervorrichtungen kann Ressourcen bereitstellen, die die geänderte SLA-Klasse oder -Stufe erfüllen. Wenn beispielsweise die SLA-Klasse oder -Stufe auf eine höhere Klasse oder Stufe ansteigt, kann eine andere Gruppierung von Speichervorrichtungen für die Verwendung durch den Prozess ausgewählt werden, deren Ressourcen die Anforderungen der nächsten SLA-Klasse oder -Stufe erfüllen oder übertreffen, und der Steuergruppe-Identifizierer einer solchen anderen Gruppierung von Speichervorrichtungen kann der SLA-Klasse und dem Prozess zugeordnet werden. Wenn beispielsweise die SLA-Klasse oder -Stufe auf eine höhere Klasse oder Stufe herabgesetzt wird, kann eine andere Gruppierung von Speichervorrichtungen für die Verwendung durch den Prozess ausgewählt werden, deren Ressourcen die Anforderungen der herabgesetzten SLA-Klasse oder -Stufe erfüllen oder übertreffen, und der Steuergruppe-Identifizierer einer solchen anderen Gruppierung von Speichervorrichtungen kann der herabgesetzten SLA-Klasse und dem Prozess zugeordnet werden.
  • Dementsprechend kann die Nutzung von Speichervorrichtungen durch die Verwendung von Steuergruppe-Identifizierern für Mischungen von Speichervorrichtungen gemanagt werden.
  • Datenplatzierung in geschichteten (tiered) Speichersystemen
  • Bei einigen Beispielen wird ein Speicher mit mindestens zwei Ebenen von Speicher (alternativ hierin als „2LM“ bezeichnet) verwendet, der zwischengespeicherte Teilmengen des Systemplattenebenespeichers (zusätzlich zu z. B. Laufzeitdaten) umfasst. Dieser Hauptspeicher umfasst eine erste Ebene (hierin alternativ als „Nahspeicher“ bezeichnet), die einen kleineren, schnelleren Speicher, z. B. aus dynamischem Direktzugriffsspeicher (DRAM; dynamic random access memory) oder anderem flüchtigem Speicher bestehend, umfasst; und eine zweite Ebene (hierin alternativ als „Fernspeicher“ bezeichnet), die einen größeren und langsameren (in Bezug auf den Nahspeicher) flüchtigen Speicher (z. B. DRAM) oder nichtflüchtige Speicher-Speicherung (z. B. Flash-Speicher oder byteadressierbaren nichtflüchtigen Speicher (z. B. Intel Optane®)) umfasst. Der Fernspeicher wird dem Host-Betriebssystem (OS) als „Hauptspeicher“ präsentiert, während der Nahspeicher ein Cache für den Fernspeicher ist, der für das OS transparent ist, so dass die nachfolgend beschriebenen Ausführungsbeispiele dem Stand der Technik für Hauptspeicherlösungen entsprechen. Das Management des Zwei-Ebenen-Speichers kann durch eine Kombination von Logik und Modulen erfolgen, die über die zentrale Host-Verarbeitungseinheit (CPU) ausgeführt werden. Der Nahspeicher kann über Mittel mit hoher Bandbreite und geringer Latenz für eine effiziente Verarbeitung mit der CPU des Host-Systems gekoppelt werden. Der Fernspeicher kann über Mittel mit niedriger Bandbreite und hoher Latenz (im Vergleich zu denen des Nahspeichers) mit der CPU gekoppelt werden.
  • In geschichteten Speichersystemen wie 2LM und gepoolten Speichersystemen kann die CPU Speichervorrichtungen mit heterogenen Latenz- und Bandbreitencharakteristika adressieren. Langsamer Speicher kann sich auf Hohe-Latenz-Speicher und/oder geringe Netzwerkbandbreite beziehen, während sich schneller Speicher auf Geringe-Latenz-Speicher und/oder Hohe-Bandbreite-Netzwerkschnittstelle beziehen kann. Solche Umgebungen können gepoolten Speicher auf der Grundlage von NUMA-Knoten oder von Systemen mit dauerhaftem Speicher und/oder flüchtigem Speicher umfassen. Die Verwendung eines Speicherpools als Fernspeicher hat Auswirkungen auf die Performance von Aufträgen. Die Round-Trip-Zeit (RTT; round trip time) einer Paketüberquerung von einem Sender zu einem Empfänger und zurück zum Sender kann bei der Bestimmung, ob ein Speicherpool als fern, langsam, nah oder schnell eingestuft wird, berücksichtigt werden.
  • Datenplatzierungsstrategien umfassen die Verwendung des schnellsten Speichers, bis dieser voll ist, dann die Verwendung des nächstschnelleren Speichers, bis dieser voll ist, usw., das Bewegen von Daten im Speicher in die Nähe des Ortes, an dem ein Prozess ausgeführt wird (z. B. CPU); das Bewegen des Prozesses in die Nähe des Ortes, an dem seine Daten gespeichert sind; und andere. Wenn die Speicherzugriffsmuster eines Prozesses zwischen einer Speicherregion und einer anderen Speicherregion stark variieren und die Zugriffsmuster im Zeitablauf variieren, verringern solche Datenplatzierungsstrategien die Latenz beim Datenzugriff möglicherweise nicht. Es kann davon ausgegangen werden, dass Seiten nicht benötigt werden, und sie können in den langsamen Speicher bewegt werden und dann zurück in den schnellen Speicher bewegt werden, wenn auf sie zugegriffen wird, dann wieder in den langsamen Speicher und so weiter (Ping-Pong). Die Arbeitslast-Ausführung kann ausgesetzt werden, weil die Seitentabellenstruktur während der Datenbewegung gesperrt ist. Zusätzlich werden Netzwerk- und Speicherbandbreite durch Seitenbewegungen belegt, was sich negativ auf die Performance anderer Arbeitslastens auswirken kann.
  • Einige Beispiele nutzen Künstliche-Intelligenz- (KI-) basierte Technologien zum Detektieren von Speicherzugriffsmustern pro geclusterten Seiten für eine Arbeitslast und verwenden diese Informationen, um zu bestimmen, ob Daten im Voraus in einen Speicher abgerufen werden sollen, der sich näher am Prozessor befindet, der die Arbeitslast ausführt, oder ob Daten auf einen Speicher migriert werden sollen, der weiter vom Prozessor entfernt ist, der die Arbeitslast ausführt. Die Verwendung von Speicherzugriffsmusterdetektion zur Vorhersage von Zugriffen in einem geschichteten Speichersystem kann den verfügbaren näheren Speicher vergrößern, indem Seiten, für die vorhergesagt wurde, dass sie kalt bleiben oder auf sie nicht zugegriffen wird, in langsamen oder weiter entfernten Speicher bewegt werden, wodurch schneller oder näherer Speicher frei wird. Beispielsweise können kalte Seiten, für die ein Zugriff vorhergesagt wird, vor dem Auftreten eines Seitenfehlers im Voraus abgerufen werden, indem sie aus dem langsamen Speicher zum schnellen Speicher bewegt werden. Beispiele können das Bewegen von Seiten zum langsamen Speicher verhindern, für die ein erneuter Zugriff vorhergesagt wird. Beispiele können Seitenbewegungen planen, wenn die Speicherbandbreite- und/oder Netzwerkbandbreite-Belegung voraussichtlich gering ist, um die Wahrscheinlichkeit zu verringern, dass die Speicherbandbreite und die Netzwerkbandbreite die Arbeitslastperformance begrenzen.
  • 10 zeigt ein Beispielsystem. Ein Rechenknoten 1000 kann ähnliche Technologien umfassen wie die des Rechenknotens 100 und/oder des Systems 1400. Der Rechenknoten 1000 kann auf Daten im lokalen Speicher 104 und/oder auf Daten, die in einem oder mehreren der Speicherpoolknoten 150-0 bis 150-N gespeichert sind, zugreifen. Bei einigen Beispielen kann eine Cluster-Klassifizierung 1004 und/oder ein(e) Vorabruf / Migration 1006 durch einen Prozess durchgeführt werden, der durch Prozessoren 102 oder Programmierbare- oder Feste-Funktion-Schaltungsanordnung ausgeführt wird.
  • Die Cluster-Klassifizierung 1004 kann eine oder mehrere Seiten bestimmen, die Teil eines Clusters oder einer Klasse sein sollen. Klassen können dynamisch definiert werden, abhängig von der Arbeitslast oder dem Auftrag und basierend auf einem Speicherzugriffsmuster. Die Speicherzugriffsmuster können für die Seiten, auf die eine gegebene Arbeitslast zugreift, erheblich variieren, selbst innerhalb einer gegebenen statisch definierten Klasse. Die Varianz unter Speicherzugriffsmustern kann beispielsweise beeinflusst werden durch: eine Aufteilung zwischen der anfänglichen Speicherzuweisung für eine Arbeitslast-Engine und der Pro-Benutzer-Anfrage-Speicherzuweisung; eine Java-basierte Arbeitslast, die aufgrund des Java Virtual Machine (JVM)-Speicherma-nagements spezifische Muster impliziert; Arbeitslasten, die auf einer virtuellen Maschine ausgeführt werden, wo ein vollständiges OS ausführt wird, umfassend redundante und möglicherweise ungenutzte Dienste.
  • Die Cluster-Klassifizierung 1004 kann eine Datenkategorie berücksichtigen, um zu bestimmen, ob ein Cluster oder eine Klasse auf Datenzugriffsmuster überwacht werden soll, um vorherzusagen, ob Daten auf eine(n) weitere(n), langsamere(n) oder kältere(n) Speicher oder Speicherung migriert werden sollen; zu einem Nah- oder schnelleren Speicher im Voraus abgerufen werden sollen; oder in dem Speicher, in dem sie gespeichert sind, behalten werden sollen. Beispielsweise ist bei einigen Datenkategorien die Wahrscheinlichkeit höher, dass sie im lokalen Speicher gespeichert werden. Beispielsweise ist bei den folgenden Typen von Daten, die durch OS-Klassen definiert sind, die Wahrscheinlichkeit höher, dass auf sie zugegriffen wird und sie im lokalen Speicher gespeichert werden: Dateioperationen (z. B. die Abbildung einer Datei in den Speicher und das Lesen Schreiben für Dateien), selbst mit geringer Zugriffsfrequenz; gemeinschaftlich verwendete Objekte (z. B. Grafikbibliothek) mit geringer Zugriffsfrequenz; ein Heap; oder ein Stack. Anonyme Seiten mit geringer Zugriffsfrequenz können jedoch in einen entfernten Speicher oder langsameren Speicher bewegt werden.
  • Einige Cluster oder Klassen von Daten können von der Überwachung auf Datenzugriffsmuster zur Vorhersage, ob die Daten migriert, im Voraus abgerufen oder behalten werden sollen, ausgenommen werden. Beispielsweise Seiten, die auf gemeinschaftlich verwendete Objekte (z. B..so oder .dll) verweisen, die durch andere Prozesse verwendet werden können und im lokalen Speicher behalten werden und nicht bewegt werden sollen, da eine Bewegung sich negativ auf ihre Ausführung auswirken könnte.
  • Ein von einem Prozessor ausgeführtes OS kann auf eine Seitentabelle (PT; page table) zugreifen, die verfolgt, ob auf eine Seite zugegriffen wurde oder nicht. Das OS kann Metadaten über Zugriffe auf eine Seite im Zeitablauf im Speicher oder in einem Register speichern. Das OS kann diese Seitenzugriffsinformationen an einen Prozess im Benutzerraum freigeben. Die nachfolgende Tabelle 1 zeigt eine Datenstruktur von Metadaten von Seiten durch einen Prozess, die Zugriffe auf die Seiten p1, p2, ... pn zu den Zeitstempeln t1, t2, ... tn anzeigt, wobei i anzeigt, ob während dieses Zeitstempels auf die Seite zugegriffen wurde oder nicht. Tabelle 1
    t1 t2 ... tn
    p1 i(t1, p1) i(t2,p1) i(tn, p1)
    p2 i(t1, p2) i(t2, p2) i(tn, p2)
    ...
    Pm i(t1, pm) i(t2,pm) i(tn, pm)
  • Auf Metadaten aus Kernel-Seitenstrukturen kann über eine Schnittstelle zugegriffen werden, um die Metadaten in ausgewählte Benutzerraum-Prozesse zu kopieren. Die Metadaten können dem Kernel zur Verfügung stehen, der die Memory Management Unit (MMU) steuert. Ein Beispiel von Metadaten umfasst ein Zugriffsbit, das in einem Seitentabelleneintrag getragen wird, das anzeigt, ob auf dem Seitentabelleneintrag zugeordnete Daten zugegriffen wurde oder nicht zugegriffen wurde und ob es sich um eine heiße oder kalte Seite handelt. Heiße Seiten können sich auf Speicherseiten mit Hoher-Zugriff-Frequenz durch einen Prozess oder eine Gruppe von Prozessen beziehen, während sich kalte Seiten auf Speicherseiten mit Geringer-Zugriff-Frequenz durch einen Prozess oder eine Gruppe von Prozessen beziehen können. Kemelraum-Code kann Seitendurchläufe mit begrenzter Auswirkung von Arbeitslast-Ausführungsperformance durchführen, um Metadaten an Benutzerraum-Prozesse oder Vorabruf / Migration 1006 freizugeben.
  • Bei einigen Beispielen kann der / die Vorabruf / Migration 1006 Metadaten von Seiten im Zeitablauf eines gegebenen Prozesses oder einer Gruppe von Prozessen abfragen (poll). Die Informationen können für eine asynchrone Offline-Analyse gespeichert werden, die ein Lernen aus vorherigen Zugriffen auf Daten erlaubt. Die Entscheidung, ob und wohin Seiten auf einer Seite-für-Seite-Basis bewegt werden sollen, ist CPU-intensiv. Bei einigen Beispielen kann der / die Vorabruf / Migration 1006 eine Analyse auf einer Clusterbasis durchführen, wobei ein Cluster potenziell mehrere Seiten umfasst. Eine Cluster-ID kann eine Gruppe von einer oder mehreren Seiten repräsentieren. Eine Cluster-ID kann auf einem Zugriffsmuster basieren, wobei Seiten eines Clusters mit ähnlichen Zugriffsmustem in ein Cluster gruppiert werden. Bei einigen Beispielen kann der / die Vorabruf / Migration 1006 bestimmen, ob Daten auf Clusterebene im Voraus abgerufen oder migriert werden sollen. Beispielsweise können Cluster auf der Grundlage einer Anzahl an Zugriffe über ein Zeitfenster gruppiert werden. Eine Cluster-ID kann einen Bereich von Clusterzugriffen über ein Zeitfenster repräsentieren, z. B. [0-1000 Zugriffe], [1001-3000 Zugriffe] usw.
  • Basierend auf identifizierten Clustern von einer oder mehreren Seiten für nicht ausgeschlossene Klassen kann der / die Vorabruf / Migration 1006 den Speicherzugriff für einen gegebenen Prozess oder eine Gruppe von Prozessen (z. B. VM, Container, Microservice, serverlose Anwendung) verfolgen und vorhersagen, ob auf ein Cluster oder eine oder mehrere Seiten in einem zukünftigen Zeitfenster zugegriffen werden soll oder nicht. Beispielsweise kann auf der Grundlage mehrerer Zeitintervalle, in denen X % der Zeit auf ein Cluster zugegriffen wurde und (100-X) % der Zeit nicht auf ein Cluster zugegriffen wurde, ein solches Cluster im lokalen Speicher behalten werden. Beispielsweise kann das Cluster auf der Grundlage von Y % der Zeit, in der auf ein Cluster zugegriffen wurde, und (100-Y) % der Zeit, in der nicht auf ein Cluster zugegriffen wurde, in einen Speicherpool kopiert werden. Bei einigen Beispielen ist Y kleiner als X. Jüngere Zeitintervalle könnten stärker gewichtet werden als ältere Zeitintervalle, um zu bestimmen, ob ein Cluster von einem Nahspeicher in einen Speicherpool migriert werden soll. KI- und ML-Inferenztechnologien können zur Vorhersage von heißen oder kalten Clustern unter Verwendung von Graphanalysen auf der Grundlage spärlicher (sparse) Daten verwendet werden.
  • 11, 12, 13A und 13B zeigen ein Beispiel für das Clustering von Seiten in Cluster und die Vorhersage künftiger Zugriffe auf Daten, um zu bestimmen, welche Daten aus dem Cache und/oder dem lokalen Speicher in einen Speicherpool migriert, aus einem Speicherpool in einen langsameren Speicherpool migriert oder in ihrem derzeitigen Speicher beibehalten werden sollen.
  • 11 zeigt ein Beispiel für Zugriffsmuster. Die X-Achse repräsentiert die Zeit, die Y-Achse repräsentiert einzigartige Seiten und die Quadrate repräsentieren, dass auf eine Seite während eines Zeitfensters zugegriffen wurde. Zur Veranschaulichung zeigt das folgende Diagramm den Speicherzugriff pro Seite für einen gegebenen Prozess oder eine Gruppe von Prozessen im Zeitablauf. Einige Beispiele können Seiten zu einem Cluster zusammen gruppieren und Zugriffe auf ein Cluster von Seiten vorhersagen. Das Abbilden von Seiten auf ein Cluster kann durch die Verwendung von Seitenmetadaten erreicht werden, die im Benutzerraum über Abtastzeiten als eine Zeitreihe gesammelt werden. Bei dem Beispiel von 11 können die Cluster 1, 2 und 3 auf der Grundlage der Anzahl an Seitenzugriffen pro Zeitfenster identifiziert werden. Cluster-1-Seiten können im lokalen oder schnellen Speicher verbleiben, da auf Daten in Cluster-3-Seiten am häufigsten zugegriffen wird. Auf die Cluster 2 und 3 wird möglicherweise so selten zugegriffen, dass den Clustern 2 und 3 zugeordnete Seiten für die Lebensdauer eines Prozesses in einen Speicherpool bewegt werden können.
  • 12 zeigt ein Beispiel für die Zuweisung von Seiten zu Clustern oder Teilclustern. Seiten mit ähnlichen Zugriffsmustern können in Cluster 1 gruppiert werden. Beispielsweise können Seiten mit einer Anzahl von Zugriffen über ein Zeitfenster innerhalb eines ersten Bereichs einem ersten Teilcluster zugewiesen werden und Seiten mit einer Anzahl von Zugriffen über ein Zeitfenster innerhalb eines zweiten Bereichs können einem zweiten Teilcluster zugewiesen werden. Bei diesem Beispiel kann innerhalb des Clusters 1 ein erstes Teilcluster heiße Seiten repräsentieren, während ein zweites Teilcluster kalte Seiten repräsentieren kann. Seiten, die dem ersten Teilcluster zugeordnet sind, können in den lokalen oder schnelleren Speicher relativ zu dem Prozessor, der den Prozess ausführt, der auf Daten im ersten Teilcluster zugreift, migriert oder im Voraus abgerufen werden oder im lokalen oder schnelleren Speicher beibehalten werden, wenn solche Seiten bereits im lokalen oder schnelleren Speicher gespeichert sind. Seiten, die dem zweiten Teilcluster zugeordnet sind und auf die weniger häufig zugegriffen wird, können in einen langsameren Speicher relativ zu dem Prozessor, der den Prozess ausführt, der auf Daten im zweiten Teilcluster zugreift, migriert werden. Dementsprechend können Seiten in Teilcluster unterteilt werden, um zu bestimmen, ob Daten migriert oder im Voraus abgerufen werden sollen.
  • 13A zeigt ein Beispiel für die Musterdetektion für Teilcluster. Die Zugriffsraten eines Teilclusters einer oder mehrerer Seiten können verwendet werden, um ein KI-Modell zu trainieren, um eine Musterdetektion durchzuführen und vorherzusagen, ob das Teilcluster in einem zukünftigen Zeitfenster wahrscheinlich heiß oder kalt sein wird. Ein KI-Modell kann mit der Zugriffsrateneingabe aus Teilclustern separat trainiert werden, um ein Muster mit einer gegebenen Konfidenz zu detektieren. Wenn die Konfidenz gering ist, weil Speicherzugriffe in einem Cluster zufällig erscheinen, was unvermeidlich ist, dann kann das Modell verworfen werden. Ansonsten, wenn das Konfidenzniveau für ein Modell einen Schwellenwert erfüllt oder übertrifft, kann das Modell beibehalten und über wiederholte Durchläufe unter Verwendung verschiedener Arbeitslasten in einer bestimmten Hardwareumgebung verbessert werden. Dies eignet sich besonders für eine Microservice-Architektur mit Klonen desselben Prozesses oder derselben Gruppe von Prozessen, die Inhalte oder eine Reaktion auf eine Benutzeranfrage produzieren.
  • 13B zeigt ein Beispiel für die Verwendung eines trainierten Modells zur Vorhersage, ob ein Teilcluster in einem nachfolgenden Zeitbereich heiße oder kalte Seiten speichern wird. Das trainierte Modell kann verwendet werden, um bekannte Speicherzugriffsmuster nach Clustern zu identifizieren und somit Zugriffe auf Clusterebene vorherzusagen. Auf der Grundlage von vorhergesagten heißen oder kalten Zuständen eines Teilclusters kann, wie hierin beschrieben, ein Vorabruf, eine Migration oder eine Beibehaltung einer oder mehrerer Seiten stattfinden.
  • 14 stellt einen beispielhaften Prozess dar. Bei 1402 werden Zugriffsraten von Seiten von Speicher bestimmt. Beispielsweise kann der Speicher den lokalen Speicher zu einem Prozessor umfassen, der einen Prozess ausführt, der auf Daten aus den Seiten zugreift, sowie einen oder mehrere mit dem Netzwerk oder der Struktur verbundene Speicherpools. Bei 1404 werden Seiten innerhalb von Zugriffsratenbuckets und zugeordnete Seiten innerhalb von Buckets mit Clustern gruppiert. Beispielsweise können Kernelraum-Metadaten über Seitenzugriffe an einen Benutzerraum-Prozess weitergegeben werden (surfaced) und Zugriffsraten für Seiten können verfolgt werden. Seiten mit Zugriffsraten, die in ein gleiches Fenster passen, können in ein gleiches Cluster gruppiert werden. Bei 1406 kann ein KI-Modell auf der Grundlage von Zugriffsmustern auf Teilcluster trainiert werden. Beispielsweise kann ein Cluster von Daten, das keine ausgeschlossenen Kategorien (vorangehend beschrieben) umfasst, in Teilcluster unterteilt werden und es können heiße und kalte Zustände von Teilclustern identifiziert werden. Auf der Grundlage von heißen und kalten Zuständen von Teilclustern kann ein KI-Modell trainiert werden. Bei 1408 kann eine Vorhersage darüber getroffen werden, ob Daten im Voraus abgerufen, Daten migriert oder Daten in ihrer Speichervorrichtung behalten werden sollen. Daten können auf der Grundlage eines vorhergesagten heißen Zustands der Daten in einem Zeitfenster von Interesse in den lokalen oder schnelleren Speicher im Voraus abgerufen werden. Daten können auf der Grundlage eines vorhergesagten langsamen Zustands der Daten in einem Zeitfenster von Interesse in einen entfernten gepoolten Speicher oder einen langsameren Speicher migriert werden. Daten können an einem Speicherort beibehalten werden, wenn eine Vorhersage eines heißen oder kalten Zustands im Zeitfenster von Interesse mit dem Speicher übereinstimmt, der diese Daten speichert.
  • 15 zeigt ein beispielhaftes Rechensystem. Ein System 1500 kann verwendet werden, um zu bestimmen, ob Speicherressourcen einer Steuergruppe und einer SLA-Klasse zugeordnet, Daten im Voraus abgerufen, migriert oder beibehalten werden sollen, wie hierin beschrieben. Ein Prozessor 1510 kann irgendeine Art von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware umfassen, um die Verarbeitung für das System 1500 oder eine Kombination von Prozessoren bereitzustellen. Der Prozessor 1510 steuert den Gesamtbetrieb des Systems 1500 und kann ein oder mehrere programmierbare Allzweck- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs; digital signal processors), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PLDs; programmable logic devices) oder dergleichen oder eine Kombination solcher Vorrichtungen sein oder umfassen.
  • Bei einem Beispiel umfasst das System 1500 eine Schnittstelle 1512, die mit dem Prozessor 1510 gekoppelt ist, was eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentieren kann, die Verbindungen mit höherer Bandbreite benötigt, wie beispielsweise ein Speicherteilsystem 1520 oder Grafikschnittstellen-Komponenten 1540 oder Beschleuniger 1542. Die Schnittstelle 1512 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente oder auf einem Prozessor-Die integriert sein kann. Falls vorhanden, bildet eine Grafikschnittstelle 1540 eine Schnittstelle mit Grafikkomponenten, um an einen Benutzer des Systems 1500 eine visuelle Anzeige bereitzustellen. Bei einem Beispiel kann die Grafikschnittstelle 1540 eine hochauflösende (HD; high definition) Anzeige, die einem Benutzer eine Ausgabe bereitstellt, treiben. Hochauflösend kann sich auf eine Anzeige beziehen, die eine Pixeldichte von ungefähr 100 PPI (pixels per inch; Pixel pro Zoll) oder größer aufweist, und kann Formate wie beispielsweise Full HD (z. B. 1080p), Retina-Displays, 4K (ultrahochauflösend oder UHD (ultra-high definition) oder andere umfassen. Bei einem Beispiel kann die Anzeige eine Touchscreen-Anzeige umfassen. Bei einem Beispiel erzeugt die Grafikschnittstelle 1540 eine Anzeige basierend auf Daten, die in dem Speicher 1530 gespeichert sind, oder basierend auf Operationen, die der Prozessor 1510 ausführt, oder beidem. Bei einem Beispiel erzeugt die Grafikschnittstelle 1540 eine Anzeige basierend auf Daten, die in dem Speicher 1530 gespeichert sind, oder basierend auf Operationen, die der Prozessor 1510 ausführt, oder beidem.
  • Die Beschleuniger 1542 können eine Feste-Funktion- oder programmierbare Offload-Engine sein, auf die der Prozessor 1510 zugreifen kann oder die von diesem verwendet werden kann. Zum Beispiel kann ein Beschleuniger unter den Beschleunigern 1542 Kompressions- (DC-) Fähigkeit, Kryptographiedienste wie beispielsweise Public-Key-Verschlüsselung (PKE; public key encryption), Chiffrieren, Hash-/Authentifizierungs-Fähigkeiten, Entschlüsselung oder andere Fähigkeiten oder Dienste bereitstellen. Bei einigen Ausführungsbeispielen stellt ein Beschleuniger unter den Beschleunigern 1542 zusätzlich oder alternativ die hierin beschriebenen Feldauswahlsteuerungsfähigkeiten bereit. In einigen Fällen können die Beschleuniger 1542 in eine CPU-Buchse (z. B. ein Verbinder zu einer Hauptplatine oder Schaltungsplatine, die eine CPU umfasst und eine elektrische Schnittstelle mit der CPU bereitstellt) integriert sein. Beispielsweise können die Beschleuniger 1542 einen Einzel- oder Multi-Kern-Prozessor umfassen, eine Grafikverarbeitungseinheit, eine logische Ausführungseinheit mit Ein- oder Multi-Ebenen-Cache, funktionale Einheiten verwendbar zur unabhängigen Ausführung von Programmen oder Threads, anwendungsspezifische integrierte Schaltungen (ASICs), Neuronale-Netzwerk-Prozessoren (NNPs; neural network processors), programmierbare Steuerlogik und programmierbare Verarbeitungselemente wie feldprogrammierbare Gate-Arrays (FPGAs) oder programmierbare Logikvorrichtungen (PLDs). Die Beschleuniger 1542 können mehrere neuronale Netzwerke, CPUs, Prozessorkerne, Allzweck-Grafikverarbeitungseinheiten bereitstellen oder Grafikverarbeitungseinheiten können für die Verwendung durch Modelle der künstlichen Intelligenz (KI (artificial intelligence (AI)) oder des maschinellen Lernens (MI,; machine learning) zur Verfügung gestellt werden. Beispielsweise kann das KI-Modell eines oder mehrere verwenden oder umfassen von: einem Bestärkendes-Lernen-Schema, einem Q-Lernen-Schema, einem Deep-Q-Lernen oder einem Asynchronous Advantage Actor-Critic (A3C), einem kombinatorischen neuronalen Netzwerk, einem rekurrenten kombinatorischen neuronalen Netzwerk oder einem anderen KI- oder ML-Modell. Mehrere neuronale Netzwerke, Prozessorkerne oder Grafikverarbeitungseinheiten können für die Verwendung durch KI- oder MI,-Modelle zur Verfügung gestellt werden.
  • Ein Speicherteilsystem 1520 repräsentiert den Hauptspeicher des Systems 1500 und stellt Speicherung für einen Code, der von dem Prozessor 1510 ausgeführt werden soll, oder für Datenwerte, die bei der Ausführung einer Routine verwendet werden sollen, bereit. Das Speicherteilsystem 1520 kann eine oder mehrere Speichervorrichtungen 1530 umfassen, wie beispielsweise Nur-Lese-Speicher (ROM; read-only memory), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM; random access memory), wie beispielsweise DRAM, oder andere Speichervorrichtungen, oder eine Kombination solcher Vorrichtungen. Ein Speicher 1530 speichert und hostet unter anderem ein Betriebssystem (OS) 1532, um eine Softwareplattform für eine Ausführung von Anweisungen in dem System 1500 bereitzustellen. Zusätzlich können Anwendungen 1534 auf der Software-Plattform des OS 1532 von dem Speicher 1530 ausgeführt werden. Die Anwendungen 1534 repräsentieren Programme, die ihre eigene operative Logik zur Ausführung einer oder mehrerer Funktionen aufweisen. Prozesse 1536 repräsentieren Mittel oder Routinen, die dem OS 1532 oder einer oder mehreren Anwendungen 1534 Hilfsfunktionen bereitstellen, oder eine Kombination. Das OS 1532, die Anwendungen 1534 und die Prozesse 1536 stellen Software-Logik bereit, um Funktionen für das System 1500 bereitzustellen. Bei einem Beispiel umfasst das Speicherteilsystem 1520 eine Speichersteuerung 1522, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 1530 ist. Es wird darauf hingewiesen, dass die Speichersteuerung 1522 ein physikalischer Teil des Prozessors 1510 oder ein physikalischer Teil der Schnittstelle 1512 sein könnte. Zum Beispiel kann die Speichersteuerung 1522 eine integrierte Speichersteuerung sein, die auf einer Schaltung mit dem Prozessor 1510 integriert ist.
  • Bei einigen Beispielen kann das OS 1532 Linux®, Windows® Server oder Personal Computer, FreeBSD®, Android®, MacOS®, iOS®, VMware vSphere, openSUSE, RHEL, CentOS, Debian, Ubuntu oder irgendein anderes Betriebssystem sein. Das OS und der Treiber können auf einer CPU ausgeführt werden, die unter anderem von Intel®, ARM®, AMD®, Qualcomm®, IBM®, Texas Instruments® verkauft oder entwickelt wird.
  • Auch wenn nicht speziell dargestellt, versteht es sich, dass das System 1500 einen oder mehrere Busse oder Bussysteme zwischen Bauelementen (devices) umfassen kann, wie beispielsweise einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln, oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physikalische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination umfassen. Busse können zum Beispiel einen oder mehrere von einem Systembus, einem Peripheral Component Interconnect- (PCI-) Bus, einem Hyper Transport- oder Industry Standard Architecture- (ISA-) Bus, einem Small Computer System Interface- (SCSI-) Bus, einem universellen seriellen Bus (USB; universal serial bus) oder einem Institute of Electrical and Electronics Engineers- (IEEE-) Standard 1394-Bus (Firewire) umfassen.
  • Bei einem Beispiel umfasst das System 1500 eine Schnittstelle 1514, die mit der Schnittstelle 1512 gekoppelt sein kann. Bei einem Beispiel repräsentiert die Schnittstelle 1514 eine Schnittstellenschaltung, die eigenständige Komponenten und eine integrierte Schaltungsanordnung umfassen kann. Bei einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 1514. Eine Netzwerkschnittstelle 1550 stellt dem System 1500 die Möglichkeit bereit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 1550 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zelluläre Netzwerk-Verbindungskomponenten, USB (Universal Serial Bus) oder andere drahtgebundene oder drahtlos-standard-basierte oder proprietäre Schnittstellen umfassen. Die Netzwerkschnittstelle 1550 kann Daten an eine Vorrichtung senden, die in dem gleichen Rechenzentrum oder Rack ist, oder an eine entfernte Vorrichtung, was ein Senden von in einem Speicher gespeicherten Daten umfassen kann.
  • Einige Beispiele der Netzwerkschnittstelle 1550 sind Teil einer Infrastrukturverarbeitungseinheit (IPU; Infrastructure Processing Unit) oder Datenverarbeitungseinheit (DPU; data processing unit) oder werden von einer IPU oder DPU verwendet. Eine xPU kann sich zumindest auf eine IPU, DPU, GPU, GPGPU und/oder anderen Verarbeitungseinheiten (z. B. Beschleunigervorrichtungen) beziehen. Eine IPU oder DPU kann eine Netzwerkschnittstelle mit einer oder mehreren programmierbaren Pipelines oder Feste-Funktion-Prozessoren umfassen, um eine Auslagerung von Operationen auszuführen, die von einer CPU hätten ausgeführt werden können. Die IPU oder DPU kann eine oder mehrere Speichervorrichtungen umfassen. Bei einigen Beispielen kann die IPU oder DPU virtuelle Schaltoperationen ausführen, Speicherungstransaktionen managen (z. B. Komprimierung, Kryptographie, Virtualisierung) und Operationen managen, die auf anderen IPUs, DPUs, Servern oder Vorrichtungen ausgeführt werden.
  • Bei einem Beispiel umfasst das System 1500 eine oder mehrere Eingangs-/Ausgangs- (I/O) Schnittstellen 1560. Eine I/O-Schnittstelle 1560 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch die ein Benutzer mit dem System 1500 interagiert (z. B. Audio-, alphanumerische, tastbare/berührbare oder andere Schnittstellen). Eine Peripherieschnittstelle 1570 kann irgendeine Hardwareschnittstelle umfassen, die oben nicht ausdrücklich erwähnt wurde. Peripherievorrichtungen beziehen sich im Allgemeinen auf Vorrichtungen, die abhängig von dem System 1500 verbinden. Eine abhängige Verbindung ist eine Verbindung, bei der das System 1500 die Software- oder Hardware-Plattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • Bei einem Beispiel umfasst das System 1500 ein Speicherungsteilsystem 1580, um Daten auf eine nichtflüchtige Weise zu speichern. Bei einem Beispiel können in bestimmten Systemimplementierungen zumindest bestimmte Komponenten einer Speicherung 1580 mit Komponenten des Speicherteilsystems 1520 überlappen. Das Speicherungsteilsystem 1580 umfasst (eine) Speiche-rungsvorrichtung(en) 1584, die irgendein herkömmliches Medium zum Speichern großer Datenmengen auf nichtflüchtige Weise sein oder umfassen können, wie beispielsweise eine oder mehrere magnetische, Festkörper- oder optisch-basierte Platten oder eine Kombination. Eine Speicherung 1584 umfasst einen Code oder Anweisungen und Daten 1586 in einem dauerhaften Zustand (z. B. der Wert bleibt trotz Unterbrechung der Leistung zu dem System 1500 erhalten). Die Speicherung 1584 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 1530 üblicherweise der Ausführungs- oder Betriebsspeicher ist, um an den Prozessor 1510 Anweisungen bereitzustellen. Während die Speicherung 1584 nichtflüchtig ist, kann der Speicher 1530 einen flüchtigen Speicher umfassen (z. B. der Wert oder Zustand der Daten ist unbestimmt, wenn die Leistung zu dem System 1500 unterbrochen ist). Bei einem Beispiel umfasst das Speicherungsteilsystem 1580 eine Steuerung 1582, um eine Schnittstelle mit der Speicherung 1584 zu bilden. Bei einem Beispiel ist die Steuerung 1582 ein physikalischer Teil der Schnittstelle 1514 oder des Prozessors 1510 oder kann Schaltungen oder Logik sowohl in dem Prozessor 1510 als auch in der Schnittstelle 1514 umfassen.
  • Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und damit die darin gespeicherten Daten) unbestimmt ist, falls Leistung zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher verwendet ein Aktualisieren der Daten, die in der Vorrichtung gespeichert sind, um den Zustand aufrechtzuerhalten. Ein Beispiel eines dynamischen flüchtigen Speichers umfasst DRAM (Dynamic Random Access Memory; dynamischen Direktzugriffsspeicher) oder eine Variante wie beispielsweise synchronen DRAM (SDRAM; Synchronous DRAM). Ein weiteres Beispiel eines flüchtigen Speichers umfasst einen Cache. Ein Speicherteilsystem, wie es hierin beschrieben ist, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie beispielsweise DDR3 (Double Data Rate Version 3, ursprüngliche Herausgabe durch JEDEC (Joint Electronic Device Engineering Council) am 16. Juni 2007). DDR4 (DDR-Version 4, erste Spezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR-Version 4), LPDDR3 (Low Power DDR-Version3 (Niedrig-Leistungs-DDR-Version3), JESD209-3B, August 2013 durch JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide Input/Output Version 2 (breiter Eingang/Ausgang Version 2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014, HBM (High Bandwidth Memory (Hohe-Bandbreite-Speicher), JESD325, ursprünglich veröffentlicht durch JEDEC im Oktober 2013, LPDDR5 (derzeit in Diskussion durch JEDEC), HBM2 (HBM-Version 2), derzeit in Diskussion durch JEDEC, oder anderen oder Kombinationen von Speichertechnologien, und Technologien, die auf Herleitungen oder Erweiterungen solcher Spezifikationen basieren.
  • Eine nichtflüchtige Speicher- (NVM; non-volatile memory) Vorrichtung ist ein Speicher, dessen Zustand bestimmt wird, auch falls Leistung zu der Vorrichtung unterbrochen wird. Bei einem Ausführungsbeispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung, wie beispielsweise NAND-Technologien, oder genauer, einen Multi-Schwellenpegel-NAND-Flash-Speicher (zum Beispiel Single-Level Cell („SLC“), Multi-Level Cell („MI,C“), Quad-Level Cell („QLC“), Tri-Level Cell („TLC“) oder ein anderes NAND) umfassen. Eine NVM-Vorrichtung kann auch eine byteadressierbare dreidimensionale Write-in-Place Cross Point- (Vor-Ort-Schreiben-Kreuzpunkt-) Speichervorrichtung oder eine andere byteadressierbare Write-in-Place-NVM-Vorrichtung (auch als dauerhafter Speicher bezeichnet) umfassen, wie beispielsweise einen ein- oder mehrstufigen Phasenwechselspeicher (PCM; Phase Change Memory) oder Phasenwechselspeicher mit einem Schalter (PCMS), Intel® Optane™-Speicher, NVM-Vorrichtungen, die Chalkogenidphasenwechselmaterial (z. B. Chalkogenidglas) verwenden, einen resistiven Speicher umfassend Metalloxid-Basis, Sauerstoff-Leerstellenbasis und Conductive Bridge Random Access Memory (CB-RAM), Nanodrahtspeicher, ferroelektrischer Direktzugriffsspeicher (FeRAM, FRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie, Spin Transfer Torque- (STT-) MRAM, eine auf Spintronik-Magnet-Übergang-Speicher basierende Vorrichtung, eine auf magnetischem Tunnelübergang (MTJ; magnetic tunneling junction) basierende Vorrichtung, eine DW (Domain Wall; Domänenwand) und SOT (Spin Orbit Transfer) basierte Vorrichtung, eine thyristorbasierte Speichervorrichtung oder eine Kombination aus einem oder mehreren der Obigen oder einen anderen Speicher.
  • Eine Leistungsquelle (nicht abgebildet) stellt den Komponenten des Systems 1500 Leistung bereit. Genauer gesagt bildet eine Leistungsquelle üblicherweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen in dem System 1500, um den Komponenten des Systems 1500 Leistung bereitzustellen. Bei einem Beispiel umfasst die Leistungsversorgung einen AC-zu-DC-(Wechselstrom-zu-Gleichstrom-; alternating current to direct current) Adapter zum Einstecken in eine Steckdose. Eine solche Wechselstrom- (AC-) Leistung kann eine Erneuerbare-Energien-(z. B. Solarleistung-) Leistungsquelle sein. Bei einem Beispiel umfasst eine Leistungsquelle eine Gleichstrom- (DC-) Leistungsquelle, wie beispielsweise einen externen Wechselstrom-zu-Gleichstrom- (AC-zu-DC-) Wandler. Bei einem Beispiel umfasst eine Leistungsquelle oder Leistungsversorgung drahtlose Ladehardware zum Aufladen über die Nähe zu einem Ladefeld. Bei einem Beispiel kann eine Leistungsquelle eine interne Batterie, eine Wechselstromversorgung, eine bewegungsbasierte Leistungsversorgung, eine Solarleistungsversorgung oder eine Brennstoffzellenquelle umfassen.
  • Bei einem Beispiel kann das System 1500 unter Verwendung von miteinander verbundenen Rechenschlitten aus Prozessoren, Speichern, Speicherungen, Netzwerkschnittstellen und anderen Komponenten implementiert sein. Hochgeschwindigkeitsverbindungen können verwendet werden, wie beispielsweise: Ethernet (IEEE 802.3), entfernter Direktspeicherzugriff (RDMA; remote direct memory access), InfiniBand, Internet Wide Area RDMA Protocol (iWARP), Transmission Control Protocol (TCP), User Datagram Protocol (UDP), quick UDP Internet Connections (QUIC), RDMA over Converged Ethernet (RoCE), Peripheral Component Interconnect express (PCIe), Intel QuickPath Interconnect (QPI), Intel Ultra Path Interconnect (UPI), Intel On-Chip System Fabric (IOSF), Omni-Path, Compute Express Link (CXL), HyperTransport, high-speed fabric, NVLink, Advanced Microcontroller Bus Architecture (AMBA) interconnect, OpenCAPI, Gen-Z, Infinity Fabric (IF), Cache Coherent Interconnect for Accelerators (CCIX), 3GPP Long Term Evolution (LTE) (4G), 3GPP 5G, und Variationen derselben. Daten können unter Verwendung eines Protokolls wie beispielsweise NVMe over Fabrics (NVMe-oF) oder NVMe auf virtualisierte Speicherungsknoten kopiert oder gespeichert werden oder es kann darauf zugegriffen werden.
  • Ausführungsbeispiele hierin können in verschiedenen Arten von Rechen-Ausrüstung, Smartphones, Tablets, Personal-Computer und Netzwerk-Ausrüstung, wie beispielsweise Schaltern, Routern, Racks und Blade-Servern, wie sie in einem Rechenzentrum und/oder einer Serverfarmumgebung verwendet werden, implementiert sein. Die Server, die in Rechenzentren und Serverfarmen verwendet werden, umfassen angeordnete Server-Konfigurationen wie beispielsweise Rack-basierte Server oder Blade-Server. Diese Server sind in Kommunikation über verschiedene Netzwerkzugänge miteinander verbunden, wie beispielsweise ein Partitionieren von Serversätzen in lokale Netzwerke (LANs; Local Area Networks) mit geeigneten Schalt- und Routing-Einrichtungen zwischen den LANs, um ein privates Intranet zu bilden. Zum Beispiel können Cloud-Hosting-Einrichtungen üblicherweise große Rechenzentren mit einer Vielzahl von Servern nutzen. Ein Blade umfasst eine separate Rechenplattform, die ausgebildet ist, um serverartige Funktionen auszuführen, das heißt, einen „Server auf einer Karte“. Dementsprechend umfasst jedes Blade Komponenten, die herkömmlichen Servern gemeinsam sind, umfassend eine gedruckte Hauptschaltungsplatine (Hauptplatine; main board), die eine interne Verkabelung (d. h. Busse) zum Koppeln geeigneter integrierter Schaltungen (ICs; integrated circuits) und anderer Komponenten, die auf der Platine befestigt sind, bereitstellt.
  • Bei einigen Beispielen können die Netzwerkschnittstelle und andere hierin beschriebene Ausführungsbeispiele in Verbindung mit einer Basisstation (z. B. 3G, 4G, 5G usw.), Makro-Basisstation (z. B. 5G-Netzwerke), Picostation (z. B. ein IEEE 802.11-kompatibler Zugriffspunkt), Nanostation (z. B. für Point-to-MultiPoint- (PtMP-) Anwendungen), lokalen Rechenzentren, externen Rechenzentren, Edge-Netzwerkelementen, Nebelnetzwerkelementen und/oder hybriden Rechenzentren (z. B. Rechenzentren, die Virtualisierung, Cloud und softwaredefinierte Netzwerke verwenden, um Anwendungs-Arbeitslasten über physische Rechenzentren und verteilte Multi-Cloud-Umgebungen hinweg bereitzustellen) verwendet werden.
  • Verschiedene Beispiele können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination von beiden implementiert sein. Bei einigen Beispielen können Hardware-Elemente Vorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten usw.), integrierte Schaltungen, ASICs, PLDs, DSPs, FPGAs, Speichereinheiten, Logik-Gates, Register, ein Halbleiterbauelement, Chips, Mikrochips, Chipsätze usw. umfassen. Bei einigen Beispielen können Software-Elemente Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, APIs, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination derselben umfassen. Die Bestimmung, ob ein Beispiel unter Verwendung von Hardware- und/oder Software-Elementen implementiert wird, kann gemäß irgendeiner Anzahl von Faktoren, wie beispielsweise der gewünschten Rechenrate, den Leistungspegeln, den Wärmetoleranzen, dem Budget des Verarbeitungszyklus, den Eingabedatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Entwurf- oder Performanceeinschränkungen, wie für eine gegebene Implementierung erwünscht, variieren. Ein Prozessor kann eines oder mehrere sein aus einer Kombination aus einer Hardware-Zustandsmaschine, digitalen Steuerlogik, zentralen Verarbeitungseinheit oder irgendwelchen Hardware-, Firmware- und/oder Software-Elementen.
  • Einige Beispiele können unter Verwendung von oder als ein Herstellungsartikel oder zumindest ein computerlesbares Medium implementiert sein. Ein computerlesbares Medium kann ein nichtflüchtiges Speicherungsmedium zur Speicherung von Logik umfassen. Bei einigen Beispielen kann das nichtflüchtige Speicherungsmedium eine oder mehrere Arten von computerlesbaren Speicherungsmedien umfassen, die fähig sind, elektronische Daten zu speichern, umfassend flüchtigen oder nichtflüchtigen Speicher, entfernbaren oder nicht entfernbaren Speicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter. Bei einigen Beispielen kann die Logik verschiedene Softwareelemente, wie beispielsweise Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, API, Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon umfassen.
  • Gemäß einigen Beispielen kann ein computerlesbares Medium ein nichtflüchtiges Speicherungsmedium zum Speichern oder Aufrechterhalten von Anweisungen umfassen, 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 gemäß den beschriebenen Beispielen auszuführen. Die Anweisungen können irgendeine geeignete Art von Code umfassen, wie beispielsweise einen Quellcode, einen kompilierten Code, einen interpretierten Code, einen ausführbaren Code, einen statischen Code, einen dynamischen Code und Ähnliches. Die Anweisungen können gemäß einer vordefinierten Computersprache, Weise oder Syntax implementiert sein, um eine Maschine, eine Rechenvorrichtung oder ein System anzuweisen, eine bestimmte Funktion auszuführen. Die Anweisungen können unter Verwendung irgendeiner geeigneten Hochsprachen-, Niedersprachen-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert sein.
  • Ein oder mehrere Aspekte von zumindest einem Beispiel können durch repräsentative Anweisungen implementiert sein, die auf zumindest einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine, eine Rechenvorrichtung oder ein System gelesen werden, die Maschine, die Rechenvorrichtung oder das System veranlassen, Logik zur Ausführung der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Fertigungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Das Auftreten der Phrase „ein einzelnes Beispiel“ oder „ein Beispiel“ bezieht sich nicht notwendigerweise auf dasselbe Beispiel oder Ausführungsbeispiel. Irgendein hierin beschriebener Aspekt kann mit irgendeinem anderen Aspekt oder ähnlichen hierin beschriebenen Aspekt kombiniert werden, unabhängig davon, ob die Aspekte in Bezug auf dieselbe Figur oder dasselbe Element beschrieben sind. Ein Teilen, Auslassen oder Umfassen von Blockfunktionen, die in den beiliegenden Figuren abgebildet sind, lässt nicht herleiten, dass die Hardwarekomponenten, Schaltungen, Software und/oder Elemente zum Implementieren dieser Funktionen notwendigerweise unterteilt, weggelassen oder in Ausführungsbeispielen umfasst sein müssten.
  • Einige Beispiele können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ zusammen mit ihren Herleitungen beschrieben sein. Diese Begriffe sind nicht zwingend als Synonyme füreinander vorgesehen. Beispielsweise können Beschreibungen, die die Begriffe „verbunden“ und/oder „gekoppelt“ verwenden, möglicherweise anzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, jedoch weiter miteinander zusammenarbeiten oder interagieren.
  • Die Begriffe „erste,r,s“, „zweite,r,s“ und Ähnliches bezeichnen hierin nicht irgendeine Reihenfolge, Menge oder Bedeutung, sondern werden vielmehr dazu verwendet, ein Element von einem anderen zu unterscheiden. Die Begriffe „ein,e,s“ (a, an) bezeichnen hierin nicht eine Mengenbeschränkung, sondern vielmehr das Vorhandensein von zumindest einem von den Gegenständen, auf die Bezug genommen wird. Der Begriff „aufgeschaltet“ (asserted), der hierin Bezug nehmend auf ein Signal verwendet wird, bezeichnet einen Zustand des Signals, in dem das Signal aktiv ist und der durch Anwenden irgendeines Logikpegels auf das Signal, entweder Logik 0 oder Logik 1, erreicht werden kann. Die Begriffe „folgen“ oder „nach“ können sich auf unmittelbar folgen oder folgen nach einem anderen Ereignis oder Ereignissen beziehen. Andere Abfolgen von Operation können auch gemäß alternativen Ausführungsbeispielen ausgeführt werden. Ferner können zusätzliche Operationen, abhängig von den bestimmten Anwendungen, hinzugefügt oder entfernt werden. Es kann irgendeine Kombination von Änderungen verwendet werden und ein Durchschnittsfachmann auf dem Gebiet, der den Nutzen dieser Offenbarung hat, würde die vielen Variationen, Modifikationen und alternativen Ausführungsbeispiele davon verstehen.
  • Eine disjunktive Sprache, wie beispielsweise die Phrase „zumindest eines von X, Y oder Z“, sofern nicht anderweitig spezifisch angegeben, wird ansonsten innerhalb des Kontexts verstanden, wie er im Allgemeinen verwendet wird, um darzustellen, dass ein Gegenstand, ein Begriff etc. entweder X, Y oder Z oder eine Kombination davon (z. B. X, Y und/oder Z) sein kann. Somit ist solch disjunktive Sprache nicht im Allgemeinen dafür vorgesehen und soll nicht implizieren, dass bestimmte Ausführungsbeispiele das jeweilige Vorliegen von zumindest einem von X, zumindest einem von Y oder zumindest einem von Z erfordern. Zusätzlich soll konjunktive Sprache wie beispielsweise die Phrase „zumindest eines von X, Y und Z“, sofern nicht anderweitig spezifisch angegeben, auch als X, Y, Z oder irgendeine Kombination davon, umfassend „X, Y und/oder Z“, verstanden werden.
  • Darstellende Beispiele der Vorrichtungen, Systeme und Verfahren, die hierin offenbart sind, sind nachfolgend bereitgestellt. Ein Ausführungsbeispiel der Vorrichtungen, Systeme und Verfahren kann irgendein einzelnes oder mehrere und irgendeine Kombination der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst ein oder mehrere Beispiele und umfasst ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Bereitstellen einer Schnittstelle für ein Betriebssystem (OS), um verschiedene Speicherpoolklassen zu erzeugen, die einem oder mehreren Prozessen zugewiesen werden, und Zuweisen einer Speicherpoolklasse zu einem Prozess des einen oder der mehreren Prozesse.
  • Beispiel 2 umfasst ein oder mehrere Beispiele, wobei die Schnittstelle eine Anwendungsprogrammschnittstelle (API) oder eine Konfigurationsdatei umfasst.
  • Beispiel 3 umfasst ein oder mehrere Beispiele, wobei eine Speicherpoolklasse der verschiedenen Speicherpoolklassen eine Mischung von Speichervorrichtungen in mindestens einem Speicherpool definiert, die für den Zugriff durch den einen oder die mehreren Prozesse verfügbar sind.
  • Beispiel 4 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Zuordnen von Speichervorrichtungen zu mehreren Speicherpoolklassen, um mehrere verschiedene Kategorien von Speicherressourcenfähigkeiten bereitzustellen.
  • Beispiel 5 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Ändern von Speichervorrichtungen, die der Speicherpoolklasse der verschiedenen Speicherpoolklassen zugeordnet sind, auf der Grundlage von Änderungen der Speicherressourcenverfügbarkeit.
  • Beispiel 6 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Zuordnen der Speicherpoolklasse der verschiedenen Speicherpoolklassen zu einer Service Level Agreement (SLA) -Klasse, wobei die SLA-Klasse die erforderlichen Speicherressourcenfähigkeiten des Prozesses des einen oder der mehreren Prozesse spezifiziert.
  • Beispiel 7 umfasst eines oder mehrere Beispiele, wobei aufgrund der Migration des Prozesses des einen oder der mehreren Prozesse zu einem anderen Rechenknoten der migrierte Prozess den Zugriff auf die zugeordnete Speicherpoolklasse behält.
  • Beispiel 8 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Klassifizieren einer Gruppe von zwei oder mehr Speicherseiten in ein Cluster auf der Grundlage der Anzahl der Zugriffe über eine bestimmte Zeitperiode; Klassifizieren einer zweiten Gruppe von zwei oder mehr Speicherseiten in ein zweites Cluster auf der Grundlage der Anzahl der Zugriffe über die Zeitperiode; und auf einer Cluster-zu-Cluster-Basis, Bestimmen, ob Daten im Voraus abgerufen oder dem Cluster zugeordnete Daten migriert werden sollen.
  • Beispiel 9 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Bereitstellen von Seitenzugriffszahlen über einen Zeitbereich bei einem Benutzerraumprozess, um Zugriffe auf eine Seite über die Zeit hinweg zu identifizieren.
  • Beispiel 10 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Vorhersagen, ob auf dem Cluster zugeordnete Daten in einer zukünftigen Zeitperiode zugegriffen werden soll, das Bestimmen, ob Daten im Voraus abgerufen oder dem Cluster zugeordnete Daten migriert werden sollen, umfassend: auf der Grundlage einer Vorhersage, dass auf Daten, die dem Cluster zugeordnet sind, in der zukünftigen Zeitperiode zugegriffen werden soll, im Voraus abrufen der Daten in einen Speicher, der einem Zugriff mit geringerer Latenz zugeordnet ist als ein Speicher, der die Daten speichert.
  • Beispiel 11 umfasst ein oder mehrere Beispiele, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: auf der Grundlage einer Vorhersage, dass auf die dem Cluster zugeordneten Daten in der zukünftigen Zeitperiode nicht zugegriffen werden soll, Migrieren der Daten in einen Speicher, der einem Zugriff mit höherer Latenz zugeordnet ist als ein Speicher, der die Daten speichert.
  • Beispiel 12 umfasst ein oder mehrere Beispiele, der Vorabruf der Daten in einen Speicher, der einem Zugriff mit geringerer Latenz zugeordnet ist als ein Speicher, der die Daten speichert, umfassend: Auslösen einer Datenmigration, wenn die zu erwartende Belegung der Speicherbandbreite unter einem Schwellenwert liegt.
  • Beispiel 13 umfasst ein oder mehrere Beispiele und umfasst eine Vorrichtung, umfassend: einen Speicherpool, der Speichervorrichtungen und Schaltungsanordnungen umfasst, die, wenn sie betriebsfähig, ausgebildet sind zum: Bereitstellen des Zugriffs auf einen Satz von einer oder mehreren Speichervorrichtungen in dem Speicherpool in Verbindung mit einem Zugriff auf eine Speicherpoolklasse, wobei der Satz von einer oder mehreren Speichervorrichtungen in dem Speicherpool der Speicherpoolklasse zugewiesen ist.
  • Beispiel 14 umfasst ein oder mehrere Beispiele, wobei die Speicherpoolklasse ausgebildet ist, eine Mischung von Speichervorrichtungen im Speicherpool zu definieren, die für den Zugriff durch einen oder mehrere Prozesse verfügbar sind.
  • Beispiel 15 umfasst ein oder mehrere Beispiele, wobei ein zweiter Satz von einer oder mehreren Speichervorrichtungen in dem Speicherpool einer zweiten Speicherpoolklasse zugeordnet ist und wobei der Satz und der zweite Satz von einer oder mehreren Speichervorrichtungen unterschiedlichen Kategorien von Speicherressourcenfähigkeiten zugeordnet sind.
  • Beispiel 16 umfasst ein oder mehrere Beispiele, die einen Server umfassen, der kommunikativ mit dem Speicherpool gekoppelt ist, wobei ein Prozess zugewiesen ist, um auf den Satz von einer oder mehreren Speichervorrichtungen zuzugreifen, die der Speicherpoolklasse zugeordnet sind, und wobei basierend auf der Migration des Prozesses von dem Server zu einem anderen Server der migrierte Prozess ausgebildet ist, den Zugriff auf den Satz von einer oder mehreren Speichervorrichtungen beizubehalten.
  • Beispiel 17 umfasst ein oder mehrere Beispiele, umfassend einen Server, der kommunikativ mit dem Speicherpool gekoppelt ist und eine Speichervorrichtung umfasst, wobei die Speichervorrichtung der Speicherpoolklasse zugeordnet ist.
  • Beispiel 18 umfasst ein oder mehrere Beispiele, die einen Server umfassen, der kommunikativ mit dem Speicherpool gekoppelt ist, wobei der Server ausgebildet ist, zum: Bereitstellen einer Schnittstelle für ein Betriebssystem (OS), um verschiedene Speicherpoolklassen zu erzeugen, die einem oder mehreren Prozessen zugewiesen werden, die auf dem Server ausgeführt werden, und Zuweisen der Speicherpoolklasse zu einem Prozess des einen oder der mehreren Prozesse.
  • Beispiel 19 umfasst ein oder mehrere Beispiele, umfassend ein Rechenzentrum, wobei das Rechenzentrum den Server, einen zweiten Server und den Speicherpool umfasst und wobei der zweite Server einen Orchestrator ausführen soll, um den Server auszuwählen, um einen Prozess auszuführen, der auf der Fähigkeit des Servers basiert, auf den Satz von einer oder mehreren Speichervorrichtungen zuzugreifen, die der Speicherpoolklasse zugeordnet sind, die ein dem Prozess zugeordnetes Service Level Agreement (SLA) erfüllt oder übertrifft.
  • Beispiel 20 umfasst ein oder mehrere Beispiele und umfasst ein Verfahren, umfassend: Zuordnen einer von verschiedenen Speicherpoolklassen zu einem Prozess, wobei die zugeordnete Speicherpoolklasse einer Mischung von Speichervorrichtungen zugewiesen ist, die Speichervorrichtungen eines Speicherpools umfasst.
  • Beispiel 21 umfasst ein oder mehrere Beispiele und umfasst ein Klassifizieren einer Gruppe von zwei oder mehr Speicherseiten in ein Cluster auf der Grundlage der Anzahl der Zugriffe über eine bestimmte Zeitperiode; Klassifizieren einer zweiten Gruppe von zwei oder mehr Speicherseiten in ein zweites Cluster auf der Grundlage der Anzahl der Zugriffe über die Zeitperiode; und auf einer Cluster-zu-Cluster-Basis, Bestimmen, ob Daten im Voraus abgerufen oder dem Cluster zugeordnete Daten migriert werden sollen.

Claims (21)

  1. Ein computerlesbares Medium, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Bereitstellen einer Schnittstelle für ein Betriebssystem (OS), um verschiedene Speicherpoolklassen zu erzeugen zum Zuweisen zu einem oder mehreren Prozessen, und Zuweisen einer Speicherpoolklasse zu einem Prozess des einen oder der mehreren Prozesse.
  2. Das computerlesbare Medium gemäß Anspruch 1, wobei die Schnittstelle eine Anwendungsprogrammschnittstelle (API) oder eine Konfigurationsdatei umfasst.
  3. Das computerlesbare Medium gemäß einem der vorangehenden Ansprüche, wobei eine Speicherpoolklasse der verschiedenen Speicherpoolklassen eine Mischung von Speichervorrichtungen in mindestens einem Speicherpool definiert, die für den Zugriff durch den einen oder die mehreren Prozesse verfügbar sind.
  4. Das computerlesbare Medium gemäß einem der vorangehenden Ansprüche, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Zuordnen von Speichervorrichtungen zu mehreren Speicherpoolklassen, um mehrere verschiedene Kategorien von Speicherressourcenfähigkeiten bereitzustellen.
  5. Das computerlesbare Medium gemäß einem der vorangehenden Ansprüche, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Ändern von Speichervorrichtungen, die der Speicherpoolklasse der verschiedenen Speicherpoolklassen zugeordnet sind, auf der Grundlage von Änderungen der Speicherressourcenverfügbarkeit.
  6. Das computerlesbare Medium gemäß einem der vorangehenden Ansprüche, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Zuordnen der Speicherpoolklasse der verschiedenen Speicherpoolklassen zu einer Service Level Agreement (SLA) -Klasse, wobei die SLA-Klasse die erforderlichen Speicherressourcenfähigkeiten des Prozesses des einen oder der mehreren Prozesse spezifiziert.
  7. Das computerlesbare Medium gemäß einem der vorangehenden Ansprüche, wobei aufgrund der Migration des Prozesses des einen oder der mehreren Prozesse zu einem anderen Rechenknoten der migrierte Prozess den Zugriff auf die zugeordnete Speicherpoolklasse behält.
  8. Das computerlesbare Medium gemäß einem der vorangehenden Ansprüche, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Klassifizieren einer Gruppe von zwei oder mehr Speicherseiten in ein Cluster auf der Grundlage der Anzahl der Zugriffe über eine bestimmte Zeitperiode; Klassifizieren einer zweiten Gruppe von zwei oder mehr Speicherseiten in ein zweites Cluster auf der Grundlage der Anzahl der Zugriffe über die Zeitperiode; und auf einer Cluster-zu-Cluster-Basis, Bestimmen, ob Daten im Voraus abgerufen oder dem Cluster zugeordnete Daten migriert werden sollen.
  9. Das computerlesbare Medium gemäß Anspruch 8, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Bereitstellen von Seitenzugriffszahlen über einen Zeitbereich bei einem Benutzerraumprozess, um Zugriffe auf eine Seite über die Zeit hinweg zu identifizieren.
  10. Das computerlesbare Medium gemäß Anspruch 8 oder 9, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Vorhersagen, ob auf dem Cluster zugeordnete Daten in einer zukünftigen Zeitperiode zugegriffen werden soll, das Bestimmen, ob Daten im Voraus abgerufen oder dem Cluster zugeordnete Daten migriert werden sollen, umfassend: auf der Grundlage einer Vorhersage, dass auf Daten, die dem Cluster zugeordnet sind, in der zukünftigen Zeitperiode zugegriffen werden soll, im Voraus abrufen der Daten in einen Speicher, der einem Zugriff mit geringerer Latenz zugeordnet ist als ein Speicher, der die Daten speichert.
  11. Das computerlesbare Medium gemäß Anspruch 10, umfassend darauf gespeicherte Anweisungen, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: auf der Grundlage einer Vorhersage, dass auf die dem Cluster zugeordneten Daten in der zukünftigen Zeitperiode nicht zugegriffen werden soll, Migrieren der Daten in einen Speicher, der einem Zugriff mit höherer Latenz zugeordnet ist als ein Speicher, der die Daten speichert.
  12. Das computerlesbare Medium gemäß Anspruch 10 oder 11, der Vorabruf der Daten in einen Speicher, der einem Zugriff mit geringerer Latenz zugeordnet ist als ein Speicher, der die Daten speichert, umfassend: Auslösen einer Datenmigration, wenn die zu erwartende Belegung der Speicherbandbreite unter einem Schwellenwert liegt.
  13. Eine Vorrichtung, umfassend: einen Speicherpool, der Speichervorrichtungen und Schaltungsanordnungen umfasst, die, wenn betriebsbereit, ausgebildet sind zum: Bereitstellen des Zugriffs auf einen Satz von einer oder mehreren Speichervorrichtungen in dem Speicherpool in Verbindung mit einem Zugriff auf eine Speicherpoolklasse, wobei der Satz von einer oder mehreren Speichervorrichtungen in dem Speicherpool der Speicherpoolklasse zugewiesen ist.
  14. Die Vorrichtung gemäß Anspruch 13, wobei die Speicherpoolklasse ausgebildet ist, eine Mischung von Speichervorrichtungen im Speicherpool zu definieren, die für den Zugriff durch einen oder mehrere Prozesse verfügbar sind.
  15. Die Vorrichtung gemäß Anspruch 13 oder 14, wobei ein zweiter Satz von einer oder mehreren Speichervorrichtungen in dem Speicherpool einer zweiten Speicherpoolklasse zugeordnet ist und wobei der Satz und der zweite Satz von einer oder mehreren Speichervorrichtungen unterschiedlichen Kategorien von Speicherressourcenfähigkeiten zugeordnet sind.
  16. Die Vorrichtung gemäß einem der Ansprüche 13-15, die einen Server umfasst, der kommunikativ mit dem Speicherpool gekoppelt ist, wobei ein Prozess zugewiesen ist, um auf den Satz von einer oder mehreren Speichervorrichtungen zuzugreifen, die der Speicherpoolklasse zugeordnet sind, und wobei basierend auf der Migration des Prozesses von dem Server zu einem anderen Server der migrierte Prozess ausgebildet ist, den Zugriff auf den Satz von einer oder mehreren Speichervorrichtungen beizubehalten.
  17. Die Vorrichtung gemäß einem der Ansprüche 13-16, umfassend einen Server, der kommunikativ mit dem Speicherpool gekoppelt ist und eine Speichervorrichtung umfasst, wobei die Speichervorrichtung der Speicherpoolklasse zugeordnet ist.
  18. Die Vorrichtung gemäß einem der Ansprüche 13-17, die einen Server umfasst, der kommunikativ mit dem Speicherpool gekoppelt ist, wobei der Server ausgebildet ist, zum: Bereitstellen einer Schnittstelle für ein Betriebssystem (OS), um verschiedene Speicherpoolklassen zu erzeugen, die einem oder mehreren Prozessen zugewiesen werden, die auf dem Server ausgeführt werden, und Zuweisen der Speicherpoolklasse zu einem Prozess des einen oder der mehreren Prozesse.
  19. Die Vorrichtung gemäß Anspruch 18, die ein Rechenzentrum umfasst, wobei das Rechenzentrum den Server, einen zweiten Server und den Speicherpool umfasst und wobei der zweite Server einen Orchestrator ausführen soll, um den Server auszuwählen, um einen Prozess auszuführen, der auf der Fähigkeit des Servers basiert, auf den Satz von einer oder mehreren Speichervorrichtungen zuzugreifen, die der Speicherpoolklasse zugeordnet sind, die ein dem Prozess zugeordnetes Service Level Agreement (SLA) erfüllt oder übertrifft.
  20. Ein Verfahren, umfassend: Zuordnen einer von verschiedenen Speicherpoolklassen zu einem Prozess, wobei die zugeordnete Speicherpoolklasse einer Mischung von Speichervorrichtungen zugewiesen ist, die Speichervorrichtungen eines Speicherpools umfasst.
  21. Das Verfahren gemäß Anspruch 20, umfassend: Klassifizieren einer Gruppe von zwei oder mehr Speicherseiten in ein Cluster auf der Grundlage der Anzahl der Zugriffe über eine bestimmte Zeitperiode; Klassifizieren einer zweiten Gruppe von zwei oder mehr Speicherseiten in ein zweites Cluster auf der Grundlage der Anzahl der Zugriffe über die Zeitperiode; und auf einer Cluster-zu-Cluster-Basis, Bestimmen, ob Daten im Voraus abgerufen oder dem Cluster zugeordnete Daten migriert werden sollen.
DE102022124530.6A 2021-10-29 2022-09-23 Speicherpoolmanagement Pending DE102022124530A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/514,530 2021-10-29
US17/514,530 US20220050722A1 (en) 2021-10-29 2021-10-29 Memory pool management

Publications (1)

Publication Number Publication Date
DE102022124530A1 true DE102022124530A1 (de) 2023-05-04

Family

ID=80224206

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022124530.6A Pending DE102022124530A1 (de) 2021-10-29 2022-09-23 Speicherpoolmanagement

Country Status (3)

Country Link
US (1) US20220050722A1 (de)
CN (1) CN116069240A (de)
DE (1) DE102022124530A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112311826B (zh) * 2019-07-30 2022-05-03 贵州白山云科技股份有限公司 内容分发系统中访问请求的处理方法、装置及系统
US11994997B2 (en) * 2020-12-23 2024-05-28 Intel Corporation Memory controller to manage quality of service enforcement and migration between local and pooled memory
US11789649B2 (en) * 2021-04-22 2023-10-17 Nvidia Corporation Combined on-package and off-package memory system
US20230168952A1 (en) * 2021-11-30 2023-06-01 International Business Machines Corporation Buffer pool resource allocation
KR20240059347A (ko) * 2022-10-27 2024-05-07 삼성전자주식회사 메모리 공간 할당 방법, 장치 및 시스템
US20240256459A1 (en) * 2023-01-26 2024-08-01 Vmware, Inc. System and method for managing a memory hierarchy

Also Published As

Publication number Publication date
CN116069240A (zh) 2023-05-05
US20220050722A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
DE102022124530A1 (de) Speicherpoolmanagement
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE112020006859T5 (de) Beibehaltung von speicher-namensraum-identifizierern für die migration von virtualisierten ausführungsumgebungen im laufenden betrieb
DE112020007201T5 (de) Speicherzuordnung für verteilte Verarbeitungsvorrichtungen
DE102020125046A1 (de) Konfigurationsschnittstelle zum auslagern von fähigkeiten an eine netzwerkschnittstelle
DE102020127924A1 (de) Gemeinschaftlich verwendeter speicherraum unter vorrichtungen
DE102020133262A1 (de) Arbeitslastscheduler für Speicherzuweisung
DE102020118307A1 (de) Proaktiver daten-vorabruf mit angewandter quality-of-service
DE102020116316A1 (de) Prioritätsbasierte batterie-zuordnung für ressourcen während leistungsausfall
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102020133738A1 (de) Firmware-update-techniken
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102020130971A1 (de) Schlanke arbeitsspeicherzuweisung unter verwendung von arbeitsspeicherpools
DE102022129936A1 (de) Techniken zur Erweiterung des Systemspeichers durch Nutzung des verfügbaren Gerätespeichers
DE112020006858T5 (de) Dynamische interrupt-bereitstellung
DE102014117462A1 (de) Poolen von Speicherressourcen über mehrere Knoten hinweg
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102020122182A1 (de) Virtuelle-maschine-replikation und -migration
DE102010001985A1 (de) Vorrichtung zum Schalten des Betriebs einer virtuellen Maschine zwischen mehreren Computern, die der gleichen Computerplattform zugeordnet sind, und entsprechende Schaltverfahren
DE112011103408T5 (de) Verwalten von komprimiertem Speicher unter Verwendung gestaffelter Interrupts
DE102022107778A1 (de) Adressübersetzung an einer zielnetzwerk-schnittstellenvorrichtung
DE102022126611A1 (de) Service-mesh-auslagerung an netzwerkvorrichtungen
DE112020002575T5 (de) Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite
DE112022002284T5 (de) Auslagerung der vermittlungsschicht 7 an eine infrastrukturverarbeitungseinheit für ein vermaschtes dienstnetz
DE102022119777A1 (de) VERFAHREN ZUM MINIMIEREN VON MEHRAUFWAND BEI DETEKTION VON HEIßEN/KALTEN SEITEN BEI LAUFENDEN ARBEITSLASTEN