DE102019130450A1 - Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange - Google Patents

Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange Download PDF

Info

Publication number
DE102019130450A1
DE102019130450A1 DE102019130450.4A DE102019130450A DE102019130450A1 DE 102019130450 A1 DE102019130450 A1 DE 102019130450A1 DE 102019130450 A DE102019130450 A DE 102019130450A DE 102019130450 A1 DE102019130450 A1 DE 102019130450A1
Authority
DE
Germany
Prior art keywords
read
scm
cache
queue depth
read cache
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.)
Granted
Application number
DE102019130450.4A
Other languages
English (en)
Other versions
DE102019130450B4 (de
Inventor
Gurinder Shergill
Kouei Yamada
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102019130450A1 publication Critical patent/DE102019130450A1/de
Application granted granted Critical
Publication of DE102019130450B4 publication Critical patent/DE102019130450B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Beispiele können den Lese-Cache des Speicherklassenspeichers (SCM) basierend auf einem Warteschlangentiefenschwellenwert umgehen. Beispiele können einen Warteschlangentiefenschwellenwert für einen SCM-Lesecache basierend auf einer Datenmenge anpassen, die in einem Zeitraum aus dem SCM-Lesecache gelesen und in diesen geschrieben wurde, und können den SCM-Lesecache basierend auf einem Vergleich einer Anzahl ausstehender E / A für umgehen der SCM-Lesecache auf einen Warteschlangentiefenschwellenwert für den SCM-Lesecache.

Description

  • STAND DER TECHNIK
  • In Datenverarbeitungsgeräten wie Servern, Speicherarrays und dergleichen kann eine Verarbeitungsressource mit viel geringerer Latenz im Vergleich zu anderen Speichertypen (z. B. nichtflüchtigem Speicher wie Festplattenlaufwerken) aus dem Cache-Speicher lesen und in diesen schreiben (HDDs), Solid State Drives (SSDs) oder dergleichen). Obwohl ein solcher Cache-Speicher eine viel geringere Latenzzeit haben kann, wird er häufig durch die Verwendung von flüchtigen Speichervorrichtungen implementiert, die ihre gespeicherten Daten nicht behalten, wenn sie Energie verlieren, und im Allgemeinen höhere Kosten (pro Kapazitätseinheit) aufweisen als andere Arten von Speicher (z. B. nichtflüchtiger Speicher, wie z. B. Festplatten, SSDs oder dergleichen).
  • Figurenliste
  • Die folgende detaillierte Beschreibung bezieht sich auf die Zeichnungen, in denen:
    • FEIGE. 1 ist ein Blockdiagramm eines beispielhaften Computersystems zum Auswählen, ob ein SCM-Lesecache (Storage Class Memory) basierend auf einem Warteschlangentiefenschwellenwert verwendet werden soll;
    • FEIGE. 2 ist ein Flussdiagramm eines beispielhaften Verfahrens, das das Vergleichen einer Anzahl ausstehender E / A-Vorgänge mit einem Warteschlangentiefenschwellenwert für den SCM-Lesecache umfasst;
    • FEIGE. 3A ist ein Flussdiagramm eines beispielhaften Verfahrens, das das Anpassen eines Warteschlangentiefenschwellenwerts basierend auf einer Datenmenge, die in einer Zeitperiode zu und von einem SCM-Lesecache übertragen wurde, umfasst;
    • FEIGE. 3B ist ein Flussdiagramm eines beispielhaften Verfahrens, das das Verringern eines Schwellenwerts für die Tiefe einer Schreibwarteschlange und eines Schwellenwerts für die Tiefe einer Lesewarteschlange für einen SCM-Lesecache umfasst;
    • FEIGE. 3C ist ein Flussdiagramm eines beispielhaften Verfahrens, das das Erhöhen einer Schreibwarteschlangentiefenschwelle oder einer Lesewarteschlangentiefenschwelle für einen SCM-Lesecache umfasst;
    • FEIGE. 4 ist ein Flussdiagramm eines beispielhaften Verfahrens, das das Auswählen umfasst, ob eine Eingabe- / Ausgabeanforderung (IO-Anforderung) unter Verwendung eines SCM-Lesecaches verarbeitet werden soll; und
    • FEIGE. 5 ist ein Blockdiagramm eines beispielhaften Systems zum Einstellen von Warteschlangentiefenschwellenwerten für jeden von mehreren SCM-Caches.
  • DETAILLIERTE BESCHREIBUNG
  • Computervorrichtungen, wie Server, Speicherarrays und dergleichen, können einen Cache-Speicher enthalten, der durch flüchtige Speicher implementiert ist, wie beispielsweise eine oder mehrere DRAM-Vorrichtungen (Dynamic Random Access Memory), die in Form von Dual-In-Line bereitgestellt werden können Zum Beispiel Speichermodule (DIMMs). Solche Computervorrichtungen können auch andere Arten von Speicher umfassen, wie z. B. nichtflüchtige Speichervorrichtungen, die die darin gespeicherten Daten behalten können, selbst wenn sie Strom verlieren. Solche nichtflüchtigen Speichergeräte (z. B. Festplatten, SSDs oder eine Kombination davon) oder dergleichen können von einem Computergerät (z. B. einem Speicherarray) verwendet werden, um einen „Back-End-Speicher“ für das Computergerät zu implementieren (z. B. Speicherarray) zum dauerhaften Speichern von Daten im Computergerät. Solche Speichereinheiten können verschiedene Kommunikationsprotokolle verwenden, wie z. B. diejenigen, die sich auf SCSI (Small Computer System Interface) (z. B. SAS (Serial Attached SCSI)), SATA (Serial AT Attachment) oder andere geeignete Protokolle beziehen.
  • In solchen Computervorrichtungen können Verarbeitungsressourcen der Computervorrichtung Daten von den den Cache-Speicher implementierenden Speichervorrichtungen lesen und in diese schreiben, und zwar mit einer viel geringeren Latenz (dh viel schneller) als von den implementierenden Speichervorrichtungen Backend-Speicher für das Computergerät (z. B. Festplatten, SSDs usw. oder eine Kombination davon). Die Kapazität des Cache-Speichers ist jedoch im Vergleich zum Backend-Speicher relativ gering, so dass der Cache-Speicher möglicherweise darauf beschränkt ist, nur eine kleine Teilmenge der Daten zu speichern, die gleichzeitig von der Rechenvorrichtung gespeichert werden (z. B. viel weniger als alle Daten) vom Computergerät gespeicherte Daten). In solchen Beispielen kann nur ein relativ kleiner Teil der Daten, die im Back-End-Speicher des Computergeräts gespeichert sind, zu einem bestimmten Zeitpunkt aus dem Cache-Speicher (mit der geringen Latenz) zugänglich sein.
  • In einigen Beispielen kann es vorteilhaft sein, die Kapazität des Cache-Speichers, der mit einem flüchtigen Speicher (der hier als „Haupt-Cache“ einer Rechenvorrichtung bezeichnet werden kann) implementiert ist, unter Verwendung eines nichtflüchtigen Speichers als erweitertem Lese-Cache (oder zu erweitern „Zwischen“ -Lesecache), der logisch zwischen dem Hauptcache und dem Back-End-Speicher (z. B. anderen nichtflüchtigen Speichergeräten) eines Computergeräts angeordnet ist. Obwohl ein derartiger erweiterter Lesecache eine höhere Latenz als der Hauptcache haben kann, kann der erweiterte Lesecache eine viel geringere Latenz als der Back-End-Speicher der Rechenvorrichtung haben, und so, wenn ein Cache-Fehler im Hauptcache vorliegt, das Lesen der angeforderten Daten aus dem erweiterten Lesecache (falls vorhanden) können ermöglichen, dass die angeforderten Daten mit viel geringerer Latenz in den Hauptcache eingelesen werden, als wenn die angeforderten Daten aus dem Back-End-Speicher der Rechenvorrichtung in den Hauptcache eingelesen würden.
  • Wenn beispielsweise ein Cache-Fehler im Haupt-Cache vorliegt (dh wenn festgestellt wird, dass die von einer Leseanforderung angeforderten Daten nicht im Haupt-Cache vorhanden sind), werden die angeforderten Daten von einer SAS-Festplatte des Back-End-Speichers in den Haupt-Cache eingelesen Der Cache kann eine oder mehrere Millisekunden (ms) (oder mehr, abhängig von der aktuellen Auslastung der SAS-Festplatte) dauern, wodurch der angeforderten Lesezeit mindestens eine oder mehrere Millisekunden Wartezeit hinzugefügt werden. Das Lesen der angeforderten Daten von einer SAS-SSD des Back-End-Speichers in den Haupt-Cache kann ungefähr 125 oder mehr Mikrosekunden (oder mehr, abhängig von seiner gegenwärtigen Auslastung) dauern, wodurch der angeforderten Lesung immer noch eine erhebliche zusätzliche Latenz hinzugefügt werden kann. In ähnlicher Weise kann das Lesen der angeforderten Daten in den Hauptcache von einer SAS-SSD des erweiterten Lesecaches (dh, wenn der oben beschriebene erweiterte Lesecache unter Verwendung einer oder mehrerer SAS-SSDs implementiert ist) auch ungefähr 125 oder mehr Mikrosekunden (oder mehr, abhängig von der aktuellen Auslastung der SAS-Festplatte), wodurch der angeforderten Lesung eine erhebliche zusätzliche Latenz hinzugefügt wird.
  • Im Gegensatz dazu können, wenn der erweiterte Lesecache unter Verwendung von Speicherklassenspeicher (SCM) implementiert wird, die angeforderten Daten von dem SCM, der den erweiterten Lesecache implementiert, in einigen Beispielen so schnell wie eine Anzahl von Mikrosekunden in den niedrigen Teenagern in den Hauptcache eingelesen werden Dadurch wird die zusätzliche Latenzzeit zum Lesen der Daten in den Hauptcache im Vergleich zu SAS-SSDs (z. B. ca. 10-mal niedrigere Latenzzeit) erheblich verringert. In den hier beschriebenen Beispielen kann eine SCM-Karte, die den erweiterten Lesecache (zumindest teilweise) implementiert, hier als „SCM-Lesecache“ bezeichnet werden.
  • Ein einzelnes SCM-Gerät (das hier als SCM- „Karte“ bezeichnet werden kann) kann jedoch eine begrenzte Rate (z. B. „Datenrate“ oder „Bandbreite“) aufweisen, mit der Daten aus dem SCM gelesen und in ihn geschrieben werden können Karte mit geringer Latenz. Beispielsweise kann eine einzelne SCM-Karte einen Datenratenschwellenwert von etwa 2,4 GB / s aufweisen, unterhalb dessen Daten mit geringer Latenz von der SCM-Karte gelesen oder auf diese geschrieben werden können. In solchen Beispielen werden, wenn genügend E / A-Anforderungen (oder „E / A“) hierin, z. B. Lese- und / oder Schreibanforderungen), schnell genug an die SCM-Karte ausgegeben, um die kumulierte Datenmenge zu erreichen, die diese E / A-Anforderungen versuchen Beim Lesen und / oder Schreiben auf die SCM-Karte wird der Datenratenschwellenwert überschritten (z. B. in einigen Beispielen etwa 2,4 GB / s). Weitere ausgegebene E / A-Anforderungen können eine viel geringere Latenz aufweisen als die E / A-Anforderungen, die ausgegeben wurden, bevor dieser Schwellenwert überschritten wurde. Beispielsweise können E / A-Anforderungen, die nach dem Überschreiten des Datenratenschwellenwerts ausgegeben werden, eine Latenz (z. B. Zeit zum Lesen vom SCM in den Hauptcache) aufweisen, die der oben beschriebenen Latenz einer SAS-SSD nahe kommt oder diese sogar überschreitet (z. B. ungefähr) 125 Mikrosekunden oder mehr).
  • In solchen Beispielen kann das Ausgeben von E / A-Anforderungen an die SCM-Karte, so dass der Datenratenschwellenwert überschritten wird, zu einer unerwarteten Erhöhung der Latenz für die E / A-Anforderungen führen, die nach dem Überschreiten des Schwellenwerts ausgegeben werden. In solchen Beispielen kann es möglich sein, eine geringere Latenz zu erhalten, indem aus dem Back-End-Speicher anstatt von der SCM-Karte gelesen wird, sobald der Datenratenschwellenwert der SCM-Karte überschritten wurde.
  • Um diese Probleme anzugehen, können die hier beschriebenen Beispiele Techniken zum selektiven (oder intelligenten) Umgehen des SCM-Lesecaches und zum selektiven (oder intelligenten) Auslagern von Daten aus dem Hauptcache in den SCM-Lesecache umfassen. Zum Beispiel können die hier beschriebenen Beispiele die Datenmenge überwachen, die in einem bestimmten Zeitraum zum und vom SCM-Lesecache übertragen wurde, und diese Informationen zum adaptiven Anpassen eines oder mehrerer Warteschlangentiefenschwellenwerte für den SCM-Lesecache und zum Löschen oder Umleiten von E / A-Anforderungen verwenden Der SCM-Lesecache, der den entsprechenden Schwellenwert für die Warteschlangentiefe überschreitet. Auf diese Weise können die hier beschriebenen Beispiele die Rate verwalten, mit der Daten zum und vom SCM-Lesecache übertragen werden, um die Anzahl der E / A-Anforderungen zu vermeiden oder zu verringern, die an den SCM-Lesecache ausgegeben werden, nachdem der Datenratenschwellenwert überschritten wurde, um dadurch oder zu vermeiden Reduzieren Sie die Anzahl der E / A-Anforderungen, die im SCM-Lesecache eine erheblich höhere Latenz aufweisen als E / A-Anforderungen, die ausgegeben werden, während der Schwellenwert für die Datenrate nicht überschritten wird.
  • Zum Beispiel können die hier beschriebenen Beispiele eine Gesamtmenge von Daten bestimmen, die in einem gegebenen Zeitraum aus einem SCM-Lesecache gelesen und in diesen geschrieben wurden, und das Anpassen von mindestens einem Warteschlangentiefenschwellenwert für den SCM-Lesecache als Reaktion auf die Bestimmung, dass Daten vorliegen, anpassen Der Ratenschwellenwert für den SCM-Lesecache wird basierend auf der ermittelten Datenmenge überschritten. Solche Beispiele können auch in Reaktion auf eine E / A-Anforderung für den SCM-Lesecache eine aktuelle Anzahl von ausstehenden E / A-Vorgängen für den SCM-Lesecache mit einem der Warteschlangentiefenschwellenwerte für den SCM-Lesecache vergleichen und zwischen Folgendem auswählen: (1) Verarbeiten der E / A-Anforderung unter Verwendung des SCM-Lesecaches, (2) Löschen der E / A-Anforderung und (3) Verarbeiten der E / A-Anforderung ohne Verwendung des SCM-Lesecaches basierend auf dem Typ der E / A-Anforderung und einem Ergebnis des Vergleichs. Solche Beispiele können dann die ausgewählte Verarbeitungs- oder Löschaktion ausführen.
  • Auf diese Weise können die hier beschriebenen Beispiele die Anzahl der an den SCM-Lesecache ausgegebenen E / A-Anforderungen verringern, die aufgrund des Überschreitens der Datenratenschwelle des SCM-Lesecaches eine erheblich höhere Latenz aufweisen. In einigen Beispielen kann die Überwachung der tatsächlichen Datenmenge, die über einen bestimmten Zeitraum aus dem SCM-Lesecache gelesen und in diesen geschrieben wurde, eine relativ genaue Verfolgung ermöglichen, ob der Datenratenschwellenwert des SCM-Lesecaches überschritten wurde.
  • FEIGE. 1 ist ein Blockdiagramm eines beispielhaften Computersystems 102 zum Auswählen, ob ein Speicherklassenspeicher (SCM) -Lesecache 150 verwendet werden soll, basierend auf einem Warteschlangentiefenschwellenwert. In dem in FIG. In 1 umfasst das Computersystem 102 (oder „System“ oder „Speichersystem“ 102) eine Computervorrichtung 100, die mindestens eine Verarbeitungsressource 110 und mindestens ein maschinenlesbares Speichermedium 120 umfasst, das mindestens Speicheranweisungen umfasst (z. B. mit diesen codiert) 121, die von der mindestens einen Verarbeitungsressource 110 der Rechenvorrichtung 101 ausführbar sind, um hier in Bezug auf die Anweisungen 121 beschriebene Funktionalitäten zu implementieren. Die Anweisungen 121 können mindestens die Anweisungen 122, 124 und 126 enthalten, die von der mindestens einen Verarbeitungsressource 110 ausgeführt werden können. Das Computergerät 100 kann ein beliebiger geeigneter Typ eines Computergeräts sein, wie er hier beschrieben ist, beispielsweise ein Server, ein Speicherarray oder dergleichen.
  • In dem in FIG. Wie in 1 gezeigt, kann die Computervorrichtung 100 einen Speicher 130 umfassen, der durch einen flüchtigen Speicher (z. B. eine oder mehrere flüchtige Speichervorrichtungen, wie DRAM-Vorrichtungen, DIMMs oder dergleichen) implementiert sein kann. Der Speicher 130 kann den Hauptcache 140 der Rechenvorrichtung 100 zur Verwendung durch die Verarbeitungsressource 110 implementieren. In einigen Beispielen kann der Speicher 130 auch verschiedene Daten 132, 134, 136 und 138 speichern, die von den Anweisungen 121 verwendet werden, wie nachstehend beschrieben. In einigen Beispielen können die Daten 132, 134, 136 und 138 auf derselben Speichervorrichtung oder denselben Vorrichtungen gespeichert sein, die den Hauptcache 140 implementieren. In anderen Beispielen können die Daten 132, 134, 136 und 138 in einer anderen Speichervorrichtung oder anderen Speichervorrichtungen als der Speichervorrichtung oder den Speichervorrichtungen gespeichert sein, die den Haupt-Cache 140 implementieren.
  • In dem in FIG. In 1 kann die Computervorrichtung 100 einen Back-End-Speicher 160 umfassen, um Daten für die Computervorrichtung 100 dauerhaft zu speichern. Der Back-End-Speicher 160 kann eine oder mehrere Speichervorrichtungen wie die Speichervorrichtungen 162, 164, 166, 168 usw. umfassen. Jede der Speichervorrichtung (en) des Back-End-Speichers 160 kann eine nichtflüchtige Speichervorrichtung wie eine Festplatte sein Eine SSD oder dergleichen und ein Back-End-Speicher 160 können eine beliebige Kombination solcher nichtflüchtiger Speichervorrichtungen umfassen. In einigen Beispielen kann die Computervorrichtung 100 ein Speicherarray sein, das mehrere Speichervorrichtungen zum Speichern von Daten umfasst (z. B. die Speichervorrichtungen des Back-End-Speichers 160). Obwohl vier Speichervorrichtungen in dem Back-End-Speicher 160 in dem Beispiel von 1 dargestellt sind. Wie in 1 gezeigt, kann der Back-End-Speicher 160 in Beispielen eine beliebige geeignete Anzahl von einer oder mehreren Speichervorrichtungen (z. B. mehr als vier usw.) enthalten.
  • In dem in FIG. In 1 kann die Computervorrichtung 100 einen SCM-Lesecache 150 umfassen, der von einer SCM-Vorrichtung (oder einem SCM-Chip) implementiert wird, die SCM zum Speichern von Daten enthält. In den hier beschriebenen Beispielen kann die Computervorrichtung 100 den SCM-Lesecache 150 als erweiterten Lesecache verwenden, um die Kapazität des Hauptcaches 140 zum Bedienen von Leseanforderungen zu erweitern. Der SCM-Lese-Cache 150 kann sich auch logisch (oder funktional) zwischen dem Haupt-Cache 140 und dem Back-End-Speicher 160 befinden und kann hierin als „Zwischen“ -Lese-Cache bezeichnet werden. In solchen Beispielen kann der SCM-Lesecache 150 logisch (oder funktional) zwischen dem Hauptcache 140 und dem Back-End-Speicher 160 sein, indem beispielsweise Daten aus dem Hauptcache 140 in den SCM-Lesecache 150 entleert oder ausgelagert werden, so dass die Daten können anschließend aus dem SCM-Lesecache 150 in den Hauptcache 140 zurückgelesen werden, um den Prozess mit höherer Latenz beim Lesen der Daten aus dem Backend-Speicher 160 in den Hauptcache 140 zu vermeiden.
  • In den hier beschriebenen Beispielen kann SCM eine Art nichtflüchtiger Speicher (NVM) sein und unter Verwendung eines mit NVM Express ™ (NVMe ™) konsistenten Protokolls kommunizieren. In den hier beschriebenen Beispielen kann eine SCM-Vorrichtung zum Implementieren (zumindest teilweise) des SCM-Lesecaches 150 in einer beliebigen von mehreren unterschiedlichen Formen implementiert sein, wie beispielsweise einem 3D-XPoint-Chip (oder einer 3D-XPoint-Vorrichtung), a 3D XPoint DIMM, PCM-Gerät (Phase Change Memory) (z. B. RAM-Gerät (Phase Change Random Access Memory)), MRAM-Gerät (z. B. STT-RAM-Gerät (Spin-Torque-Transfer)), a Resistive RAM (RRAM) - Vorrichtung, eine Memristorvorrichtung oder dergleichen oder eine Kombination davon. In einigen Beispielen kann der SCM einen blockbasierten Zugriff implementieren. In anderen Beispielen kann SCM eine speicherbasierte Semantik für den Datenzugriff implementieren. In solchen Beispielen können SCM-basierte DIMMs verwendet werden, um den SCM-Lesecache hierin zu implementieren. In einigen Beispielen können eine oder mehrere Speichereinheiten des Back-End-Speichers 160 unter Verwendung eines mit NVMe TM konsistenten Protokolls kommunizieren. In den hier beschriebenen Beispielen kann der SCM-Lesecache 150 einen Lesecache umfassen, der von einer SCM-Vorrichtung implementiert wird, die eine geringere Latenz aufweist als eine SAS-SSD (die eine Art von NVM ist).
  • Beispiele werden nun im Zusammenhang mit den 1 und 2 beschrieben. 1 und 2, wobei 2
    ist ein Flussdiagramm eines beispielhaften Verfahrens 200, das das Vergleichen einer Anzahl ausstehender E / A mit einem Warteschlangentiefenschwellenwert für den SCM-Lesecache 150 umfasst. Obwohl die Ausführung des Verfahrens 200 nachstehend unter Bezugnahme auf die Rechenvorrichtung 100 von 1 beschrieben wird. In 1 können andere Rechenvorrichtungen verwendet werden, die zur Ausführung des Verfahrens 200 geeignet sind (z. B. Rechenvorrichtung 500 von 5). Zusätzlich ist die Implementierung des Verfahrens 200 nicht auf solche Beispiele beschränkt. Obwohl das Flussdiagramm von 2 zeigt eine bestimmte Reihenfolge der Leistung bestimmter Funktionalitäten, das Verfahren 200 ist nicht auf diese Reihenfolge beschränkt. Zum Beispiel können die im Flussdiagramm nacheinander gezeigten Funktionalitäten in einer anderen Reihenfolge ausgeführt werden, können gleichzeitig oder teilweise gleichzeitig ausgeführt werden oder eine Kombination davon.
  • Bezugnehmend auf FIG. Unter Bezugnahme auf 1 und 2 können bei 205 des Verfahrens 200 die Anweisungen 122 der Computervorrichtung 100 (z. B. wenn sie von der Verarbeitungsressource 110 ausgeführt werden) eine Gesamtmenge von Daten 132 bestimmen, die in einem gegebenen Zeitraum (z unter Verwendung der Verarbeitungsressource 110). In einigen Beispielen können die Anweisungen 122 diese Gesamtmenge von Daten 132 basierend auf dem Akkumulieren der Menge von Daten, die aus dem SCM-Lesecache 150 gelesen oder in diesen geschrieben wurden, durch E / A-Anforderungen für den SCM-Lesecache 150 bestimmen, die in dem gegebenen Zeitraum abgeschlossen wurden, wie detaillierter beschrieben unten in bezug auf 3A.
  • Bei 210 können die Anweisungen 124 (z. B. wenn sie von der Verarbeitungsressource 110 ausgeführt werden) mindestens einen Warteschlangentiefenschwellenwert 138 für den SCM-Lesecache 150 in Reaktion auf eine Feststellung, dass ein Datenratenschwellenwert 134 für den SCM-Lesecache 150 überschritten ist, basierend auf anpassen die ermittelte Datenmenge 132. Beispielsweise können die Anweisungen 124 mindestens einen der Warteschlangentiefenschwellenwerte verringern, wenn die bestimmte Gesamtmenge von Daten 132 größer als der Datenratenschwellenwert 134 ist, und können mindestens einen der Warteschlangentiefenschwellenwerte erhöhen, wenn der bestimmte Wert erreicht ist Die Gesamtmenge der Daten 132 ist nicht größer (dh kleiner oder gleich) als der Datenratenschwellenwert 134, wie nachstehend in Bezug auf die 3 und 4 ausführlicher beschrieben wird. 3A-3C.
  • In einigen Beispielen können der Datenratenschwellenwert 134 und die bestimmte Datenmenge 132 in denselben Begriffen (z. B. einer Datenmenge) ausgedrückt oder dargestellt werden, und in solchen Beispielen können die Anweisungen 124 diese Werte direkt vergleichen, um das oben Beschriebene zu machen Entschlossenheit. In anderen Beispielen kann der Datenratenschwellenwert 134 in anderen Begriffen ausgedrückt oder dargestellt werden (z. B. einer Datenrate / Zeiteinheit) als die bestimmte Datenmenge 132 (z. B. eine Datenmenge) und in solchen Beispielen Anweisungen 124 Sie können beide Werte zunächst in äquivalente Begriffe umwandeln (z. B. indem Sie einen oder beide Werte konvertieren), bevor Sie sie vergleichen.
  • In den hier beschriebenen Beispielen kann die „Warteschlangentiefe“ für einen SCM-Lesecache zu einem bestimmten Zeitpunkt eine Anzahl von E / A-Anforderungen (oder E / A-Anforderungen) sein, die zu einem bestimmten Zeitpunkt ausstehen (z. B. an den SCM-Lesecache gesendet und noch nicht abgeschlossen wurden oder) vom SCM-Lese-Cache zum angegebenen Zeitpunkt als abgeschlossen gemeldet). In den hier beschriebenen Beispielen kann ein „Warteschlangentiefenschwellenwert“ für einen SCM-Lesecache ein einstellbarer Schwellenwert sein, der sich auf eine Warteschlangentiefe des SCM-Lesecaches bezieht (z. B. darauf festgelegt ist). In einigen hier beschriebenen Beispielen kann sich eine Warteschlangentiefe beispielsweise auf eine Lesewarteschlangentiefe oder eine Schreibwarteschlangentiefe beziehen. In solchen Beispielen kann „Lesewarteschlangentiefe“ für einen SCM-Lesecache zu einer gegebenen Zeit eine Gesamtzahl von Leseanforderungen sein, die an den SCM-Lesecache ausgegeben wurden und zu der gegebenen Zeit ausstehen (dh an den SCM-Lesecache ausgegeben wurden und nicht abgeschlossen sind oder zum gegebenen Zeitpunkt als abgeschlossen gemeldet werden). In den hier beschriebenen Beispielen kann eine „Schreibwarteschlangentiefe“ für einen SCM-Lesecache zu einem bestimmten Zeitpunkt die Gesamtzahl der Schreibanforderungen (z. B. Zielanforderungen) sein, die an den SCM-Lesecache ausgegeben wurden und zu einem bestimmten Zeitpunkt ausstehen (z. B. an den SCM-Lesecache ausgegeben und zum angegebenen Zeitpunkt noch nicht abgeschlossen oder als abgeschlossen gemeldet). In solchen Beispielen kann sich ein Warteschlangentiefenschwellenwert beispielsweise auf einen Lesewarteschlangentiefenschwellenwert oder einen Schreibwarteschlangentiefenschwellenwert beziehen. In solchen Beispielen kann ein „Lesewarteschlangentiefenschwellenwert“ für einen SCM-Lesecache ein einstellbarer Schwellenwert sein, der sich auf die Lesewarteschlangentiefe des SCM-Lesecaches bezieht (z. B. auf diese eingestellt ist), und ein „Schreibwarteschlangentiefenschwellenwert“ für einen SCM Der Lesecache kann ein einstellbarer Schwellenwert sein, der sich auf die Schreibwarteschlangentiefe des SCM-Lesecaches bezieht (z. B. darauf eingestellt ist).
  • In einigen Beispielen können die Anweisungen 121 einen Einzelwarteschlangentiefenschwellenwert 138 für den SCM-Lesecache 150 implementieren, und die Anweisungen 124 können den Einzelwarteschlangentiefenschwellenwert 138 anpassen. In anderen Beispielen können die Anweisungen 121 mehrere Warteschlangentiefenschwellenwerte für den SCM-Lesecache 150 implementieren, wie beispielsweise den oben beschriebenen Lesewarteschlangentiefenschwellenwert und den Schreibwarteschlangentiefenschwellenwert für den SCM-Lesecache 150 (siehe z. B. Lese- und Schreibwarteschlangentiefe) Schwellen 137 und 139 von 5). In solchen Beispielen können die Anweisungen 124 selektiv einen dieser Schwellenwerte zu einem Zeitpunkt einstellen (wie nachstehend in Bezug auf die 3B und 3C ausführlicher beschrieben). In solchen Beispielen können die Anweisungen 124 die Lese- und Schreibwarteschlangentiefenschwellen in einer gestuften Weise anpassen. In anderen Beispielen können die Anweisungen 124 die Schwellenwerte für die Lese- und Schreibwarteschlange gleichmäßig einstellen (z. B. beide zur gleichen Zeit in die gleiche Richtung einstellen, um sie auf dem gleichen Wert zu halten).
  • In einigen Beispielen kann der Lesewarteschlangentiefenschwellenwert ein Schwellenwert sein, mit dem eine aktuelle Lesewarteschlangentiefe für den SCM-Lesecache 150 in Reaktion auf eine Leseanforderung 180 verglichen werden kann, um angeforderte Daten aus dem SCM-Lesecache 150 zu lesen. In einigen Beispielen kann der Schwellenwert für die Tiefe der Schreibwarteschlange ein Schwellenwert sein, mit dem eine aktuelle Tiefe der Schreibwarteschlange für den SCM-Lesecache 150 als Reaktion auf eine Destinationsanforderung zum Schreiben sauberer Daten vom Hauptcache 140 in den SCM-Lesecache 150 verglichen werden kann. In Beispielen, in denen es einen einzelnen Warteschlangentiefenschwellenwert gibt, kann eine aktuelle Warteschlangentiefe des SCM-Lese-Cache 150 (z. B. die Lese-Warteschlangentiefe, die Schreib-Warteschlangentiefe oder eine Kombination der beiden) mit dem einzelnen Warteschlangentiefenschwellenwert verglichen werden als Antwort entweder auf die oben beschriebene Leseanforderung oder die Zielanforderung. In den hier beschriebenen Beispielen kann eine „aktuelle“ Warteschlangentiefe (z. B. Lese- oder Schreibwarteschlangentiefe) eines SCM-Lesecaches (oder eine „aktuelle“ Anzahl von Lese- oder Schreib- (Ziel-) E / As, die für den SCM-Lesecache ausstehen) der Wert sein der Warteschlangentiefe (oder der Anzahl ausstehender E / A-Vorgänge) für den SCM-Lesecache zu dem Zeitpunkt, zu dem der Wert als Antwort auf eine E / A-Anforderung geprüft oder bestimmt wird (die in den hier beschriebenen Beispielen eine „aktuelle“ Zeit sein kann).
  • Bei 215 des Verfahrens 200 können die Anweisungen 126 (z. B. wenn sie von der Verarbeitungsressource 110 ausgeführt werden) eine E / A-Anforderung 180 für den SCM-Lesecache 150 empfangen (z. B. eine Leseanforderung zum Lesen von Daten aus dem Hauptcache 140 oder eine Zielanforderung zum Schreiben von Daten aus dem Hauptcache 140) an den SCM-Lesecache 150) und als Antwort auf die E / A-Anforderung 180 einen Typ der E / A-Anforderung 180 (z. B. eine Leseanforderung oder eine Zielanforderung) bestimmen und eine aktuelle Anzahl 136 von für den SCM-Lesecache 150 ausstehenden E / A-Vorgängen vergleichen (B. ausstehende Lese- oder Schreib-E / A-Vorgänge) an einen der Warteschlangentiefenschwellen 138 für den SCM-Lese-Cache 150 (wie nachstehend mit Bezug auf 4 ausführlicher beschrieben). In einigen Beispielen kann die Anzahl der ausstehenden Anforderungen 136 tatsächlich zwei Werte enthalten: (i) eine Anzahl ausstehender Lese-E / A-Vorgänge für den SCM-Lesecache 150 und (ii) eine Anzahl ausstehender Schreib-E / A-Vorgänge für den SCM-Lesecache 150 (siehe z. B. lese die ausstehenden lOs 133 und schreibe die ausstehenden lOs 135 von 5). In solchen Beispielen können als Antwort auf die E / A-Anforderung 180 die Anweisungen 126 den Typ der E / A-Anforderung 180 bestimmen, und wenn die E / A-Anforderung 180 eine Leseanforderung ist, können die Anweisungen 126 die aktuelle Anzahl der für den SCM-Lesecache 150 ausstehenden Lese-E / A mit a vergleichen Lesewarteschlangentiefenschwelle für den SCM-Lesecache 150 (wie nachstehend mit Bezug auf 4 ausführlicher beschrieben). In anderen Beispielen, wenn die E / A-Anforderung 180 eine Zielanforderung ist, können die Anweisungen 126 die aktuelle Anzahl der für den SCM-Lesecache 150 ausstehenden Schreib-E / A mit einem Schwellenwert für die Schreibwarteschlangentiefe für den SCM-Lesecache 150 vergleichen (wie nachstehend in Bezug auf ausführlicher beschrieben) 4).
  • In den hier beschriebenen Beispielen können die Arten von E / A-Anforderungen (oder E / A-Anforderungen) für den SCM-Lesecache 150 Leseanforderungen und Zielanforderungen enthalten. In einigen Beispielen können Leseanforderungen Anforderungen zum Lesen bestimmter angeforderter Daten aus dem SCM-Lesecache auf der Grundlage von Host-E / A-Anforderungen sein, und Auslagerungsanforderungen können Auslagerungsanforderungen sein, die von der Rechenvorrichtung einschließlich des SCM-Lesecaches (dh intern von der Rechenvorrichtung erzeugt) erzeugt werden Gerät selbst und nicht Host-IO). In solchen Beispielen kann ein Host ein beliebiges geeignetes Computergerät sein, das mit dem Computergerät über ein oder mehrere Computernetzwerke kommunizieren kann. Bezugnehmend auf FIG. In 5 kann beispielsweise eine Computervorrichtung 500 (wie nachstehend beschrieben) eine Leseanforderung (oder Lese-E / A) 582 von einer Host-Computervorrichtung empfangen, die von der Computervorrichtung 500 getrennt ist, und zwar über ein oder mehrere Computernetzwerke. In einigen Beispielen kann eine solche Host-Leseanforderung 582 für bestimmte angeforderte Daten eine Leseanforderung 180 für einen SCM-Lesecache auslösen, um (zumindest einige von) den angeforderten Daten zu lesen (z. B. wenn die in der Leseanforderung 582 angeforderten Daten nicht sind) im Hauptcache 140 vorhanden, aber im SCM-Lesecache vorhanden). Eine Leseanforderung 180 für den SCM-Lesecache 150 der Rechenvorrichtung 100 von 1. In ähnlicher Weise kann das Lesen bestimmter angeforderter Daten durch eine Leseanforderung für die angeforderten Daten von einer Host-Computervorrichtung, die von der Computervorrichtung 100 getrennt ist, ausgelöst werden. Im Gegensatz dazu kann eine Auslagerungsanforderung 180 in den hier beschriebenen Beispielen intern von der Rechenvorrichtung (z. B. der Rechenvorrichtung 100) einschließlich des SCM-Lesecaches 150 erzeugt werden, wenn die Rechenvorrichtung beispielsweise feststellt, dass der Hauptcache 140 zu voll ist und beschließt, saubere Daten vom Haupt-Cache 140 in den SCM-Lesecache 150 zu verschieben. In den hier beschriebenen Beispielen kann ein Computernetzwerk beispielsweise ein lokales Netzwerk (LAN), ein virtuelles LAN (VLAN), ein drahtloses lokales Netzwerk (WLAN), ein virtuelles privates Netzwerk (VPN), das Internet oder ein Netzwerk enthalten dgl. oder eine Kombination davon.
  • Zurück zu FIG. In 2 können bei 220 die Anweisungen 126 (z. B. wenn sie von der Verarbeitungsressource 110 ausgeführt werden) basierend auf einem Typ der E / A-Anforderung 180 und einem Ergebnis des Vergleichs unter Verwendung des SCM-Lesecaches 150 zwischen (1) der Verarbeitung der E / A-Anforderung 180 auswählen. (2) Verwerfen der E / A-Anforderung 180 (dh ohne Durchführen der E / A-Anforderung 180) und (3) Verarbeiten der E / A-Anforderung 180 ohne Verwenden des SCM-Lesecaches 150. In Reaktion auf die Auswahl können die Anweisungen 126 die ausgewählte Verarbeitung oder das Löschen der E / A-Anforderung 180 ausführen (wie nachstehend in Bezug auf 4 ausführlicher beschrieben).
  • Zum Beispiel basierend auf (i) einer Feststellung, dass die E / A-Anforderung 180 eine Anforderung zum Auslagern von Daten an den SCM-Lesecache 150 ist, und (ii) dem Ergebnis des Vergleichs, das angibt, dass die aktuelle Anzahl von ausstehenden Schreib-E / A für den SCM-Lesecache 150 größer ist als der Schreibwarteschlangentiefenschwellenwert für den SCM-Lesecache 150 können die Anweisungen 126 auswählen, die E / A-Anforderung 180 zu verwerfen, und können als Antwort die Auswahl (bei 225 von Verfahren 200) durchführen, einschließlich des Verwerfens der E / A-Anforderung 180, ohne die Daten (der Zielanforderung) zu schreiben ) an den SCM-Lese-Cache 150 (und ohne die Daten beispielsweise in den Back-End-Speicher 160 oder in den Speicher eines anderen entfernten Computergeräts zu schreiben).
  • In den hier beschriebenen Beispielen ist eine Anforderung zum Auslagern von Daten in den SCM-Lesecache 150 eine Anforderung zum Auslagern von leeren Daten aus dem Hauptcache 140 in den SCM-Lesecache 150. In den hier beschriebenen Beispielen sind „saubere“ Daten im Haupt-Cache 140 Daten, die im Haupt-Cache 140 nicht geändert wurden, seit sie vom Backend-Speicher 160 in den Haupt-Cache 140 gebracht wurden. Wenn Daten zum ersten Mal in den Hauptcache 140 gelesen werden, werden sie aus dem Back-End-Speicher 160 gelesen. Wenn diese Daten also „saubere“ Daten im Haupt-Cache 140 sind (z. B. unverändert, seit sie aus dem Backend-Speicher 160 in den Haupt-Cache 140 eingelesen wurden), dann existiert zum Zeitpunkt des eine Kopie der sauberen Daten im Backend-Speicher 160 Zielanforderung. Im Gegensatz dazu sind in den hier beschriebenen Beispielen „schmutzige“ Daten Daten, die im Back-End-Speicher 160 nicht vorhanden sind, weil die Daten beispielsweise im Haupt-Cache 140 (nachdem sie vom Back-End-Speicher 160 eingelesen wurden) geändert wurden und dies nicht getan haben wurde mit den Änderungen zurück in den Backend-Speicher 160 gespült.
  • In solchen Beispielen kann das Löschen einer Löschanforderung für fehlerhafte Daten zu Datenverlusten führen (z. B. Änderungen an den Daten). In den hier beschriebenen Beispielen bezieht sich die Auslagerungsanforderung jedoch auf das Auslagern sauberer Daten aus dem Haupt-Cache 140 in den SCM-Lesecache 150, und wie oben erwähnt, sind die sauberen Daten bereits im Back-End-Speicher 160 vorhanden, so dass ein Löschen der Auslagerungsanforderung wahrscheinlich nicht resultieren würde bei Datenverlust.
  • In den hier beschriebenen Beispielen kann eine Auslagerungsanforderung empfangen werden, wenn das Computergerät 100 festgestellt hat, dass der Hauptcache 140 zu voll ist und Speicherplatz im Hauptcache 140 freigegeben werden muss (z. B. durch Auslagern der zuletzt verwendeten Daten oder dergleichen). In solchen Beispielen können die sauberen Daten aus dem Haupt-Cache 140 in den SCM-Lese-Cache 150 ausgelagert werden, wo sie zum späteren Lesen aus dem SCM-Lese-Cache 150 mit einer geringeren Latenz gehalten werden können, als wenn sie zu einem späteren Zeitpunkt aus dem Backend-Speicher 160 gelesen würden . Während das Auslagern in den SCM-Lesecache 150 beim späteren erneuten Lesen der Daten Zeit sparen kann, ist die potenzielle zukünftige Einsparung möglicherweise die zusätzliche Belastung des SCM-Lesecache 150 zum Schreiben in den SCM-Lesecache 150 zur Durchführung des Auslagerns nicht wert. Wenn beispielsweise der SCM-Lesecache 150 kürzlich Daten bei, über oder nahe dem Datenratenschwellenwert 134 verarbeitet hat, kann die zusätzliche Last zum Verarbeiten der Zielanforderung den Datenratenschwellenwert 134 überschreiten und dazu führen, dass spätere E / A-Vorgänge mit einer wesentlich höheren Latenz als ausgeführt werden B. wenn die Datenratenschwelle 134 nicht überschritten wurde. Daher kann es unter bestimmten Umständen vorzuziehen sein, die Zielanforderung zu verwerfen.
  • In den hier beschriebenen Beispielen können die Anweisungen 124 den Schwellenwert für die Schreibwarteschlangentiefe für den SCM-Lesecache 150 auf der Grundlage der Datenmenge anpassen, die aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wird (wie oben in Bezug auf die Anweisungen 122 beschrieben). In solchen Beispielen können die Anweisungen 126 auswählen, die Auslagerungsanforderung zu verwerfen, wenn die aktuelle Tiefe der Schreibwarteschlange des SCM-Lesecaches 150 größer als der aktuelle Schwellenwert für die Tiefe der Schreibwarteschlange des SCM-Lesecaches 150 ist, um eine Überlastung des SCM-Lesecaches 150 zu vermeiden und möglicherweise viel zu verursachen Höhere Latenz für spätere lOs. In solchen Beispielen können, wenn die Auslagerungsanforderung gelöscht wird, die sauberen Daten, die aus dem Hauptcache 140 ausgelagert werden sollten, in dem Hauptcache 140 freigegeben werden, ohne an anderer Stelle geschrieben zu werden (z. B. SCM-Lesecache 150 oder Backend-Speicher 160).
  • Zurück zu 220 von FIG. In 2 können die Anweisungen 126 eine alternative Auswahl treffen, wenn verschiedene Kriterien erfüllt sind. Basierend auf (i) einer Feststellung, dass die E / A-Anforderung 180 eine Leseanforderung für angeforderte Daten ist, und (ii) dem Ergebnis des Vergleichs, der angibt, dass die aktuelle Anzahl von ausstehenden Lese-E / A für den SCM-Lesecache 150 größer als eine Lesewarteschlange ist Tiefenschwelle für den SCM-Lesecache 150, Anweisungen 126 können auswählen, die E / A-Anforderung 180 zu verarbeiten, ohne den SCM-Lesecache 150 zu verwenden. In Reaktion darauf können die Anweisungen 126 die Auswahl durchführen, einschließlich des Umgehens des SCM-Lesecaches 150 und des Lesens der angeforderten Daten in den Hauptcache 140 aus einem anderen Speicher (z. B. direkt aus dem Back-End-Speicher 160 oder aus dem Speicher eines entfernten Computergeräts oder „Knotens“ hierin).. In anderen Beispielen führen die Anweisungen 126 weitere Bestimmungen durch (z. B. basierend auf dem Ort und der Verwendung eines anderen Speichers, aus dem die angeforderten Daten gelesen würden) und entscheiden, ob der SCM-Lesecache 150 umgangen werden soll, teilweise auch basierend auf diesen weiteren Bestimmungen.
  • Während das Lesen aus dem SCM-Lese-Cache 150 eine geringere Latenzzeit als das Lesen aus dem Backend-Speicher 160 (wie oben beschrieben) haben kann, überschreitet in solchen Beispielen die Datenrate, die durch den SCM-Lese-Cache 150 erfahren wird, den Datenratenschwellenwert 134, dann werden nachfolgende E / A-Vorgänge an den SCM gelesen Wie oben beschrieben, kann es im Cache zu erheblich höheren Latenzen kommen. Somit können die Anweisungen 126 den SCM-Lesecache 150 umgehen und direkt aus dem Backend-Speicher 160 lesen, wenn ein aktueller Warteschlangentiefenschwellenwert 138 für den SCM-Lesecache 150 (z. B. ein Lesewarteschlangentiefenschwellenwert) durch die aktuelle Warteschlangentiefe 136 für das SCM-Lesen überschritten wird Cache 150, wo dieser Warteschlangentiefenschwellenwert 138 basierend auf der Datenrate eingestellt wird, die der SCM-Lese-Cache 150 erfährt, wie oben beschrieben. In solchen Beispielen kann das Steuern der Warteschlangentiefenschwelle und das selektive Umgehen des SCM-Lesecaches 150 basierend auf dieser Schwelle die Datenrate, die der SCM-Lesecache 150 erfährt, vorteilhaft unter der Datenratenschwelle 134 halten.
  • Zurück zu 220 von FIG. In 2 können die Anweisungen 126 noch eine andere Auswahl treffen, wenn verschiedene Kriterien erfüllt sind. Zum Beispiel basierend auf (i) einer Feststellung, dass die E / A-Anforderung 180 eine Anforderung zum Auslagern von Daten an den SCM-Lesecache 150 ist, und (ii) einem Ergebnis des Vergleichs, das angibt, dass die aktuelle Anzahl von ausstehenden Schreib-E / A für den SCM-Lesecache 150 nicht aussteht größer als ein Schreibwarteschlangentiefenschwellenwert für den SCM-Lesecache 150, können die Anweisungen 126 auswählen, die E / A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150 zu verarbeiten, und als Antwort die Daten in den SCM-Lesecache 150 auszulagern (z. B. zu schreiben).
  • In einigen Beispielen können die Anweisungen 126 noch eine andere Auswahl treffen, wenn andere Kriterien erfüllt sind. Zum Beispiel basierend auf (i) einer Feststellung, dass die E / A-Anforderung 180 eine Leseanforderung zum Lesen angeforderter Daten aus dem SCM-Lesecache 150 ist, und (ii) einem Ergebnis des Vergleichs, der angibt, dass die aktuelle Anzahl von ausstehenden Lese-E / A für den SCM-Lesecache 150 aussteht ist nicht größer als eine Lesewarteschlangentiefenschwelle für den SCM-Lesecache 150, können die Anweisungen 126 auswählen, die E / A-Anforderung 180 unter Verwendung des SCM-Lesecache 150 zu verarbeiten, und als Antwort die angeforderten Daten aus dem SMC-Lesecache 150 in den Hauptcache 140 lesen.
  • Beispiele, die oben in Bezug auf das Verfahren 200 von 1 beschrieben wurden. 2 wird nun detaillierter mit Bezug auf die Beispiele der 1 und 2 beschrieben. 3A, 3B, 3C und 4. FEIGE. 3A ist ein Flussdiagramm eines beispielhaften Verfahrens 300A, das das Anpassen eines Warteschlangentiefenschwellenwerts basierend auf einer Datenmenge umfasst, die in einem Zeitraum zu und von einem SCM-Lesecache übertragen wurde. FEIGE. 3B ist ein Flussdiagramm eines beispielhaften Verfahrens 300B, das das Verringern eines Schwellenwerts für die Tiefe einer Schreibwarteschlange und eines Schwellenwerts für die Tiefe einer Lesewarteschlange für einen SCM-Lesecache umfasst. FEIGE. 3C ist ein Flussdiagramm eines beispielhaften Verfahrens 300C, das das Erhöhen einer Schreibwarteschlangentiefenschwelle oder einer Lesewarteschlangentiefenschwelle für einen SCM-Lesecache umfasst. FEIGE. 4 ist ein Flussdiagramm eines beispielhaften Verfahrens 400, das das Auswählen umfasst, ob eine Eingabe / AusgabeAnforderung (IO-Anforderung) unter Verwendung eines SCM-Lesecaches verarbeitet werden soll.
  • Obwohl die Ausführung der Verfahren 300A, 300B, 300C und 400 nachstehend unter Bezugnahme auf die Rechenvorrichtung 100 von 1 beschrieben wird. In 1 können andere Rechenvorrichtungen verwendet werden, die zur Ausführung dieser Verfahren geeignet sind (z. B. Rechenvorrichtung 500 von 5). Darüber hinaus ist die Implementierung dieser Methoden nicht auf solche Beispiele beschränkt. Obwohl die Flussdiagramme der 3A - 4 zeigen jeweils eine spezifische Reihenfolge der Leistung bestimmter Funktionalitäten, wobei die Verfahren nicht auf diese Reihenfolge beschränkt sind. Zum Beispiel können die in den Flussdiagrammen nacheinander gezeigten Funktionalitäten in einer anderen Reihenfolge ausgeführt werden, können gleichzeitig oder teilweise gleichzeitig ausgeführt werden oder eine Kombination davon.
  • Bezugnehmend auf FIG. In 1 und 2 können die Anweisungen 122, wie oben beschrieben, eine Gesamtmenge von Daten 132 bestimmen, die in einem gegebenen Zeitraum (bei 205 des Verfahrens 200) aus dem SCM-Lese-Cache 150 gelesen und in diesen geschrieben wurden, und die Anweisungen 124 können mindestens eine Warteschlangentiefe einstellen Schwelle 138 für den SCM-Lesecache 150 in Reaktion auf eine Bestimmung, basierend auf der bestimmten Datenmenge 132, dass die Datenratenschwelle 134 für den SCM-Lesecache 150 überschritten ist (bei 210 von Verfahren 200). In einigen Beispielen können diese Funktionalitäten periodisch durch einen Hintergrundprozess (oder Thread) ausgeführt werden, der in einigen Beispielen zumindest teilweise durch Anweisungen 122 und 124 implementiert ist (siehe z. B. Hintergrundanweisungen 522 von 5 zum Implementieren des Hintergrundprozesses) ).
  • Funktionalitäten, die oben in Bezug auf 205 und 210 von 1 beschrieben wurden. 2 wird nachfolgend anhand der 1 und 2 näher erläutert. 3A-3C. Bezugnehmend auf FIG. In 3A kann das Verfahren 300A bei 305 beginnen, wo die Anweisungen 122 bestimmen können, ob eine Zeitdauer verstrichen ist. Zum Beispiel kann, wie oben angemerkt, der Hintergrundprozess periodisch das Bestimmen der Gesamtmenge von Daten 132 und das selektive Einstellen der Warteschlangentiefenschwelle (n) durchführen.
  • In dem Beispiel von FIG. In 3A kann die Bestimmung und selektive Einstellung am Ende jeder von mehreren aufeinanderfolgenden Zeitperioden durchgeführt werden. Solche Zeitperioden können jeweils eine feste Zeitdauer sein, wie beispielsweise ungefähr 100 Millisekunden. In solchen Beispielen können Befehle 122 während jeder der Zeitperioden (dh während die Zeitperiode nicht abgelaufen ist) die Gesamtmenge von Daten 132 akkumulieren, die während der Zeitperiode aus dem SCM-Lese-Cache 150 gelesen und in diesen geschrieben wurden, beispielsweise durch nach Beendigung jeder E / A für SCM-Lesezwischenspeicher 150, der die Menge der von der abgeschlossenen E / A gelesenen oder geschriebenen Daten ansammelt. Wenn beispielsweise die aktuelle Zeitperiode nicht abgelaufen ist („NEIN“ bei 305), kann das Verfahren 300A mit 310 fortfahren, wo die Anweisungen 122 bestimmen können, ob irgendwelche ausstehenden E / A-Anforderungen für den SCM-Lesecache 150 abgeschlossen sind. Wenn dies der Fall ist („JA“ bei 310), können die Anweisungen 122 die Gesamtmenge von Daten, die aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurden, in der aktuellen Zeitperiode auf der Grundlage der Größe der abgeschlossenen E / A-Anforderung (dh der Datenmenge) erhöhen gelesen oder geschrieben vom IO). Beispielsweise können bei 315 die Anweisungen 122 für jede abgeschlossene E / A für den SCM-Lesecache 150 zu einer laufenden Summe für den aktuellen Zeitraum die Datenmenge hinzufügen, für die die kürzlich abgeschlossenen E / A-Anforderungen gelesen und / oder geschrieben wurden SCM-Lese-Cache 150. Nach einem geeigneten Erhöhen der Gesamtmenge von Daten 132 bei 315 können die Anweisungen 122 zu 305 zurückkehren (z. B. um zu bestimmen, ob die aktuelle Zeitperiode abgelaufen ist). Wenn bei 310 keine ausstehenden E / A für den SCM-Lesecache 150 abgeschlossen sind („NEIN“ bei 310), können die Anweisungen 122 zu 305 zurückkehren (z. B. um zu bestimmen, ob die aktuelle Zeitperiode abgelaufen ist).
  • Wenn bei 305 die aktuelle Zeitspanne abgelaufen ist (z. B. am Ende der aktuellen Zeitspanne von 100 ms) („JA“ bei 305), kann das Verfahren 300A mit 320 fortfahren, wo die Anweisungen 122 die Gesamtmenge der gelesenen Daten 132 bestimmen können vom SCM-Lese-Cache 150 entfernt und in den SCM-Lese-Cache 150 geschrieben, indem beispielsweise die Gesamtmenge der Daten untersucht wird, die über den verstrichenen Zeitraum angesammelt wurden, wie oben beschrieben. Bei 320 können die Anweisungen 122 ferner bestimmen, ob der Datenratenschwellenwert 134 für den SCM-Lesecache 150 in der Zeitperiode überschritten ist, basierend auf der akkumulierten Gesamtmenge von Daten 132 für die Zeitperiode (wie oben in Bezug auf 1 und 2 beschrieben). und basierend auf der Bestimmung können die Anweisungen 124 mindestens einen Warteschlangentiefenschwellenwert für den SCM-Lesecache 150 anpassen.
  • Wenn beispielsweise die Anweisungen 122 auf der Grundlage der akkumulierten Gesamtdatenmenge 132 bestimmen, dass der Datenratenschwellenwert 134 in der Zeitperiode überschritten wurde („JA“ bei 320), können die Anweisungen 124 mindestens einen Warteschlangentiefenschwellenwert für den SCM-Lesecache verringern 150 (z. B. wie ausführlicher in Bezug auf 3B für ein Beispiel beschrieben, in dem es mehrere Warteschlangentiefenschwellen gibt). Die Anweisungen 122 können dann bei 350 die Gesamtmenge der Daten 132 für den Zeitraum auf Null zurücksetzen (in Vorbereitung auf den nächsten Zeitraum) und den nächsten Zeitraum starten und / oder beginnen (bei 305), das Verfahren 300A von 3 auszuführen . 3A erneut für den nächsten Zeitraum (z. B. den nächsten Zeitraum von 100 ms).
  • Wenn in anderen Beispielen die Anweisungen 122 basierend auf der akkumulierten Gesamtmenge von Daten 132 bestimmen, dass der Datenratenschwellenwert 134 in der Zeitperiode nicht überschritten wird („NEIN“ bei 320), können die Anweisungen 124 mindestens einen Warteschlangentiefenschwellenwert für SCM erhöhen Lese-Cache 150 (z. B. wie ausführlicher in Bezug auf 3C für ein Beispiel beschrieben, in dem es mehrere Warteschlangentiefenschwellen gibt). Die Anweisungen 122 können dann bei 350 die Gesamtmenge der Daten 132 für den Zeitraum auf Null zurücksetzen (in Vorbereitung auf den nächsten Zeitraum) und den nächsten Zeitraum starten und / oder beginnen (bei 305), das Verfahren 300A von 3 auszuführen . 3A erneut für den nächsten Zeitraum (z. B. den nächsten Zeitraum von 100 ms).
  • In einigen Beispielen kann die Computervorrichtung 100 mehrere verschiedene Threads ausführen, die aus dem SCM-Lesecache 150 lesen und in diesen schreiben (z. B. einen oder mehrere Lesethreads und einen Ziel-Thread). In solchen Beispielen können die Anweisungen 122 zum Bestimmen der Gesamtmenge von Daten, die in der Zeitspanne zum / vom SCM-Lesecache 150 übertragen wurden, die Gesamtmenge von Daten darstellen, die von allen diesen Threads für die Zeitspanne gelesen / geschrieben wurden (z. B. durch Basieren der akkumulierte Gesamtsumme auf der Größe jedes durch den SCM-Lesecache 150 abgeschlossenen E / A).
  • In den hier beschriebenen Beispielen können die Anweisungen 122 durch wiederholtes Messen der Gesamtmenge von Daten 132, die in einem festen Zeitintervall aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurden, periodische Abtastwerte der Datenübertragungsrate in den und aus dem SCM-Lesecache 150 einlesen der jüngste Zeitraum (z. B. die Gesamtmenge der Daten 132 in dem Zeitraum geteilt durch die Länge des Zeitraums). Indem diese periodischen Abtastwerte genommen werden, die die Datenrate repräsentieren, die der SCM-Lesecache 150 erfährt, können die Anweisungen 122 ein nützliches Maß dafür sammeln, ob der Datenratenschwellenwert 134 in der vorherigen Zeitperiode überschritten wurde.
  • Obwohl hier Beispiele im Zusammenhang mit einer Zeitspanne von 100 ms beschrieben werden, können andere geeignete Zeitspannen verwendet werden. In den hier beschriebenen Beispielen kann es einen Kompromiss geben zwischen kürzeren Intervallen (z. B. 10 ms, was eine häufigere Rückmeldung über die kürzlich beobachtete Datenübertragungsrate liefern kann, aber auch mehr Ressourcen verbrauchen kann) und längeren Intervallen (z. B. 1) Zweitens kann dies weniger Ressourcen verbrauchen, aber auch weniger häufig Rückmeldungen liefern und anfälliger für Verzerrungen durch vorübergehende Datenübertragungs-Bursts sein. Während 100 ms in einigen Beispielen ein geeigneter Kompromiss zwischen diesen konkurrierenden Bedenken sein können, können in anderen Beispielen andere Zeiträume geeigneter sein, insbesondere wenn die Leistungsfähigkeiten von Computervorrichtungsressourcen zunehmen.
  • Unter erneuter Bezugnahme auf FIG. In 3A können in Beispielen, in denen es eine Warteschlangentiefenschwelle 138 für den SCM-Lesecache 150 gibt, die Anweisungen 124 diese eine Warteschlangentiefenschwelle 138 bei 340 des Verfahrens 300A erhöhen und diese eine Warteschlangentiefenschwelle 138 bei 330 des Verfahrens 300A verringern. In anderen Beispielen, in denen es mehrere Warteschlangentiefenschwellen 138 gibt, die von den Befehlen 124 gleich behandelt werden (z. B. Lese- und Schreibwarteschlangentiefenschwellen 138), können die Befehle 124 bei 340 des Verfahrens 300A und 300B die beiden derartigen Warteschlangentiefenschwellen 138 erhöhen kann beide solcher Warteschlangentiefenschwellen 138 bei 330 des Verfahrens 300A verringern. In anderen Beispielen können die Anweisungen 121 unterschiedliche Schwellenwerte für die Lese- und Schreibwarteschlangentiefe für den SCM-Lesecache 150 der Computervorrichtung 100 implementieren, wie oben beschrieben, und die Anweisungen 124 können sie unterschiedlich anpassen. Beispielsweise können die Anweisungen 124 bei 330 entweder den Schwellenwert für die Tiefe der Lesewarteschlange oder den Schwellenwert für die Tiefe der Schreibwarteschlange (aber nicht beide) verringern, und die Anweisungen 124 können bei 330 entweder den Schwellenwert für die Tiefe der Lesewarteschlange oder den Schwellenwert für die Tiefe der Schreibwarteschlange (aber nicht beide) erhöhen 340.
  • In einigen Beispielen können die Anweisungen 124 die Schwellenwerte für die Lese- und Schreibwarteschlangentiefe für den SCM-Lesecache 150 unterschiedlich und in abgestufter Weise anpassen, wie nachstehend in Bezug auf die 3 und 4 beschrieben. 3B und 3C. Unter Bezugnahme auf FIG. In 3B kann das Verfahren 300B ein beispielhaftes Verfahren zum Implementieren des Blocks 330 des Verfahrens 300A (dh Verringern eines Warteschlangentiefenschwellenwerts) sein, bei dem die Lese- und Schreibwarteschlangentiefenschwellenwerte stufenweise angepasst werden. Wenn beispielsweise die Anweisungen 122 bestimmen, dass die Gesamtmenge der in der Zeitperiode gelesenen / geschriebenen Daten 132 größer als der Datenratenschwellenwert 134 ist („JA“ bei 320), können die Anweisungen 124 zu 332 des Verfahrens 300B weitergehen, wo die Anweisungen 124 kann bestimmen, ob der Schreibwarteschlangentiefenschwellenwert über einem ersten Minimalwert (z. B. Null oder einem anderen geeigneten Wert) liegt. Wenn dies der Fall ist („JA“ bei 332), können die Anweisungen 124 bei 334 den Schwellenwert für die Tiefe der Schreibwarteschlange verringern und dann zu 350 des Verfahrens 300A (von 3A) übergehen. Wenn nicht („NEIN“ bei 332, dh der Schreibwarteschlangentiefenschwellenwert hat den ersten Minimalwert), dann können bei 336 Anweisungen 124 bestimmen, ob der Lesewarteschlangentiefenschwellenwert über einem zweiten Minimalwert liegt (z. B. 10% eines Standards) oder Maximalwert für den Schwellenwert der Lesewarteschlangentiefe). Wenn dies der Fall ist („JA“ bei 336), können die Anweisungen 124 den Schwellenwert für die Lesewarteschlangentiefe bei 338 verringern und dann zu 350 des Verfahrens 300A (von 3A) übergehen. Wenn der Schreibwarteschlangentiefenschwellenwert auch den ersten Minimalwert hat („NEIN“ bei 336), können die Anweisungen 124 weder den Schreibwarteschlangentiefenschwellenwert noch den Lesewarteschlangentiefenschwellenwert bei 339 verringern und dann zu 350 des Verfahrens 300A (von 339) weitergehen 3A).
  • In dem Beispiel von FIG. Wenn in 3B verschiedene Warteschlangentiefenschwellen in einer gestuften Weise verringert werden, können die Anweisungen 124 zuerst die Schreibwarteschlangentiefenschwelle verringern, bis ein Minimalwert (z. B. 0 oder ein anderer geeigneter Minimalwert) erreicht ist, und beginnen, die Lesewarteschlangentiefenschwelle zu verringern erst, nachdem der Schwellenwert für die Tiefe der Schreibwarteschlange den Mindestwert erreicht hat, und beenden Sie dann das Verringern eines der Schwellenwerte für die Tiefe der Warteschlange, wenn beide ihre jeweiligen Mindestwerte erreichen (die gleich oder unterschiedlich sein können). Auf diese Weise können die hier beschriebenen Beispiele Lesevorgänge aus dem SCM-Lesecache 150 gegenüber Schreibvorgängen priorisieren, beispielsweise Destage-Operationen, um saubere Daten aus dem Hauptcache 140 in den SCM-Lesecache 150 zu schreiben. Durch Anpassen der Warteschlangentiefenschwellen auf diese Weise können Destage-Operationen aggressiver fallengelassen werden, als der SCM-Lese-Cache 150 für Leseoperationen umgangen wird. Dies kann in einigen Beispielen vorteilhaft sein, da zum Beispiel eine gegenwärtige Leseoperation den Vorteil der geringeren Latenzzeit realisiert, die aus dem SCM-Lese-Cache 150 (gegenüber einem Lesen aus dem Back-End-Speicher 160) sofort gelesen wird, während Destage-Operationen tatsächlich die gegenwärtigen Kosten verursachen des Schreibens in den SCM-Lesecache 150 angesichts der Möglichkeit, ein Lesen aus dem SCM-Lesecache 150 zu einem späteren Zeitpunkt mit geringerer Latenz zu ermöglichen. Daher kann es vorteilhaft sein, Schreibvorgänge aggressiver zu verwerfen als den SCM-Lesecache 150 für Lesevorgänge zu umgehen.
  • In den hier beschriebenen Beispielen kann ein Warteschlangentiefenschwellenwert um einen beliebigen geeigneten Betrag erhöht oder verringert werden, beispielsweise um einen festen Betrag, einen proportionalen Betrag (z. B. 10% des aktuellen Werts des Warteschlangentiefenschwellenwerts) oder um einen beliebigen anderen geeigneten festen Wert variabler Betrag.
  • Es wird nun auf 1 Bezug genommen. In 3C kann das Verfahren 300C ein beispielhaftes Verfahren zum Implementieren des Blocks 340 des Verfahrens 300A sein (dh Erhöhen eines Warteschlangentiefenschwellenwerts), bei dem die Lese- und Schreibwarteschlangentiefenschwellenwerte in einer gestuften Weise eingestellt werden. Wenn zum Beispiel die Anweisungen 122 bestimmen, dass die Gesamtmenge der Daten 132, die in der Zeitperiode gelesen / geschrieben wurden, nicht größer als der Datenratenschwellenwert 134 ist („NEIN“ bei 320), können die Anweisungen 124 zu 342 des Verfahrens 300C übergehen, wo Anweisungen erteilt werden 124 kann bestimmen, ob der Lesewarteschlangentiefenschwellenwert unter einem ersten Maximalwert liegt (z. B. einem Standardwert für den Lesewarteschlangentiefenschwellenwert, wie z. B. 100, 500 oder einem beliebigen anderen geeigneten Wert). Wenn dies der Fall ist („JA“ bei 342), können die Anweisungen 124 den Schwellenwert für die Lesewarteschlangentiefe erhöhen und dann zu 350 des Verfahrens 300A (von 3A) übergehen. Wenn nicht („NEIN“ bei 342; dh der Schwellenwert der Lesewarteschlangen-Tiefe hat den ersten Maximalwert), können die Anweisungen 124 bei 346 bestimmen, ob der Schwellenwert der SchreibwarteschlangenTiefe unter einem zweiten Maximalwert liegt, der der gleiche sein kann wie oder anders als der erste Maximalwert (z. B. ein Standardwert für den Schwellenwert für die Tiefe der Schreibwarteschlange, z. B. 100, 500 oder ein anderer geeigneter Wert). Wenn dies der Fall ist („JA“ bei 346), können die Anweisungen 124 den Schwellenwert für die Tiefe der Schreibwarteschlange erhöhen und dann zu 350 des Verfahrens 300A (von 3A) übergehen. Wenn nicht („NEIN“ bei 346; dh der Schreibwarteschlangentiefenschwellenwert hat den zweiten Maximalwert), können die Anweisungen 124 bestimmen, weder den Lesewarteschlangentiefenschwellenwert noch den Schreibwarteschlangentiefenschwellenwert zu erhöhen.
  • In dem Beispiel von FIG. Wenn in 3C verschiedene Warteschlangentiefenschwellenwerte in einer gestuften Weise erhöht werden, können die Anweisungen 124 zuerst den Lesewarteschlangentiefenschwellenwert erhöhen, bis ein erster Maximalwert erreicht ist, und beginnen, den Schreibwarteschlangentiefenschwellenwert erst zu erhöhen, nachdem der Lesewarteschlangentiefenschwellenwert den erreicht hat Erhöhen Sie dann keinen der Schwellenwerte für die Warteschlangentiefe mehr, wenn beide ihre jeweiligen Maximalwerte erreichen (die gleich oder unterschiedlich sein können). Auf diese Weise können die hier beschriebenen Beispiele Lesevorgänge aus dem SCM-Lesecache 150 gegenüber Schreibvorgängen (z. B. Destage-Operationen) priorisieren, zumindest aus Gründen, die den oben in Bezug auf 1 beschriebenen ähnlich sind. 3B.
  • Erneut Bezug nehmend auf FIG. In den 1 und 2 können die Anweisungen 126, wie oben beschrieben, eine E / A-Anforderung 180 für den SCM-Lesecache 150 empfangen und als Antwort einen Typ der E / A-Anforderung 180 bestimmen und die aktuelle Anzahl 136 von ausstehenden E / A für den SCM-Lesecache 150 mit einer der vergleichen Warteschlangentiefenschwelle (n) 138 für den SCM-Lesecache 150 (bei 215 von Verfahren 200). In solchen Beispielen können die Anweisungen 126 auch basierend auf dem Typ der E / A-Anforderung 180 und dem Ergebnis des Vergleichs auswählen zwischen (1) Verarbeiten der E / A-Anforderung 180 unter Verwendung des SCM-Lesecache 150, (2) Löschen der E / A-Anforderung 180 und (3) Verarbeiten der E / A-Anforderung 180, ohne den SCM-Lesecache 150 zu verwenden, und Ausführen der Auswahl (bei 220 von Verfahren 200), wie oben beschrieben. In einigen Beispielen können diese Funktionalitäten von einem E / A-Prozess (oder Thread) ausgeführt werden, der sich von dem oben beschriebenen Hintergrundprozess (oder Thread) unterscheidet, wobei der E / A-Prozess in einigen Beispielen zumindest teilweise durch Anweisungen 126 implementiert wird (siehe zB E / A-Anweisungen 524 von 5 zum Implementieren des E / A-Prozesses). Der lO-Prozess kann beispielsweise ein Prozess zum Implementieren eines adaptiven Zwischenspeicherns von Daten in der Computervorrichtung 100 sein.
  • Funktionen, die oben in Bezug auf 215, 220 und 225 von 1 beschrieben wurden. 2 wird nachfolgend anhand der 1 und 2 näher erläutert. 1 und 4. Bezugnehmend auf FIG. In 4 kann das Verfahren 400 bei 405 beginnen, wo die Anweisungen 126 eine E / A-Anforderung 180 für den SCM-Lesecache 150 empfangen können. Bei 410 können die Anweisungen 126 bestimmen, ob die E / A-Anforderung 180 eine Leseanforderung oder eine Zielanforderung ist. In Reaktion auf eine Bestimmung, dass die E / A-Anforderung 180 eine Leseanforderung für angeforderte Daten ist („LESEN“ bei 410), können die Anweisungen 126 bei 425 bestimmen, ob eine aktuelle Anzahl von für den SCM-Lesecache 150 ausstehenden Lese-E / A größer als eine Lesewarteschlange ist Tiefenschwelle für den SCM-Lesecache 150. Wenn dies der Fall ist („JA“ bei 425), können die Anweisungen 126 bei 430 den SCM-Lese-Cache 150 umgehen und die angeforderten Daten aus dem Back-End-Speicher 160 (oder einem anderen Speicher, wie einer oder mehreren Speichereinheiten eines entfernten Knotens oder Arrays) einlesen Hauptcache 140 (und ohne Lesen der angeforderten Daten aus dem SCM-Lesecache 150), wie oben beschrieben, und dann mit 405 fortfahren, um eine nachfolgende E / A-Anforderung für den SCM-Lesecache 150 abzuwarten. In anderen Beispielen können bei 430 weitere Feststellungen getroffen werden, bevor entschieden wird, ob mit dem Umgehen des SCM-Lesecaches 150 und dem Lesen der angeforderten Daten aus einem anderen Speicher (z. B. dem Backend-Speicher 160) fortzufahren ist, wie nachstehend ausführlicher beschrieben wird. Wenn die aktuelle Anzahl von ausstehenden Lese-E / A-Vorgängen für den SCM-Lesecache 150 nicht größer als der Schwellenwert für die Lesewarteschlangentiefe ist („NEIN“ bei 425), können die Anweisungen 126 bei 435 die E / A-Anforderung 180 unter Verwendung des SCM-Lesecache 150 ausführen, der in Dieses Beispiel kann das Lesen der angeforderten Daten (der Leseanforderung 180) aus dem SCM-Lesecache 150 in den Hauptcache 140 umfassen. Wie oben beschrieben, kann die Leseanforderung 180 für angeforderte Daten durch eine Host-Lese-E / A ausgelöst werden (z. B. eine Leseanforderung von einer Host-Computervorrichtung, die von der Computervorrichtung 100 für mindestens die angeforderten Daten getrennt ist).
  • Zurückkehrend zu 410 des Verfahrens 400 können die Anweisungen 126 als Reaktion auf eine Bestimmung, dass die E / A-Anforderung 180 eine Zielanforderung ist („ZIEL“ bei 410), bei 415 bestimmen, ob eine aktuelle Anzahl von für den SCM-Lesecache 150 ausstehenden Schreib-E / A größer ist als ein Schreibwarteschlangentiefenschwellenwert für den SCM-Lesecache 150. Wenn dies der Fall ist („JA“ bei 415), können die Anweisungen 126 bei 420 die E / A-Anforderung 180 (dh die Zielanforderung 180) wie oben beschrieben verwerfen, die Daten vom Haupt-Cache 140 zum SCM-Lese-Cache 150 überspringen und dann fortfahren bis 405, um auf eine nachfolgende E / A-Anforderung für den SCM-Lesecache 150 zu warten. Wenn nicht („NEIN“ bei 415), dann können die Anweisungen 126 bei 435 die E / A-Anforderung 180 unter Verwendung des SCM-Lese-Cache 150 ausführen, was in diesem Beispiel das Auslagern von Daten aus dem Haupt-Cache 140 in den SCM-Lese-Cache 150 einschließlich des Schreibens der Daten umfassen kann verbunden mit der Zielanforderung an den SCM-Lesecache 150, und fahren Sie dann mit 405 fort, um auf eine nachfolgende E / A-Anforderung für den SCM-Lesecache 150 zu warten. Wie oben beschrieben, kann eine Auslagerungsanforderung 180 eine Anforderung sein, die intern von der Rechenvorrichtung 100 erzeugt wird, um saubere Daten aus dem Haupt-Cache 140 in den SCM-Lesecache 150 auszulagern.
  • In den hier beschriebenen Beispielen können die Anweisungen 126 die Anzahl 136 ausstehender E / A für den SCM-Lesecache 150 beibehalten, die tatsächlich als zwei Zahlen dargestellt werden können, einschließlich einer Anzahl ausstehender Lese-E / A für den SCM-Lesecache 150 und einer Anzahl ausstehender Schreib-E / A für SCM-Lese-Cache 150. In solchen Beispielen können die Anweisungen 126 diese Nummern beibehalten, indem sie beispielsweise die Anzahl der ausstehenden Lese-E / A-Vorgänge jedes Mal erhöhen, wenn eine Lese-E / A-Anforderung an den SCM-Lesecache 150 (z. B. an einen Gerätetreiber für ein SCM-Gerät, das den SCM implementiert) ausgegeben wird Lese-Cache 150) und Verringern dieser Anzahl jedes Mal, wenn eine der Lese-E / A-Anforderungen an den SCM-Lese-Cache 150 abgeschlossen ist (z. B. als abgeschlossen gemeldet). In ähnlicher Weise können die Anweisungen 126 die Anzahl der ausstehenden Schreib-E / A-Vorgänge jedes Mal erhöhen, wenn eine Schreib-E / A-Anforderung an den SCM-Lesecache 150 ausgegeben wird (z. B. an einen Gerätetreiber für ein SCM-Gerät, das den SCM-Lesecache 150 implementiert), und diese Anzahl jeweils verringern wenn eine der Schreib-E / A-Anforderungen an den SCM-Lesecache 150 abgeschlossen ist (z. B. als abgeschlossen gemeldet wird). In anderen Beispielen können die Anweisungen 126 diese Zahlen auf jede andere geeignete Weise bestimmen. In einigen hierin beschriebenen Beispielen kann ein Vergleich einer aktuellen Anzahl von ausstehenden Lese- oder Schreib-E / A-Vorgängen für den SCM-Lesecache 150 (z. B. die aktuelle Warteschlangentiefe 136) mit einem jeweiligen Warteschlangentiefenschwellenwert ausgelöst werden, indem (z. B. als Antwort auf) Empfangen einer E / A-Anforderung 180 (z. B. einer Lese- oder Zielanforderung) für den SCM-Lesecache 150. In solchen Beispielen kann die E / A-Anforderung 180 von dem E /A-Prozess oder Thread empfangen werden, der das Verfahren von 1 ausführt. B. der durch die E / A-Anweisungen 524 des Beispiels von 5 implementierte Prozess oder Thread, einschließlich der Anweisungen 126, wie oben beschrieben).
  • In anderen Beispielen kann der E / A-Prozess (oder Thread) selbst (z. B. die Anweisungen 126) periodisch bestimmen, ob der Haupt-Cache 140 zu voll ist (z. B. zu wenig freien Speicherplatz hat) und bestimmen, dass die Auslagerung von Seite (n) ausgelöst wird (z. B. zuletzt verwendete Seite (n) vom Haupt-Cache 140 zum SCM-Lese-Cache 150. In solchen Beispielen können die Anweisungen 126 als Reaktion auf eine Bestimmung, Daten aus dem SCM-Lesecache 150 des Hauptcaches 140 zu entfernen, einen ähnlichen Prozess wie den oben in Bezug auf das Verfahren 400 beschriebenen ausführen, wobei von 410 aus vorgegangen wird. Beispielsweise können in Reaktion auf die Bestimmung, Daten zu destillieren, die Anweisungen 126 die Daten vom Haupt-Cache 140 zum SCM-Lese-Cache 150 destillieren (bei 435), wenn die aktuelle Anzahl von für den SCM-Lese-Cache 150 ausstehenden Schreib-IOs nicht größer als ein Schreibvorgang ist Warteschlangentiefenschwelle für den SCM-Lesecache 150. In anderen Beispielen können die Anweisungen 126 als Reaktion auf die Bestimmung, Daten zu destillieren, das Destillieren der Daten vom Haupt-Cache 140 zum SCM-Lese-Cache 150 (z. B. ähnlich zu 420) überspringen, wenn die aktuelle Anzahl von für den SCM-Lese-Cache 150 ausstehenden Schreib-IOs ist größer als der Schwellenwert für die Schreibwarteschlangentiefe für den SCM-Lesecache 150.
  • In einigen Beispielen kann es vorteilhafter sein, aus dem SCM-Lesecache 150 zu lesen, als aus dem Back-End-Speicher 160 oder einem entfernten Knoten (z. B. einem anderen Speicherarray), selbst wenn die Anweisungen 126 bestimmen, dass die Anzahl der ausstehenden Lese-E / A für den SCM aussteht Der Lesecache 150 ist größer als der Lesewarteschlangentiefenschwellenwert. In solchen Beispielen kann dies von verschiedenen Faktoren abhängen, die sich auf die Speichervorrichtung (en) beziehen, aus denen die angeforderten Daten gelesen würden, wenn der SCM-Lesecache 150 umgangen würde. Beispielsweise kann es akzeptabel sein, den SCM-Lesecache 150 zu umgehen, wenn die angeforderten Daten dann von einer oder mehreren lokalen Speichervorrichtung (en) der Rechenvorrichtung (z. B. Rechenvorrichtung 100) gelesen werden, die einen SCM-Lesecache 150 enthält, wie z. B. eine Speichervorrichtung (s) des Back-End-Speichers 160 und diese Speichervorrichtung (en) weisen eine relativ geringe Auslastung auf. Es kann jedoch vorteilhafter sein, mit dem Lesen der angeforderten Daten aus dem SCM-Lesecache 150 fortzufahren, selbst wenn die Lesewarteschlangentiefenschwelle für den SCM-Lesecache 150 überschritten wird, wenn zum Beispiel die angeforderten Daten ansonsten von einer entfernten Stelle gelesen würden Knoten (z. B. ein entferntes Computergerät, z. B. ein anderes Speicherarray) oder von Speichergeräten mit relativ hoher Auslastung. Daher können einige Beispiele hierin weitere Bestimmungen treffen, bevor entschieden wird, ob der SCM-Lesecache 150 für eine Leseanforderung 180 umgangen werden soll, wenn der Schwellenwert für die Lesewarteschlangentiefe überschritten wird.
  • Beispielsweise als Antwort auf eine Leseanforderung 180 für den SCM-Lesecache 150 (z. B. „LESEN“ bei 410 von 4) und eine Feststellung, dass die aktuelle Anzahl von für den SCM-Lesecache 150 ausstehenden Lese-E / A-Vorgängen größer als eine Lesewarteschlange ist Tiefenschwelle für den SCM-Lese-Cache 150 („JA“ bei 425), können die Anweisungen 126 weitere Bestimmungen vornehmen (z. B. bei 430), bevor entschieden wird, ob (i) der SCM-Lese-Cache 150 umgangen und die angeforderten Daten aus dem Speicher in den Haupt-Cache 140 gelesen werden sollen außer dem SCM-Lesecache 150, oder (ii) mit dem Lesen der angeforderten Daten aus dem SCM-Lesecache 150 in den Hauptcache 140 fortfahren, ungeachtet des überschrittenen Schwellenwerts für die Tiefe der Lesewarteschlange. Zum Beispiel können bei 430 die Anweisungen 126 weitere Bestimmungen in Bezug auf einen oder mehrere der Speicherorte des anderen Speichers vornehmen, aus denen die angeforderten Daten gelesen würden, wenn der SCM-Lesecache 150 umgangen würde, und eine aktuelle Nutzung dieses anderen Speichers. Beispielsweise ist in Reaktion auf die Leseanforderung 180 (z. B. „LESEN“ bei 410) und die Feststellung, dass die aktuelle Anzahl 136 von ausstehenden Lese-E / A-Vorgängen größer als der Schwellenwert für die Lesewarteschlangentiefe für den SCM-Lesecache 150 („JA“ bei 425) ) Bei 430 können die Anweisungen 126 zuerst bestimmen, von welcher anderen Speichervorrichtung (welchen anderen Speichervorrichtungen) die angeforderten Daten gelesen werden sollen, wenn der SCM-Lese-Cache 150 umgangen wird, und den Ort (die Orte) dieser anderen Speichervorrichtungen. Wenn beispielsweise die Anweisungen 126 bestimmen, dass sich die anderen Speichereinheiten in einem entfernten Knoten befinden (siehe z. B. „FERNKNOTEN“ von 5), wie z. B. einer Recheneinrichtung, einem Speicherarray usw., das entfernt ist Von der Computervorrichtung 100 kann dann der Befehl 126 entscheiden, die angeforderten Daten aus dem SCM-Lesecache 150 ungeachtet des überschrittenen Schwellenwerts für die Tiefe der Lesewarteschlange zu lesen. In solchen Beispielen kann es vorteilhafter sein, die Daten aus dem SCM-Lesecache 150 zu lesen (obwohl der Schwellenwert für die Lesewarteschlangentiefe überschritten ist), als die angeforderten Daten von einem entfernten Knoten zu lesen (z. B. IO 584 von 5). Dies kann eine wesentlich höhere Latenzzeit beinhalten als das Lesen von einem lokalen Speichergerät des Back-End-Speichers 160 des Computergeräts 100. Wenn in einigen Beispielen die Anweisungen 126 bestimmen, dass die anderen Speichereinheiten lokal für die Recheneinheit 100 sind (z. B. im Back-End-Speicher 160), können die Anweisungen 126 ferner eine aktuelle Auslastung dieser anderen Speichereinheiten bestimmen. Wenn in solchen Beispielen die aktuelle Auslastung einer oder mehrerer dieser Speichereinheiten größer als ein Auslastungsschwellenwert ist, können die Anweisungen 126 entscheiden, mit dem Lesen der angeforderten Daten aus dem SCM-Lesecache 150 fortzufahren, unabhängig von der überschrittenen Lesewarteschlangentiefe Schwelle. In solchen Beispielen kann es vorteilhafter sein, mit dem Lesen der Daten aus dem SCM-Lesecache 150 fortzufahren als mit den anderen Speichereinheiten, da die relativ hohe Auslastung dieser Speichereinheiten zu einer signifikant höheren Latenzzeit führen kann der Lesevorgang im Vergleich zu dem Zeitpunkt, zu dem die Speichergeräte weniger ausgelastet sind. Wenn in anderen Beispielen die Anweisungen 126 bestimmen, dass die anderen Speichereinheiten lokal für die Recheneinheit 100 sind (z. B. im Back-End-Speicher 160) und eine aktuelle Auslastung aufweisen, die unter dem Schwellenwert liegt, können die Anweisungen 126 entscheiden, SCM zu umgehen Lesen des Cache 150 und Lesen von der anderen Speichervorrichtung (en) (z. B. des Back-End-Speichers 160) bei 430. In solchen Beispielen kann der Ort und die Verwendung der anderen Speichervorrichtung (en) so sein, dass es vorteilhafter sein kann, aus diesen Speichervorrichtung (en) anstatt aus dem SCM-Lesecache 150 zu lesen, wenn der Schwellenwert für die Lesewarteschlangentiefe überschritten wird. In solchen Beispielen können die Anweisungen 126 von Fall zu Fall intelligent entscheiden, ob es vorzuziehen ist, den SCM-Lesecache 150 zu umgehen oder nicht, wenn der Schwellenwert für die Lesewarteschlangentiefe überschritten wird, basierend auf Bedingungen, die sich auf den bestimmten Speicher beziehen Gerät (e), von denen der Lesevorgang andernfalls stattfinden würde. In solchen Beispielen kann diese individualisierte Bestimmung für unterschiedliche E / A und unterschiedliche Back-End-Speichereinheiten zu einer insgesamt verringerten Latenz im Speichersystem 102 (oder 502, das auch diese Funktionen ausführen kann) führen. In den hier beschriebenen Beispielen kann jedes geeignete Maß für die Nutzung der Speichervorrichtung (en) von den Anweisungen 126 in Block 430 verwendet werden. Beispielsweise kann die Verwendung eines Speichergeräts (z. B. eines physischen Speichergeräts, wie einer Festplatte, einer SSD oder dergleichen) auf der Anzahl von ausstehenden E / A-Vorgängen zu dem Speichergerät zu einem bestimmten Zeitpunkt basieren. In solchen Beispielen kann eine maximale Auslastung des Speichergeräts durch eine maximale Anzahl von E / A-Vorgängen dargestellt werden, die gleichzeitig auf dem Speichergerät ausstehen dürfen. In solchen Beispielen kann die Verwendung eines Speichergeräts als die tatsächliche Anzahl von ausstehenden E / A-Vorgängen oder als Anteil der maximal zulässigen ausstehenden E / A-Vorgänge (z. B. 50%, 100% usw.) dargestellt werden. In solchen Beispielen kann der Nutzungsschwellenwert als eine feste Anzahl von lOs oder als ein Schwellenprozentsatz der maximalen Nutzung (z. B. 50%) festgelegt werden. In anderen Beispielen können andere Nutzungsmaße verwendet werden.
  • FEIGE. 5 ist ein Blockdiagramm eines beispielhaften Systems 502 zum Einstellen von Warteschlangentiefenschwellenwerten für jeden von mehreren SCM-Caches. Das in 5 unterscheidet sich von dem in FIG. Zur Vereinfachung der Darstellung ist das in 1 dargestellte Beispiel jedoch 5 erweitert das in 1 und oben beschrieben. Die in Bezug auf 1 beschriebenen Beispiele sind jedoch 5 sind nicht als Einschränkung der oben in Bezug auf 1 beschriebenen Beispiele aufzufassen. 1.
  • In dem Beispiel von FIG. In 5 umfasst das Speichersystem 502 eine Rechenvorrichtung 500, die (wie oben in Bezug auf 1 beschrieben) mindestens eine Verarbeitungsressource 110, ein maschinenlesbares Speichermedium 120 mit Befehlen 121, einen Speicher 130 mit einem Hauptcache 140 und ein Backend umfasst Speicher 160, der eine Vielzahl von Speichervorrichtungen 162, 164, 166, 168 usw. umfasst. Wie oben beschrieben, können Anweisungen 121 von der mindestens einen Verarbeitungsressource 110 ausgeführt werden, um die hier in Bezug auf 1 und 2 beschriebenen Funktionen zu implementieren. 1-5. Zusätzlich zeigt das Beispiel von 5 veranschaulicht Hintergrundbefehle 522 (einschließlich der Befehle 122 und 124, wie hierin beschrieben), um einen Hintergrundprozess (oder Thread), wie oben in Bezug auf 4 beschrieben, zumindest teilweise zu implementieren. 2 zeigt IO-Befehle 524 (einschließlich der hier beschriebenen Befehle 126) zum zumindest teilweisen Implementieren eines IO-Prozesses (oder Threads), wie oben in Bezug auf 1 beschrieben. 4. In dem Beispiel von FIG. Wie in 5 gezeigt, kann die Computervorrichtung 500 über ein oder mehrere Computernetzwerke mit einer entfernten Host-Computervorrichtung kommunizieren (z. B. um E / A-Anforderungen zu empfangen, wie z. B. E / A 582 zu lesen und E / A-Antworten zurückzugeben usw.) und kann über eines kommunizieren oder mehrere Computernetzwerke mit einem entfernten Knoten (z. B. Computergerät, Speicherarray usw.), der ein oder mehrere Speichergeräte (z. B. Festplatten, SSDs usw.) umfasst, mit denen das Computergerät 500 Daten austauschen kann (z , über lO-Kommunikation 584 usw.).
  • In dem in FIG. Wie in 5 gezeigt, kann die Rechenvorrichtung 100 mehrere SCM-Lesecaches 150, 550, 650 usw. umfassen. Obwohl in dem Beispiel von 1 drei SCM-Lesecaches in der Rechenvorrichtung 500 dargestellt sind. In 5 kann die Computervorrichtung 500 in Beispielen eine beliebige geeignete Anzahl von einem oder mehreren SCM-Lesecaches (z. B. mehr als drei usw.) enthalten. In solchen Beispielen können die Anweisungen 121 ausführbar sein, um den Hintergrundprozess der Anweisungen 522 (wie oben beispielsweise in Bezug auf 2 beschrieben) unabhängig für jeden der mehreren SCM-Caches auszuführen. In solchen Beispielen muss jeder Hintergrundprozess (dh für jeden SCM-Lesecache) mindestens einen Warteschlangentiefenschwellenwert unabhängig für jeden der SCM-Caches aufrechterhalten. Zum Beispiel kann für den SCM-Lesecache 150 ein entsprechender Hintergrundprozess Daten 152 im Speicher 130 aufrechterhalten, einschließlich mindestens: (1) einer Gesamtmenge von Daten in einer Zeitperiode 132, (2) einer Datenratenschwelle 134, (3) eine Anzahl ausstehender Lese-E / A (oder Anforderungen) 133 (oder Lesewarteschlangentiefe 133), (4) eine Anzahl ausstehender Schreib-E / A (oder Anforderungen) 135 (oder Schreibwarteschlangentiefe 135), (5) eine Lesewarteschlangentiefenschwelle 137 und (6) eine Schreibwarteschlangentiefenschwelle 139. Die jeweiligen Hintergrundprozesse können entsprechende Daten für jeden der SCM-Lesecaches im Speicher 130 aufrechterhalten.
  • Beispielsweise kann für den SCM-Lesecache 550 ein entsprechender Hintergrundprozess Daten 552 im Speicher 130 aufrechterhalten, einschließlich mindestens: (1) einer Gesamtmenge von Daten in einer Zeitperiode 532, (2) einer Datenratenschwelle 534, (3) eine Anzahl ausstehender Lese-E / A (oder Anforderungen) 533 (oder Lesewarteschlangentiefe 533), (4) eine Anzahl ausstehender Schreib-E / A (oder Anforderungen) 535 (oder Schreibwarteschlangentiefe 535), (5) eine Lesewarteschlangentiefenschwelle 537 und (6) einen Schreibwarteschlangentiefenschwellenwert 539. In solchen Beispielen kann für den SCM-Lesecache 650 ein entsprechender Hintergrundprozess Daten 652 im Speicher 130 aufrechterhalten, einschließlich mindestens: (1) einer Gesamtmenge von Daten in einer Zeitperiode 632, (2) einer Datenratenschwelle 634, (3) eine Anzahl ausstehender Lese-E / A (oder Anforderungen) 633 (oder Lesewarteschlangentiefe 633), (4) eine Anzahl ausstehender Schreib-E / A (oder Anforderungen) 635 (oder Schreibwarteschlangentiefe 635), (5) eine Lesewarteschlangentiefe Schwelle 637 und (6) eine Schreibwarteschlangentiefenschwelle 639.
  • In einigen Beispielen kann der Befehl 522 für jeden der mehreren SCM-Lesecaches (oder „SCM-Caches“) den Hintergrundprozess für den SCM-Cache (wie oben beschrieben) periodisch ausführen, wobei jede Ausführung des Hintergrundprozesses für a ausgeführt wird andere Zeitspanne. In solchen Beispielen kann jede periodische Ausführung des Hintergrundprozesses Anweisungen 122 enthalten, die eine Datenmenge bestimmen, die in einem gegebenen Zeitraum zu und von dem jeweiligen SCM-Cache übertragen wird, und Anweisungen 124, die mindestens einen Warteschlangentiefenschwellenwert für den jeweiligen SCM-Cache einstellen Antwort auf eine Bestimmung, dass basierend auf der bestimmten Datenmenge ein Datenratenschwellenwert für den SCM-Lesecache überschritten wird (wie oben beschrieben).
  • In dem Beispiel von FIG. In 5 können die Anweisungen 524 für jeden der mehreren SCM-Caches den E / A-Prozess (wie oben beschrieben) unter Verwendung der jeweiligen Daten 152, 552, 652 für die jeweiligen SCM-Caches ausführen, einschließlich eines oder mehrerer jeweiliger Warteschlangentiefenschwellenwerte für die jeweiligen SCM-Caches (z. B. Schwellenwerte 137 und 139 für den SCM-Lesecache 150, Schwellenwerte 537 und 539 für den SCM-Lesecache 550 und Schwellenwerte 637 und 639 für den SCM-Lesecache 650 usw.). Beispielsweise kann das Ausführen des E / A-Prozesses für jeden SCM-Cache Anweisungen 126 als Reaktion auf eine Auslagerungsanforderung für den jeweiligen SCM-Cache und eine Feststellung, dass eine Schreibwarteschlangentiefe des jeweiligen SCM-Cache größer als ein jeweiliger Schreibwarteschlangentiefenschwellenwert ist, umfassen Löschen Sie für den SCM-Cache die E / A-Anforderung, ohne die Daten in den SCM-Cache oder den Back-End-Speicher 160 zu schreiben. Das Durchführen des E / A-Prozesses kann ferner Anweisungen 126 umfassen, die als Reaktion auf eine Leseanforderung für den jeweiligen SCM-Cache und eine Feststellung, dass eine Lesewarteschlangentiefe des jeweiligen SCM-Cache größer als ein jeweiliger Lesewarteschlangentiefenschwellenwert für den SCM-Cache ist, das umgehen jeweiliger SCM-Cache und Lesen der angeforderten Daten aus einem anderen Speicher (z. B. dem Backend-Speicher 160) in den Haupt-Cache 140 (z. B. vorbehaltlich weiterer Bestimmungen in einigen Beispielen, wie an anderer Stelle hierin beschrieben).
  • In den hier beschriebenen Beispielen kann die Rechenvorrichtung 500 einen geeigneten der SCM-Lesecaches für jede gegebene E / A-Anforderung bestimmen (z. B. über einen deterministischen Prozess basierend auf einer Adresse usw.).
  • In den hier beschriebenen Beispielen ist der Ausdruck „basierend auf“ nicht exklusiv und sollte nicht als „basierend auf“ gelesen werden. Vielmehr ist der Ausdruck „basierend auf“, wie er hier verwendet wird, einschließend und bedeutet dasselbe wie die alternative Formulierung „basierend mindestens auf“ oder „basierend mindestens teilweise auf“. Als solches kann jede Bestimmung, Entscheidung, Vergleich oder dergleichen, die hier als „basierend“ auf einer bestimmten Bedingung, Daten oder dergleichen beschrieben wird, so verstanden werden, dass die Entscheidung, der Vergleich oder dergleichen zumindest darauf basiert auf (oder zumindest teilweise darauf basierend) dieser Bedingung, Daten oder dergleichen und kann auch auf anderen Bedingungen, Daten oder dergleichen basieren. In den hier beschriebenen Beispielen können Funktionalitäten, die als von „Befehlen“ ausgeführt beschrieben werden, als Funktionalitäten verstanden werden, die von diesen Befehlen ausgeführt werden können, wenn sie von einer Verarbeitungsressource ausgeführt werden. In anderen Beispielen können in Bezug auf Anweisungen beschriebene Funktionalitäten von einer oder mehreren Maschinen implementiert werden, wobei es sich um eine beliebige Kombination aus Hardware und Programmierung handeln kann, um die Funktionalitäten der Maschine (n) zu implementieren.
  • Wie hierin verwendet, kann ein „Computergerät“ ein Server, ein Speichergerät, ein Speicherarray, ein Desktop- oder Laptop-Computer, ein Switch, ein Router oder ein anderes Verarbeitungsgerät oder -gerät sein, das eine Verarbeitungsressource enthält. In den hier beschriebenen Beispielen kann eine Verarbeitungsressource beispielsweise einen Prozessor oder mehrere Prozessoren enthalten, die in einem einzelnen Computergerät enthalten sind oder auf mehrere Computergeräte verteilt sind. Wie hier verwendet, kann ein „Prozessor“ mindestens eine aus einer Zentraleinheit (CPU), einem halbleiterbasierten Mikroprozessor, einer Grafikverarbeitungseinheit (GPU) und einem feldprogrammierbaren Gate-Array (FPGA) sein, die zum Abrufen und Ausführen konfiguriert sind Anweisungen, andere elektronische Schaltungen, die zum Abrufen und Ausführen von Anweisungen geeignet sind, die auf einem maschinenlesbaren Speichermedium gespeichert sind, oder eine Kombination davon. In den hier beschriebenen Beispielen kann eine Verarbeitungsressource auf einem Speichermedium gespeicherte Anweisungen abrufen, dekodieren und ausführen, um die in Bezug auf die auf dem Speichermedium gespeicherten Anweisungen beschriebenen Funktionen auszuführen. In anderen Beispielen können die in Bezug auf hierin beschriebene Anweisungen beschriebenen Funktionen in Form einer elektronischen Schaltung, in Form ausführbarer Anweisungen, die auf einem maschinenlesbaren Speichermedium codiert sind, oder einer Kombination davon implementiert werden. Das Speichermedium kann sich entweder in der Rechenvorrichtung befinden, die die maschinenlesbaren Anweisungen ausführt, oder zur Ausführung von der Rechenvorrichtung entfernt, aber für diese zugänglich sein (z. B. über ein Computernetzwerk). In den in den Fign. Wie in 1 und 5 gezeigt, kann das Speichermedium 120 durch ein maschinenlesbares Speichermedium oder mehrere maschinenlesbare Speichermedien implementiert sein.
  • In den hier beschriebenen Beispielen kann ein Speicherarray ein Computergerät sein, das mehrere Speichergeräte und einen oder mehrere Controller umfasst, um mit Hostgeräten zu interagieren und den Zugriff auf die Speichergeräte zu steuern. In einigen Beispielen können die Speichervorrichtungen HDDs, SSDs oder irgendeine andere geeignete Art von Speichervorrichtung oder irgendeine Kombination davon umfassen. In einigen Beispielen können die Controller die von den Speichergeräten bereitgestellte Speicherkapazität virtualisieren, um einem Host den Zugriff auf ein virtuelles Objekt (z. B. ein Volume) zu ermöglichen, das aus Speicherplatz von mehreren verschiedenen Speichergeräten besteht.
  • In anderen Beispielen können die Funktionalitäten, die oben in Bezug auf die hierin beschriebenen Anweisungen beschrieben wurden, von einer oder mehreren Maschinen implementiert werden, die irgendeine Kombination aus Hardware und Programmierung sein können, um die Funktionalitäten der Maschine (n) zu implementieren. In den hier beschriebenen Beispielen können solche Kombinationen von Hardware und Programmierung auf verschiedene Arten implementiert werden. Beispielsweise kann die Programmierung für die Maschinen von einem Prozessor ausführbare Anweisungen sein, die auf mindestens einem nichtflüchtigen maschinenlesbaren Speichermedium gespeichert sind, und die Hardware für die Maschinen kann mindestens eine Verarbeitungsressource zum Ausführen dieser Anweisungen enthalten. In einigen Beispielen kann die Hardware auch andere elektronische Schaltungen enthalten, um mindestens einen der Motoren zumindest teilweise zu implementieren. In einigen Beispielen kann das mindestens eine maschinenlesbare Speichermedium Anweisungen speichern, die, wenn sie von der mindestens einen Verarbeitungsressource ausgeführt werden, einen Teil oder die gesamte (n) Maschine (n) zumindest teilweise implementieren. In solchen Beispielen kann eine Computervorrichtung das mindestens eine maschinenlesbare Speichermedium, das die Anweisungen speichert, und die mindestens eine Verarbeitungsressource zum Ausführen der Anweisungen enthalten. In anderen Beispielen kann der Motor durch elektronische Schaltungen implementiert werden.
  • Wie hierin verwendet, kann ein „maschinenlesbares Speichermedium“ ein beliebiges elektronisches, magnetisches, optisches oder anderes physikalisches Speichergerät sein, um Informationen wie ausführbare Anweisungen, Daten und dergleichen zu enthalten oder zu speichern. Zum Beispiel kann jedes maschinenlesbare Speichermedium, das hier beschrieben wird, ein RAM, ein EEPROM, ein flüchtiger Speicher, ein nichtflüchtiger Speicher, ein Flash-Speicher, ein Speicherlaufwerk (z. B. eine Festplatte, eine SSD) oder ein beliebiger Typ einer Speicherplatte (z , eine CD, eine DVD usw.) oder dergleichen oder eine Kombination davon. Ferner kann jedes hierin beschriebene maschinenlesbare Speichermedium nichtflüchtig sein. In den hier beschriebenen Beispielen kann ein maschinenlesbares Speichermedium oder -medium Teil eines Artikels (oder Herstellungsartikels) sein. Ein Artikel oder ein Herstellungsartikel kann sich auf jede hergestellte Einzelkomponente oder mehrere Komponenten beziehen. In einigen Beispielen können Anweisungen Teil eines Installationspakets sein, das bei der Installation von einer Verarbeitungsressource ausgeführt werden kann, um die hier beschriebenen Funktionen zu implementieren. Alle in dieser Beschreibung offenbarten Merkmale (einschließlich etwaiger beiliegender Ansprüche, Zusammenfassungen und Zeichnungen) und / oder alle Elemente irgendeines auf diese Weise offenbarten Verfahrens oder Prozesses können in irgendeiner Kombination kombiniert werden, mit Ausnahme von Kombinationen, bei denen zumindest einige solcher Merkmale vorliegen und / oder Elemente schließen sich gegenseitig aus. Zum Beispiel können Funktionalitäten, die hierin in Bezug auf eine der 1 - 1 bis 5 können in Kombination mit Funktionalitäten bereitgestellt werden, die hierin in Bezug auf irgendeine andere der 1 bis 5 beschrieben sind. 1-5.

Claims (21)

  1. Beansprucht wird:
  2. Verfahren eines Speichersystems, umfassend: Bestimmen mit mindestens einer Verarbeitungsressource des Speichersystems einer Gesamtmenge von Daten, die in einem vorgegebenen Zeitraum aus einem Speicherklassenspeicher (SCM) gelesen und in diesen geschrieben wurden, wobei das Speichersystem einen Hauptcache, den SCM-Lesecache, umfasst und Backend-Speicher; Anpassen von mindestens einem Warteschlangentiefenschwellenwert für den SCM-Lesecache als Reaktion auf eine Bestimmung, dass ein Datenratenschwellenwert für den SCM-Lesecache überschritten ist, basierend auf der bestimmten Datenmenge; in Reaktion auf eine Eingabe / Ausgabe (IO) -Anforderung für den SCM-Lesecache Vergleichen einer Warteschlangentiefe für den SCM-Lesecache mit einem der mindestens einen Warteschlangentiefenschwellenwerte für den SCM-Lesecache; Auswählen zwischen der Verarbeitung der E / A-Anforderung unter Verwendung des SCM-Lesecaches, dem Löschen der E / A-Anforderung und der Verarbeitung der E / A-Anforderung ohne Verwendung des SCM-Lesecaches basierend auf einem Typ der E / A-Anforderung und einem Ergebnis des Vergleichs; und Ausführen der ausgewählten Verarbeitung oder Fallenlassen als Reaktion auf die Auswahl.
  3. Verfahren nach Anspruch 1, wobei: Das Auswählen umfasst das Auswählen, um die E / A-Anforderung zu verwerfen, basierend auf einer Feststellung, dass die E / A-Anforderung eine Anforderung zum Verschieben von Daten in den SCM-Lesecache ist, und dem Ergebnis des Vergleichs, das angibt, dass eine aktuelle Anzahl von ausstehenden Schreib-E / A für den SCM-Lesecache aussteht größer als ein Schreibwarteschlangentiefenschwellenwert des mindestens einen Warteschlangentiefenschwellenwerts für den SCM-Lesecache, wobei die Warteschlangentiefe eine Schreibwarteschlangentiefe ist; und Das Durchführen umfasst das Löschen der E / A-Anforderung, ohne dass die Daten in Reaktion auf die Auswahl in den SCM-Lesecache oder den Back-End-Speicher geschrieben werden.
  4. Verfahren nach Anspruch 1, wobei: Das Auswählen umfasst das Auswählen zum Verarbeiten der E / A-Anforderung ohne Verwendung des SCM-Lesecaches basierend auf einer Feststellung, dass die E / A-Anforderung eine Leseanforderung für angeforderte Daten ist, und dem Ergebnis des Vergleichs, das angibt, dass eine aktuelle Anzahl von ausstehenden Lese-E / A für das SCM-Lesen aussteht der Cache ist größer als ein Schwellenwert für die Lesewarteschlangentiefe des mindestens einen Schwellenwerts für die Warteschlangentiefe für den SCM-Lesecache, wobei die Warteschlangentiefe eine Lesewarteschlangentiefe ist; und Das Durchführen umfasst das Umgehen des SCM-Lesecaches und das Lesen der angeforderten Daten aus dem Back-End-Speicher des Speichersystems und / oder einem entfernten Computergerät in den Haupt-Cache des Speichersystems.
  5. Verfahren nach Anspruch 1, wobei: Das Auswählen umfasst das Auswählen zum Verarbeiten der E / A-Anforderung unter Verwendung des SCM-Lesecaches auf der Grundlage von entweder: (i) Feststellung, dass die E / A-Anforderung eine Anforderung zum Auslagern von Daten in den SCM-Lesecache ist, und Ergebnis des Vergleichs, der angibt, dass eine aktuelle Anzahl von ausstehenden Schreib-E / A-Vorgängen für den SCM-Lesecache nicht größer als ein Schwellenwert für die Tiefe der Schreibwarteschlange von ist die mindestens eine Warteschlangentiefenschwelle für den SCM-Lesecache; oder (ii) eine Feststellung, dass die E / A-Anforderung eine Leseanforderung zum Lesen angeforderter Daten aus dem SCM-Lesecache ist, und das Ergebnis des Vergleichs angibt, dass eine aktuelle Anzahl von ausstehenden Lese-E / A für den SCM-Lesecache nicht größer als eine Lesewarteschlangentiefe ist Schwelle der mindestens einen Warteschlangentiefenschwelle für den SCM-Lesecache; und Die Aufführung umfasst, basierend auf der Auswahl, entweder: Auslagern der Daten in den SCM-Lesecache; oder Lese - Cache die angeforderten Daten aus der SMC zu lesen.
  6. Artikel, der mindestens ein nichtflüchtiges maschinenlesbares Speichermedium umfasst, das Anweisungen umfasst, die von mindestens einer Verarbeitungsressource eines Speichersystems ausführbar sind, um: Bestimmen einer Gesamtmenge von Daten, die in einem vorgegebenen Zeitraum aus dem Lese-Cache eines Speicherklassenspeichers (SCM) gelesen und in diesen geschrieben wurden; Anpassen eines Lese- und / oder eines Schreibwarteschlangentiefenschwellenwerts für den SCM-Lesecache als Reaktion auf eine Feststellung, dass ein Datenratenschwellenwert für den SCM-Lesecache überschritten ist, basierend auf der bestimmten Datenmenge; als Antwort auf eine Eingabe- / Ausgabeanforderung (IO) für den SCM-Lesecache: Wenn die Verarbeitung der E / A-Anforderung das Schreiben in den SCM-Lesecache umfasst und eine aktuelle Anzahl von ausstehenden Schreib-E / A-Vorgängen für den SCM-Lesecache größer als der Schwellenwert für die Tiefe der Schreibwarteschlange ist, löschen Sie die E / A-Anforderung. und Wenn die E / A-Anforderung eine Leseanforderung für angeforderte Daten ist und eine aktuelle Anzahl von ausstehenden Lese-E / A-Vorgängen für den SCM-Lesecache größer als der Schwellenwert für die Lesewarteschlangentiefe ist, umgehen Sie den SCM-Lesecache und lesen Sie die angeforderten Daten aus dem Back-End-Speicher des Speichersystems oder von einem entfernten Computergerät in den Hauptcache des Speichersystems.
  7. Artikel nach Anspruch 5, wobei die Anweisungen zum Umgehen des SCM-Lese-Cache und zum Lesen der angeforderten Daten aus dem Backend-Speicher in den Haupt-Cache ausführbar sind, um die angeforderten Daten aus dem Backend-Speicher in den Haupt-Cache zu lesen, ohne die angeforderten Daten aus dem zu lesen SCM-Lesecache.
  8. Gegenstand nach Anspruch 5, wobei: die Anweisungen zum Anpassen von mindestens einer der Lese- und Schreibwarteschlangentiefenschwellen umfassen Anweisungen, die von der mindestens einen Verarbeitungsressource ausführbar sind, um die Lesewarteschlangentiefenschwelle oder die Schreibwarteschlangentiefenschwelle als Reaktion auf eine Bestimmung anzupassen, dass die Datenratenschwelle z Der SCM-Lesecache wird aufgrund der ermittelten Datenmenge überschritten.
  9. Artikel nach Anspruch 7, wobei die Anweisungen von der mindestens einen Verarbeitungsressource ausgeführt werden können, um als Reaktion auf die E / A-Anforderung für den SCM-Lesecache: Bei der Verarbeitung der E / A-Anforderung wird in den SCM-Lesecache geschrieben: Vergleichen der aktuellen Anzahl ausstehender Schreib-E / A für den SCM-Lesecache mit dem Schwellenwert für die Tiefe der Schreibwarteschlange; und In Reaktion auf eine Feststellung, dass die aktuelle Anzahl der für den SCM-Lesecache ausstehenden Schreib-E / A-Vorgänge größer als der Schwellenwert für die Tiefe der Schreibwarteschlange ist, wird die E / A-Anforderung verworfen, und Wenn die E / A-Anforderung eine Leseanforderung für angeforderte Daten ist: Vergleichen der aktuellen Anzahl ausstehender Lese-E / A für den SCM-Lesecache mit dem Schwellenwert für die Lesewarteschlangentiefe; und In Reaktion auf eine Feststellung, dass die aktuelle Anzahl der ausstehenden Lese-E / A-Vorgänge für den SCM-Lesecache größer als der Schwellenwert für die Lesewarteschlangentiefe ist, umgehen Sie den SCM-Lesecache und lesen Sie die angeforderten Daten aus dem Back-End-Speicher in den Hauptcache.
  10. Artikel nach Anspruch 8, wobei die Anweisungen von der mindestens einen Verarbeitungsressource ausführbar sind, um: in Reaktion auf eine Feststellung auf der Grundlage der ermittelten Datenmenge, dass der Datenratenschwellenwert für den SCM-Lesecache überschritten ist, eine der folgenden Aktionen ausführen: Wenn der Schwellenwert für die Tiefe der Schreibwarteschlange über einem ersten Mindestwert liegt, verringern Sie den Schwellenwert für die Tiefe der Schreibwarteschlange. Wenn der Schwellenwert für die Tiefe der Schreibwarteschlange den ersten Mindestwert hat und der Schwellenwert für die Tiefe der Lesewarteschlange über einem zweiten Mindestwert liegt, verringern Sie den Schwellenwert für die Tiefe der Lesewarteschlange. und Wenn der Schwellenwert für die Tiefe der Schreibwarteschlange den ersten Mindestwert und der Schwellenwert für die Tiefe der Lesewarteschlange den zweiten Mindestwert hat, verringern Sie weder den Schwellenwert für die Tiefe der Schreibwarteschlange noch den Schwellenwert für die Tiefe der Lesewarteschlange.
  11. Artikel nach Anspruch 8, wobei die Anweisungen von der mindestens einen Verarbeitungsressource ausführbar sind, um: Führen Sie in Reaktion auf eine Bestimmung auf der Grundlage der bestimmten Datenmenge, dass der Datenratenschwellenwert für den SCM-Lesecache nicht überschritten wurde, eine der folgenden Aktionen aus: Wenn der Schwellenwert für die Tiefe der Lesewarteschlange unter einem ersten Maximalwert liegt, erhöhen Sie den Schwellenwert für die Tiefe der Lesewarteschlange. Wenn der Schwellenwert für die Tiefe der Lesewarteschlange den ersten Maximalwert hat und der Schwellenwert für die Tiefe der Schreibwarteschlange unter einem zweiten Maximalwert liegt, erhöhen Sie den Schwellenwert für die Tiefe der Schreibwarteschlange. und Wenn der Schwellenwert für die Tiefe der Lesewarteschlange den ersten Maximalwert und der Schwellenwert für die Tiefe der Schreibwarteschlange den zweiten Maximalwert hat, erhöhen Sie weder den Schwellenwert für die Tiefe der Lesewarteschlange noch den Schwellenwert für die Tiefe der Schreibwarteschlange.
  12. Gegenstand nach Anspruch 5, wobei: Die E / A-Anforderung ist eine Leseanforderung oder eine Auslagerungsanforderung, wobei die Auslagerungsanforderung eine Anforderung zum Auslagern sauberer Daten aus dem Hauptcache in den SCM-Lesecache ist. und wobei die für den SCM-Lesecache ausstehenden Schreib-E / A-Vorgänge jeweils Zielanforderungen implementieren.
  13. Artikel nach Anspruch 11, wobei die Anweisungen von der mindestens einen Verarbeitungsressource ausführbar sind, um: in Reaktion auf eine Bestimmung, Daten aus dem Hauptcache in den SCM-Lesecache zu verschieben, eine der folgenden Möglichkeiten: die Daten aus dem Hauptcache in den SCM-Lesecache zu verschieben, wenn die aktuelle Anzahl von ausstehenden Schreib-E / A-Vorgängen für den SCM-Lesecache nicht größer als ein Schwellenwert für die Schreibwarteschlangentiefe des mindestens einen Schwellenwerts für die Warteschlangentiefe für den SCM-Lesecache ist; und Überspringen Sie das Auslagern der Daten aus dem Hauptcache in den SCM-Lesecache, wenn die aktuelle Anzahl der ausstehenden Schreib-E / A-Vorgänge für den SCM-Lesecache den Schwellenwert für die Tiefe der Schreibwarteschlange überschreitet.
  14. Artikel nach Anspruch 5, wobei die Anweisungen von der mindestens einen Verarbeitungsressource für jede von mehreren aufeinanderfolgenden Zeitperioden, einschließlich der gegebenen Zeitperiode, ausführbar sind: Sammeln Sie die Gesamtmenge der Daten, die während des Zeitraums aus dem SCM-Lesecache gelesen und in diesen geschrieben wurden. Bestimmen Sie nach Ablauf der Zeitspanne, ob die Datenratenschwelle für den SCM-Lesecache in der Zeitspanne überschritten wurde, basierend auf der akkumulierten Gesamtdatenmenge für die Zeitspanne. Anpassen von mindestens einem der Schwellenwerte für die Lese- und Schreibwarteschlangentiefe für den SCM-Lesecache als Reaktion auf die Feststellung, dass ein Datenratenschwellenwert für den SCM-Lesecache in der Zeitspanne überschritten wurde; und Setzen Sie die Gesamtdatenmenge in Vorbereitung auf den nächsten Zeitraum auf Null zurück.
  15. Artikel nach Anspruch 5, wobei die Anweisungen von der mindestens einen Verarbeitungsressource ausführbar sind, um: als Antwort auf die E / A-Anforderung: und eine Feststellung, dass die aktuelle Anzahl der ausstehenden E / A-Vorgänge für den SCM-Lesecache nicht größer ist als einer der mindestens einen Schwellenwerte für die Warteschlangentiefe für den SCM-Lesecache: Wenn die Verarbeitung der E / A-Anforderung das Schreiben in den SCM-Lesecache umfasst und die aktuelle Anzahl der ausstehenden Schreib-E / A-Vorgänge für den SCM-Lesecache nicht größer als der Schwellenwert für die Tiefe der Schreibwarteschlange ist, schreiben Sie die mit der E / A-Anforderung verbundenen Daten in den SCM-Lesecache. und Wenn die E / A-Anforderung die Leseanforderung ist und die aktuelle Anzahl der ausstehenden Lese-E / A für den SCM-Lesecache nicht größer als der Schwellenwert für die Lesewarteschlangentiefe ist, lesen Sie die angeforderten Daten aus dem SCM-Lesecache.
  16. Artikel nach Anspruch 5, wobei die E / A-Anforderung die Leseanforderung ist und die Anweisungen von der mindestens einen Verarbeitungsressource ausgeführt werden können, um: als Antwort auf die Leseanforderung für den SCM-Lesecache und eine Feststellung, dass eine aktuelle Anzahl von ausstehenden Lese-E / A-Vorgängen für den SCM-Lesecache größer als der Schwellenwert für die Lesewarteschlangentiefe ist: Bestimmen, ob (i) der SCM-Lesecache umgangen und die angeforderten Daten aus dem Back-End-Speicher in den Hauptcache gelesen werden sollen oder (ii) die angeforderten Daten aus dem SCM-Lesecache in den Hauptcache gelesen werden sollen, unabhängig davon, ob der Schwellenwert für die Lesewarteschlangentiefe überschritten wird , basierend zumindest teilweise auf einem Maß für die Auslastung von mindestens einer Speichervorrichtung des Back-End-Speichers und Orten von jeder der mindestens einen Speichervorrichtung.
  17. 10.Speichersystem, Folgendes umfassend: mindestens eine Verarbeitungsressource; ein Hauptcache; einen Speicherklassenspeicher (SCM) -Lesecache; Backend-Speicher; und mindestens ein nichtflüchtiges maschinenlesbares Speichermedium mit Anweisungen, die von der mindestens einen Verarbeitungsressource ausgeführt werden können, um: Führen Sie einen Hintergrundprozess durch, der Folgendes umfasst: Bestimmen einer Datenmenge, die in einem gegebenen Zeitraum zum und vom SCM-Lesecache übertragen wurde; und Anpassen eines Lese- und / oder eines Schreibwarteschlangentiefenschwellenwerts für den SCM-Lesecache als Reaktion auf eine Bestimmung, dass basierend auf der bestimmten Datenmenge ein Datenratenschwellenwert für den SCM-Lesecache überschritten wird; und einen Eingabe / Ausgabe (IO) -Prozess ausführen, der Folgendes umfasst: als Antwort auf eine E / A-Anforderung für den SCM-Lesecache: Wenn die E / A-Anforderung eine Anforderung zum Auslagern von Daten in den SCM-Lesecache ist und eine Schreibwarteschlangentiefe des SCM-Lesecaches größer als der Schwellenwert für die Schreibwarteschlangentiefe ist, löschen Sie die E / A-Anforderung, ohne die Daten in den SCM-Lesecache zu schreiben. und Wenn die E / A-Anforderung eine Leseanforderung für angeforderte Daten ist und eine Lesewarteschlangentiefe des SCM-Lesecaches größer als der Schwellenwert für die Lesewarteschlangentiefe ist, umgehen Sie den SCM-Lesecache und lesen Sie die angeforderten Daten aus dem Back-End-Speicher oder von einem Remote-Computergerät in den Hauptcache.
  18. 11.Speichersystem nach Anspruch 16, das ferner Folgendes umfasst: eine Vielzahl von SCM-Caches, einschließlich des SCM-Lesecaches; wobei die Anweisungen von der mindestens einen Verarbeitungsressource ausführbar sind, um: Ausführen des Hintergrundprozesses unabhängig für jeden der mehreren SCM-Caches, wobei der Hintergrundprozess mindestens einen Warteschlangentiefenschwellenwert unabhängig für jeden der SCM-Caches aufrechterhalten soll; und Führen Sie für jeden der mehreren SCM-Caches den E / A-Prozess unter Verwendung der jeweiligen mindestens einen Warteschlangentiefenschwelle für den SCM-Cache durch.
  19. Speichersystem nach Anspruch 17, wobei die Anweisungen zum Ausführen des Hintergrundprozesses Anweisungen umfassen, die von der mindestens einen Verarbeitungsressource ausgeführt werden können, um: für jeden der mehreren SCM-Caches: Führen Sie den Hintergrundprozess für den SCM-Cache periodisch durch, wobei jede Leistung des Hintergrundprozesses für einen anderen Zeitraum durchgeführt wird.
  20. 11.Speichersystem nach Anspruch 16, das ferner Folgendes umfasst: Der SCM-Lesecache umfasst einen Lesecache, der von einem SCM-Gerät mit einer geringeren Latenz als ein seriell angeschlossenes SCSI-Solid-State-Laufwerk (SSD) implementiert wird, wobei die NAND-SSD eine Art nichtflüchtiger Speicher (NVM) ist Das SCM-Gerät muss mit anderen Komponenten des Speichersystems unter Verwendung eines mit NVM Express ™ (NVMe ™) konsistenten Protokolls kommunizieren.
  21. 11.Speichersystem nach Anspruch 19, das ferner Folgendes umfasst: Der Haupt-Cache besteht aus einem flüchtigen Speicher, und Der Backend-Speicher umfasst eine oder mehrere nichtflüchtige Speichereinheiten, wobei die nichtflüchtigen Speichereinheiten Festplattenlaufwerke (HDDs) und / oder Solid-State-Laufwerke (SSDs) oder eine Kombination von Festplatten und SSDs umfassen.
DE102019130450.4A 2018-11-30 2019-11-12 Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange Active DE102019130450B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/205,742 2018-11-30
US16/205,742 US10776276B2 (en) 2018-11-30 2018-11-30 Bypass storage class memory read cache based on a queue depth threshold

Publications (2)

Publication Number Publication Date
DE102019130450A1 true DE102019130450A1 (de) 2020-06-04
DE102019130450B4 DE102019130450B4 (de) 2023-08-03

Family

ID=70681409

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019130450.4A Active DE102019130450B4 (de) 2018-11-30 2019-11-12 Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange

Country Status (3)

Country Link
US (1) US10776276B2 (de)
CN (1) CN111258497B (de)
DE (1) DE102019130450B4 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11030107B2 (en) 2019-04-19 2021-06-08 Hewlett Packard Enterprise Development Lp Storage class memory queue depth threshold adjustment
US11226904B2 (en) 2019-04-26 2022-01-18 Hewlett Packard Enterprise Development Lp Cache data location system
US11010095B2 (en) * 2019-07-25 2021-05-18 Western Digital Technologies, Inc. Dynamic and adaptive data read request scheduling
US11372585B2 (en) * 2020-05-05 2022-06-28 Micron Technology, Inc. Asynchronous process topology in a memory device
US11461299B2 (en) 2020-06-30 2022-10-04 Hewlett Packard Enterprise Development Lp Key-value index with node buffers
US11556513B2 (en) 2020-06-30 2023-01-17 Hewlett Packard Enterprise Development Lp Generating snapshots of a key-value index
CN111858419B (zh) * 2020-06-30 2022-03-22 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法、装置及设备
US20220043588A1 (en) * 2020-08-06 2022-02-10 Micron Technology, Inc. Localized memory traffic control for high-speed memory devices
US11461240B2 (en) 2020-10-01 2022-10-04 Hewlett Packard Enterprise Development Lp Metadata cache for storing manifest portion
US11593328B2 (en) 2020-10-07 2023-02-28 Hewlett Packard Enterprise Development Lp Update of deduplication fingerprint index in a cache memory
CN112540933A (zh) * 2020-11-26 2021-03-23 华云数据控股集团有限公司 缓存读写方法、装置及电子设备
CN115079933B (zh) * 2021-03-12 2024-05-24 戴尔产品有限公司 基于数据关系的快速缓存系统
US11782851B2 (en) * 2021-09-01 2023-10-10 Micron Technology, Inc. Dynamic queue depth adjustment
US11687258B2 (en) 2021-09-08 2023-06-27 Hewlett Packard Enterprise Development Lp Operational feature activation/disabling

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040022094A1 (en) 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US20040136712A1 (en) * 2003-01-13 2004-07-15 Globespan Virata Incorporated Integrated PON processor
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US20060179240A1 (en) 2005-02-09 2006-08-10 International Business Machines Corporation System and method for algorithmic cache-bypass
US7739470B1 (en) * 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US8255562B2 (en) 2008-06-30 2012-08-28 International Business Machines Corporation Adaptive data throttling for storage controllers
US8250197B2 (en) 2008-10-28 2012-08-21 Vmware, Inc. Quality of service management
US9213628B2 (en) 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache
KR101702392B1 (ko) 2010-08-20 2017-02-06 삼성전자주식회사 반도체 저장 장치 및 상기 반도체 저장 장치의 성능 조절 방법
US8386708B2 (en) * 2010-09-21 2013-02-26 Lsi Corporation Method for coupling sub-LUN load measuring metadata size to storage tier utilization in dynamic storage tiering
US8832530B2 (en) * 2012-09-26 2014-09-09 Intel Corporation Techniques associated with a read and write window budget for a two level memory system
WO2014197974A1 (en) * 2013-06-13 2014-12-18 Tsx Inc Low latency device interconnect using remote memory access with segmented queues
US9507733B2 (en) * 2013-06-21 2016-11-29 Microsoft Technology Licensing, Llc Cache destaging for virtual storage devices
US9274713B2 (en) * 2014-04-03 2016-03-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Device driver, method and computer-readable medium for dynamically configuring a storage controller based on RAID type, data alignment with a characteristic of storage elements and queue depth in a cache
US9489173B2 (en) 2014-06-04 2016-11-08 Advanced Micro Devices, Inc. Resizable and relocatable queue
US9489141B2 (en) 2014-12-18 2016-11-08 Nimble Storage, Inc. Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device
US9569118B2 (en) 2014-12-30 2017-02-14 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US10191879B2 (en) 2015-03-31 2019-01-29 Veritas Technologies Llc System and method for creating snapshots in openflame environment
US9779026B2 (en) 2016-01-14 2017-10-03 Seagate Technology Llc Cache bypass utilizing a binary tree
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US11003582B2 (en) * 2018-09-27 2021-05-11 Intel Corporation Cache utilization of backing storage for aggregate bandwidth

Also Published As

Publication number Publication date
DE102019130450B4 (de) 2023-08-03
CN111258497B (zh) 2022-03-08
US20200174938A1 (en) 2020-06-04
US10776276B2 (en) 2020-09-15
CN111258497A (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
DE102019130450B4 (de) Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange
DE102020103817B4 (de) Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers
DE60313783T2 (de) Bewegen von daten zwischen speichereinheiten
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112010003788B4 (de) Datenspeicherung
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE60223394T2 (de) Verfahren und vorrichtung zum einteilen von anforderungen für einen dynamischen direktzugriffsspeicherbaustein
DE10062063B4 (de) Verfahren, System, Computerprogramm-Produkt und Speichervorrichtung zur Steuerung einer Warteschlange von Anforderungen unterschiedlicher Priorität
DE112009000431T5 (de) Vorrichtung und Verfahren zur Nutzung eines aus mehreren Ebenen bestehenden Cache
DE112017004577T5 (de) Mechanismus für disaggregierten speicher der datenspeicherklasse über fabric
DE102012212183B4 (de) Verfahren und Speichercontroller zur Bestimmung einer Zugriffscharakteristik einer Datenentität
DE112005001050T5 (de) Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene
DE112008003256T5 (de) Verteilung und Speichervolumen auf Laufwerksbereiche mit intelligenter Dateiablage und/oder -umordnung
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE10348326A1 (de) Permanentspeichervorrichtung, die an eine Kommunikationsverbindung angeschlossen ist
DE102017120787A1 (de) Verfahren und Vorrichtung zum Entladen von Datenverarbeitung in Hybrid-Speichervorrichtungen
DE112012004540T5 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE102021115763A1 (de) Identifizierung und klassifizierung der schreibstrompriorität
DE102013210719B4 (de) Verfahren und Systeme zum Verwalten von Cache-Speichern
DE112012004796B4 (de) Periodische Auslagerungen von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE112011102076T5 (de) Neuordnen des Zugriffs zum Verringern der Gesamtsuchzeit auf Bandmedien
DE102015013125A1 (de) Vorrichtung, Systeme und Verfahren zur Bereitstellung eines speichereffizienten Caches
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE112010003794T5 (de) Datenspeicherung unter Verwendung von Bitmaps

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R018 Grant decision by examination section/examining division
R020 Patent grant now final