DE102020103817B4 - Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers - Google Patents

Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers Download PDF

Info

Publication number
DE102020103817B4
DE102020103817B4 DE102020103817.8A DE102020103817A DE102020103817B4 DE 102020103817 B4 DE102020103817 B4 DE 102020103817B4 DE 102020103817 A DE102020103817 A DE 102020103817A DE 102020103817 B4 DE102020103817 B4 DE 102020103817B4
Authority
DE
Germany
Prior art keywords
scm
controller
request
read
data
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.)
Active
Application number
DE102020103817.8A
Other languages
English (en)
Other versions
DE102020103817A1 (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 DE102020103817A1 publication Critical patent/DE102020103817A1/de
Application granted granted Critical
Publication of DE102020103817B4 publication Critical patent/DE102020103817B4/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • 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/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • 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/312In storage controller
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Verfahren eines Speichersystems (101), umfassend:Bestimmen (305) einer repräsentativen Eingabe/Ausgabe (10) -Anforderungslatenz zwischen einem ersten Controller (102) und einem Speicherklassenspeicher (SCM)-Lesecache (150) mit dem ersten Controller (102) des Speichersystems (101) während eines bestimmten Zeitraums, in dem der erste Controller (102) und ein zweiter Controller (104) des Speichersystems (101) E/A-Anforderungen an den SCM-Lesecache (150) senden, wobei der erste (102) und der zweite (104) Controller jeweils einen jeweiligen Hauptcache (142, 192) umfassen und das Speichersystem (101) einen Backend-Speicher (160) umfasst;Bestimmen einer ersten Gesamtmenge von Daten, die von dem ersten Controller (102) während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wurden; undBestimmen, mit dem ersten Controller (102), einer geschätzten kumulativen Datenmenge, die vom ersten (102) und zweiten (104) Controller während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wird, basierend auf der ermittelten repräsentativen E/A-Anforderungslatenz für den gegebenen Zeitraum und Leistungsdaten für den SCM-Lesecache (150);Bestimmen eines Anpassungsbetrags für den Schwellenwert für mindestens eine SCM-Warteschlangentiefe des ersten Controllers(102) basierend auf der ersten Gesamtdatenmenge und der geschätzten kumulierten Datenmenge;Anpassen (310) mindestens eines SCM-Warteschlangentiefenschwellenwerts des ersten Controllers(102) um den Anpassungsbetrag als Reaktion auf eine Feststellung, dass die ermittelte repräsentative E/A-Anforderungslatenz einen E/A-Anforderungslatenzschwellenwert für den SCM-Lesecache (150) überschreitet;als Antwort auf eine E/A-Anforderung des ersten Controllers(102) für den SCM-Lesecache (150), Vergleichen (315) einer SCM-Warteschlangentiefe des ersten Controllers(102) mit einem der mindestens einen SCM-Warteschlangentiefenschwellenwerte des ersten Controllers(102);Wählen (320) zwischen der Verarbeitung der E/A-Anforderung unter Verwendung des SCM-Lesecaches (150), dem Löschen der E/A-Anforderung und der Verarbeitung der E/A-Anforderung ohne Verwendung des SCM-Lesecaches (150) basierend auf einem Typ der E/A-Anforderung und einem Ergebnis des Vergleichs; undDurchführen (325) der ausgewählten Verarbeitung oder Löschen als Reaktion auf die Auswahl.

Description

  • STAND DER TECHNIK
  • In Computergerä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). Während ein solcher Cache-Speicher eine viel geringere Latenz aufweisen kann, wird er häufig unter Verwendung flüchtiger Speichervorrichtungen implementiert, die bei Stromausfall keine darin gespeicherten Daten speichern und im Allgemeinen höhere Kosten (pro Kapazitätseinheit) im Vergleich zu anderen haben Arten von Speicher (z. B. nichtflüchtiger Speicher wie Festplatten, SSDs oder dergleichen).
  • US 7,739,470 B1 offenbart Techniken zum Steuern der Leistung eines Datenspeichersystems. Ein Leistungsziel, das eine Grenze für eine E/A-Klasse angibt, wird empfangen. Es wird eine Anzahl von gleichzeitig zu verarbeitenden Anforderungen der E/A-Klasse bestimmt, um das Leistungsziel zu erreichen, so dass ein beobachteter Leistungswert für die E/A-Klasse das Leistungsziel nicht überschreitet. Wenn die Grenze eine Obergrenze ist, fällt der beobachtete Leistungswert in einen Bereich von einem oder mehreren Werten gleich oder kleiner als die Grenze, und wenn die Grenze ein Mindestwert ist, fällt der beobachtete Leistungswert in einen Bereich von eins oder mehr Werte gleich oder größer als der Grenzwert.
  • US 2004/0136712 A1 offenbart Mechanismen zum Bereitstellen einer teilnehmerseitigen Schnittstelle mit einem passiven optischen Netzwerk. Ein optischer Netzwerkabschluss (ONT) mit einem integrierten passiven optischen Breitbandnetzwerkprozessor wird verwendet, um Downstream-Daten von einem optischen Leitungsabschluss (OLT) über ein passives optisches Netzwerk zu empfangen und die Inhalte der Downstream-Daten einem oder mehreren Teilnehmergeräten über eines bereitzustellen oder mehr Datenschnittstellen. In ähnlicher Weise ist das ONT angepasst, Upstream-Daten von dem einen oder den mehreren Teilnehmergeräten über das passive optische Netzwerk zu empfangen und an das OLT zu senden. Zusätzlich kann das ONT einen Burst-Puffer zum Puffern von Upstream- und/oder Downstream-Daten implementieren. Das ONT kann angepasst werden, um das OLT über den Status des Burst-Puffers zu benachrichtigen, wodurch es dem OLT ermöglicht wird, die Bandbreitenzuweisungen zu modifizieren. Zusätzlich kann das ONT einen oder mehrere Verschlüsselungs-/Entschlüsselungsmechanismen implementieren, wie z. B. den digitalen Verschlüsselungsstandard (DES), um Datenschutz zusätzlich zu oder anstelle von Datenveränderung bereitzustellen, die in den Empfehlungen von ITU G.983 vorgesehen ist.
  • US 2012/0072670 A1 offenbart eine Methode zur Metadatenverwaltung in einem Speichersystem, das für die Unterstützung von Sub-LUN-Tiering konfiguriert ist. Das Verfahren kann das Bereitstellen einer Metadatenwarteschlange einer bestimmten Größe, das Bestimmen, ob die Metadaten für eine bestimmte Sub-LUN in der Metadaten-Warteschlange zwischengespeichert sind, das Aktualisieren der Metadaten für die bestimmte Sub-LUN, wenn die Metadaten für die bestimmte Sub-LUN in der Metadaten-Warteschlange zwischengespeichert sind, das Einfügen der Metadaten für die bestimmte Sub-LUN in die Metadaten-Warteschlange, wenn die Metadaten-Warteschlange nicht voll ist und die Metadaten nicht zwischengespeichert sind, das Ersetzen eines Eintrags in der Metadaten-Warteschlange durch die Metadaten für die bestimmte Sub-LUN, wenn die Metadaten-Warteschlange voll ist und die Metadaten nicht zwischengespeichert sind und das Identifizieren mindestens einer Unter-LUN, auf die häufig zugegriffen wird, um sie zu einer Schicht mit höherer Leistung in dem Speichersystem zu verschieben, wobei die mindestens eine Unter-LUN, auf die häufig zugegriffen wird, basierend auf den in der Metadaten-Warteschlange zwischengespeicherten Metadaten identifiziert wird umfassen.
  • US 2015/0286438 A1 offenbart einen mit einem Host-Computer gekoppelter Speichercontroller der dynamisch durch einen Gerätetreiber, der in dem Host-Computer ausgeführt wird, konfiguriert wird. Der Speichercontroller verwaltet ein logisches Volumen für den Host mithilfe einer Reihe von Flash-basierten Speichergeräten, die als redundantes Array kostengünstiger Festplatten (RAID) angeordnet sind. Der Gerätetreiber identifiziert einen RAID-Typ für den logischen Datenträger und eine Warteschlangentiefe aus einem Strom von E/A-Befehlen. Für einen logischen Datenträger in RAID 0 vergleicht der Gerätetreiber die Warteschlangentiefe mit einem Schwellenwert und konfiguriert den Speichercontroller, um den Strom von E/A-Befehlen mit einem ersten Pfad oder einem alternativen Pfad basierend auf einem Ergebnis des Vergleichs zu verarbeiten. Für ein logisches Volumen in RAID 5 führt der Gerätetreiber einen ähnlichen Vergleich durch und verwendet das Ergebnis, um den Speichercontroller anzuweisen, einen Write-Back- oder einen Write-Through-Betriebsmodus zu verwenden.
  • US 2016/0188223 A1 offenbart ein Datenspeichersystem das eine Steuerung auf höherer Ebene, eine Steuerung auf niedrigerer Ebene und mehrere Speicherkomponenten, einschließlich einer bestimmten Speicherkomponente umfasst. Daten werden innerhalb des Datenspeichersystems unter Verwendung mindestens einer Striping-Ebene über die Vielzahl von Speicherkomponenten hinweg gespeichert. Latenzen von Input/Output-Operationen (IOPs), die Zugriff auf die im Datenspeichersystem gespeicherten Daten anfordern, werden überwacht. Als Reaktion auf die Bestimmung, dass eine Latenz eines Lese-IOP, der Lesedaten anfordert, die in der bestimmten Speicherkomponente gespeichert sind, einen Latenzschwellenwert übersteigt, und bei Fehlen eines Datenfehlers, wird der Lese-IOP bedient, indem die Lesedaten von Speicherkomponenten anders als die bestimmte Speicherkomponente aus der Vielzahl von Speichern rekonstruiert werden. Die Steuerung auf niedrigerer Ebene liefert auch eine Rückmeldung an die Steuerung auf höherer Ebene, um die Steuerung auf höherer Ebene zu veranlassen, lOPs zu reduzieren, die zumindest an die bestimmte Speicherkomponente gerichtet sind.
  • Erfindungsgemäß werden ein Verfahren nach Anspruch 1, ein Artikel nach Anspruch 8 bzw. ein Speichersystem nach Anspruch 15 bereitgestellt. Weiter bevorzugte Ausführungsform werden in Ansprüchen 2 bis 7, 9 bis 14 und 16 bis 20 beansprucht.
  • Figurenliste
  • Die folgende detaillierte Beschreibung bezieht sich auf die Zeichnungen, wobei:
    • 1 ist ein Blockdiagramm eines beispielhaften Computersystems zum Auswählen, ob ein SCM-Lesecache (Storage Class Memory) basierend auf einem SCM-Warteschlangentiefenschwellenwert verwendet werden soll;
    • 2A ist ein Diagramm von beispielhaften SCM-Geräteleistungsdaten und veranschaulicht einen beispielhaften E/A-Anforderungslatenzschwellenwert;
    • 2B ist eine Tabelle von beispielhaften SCM-Leistungsdaten, die dem Beispielgraphen von 1 entsprechen. 2A;
    • 2C ist ein Diagramm der beispielhaften SCM-Vorrichtungsleistungsdaten von 2. 2A und Darstellen einer bestimmten Latenz und einer geschätzten Datenmenge gemäß einem Beispiel;
    • 3 ist ein Flussdiagramm eines beispielhaften Verfahrens, das die Auswahl umfasst, ob ein SCM-Lesecache basierend auf einem Schwellenwert für die Tiefe der SCM-Warteschlange verwendet werden soll;
    • FIG. 4 ist ein Blockdiagramm von beispielhaften Betriebsdaten, die einem SCM-Lesecache zugeordnet sein können;
    • 5A ist ein Flussdiagramm eines beispielhaften Verfahrens, das das Anpassen eines Schwellenwerts für die SCM-Warteschlangentiefe basierend auf einer repräsentativen Eingangs-/Ausgangslatenz (E/A) und einem E/A-Anforderungslatenzschwellenwert umfasst;
    • 5B ist ein Flussdiagramm eines beispielhaften Verfahrens, das das selektive Verringern eines Schwellenwerts für die Tiefe der SCM-Schreibwarteschlange und eines Schwellenwerts für die Tiefe der SCM-Lesewarteschlange für eine Steuerung umfasst;
    • 5C ist ein Flussdiagramm eines beispielhaften Verfahrens, das das selektive Erhöhen eines Schwellenwerts für die Tiefe der SCM-Schreibwarteschlange und eines Schwellenwerts für die Tiefe der SCM-Lesewarteschlange für eine Steuerung umfasst; und
    • 6 ist ein Flussdiagramm eines Beispielverfahrens, das die Auswahl umfasst, ob eine E/A-Anforderung unter Verwendung eines SCM-Lesecaches verarbeitet werden soll.
  • DETAILLIERTE BESCHREIBUNG
  • Computergeräte wie Server, Speicherarrays und dergleichen können Cache-Speicher enthalten, der von flüchtigen Speichergeräten implementiert wird, die keine darin gespeicherten Daten speichern, wenn die Stromversorgung unterbrochen wird. Ein solcher Cache-Speicher, der von flüchtigen Speichervorrichtungen implementiert wird, kann hier als „flüchtiger Cache-Speicher“ oder als „Haupt-Cache“ einer Computervorrichtung bezeichnet werden. Ein solcher flüchtiger Cache-Speicher kann durch DRAM-Vorrichtungen (Dynamic Random Access Memory) implementiert werden, die beispielsweise in Form von Dual-Inline-Speichermodulen (DIMMs) bereitgestellt werden können. Solche Computervorrichtungen können auch andere Arten von Speichern umfassen, wie beispielsweise Speicher, die von nichtflüchtigen Speichervorrichtungen implementiert werden, die die darin gespeicherten Daten behalten können, selbst wenn sie Strom verlieren. Solche nichtflüchtigen Speichervorrichtungen (z. B. Festplatten, SSDs oder eine Kombination davon) oder dergleichen können von einem Computergerät (wie einem Speicherarray) verwendet werden, um einen „Backend-Speicher“ für das Computergerät zu implementieren (z. B. Speicherarray) zum dauerhaften Speichern von Daten im Computergerät. Auf solche Speichergeräte kann unter Verwendung verschiedener Kommunikationsprotokolle zugegriffen werden, beispielsweise unter Verwendung von SCSI (Small Computer System Interface) (z. B. SAS (Serial Attached SCSI)), SATA (Serial AT Attachment) oder anderen geeigneten Protokollen).
  • In solchen Computergeräten können Verarbeitungsressourcen eines Controllers des Computergeräts Daten von dem Speichergerät lesen und in dieses schreiben, das den flüchtigen Cache-Speicher mit einer viel geringeren Latenz (dh viel schneller) als von einem Speichergerät implementiert (s) Implementieren von Backend-Speicher für das Computergerät (z. B. Festplatten, SSDs usw. oder eine Kombination davon). Die Kapazität des flüchtigen Cache-Speichers ist jedoch im Vergleich zum Backend-Speicher relativ gering, so dass der flüchtige Cache-Speicher darauf beschränkt sein kann, nur eine kleine Teilmenge der vom Computergerät gleichzeitig gespeicherten Daten zu speichern (z. B. viel weniger als alle) der im Backend-Speicher des Computergeräts gespeicherten Daten). In solchen Beispielen kann zu einem bestimmten Zeitpunkt nur ein relativ kleiner Teil der im Backend-Speicher des Computergeräts gespeicherten Daten aus dem Cache-Speicher (mit der geringen Latenz) zugänglich sein.
  • In einigen Beispielen kann es vorteilhaft sein, die Kapazität des Hauptcaches (z. B. des flüchtigen Cache-Speichers) eines Computergeräts zu erweitem, indem nichtflüchtiger Speicher als erweiterter Lesecache (oder „Zwischen“ -Lesecache) verwendet wird, der logisch dazwischen platziert ist den Hauptcache und den Backend-Speicher (z. B. andere nichtflüchtige Speichergeräte) eines Computergeräts. Obwohl ein solcher erweiterter Lese-Cache eine höhere Latenz als der Haupt-Cache haben kann, kann der erweiterte Lese-Cache eine viel geringere Latenz haben als der Backend-Speicher des Computergeräts, und wenn ein Cache-Fehler im Haupt-Cache auftritt (dh angefordert wird) Es wird festgestellt, dass Daten nicht im Hauptcache vorhanden sind. Durch Lesen der angeforderten Daten aus dem erweiterten Lesecache (falls vorhanden) können die angeforderten Daten mit viel geringerer Latenz in den Hauptcache eingelesen werden als durch Einlesen der angeforderten Daten in den Hauptcache Hauptcache aus dem Backend-Speicher des Computergeräts.
  • Wenn beispielsweise im Hauptcache ein Cache-Fehler auftritt, kann das Einlesen der angeforderten Daten von einer SAS-Festplatte des Backend-Speichers in den Hauptcache eine oder mehrere Millisekunden (ms) dauern (oder mehr, abhängig von der aktuellen Verwendung der SAS-Festplatte) ), wodurch dem angeforderten Lesevorgang mindestens eine oder mehrere Millisekunden Latenz hinzugefügt werden. Das Lesen der angeforderten Daten von einer SAS-SSD (z. B. mit einer Flash-Übersetzungsschicht (FTL)) des Backend-Speichers in den Hauptcache kann etwa 125 oder mehr Mikrosekunden (oder mehr, abhängig von ihrer gegenwärtigen Verwendung) dauern, was sich dadurch möglicherweise noch addiert signifikante zusätzliche Latenz zum angeforderten Lesevorgang. In ähnlicher Weise kann das Einlesen der angeforderten Daten in den Hauptcache von einer SAS-SSD (z. B. umfassend eine FTL) als erweiterter Lesecache (dh wenn der oben beschriebene erweiterte Lesecache unter Verwendung einer oder mehrerer SAS-SSDs implementiert ist) ebenfalls etwa 125 dauern oder mehr Mikrosekunden (oder mehr, abhängig von der gegenwärtigen Verwendung der SAS-Festplatte), wodurch dem angeforderten Lesevorgang eine erhebliche zusätzliche Latenz hinzugefügt wird.
  • Im Gegensatz dazu, wenn der erweiterte Lesecache unter Verwendung einer SCM-Vorrichtung (Storage Class Memory) (z. B. einer nichtflüchtigen Festkörperspeichervorrichtung ohne FTL), können die angeforderten Daten aus dem SCM in den Hauptcache aus dem SCM Gerät das den erweiterten Lesecache implementiert in einigen Beispielen so schnell wie in einer Anzahl von Mikrosekunden im niedrigen Zehnerbereich eingelesen werden, wodurch die zusätzliche Latenz zum Einlesen der Daten in den Hauptcache im Vergleich zu SAS-SSDs (z. B. ungefähr 10-mal geringere Latenz) erheblich reduziert wird. In den hier beschriebenen Beispielen kann eine SCM-Vorrichtung (oder 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“ hierin) aufweisen, mit der Daten mit geringer Latenz von der SCM Karte gelesen und in die SCM Karte geschrieben werden können . 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, wenn genügend Eingabe-/Ausgabeanforderungen (oder „E/A“ hierin; z. B. Lese- und/oder Schreibanforderungen) schnell genug an das SCM-Gerät gesendet werden, dass die kumulierte Datenmenge, die diese E/A-Anforderungen versuchen in das SCM-Gerät zu lesen und/oder Schreiben den Datenratenschwellenwert (z. B. etwa 2,4 GB/s in einigen Beispielen) überschreitet, können weitere ausgegebene E/A-Anforderungen eine viel höhere Latenz aufweisen als die E/A-Anforderungen, die vor dem Überschreiten dieses Schwellenwerts ausgegeben wurden. Beispielsweise kann es bei E/A-Anforderungen, die nach dem Überschreiten des Datenratenschwellenwerts ausgegeben werden, zu einer Latenz (z. B. Zeit zum Lesen vom SCM-Gerät in den Hauptcache) kommen, die nahe oder sogar größer als die oben beschriebene Latenz einer SAS-SSD ist (z. etwa 125 Mikrosekunden oder mehr).
  • In solchen Beispielen kann das Ausgeben von E/A-Anforderungen an das SCM-Gerät, 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 erreichen, indem das SCM-Gerät umgangen und aus dem Back-End-Speicher anstatt vom SCM-Gerät gelesen wird, sobald der Datenratenschwellenwert der SCM-Karte überschritten wurde. In Beispielen, in denen das SCM-Gerät von mehreren Controllern eines Computergeräts wie einem Speicherarray verwendet wird (z. B. wenn das SCM-Gerät über zwei Ports verfügt), kann es für einen der Controller schwierig sein, die Kumulierung zu bestimmen Datenmenge, die von den mehreren Controllern in einem bestimmten Zeitraum von dem SCM-Gerät gelesen und in dieses geschrieben wird, und somit, ob diese kumulierte Datenmenge den Datenratenschwellenwert für die SCM-Karte überschreitet.
  • Um diese Probleme in den hier beschriebenen Beispielen anzugehen, kann ein gegebener Controller eine repräsentative E/A-Anforderungslatenz (z. B. durchschnittliche E/A-Anforderungslatenz) zwischen dem gegebenen Controller und einem SCM-Gerät bestimmen und die repräsentative E/A-Anforderungslatenz mit einem entsprechenden Latenzschwellenwert vergleichen auf einen Datenratenschwellenwert für das SCM-Gerät. In solchen Beispielen kann die repräsentative E/A-Anforderungslatenz, die den Latenzschwellenwert überschreitet, (indirekt) anzeigen, dass der Datenratenschwellenwert für das SCM-Gerät überschritten wird.
  • Beispielsweise kann die E/A-Anforderungslatenz für ein SCM-Gerät (dh die Zeit, die das SCM-Gerät benötigt, um eine E/A-Anforderung abzuschließen) in einem bestimmten Zeitraum eine stabile Beziehung zur kumulierten Datenmenge haben, aus der gelesen und in das geschrieben wird SCM-Karte im angegebenen Zeitraum. In solchen Beispielen kann diese Beziehung verwendet werden, um einen E/A-Anforderungslatenzwert zu bestimmen, der dem Datenratenschwellenwert für das SCM-Gerät entspricht (z. B. entsprechend dem Schwellenwert der Daten, die für den Datenratenschwellenwert repräsentativ sind). In solchen Beispielen kann der ermittelte Latenzwert als Latenzschwelle für das SCM-Gerät verwendet werden.
  • In solchen Beispielen kann jeder Controller, der das SCM-Gerät verwendet, in einem bestimmten Zeitraum ungefähr die gleichen E/A-Anforderungslatenzen aufweisen, basierend auf der kumulierten Datenmenge, die in dem angegebenen Zeitraum vom SCM-Gerät gelesen und in das SCM-Gerät geschrieben wurde, unabhängig vom Anteil von Die kumulierte Datenmenge, die jeder Controller in dem angegebenen Zeitraum liest/schreibt. Obwohl ein einzelner Controller möglicherweise nicht in der Lage ist, die kumulierte Datenmenge, die in einem bestimmten Zeitraum von dem SCM-Gerät gelesen und in dieses geschrieben wurde, (ohne weiteres) direkt zu messen, kann ein Controller die Latenzzeiten für E/A-Anforderungen zwischen dem Controller und dem Controller direkt beobachten SCM-Gerät, und verwenden Sie diese beobachteten E/A-Anforderungslatenzen, um zu bestimmen, ob der E/A-Anforderungslatenzschwellenwert für das SCM-Gerät überschritten wird, was (z. B. indirekt) anzeigen kann, dass die kumulierte Datenmenge von dem SCM-Gerät gelesen und in das SCM-Gerät geschrieben wird Der von den mehreren Controllern angegebene Zeitraum überschreitet den Datenratenschwellenwert. In solchen Beispielen kann der einzelne Controller die Rate verwalten, mit der Daten von diesem Controller zum und vom SCM-Lesecache übertragen werden, basierend darauf, ob die repräsentative E/A-Anforderungslatenz den Latenzschwellenwert für die SCM-Karte überschreitet (z. B. SCM-Lesecache)..
  • Auf diese Weise kann in gegebenen Beispielen ein gegebener Controller die Rate verwalten, mit der er aus einem SCM-Lesecache liest und in diesen schreibt, nachdem ein Datenratenschwellenwert für den SCM-Lesecache um die kumulative Datenmenge von allen Controllern überschritten wurde in einem gegebenen Zeitraum, obwohl der gegebene Controller möglicherweise nicht in der Lage ist, die kumulative Datenmenge von allen Controllern in dem gegebenen Zeitraum (direkt) zu messen, und insbesondere möglicherweise nicht in der Lage ist, die Menge der gelesenen Daten direkt zu messen/von anderen Controllern geschrieben, um dadurch die Anzahl ihrer E/A-Anforderungen zu vermeiden oder zu verringern, bei denen eine erheblich höhere Latenz auftritt.
  • Beispielsweise können hier beschriebene Beispiele eine repräsentative E/A-Anforderungslatenz zwischen einem ersten Controller und einem SCM-Lesecache während eines gegebenen Zeitraums bestimmen und mindestens einen SCM-Warteschlangentiefenschwellenwert des ersten Controllers anpassen, wenn die repräsentative E/A-Anforderungslatenz einen Schwellenwert für die E/A-Anforderungslatenz für den SCM-Lesecache überschreitet. In solchen Beispielen kann der erste Controller als Antwort auf eine E/A-Anforderung des ersten Controllers für den SCM-Lesecache eine SCM-Warteschlangentiefe des ersten Controllers mit einem SCM-Warteschlangentiefenschwellenwert des ersten Controllers vergleichen. In solchen Beispielen kann der erste Controller basierend auf einem Typ der E/A-Anforderung und einem Ergebnis des Vergleichs zwischen (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 und Ausführen der ausgewählten Verarbeitung oder Löschung wählen.
  • Auf diese Weise können hier beschriebene Beispiele es einem Controller ermöglichen, die Anzahl von E/A-Anforderungen zu reduzieren, die an den SCM-Lesecache ausgegeben werden und die aufgrund der Überschreitung des Datenratenschwellenwerts des SCM-Lesecaches eine signifikant höhere Latenz aufweisen, selbst wenn der Controller dies möglicherweise nicht ohne weiteres tut in der Lage sein, die kumulierte Datenmenge, die in einem bestimmten Zeitraum aus dem SCM-Lesecache gelesen und in diesen geschrieben wird, direkt zu messen.
  • 1 ist ein Blockdiagramm eines beispielhaften Computersystems 101 zum Auswählen, ob ein SCM-Lesecache 150 basierend auf einem SCM-Warteschlangentiefenschwellenwert verwendet werden soll. In dem in FIG. In 1 umfasst das Computersystem 101 (oder „System“ oder „Speichersystem“ 101) die Steuerungen 102 und 104, einen SCM-Lesecache 150 und einen Backend-Speicher 160. Der Backend-Speicher 160 kann ein oder mehrere Speichergeräte umfassen, um Daten für das Computergerät 100 dauerhaft zu speichern. In solchen Beispielen kann jede der Speichervorrichtungen des Backend-Speichers 160 eine nichtflüchtige Speichervorrichtung sein, wie beispielsweise eine Festplatte, eine SSD oder dergleichen oder eine beliebige Kombination davon. Beispielsweise kann der Backend-Speicher 160 Festplatten, SSDs oder eine Kombination von Festplatten und SSDs umfassen. Die Rechenvorrichtung 100 kann ein beliebiger geeigneter Typ einer hierin beschriebenen Rechenvorrichtung sein, wie beispielsweise ein Server, ein Speicherarray oder dergleichen.
  • In dem Beispiel von FIG. In 1 umfasst die Steuerung 102 mindestens eine Verarbeitungsressource 105 und mindestens ein maschinenlesbares Speichermedium 120, das mindestens Anweisungen 121 umfasst (z. B. mit diesen codiert ist), die von der mindestens einen Verarbeitungsressource 105 der Rechenvorrichtung 100 ausführbar sind, um Funktionalitäten zu implementieren hierin in Bezug auf Anweisungen 121 beschrieben. Die Anweisungen 121 können mindestens die Anweisungen 122, 124 und 126 enthalten, die von der mindestens einen Verarbeitungsressource 105 ausführbar sein können. Die Steuerung 102 kann auch einen Speicher 140 umfassen, der durch einen flüchtigen Speicher (z. B. eine oder mehrere flüchtige Speichervorrichtungen, wie DRAM-Vorrichtung (en), DIMM (s) oder dergleichen) implementiert werden kann. Der Speicher 140 kann den Hauptcache 142 der Steuerung 102 implementieren (z. B. zur Verwendung durch die Verarbeitungsressource 105 der Steuerung 102). In einigen Beispielen kann der Speicher 140 auch verschiedene Betriebsdaten 130 speichern, die nachstehend ausführlicher beschrieben werden (siehe z. B. 4). In einigen Beispielen können Daten 130 auf demselben Speichergerät oder denselben Speichergeräten gespeichert sein, die den Hauptcache 142 implementieren. In anderen Beispielen können Daten 130 auf anderen Speichervorrichtungen gespeichert werden als die Speichervorrichtungen, die den Hauptcache 142 implementieren.
  • In dem in FIG. In 1 kann der SCM-Lesecache 150 von einer SCM-Vorrichtung (z. B. einem SCM-Chip) implementiert werden, um Daten auf nichtflüchtige Weise zu speichern. In den hier beschriebenen Beispielen kann die Steuerung 102 den SCM-Lesecache 150 verwenden, um die Kapazität des Hauptcaches 142 zum Bedienen von Leseanforderungen zu erweitern. Der SCM-Lesecache 150 kann sich logisch (oder funktional) zwischen dem Hauptcache 142 und dem Backend-Speicher 160 befinden und kann hier als „Zwischen“ - Lesecache bezeichnet werden. Beispielsweise können Daten aus dem Hauptcache 142 in den SCM-Lesecache 150 übertragen werden, so dass die Daten anschließend aus dem SCM-Lesecache 150 in den Hauptcache 142 zurückgelesen werden können, um den Prozess der höheren Latenz beim Einlesen der Daten in den Hauptcache 142 aus dem Backend-Speicher 160 zu vermeiden.
  • In den hier beschriebenen Beispielen kann SCM eine Art nichtflüchtiger Speicher (NVM) sein, der Festkörper ist und eine relativ geringe Latenz aufweist, und eine SCM-Vorrichtung kann eine nichtflüchtige Speichervorrichtung sein, die eine SCM-Technologie umfasst, die zum Speichern von Daten darauf verwendet werden kann. Beispielsweise können einige Arten von Solid Data Drive (SSD), wie beispielsweise eine Flash-Speichervorrichtung, eine Flash-Übersetzungsschicht (FTL) umfassen. In einigen Beispielen hat ein SCM-Gerät möglicherweise keine FTL. In solchen Beispielen kann eine SCM-Vorrichtung ohne FTL eine viel geringere Latenz aufweisen als eine SSD, die eine FTL umfasst. In solchen Beispielen kann das SCM-Gerät möglicherweise Datenschreibvorgänge ausführen, die Daten an physischen Orten auf dem SCM-Gerät überschreiben, ohne zuerst vorhandene Daten zu löschen, die an diesen physischen Orten des SCM-Geräts vorhanden sind, im Gegensatz zu Flash-Speichergeräten, die eine FTL verwenden Beim Schreiben an einen physischen Ort, an dem Daten vorhanden sind, müssen möglicherweise zuerst die vorhandenen Daten an diesen physischen Orten gelöscht werden, bevor neue Daten an diese physischen Orte geschrieben werden. Außerdem kann ein SCM-Gerät unter Weglassen der FTL möglicherweise keine Speicherbereinigung durchführen, während ein Flash-Speichergerät, das eine FTL umfasst, eine Speicherbereinigung durchführen kann.
  • In einigen Beispielen kann ein SCM-Gerät (z. B. mit anderen Komponenten des Systems 101) unter Verwendung eines mit NVM Express ™ (NVMe ™) konsistenten Protokolls kommunizieren, und ein SCM, der unter Verwendung eines solchen Protokolls kommuniziert, kann eine geringere Latenz aufweisen als eine SSD, die kommuniziert mit einem Protokoll wie SAS. In hierin beschriebenen Beispielen kann eine SCM-Vorrichtung zum Implementieren (zumindest teilweise) des SCM-Lesecaches 150 in einer von mehreren verschiedenen Formen implementiert werden, wie zum Beispiel einem 3D XPoint ™ -Chip (oder einer Vorrichtung); ein 3D XPoint ™ -DIMM, ein PCM-Gerät (Phase Change Memory) (z. B. ein RAM-Gerät (Phase Change Random Access Memory)), ein MRAM-Gerät (Magnetic RAM) (z. B. ein STT-RAM (Spin-Torque-Transfer)) Vorrichtung), eine Resistive RAM (RRAM) -Vorrichtung, eine Memristorvorrichtung oder dergleichen oder eine Kombination davon. In einigen Beispielen kann ein SCM-Gerät einen blockbasierten Zugriff implementieren. In anderen Beispielen kann ein SCM-Gerät eine speicherbasierte Semantik für den Datenzugriff implementieren. In solchen Beispielen können SCM-basierte DIMMs verwendet werden, um den SCM-Lesecache in den hier beschriebenen Beispielen zu implementieren. In den hier beschriebenen Beispielen kann der SCM-Lesecache 150 (zumindest teilweise) durch eine SCM-Vorrichtung implementiert werden, die keine FTL aufweist und eine geringere Latenz aufweist als eine SSD, die eine FTL umfasst, wie beispielsweise eine SAS-SSD. In einigen Beispielen können ein oder mehrere Speichergeräte des Backend-Speichers 160 unter Verwendung eines mit NVMe TM konsistenten Protokolls kommunizieren.
  • In einigen Beispielen kann die E/A-Anforderungslatenz eines SCM-Geräts (oder einer SCM-Karte) von der kumulierten Datenmenge abhängen, die in einem bestimmten Zeitraum von dem SCM-Gerät gelesen und in dieses geschrieben wird (dh über E/A-Anforderungen). Daher kann in den hier beschriebenen Beispielen die E/A-Anforderungslatenz als Proxy für (oder eine andere Anzeige) der kumulierten Datenmenge verwendet werden, die in einem bestimmten Zeitraum von dem SCM-Gerät gelesen und in dieses geschrieben wird (dh über E/A-Anforderungen) . In den hier beschriebenen Beispielen kann sich die „E/A-Anforderungslatenz“ (die hier als „Latenz“ bezeichnet werden kann) auf die Zeit beziehen, die ein SCM-Gerät benötigt, um eine bestimmte E/A-Anforderung abzuschließen. In einigen Beispielen kann diese Beziehung zwischen der kumulierten Datenmenge, die von einem SCM-Gerät gelesen und in dieses geschrieben wird, und der E/A-Anforderungslatenz für einen bestimmten SCM-Gerätetyp relativ stabil sein. In einigen Beispielen können Leistungsdaten, die sich dieser Beziehung annähern, für einen gegebenen SCM-Gerätetyp bestimmt werden (z. B. durch empirische Tests dieses SCM-Gerätetyps).
  • Zum Beispiel zeigt 2A ist ein Graph 200 von beispielhaften SCM-Leistungsdaten 202 für den SCM-Lesecache 150 von 1. 1 (dh für den Typ des SCM-Geräts, das zum Implementieren des SCM-Lesecaches 150 verwendet wird). In Diagramm 200 repräsentiert die vertikale Achse die Latenz der E/A-Anforderung (z. B. in Mikrosekunden), die horizontale Achse repräsentiert kumulative Datenmengen (z. B. in Megabyte), und beispielhafte SCM-Leistungsdaten 202 sind als Kurve dargestellt, die eine Beziehung zwischen der E/A-Anforderung zeigt Latenz des SCM-Lesecaches 150 (dh der Typ der SCM-Vorrichtung, die den SCM-Lesecache 150 implementiert) und die kumulative Menge von Daten, die in einem gegebenen Zeitraum (z. B. einer bestimmten Länge, z als 100 Millisekunden). Beispielsweise können die SCM-Leistungsdaten 202 eine Schätzung der erwarteten E/A-Anforderungslatenz des SCM-Lesecaches 150 als Funktion der kumulierten Datenmenge spezifizieren, die in einem gegebenen Zeitraum aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wird. In solchen Beispielen kann angenommen werden, dass die erwartete E/A-Anforderungslatenz des SCM-Lesecaches 150 mit der kumulierten Datenmenge korreliert (z. B. abhängig davon), die in einem bestimmten Zeitraum aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurde.
  • In einigen Beispielen können die SCM-Leistungsdaten 202 auch als ein Satz von Punkten auf der in 1 dargestellten Kurve der SCM-Leistungsdaten 202 dargestellt werden. 2A. Zum Beispiel zeigt 2B ist eine Tabelle 250 von beispielhaften SCM-Leistungsdaten 202, die dem beispielhaften Graphen 200 von 2 entsprechen. 2A. In solchen Beispielen können die SCM-Leistungsdaten als jeweilige Datenpaare dargestellt werden, die jeweils einen E/A-Anforderungslatenzwert 252 und einen entsprechenden kumulativen Datenmengenwert 254 enthalten. Obwohl hier Beispiele in Bezug auf SCM-Leistungsdaten 202 als Kurve und als Datenpaare beschrieben werden, können andere Beispiele Bereiche und nicht nur diskrete Werte auf verschiedene Weise verwenden.
  • Wie oben erwähnt, kann ein SCM-Gerät eine relativ geringe E/A-Anforderungslatenz aufweisen, wenn die kumulierte Datenmenge, die in einem bestimmten Zeitraum von dem SCM-Gerät gelesen und in dieses geschrieben wird, einen Datenratenschwellenwert nicht überschreitet. Das SCM-Gerät kann jedoch viel höhere E/A-Anforderungslatenzen aufweisen, wenn der Datenratenschwellenwert überschritten wird. In dem Beispiel der Fign. In den 1 und 2A kann der Datenratenschwellenwert als ein bestimmter Wert für die kumulative Datenmenge in einem gegebenen Zeitraum dargestellt werden. In dem Beispiel von FIG. In 2A kann der Datenratenschwellenwert für den SCM-Lesecache 150 als Schwellendatenmenge 212 dargestellt werden, die in dem Diagramm 200 gezeigt ist (z. B. 400 MB in einem gegebenen Zeitraum von 100 ms, obwohl dies in anderen Beispielen unterschiedlich sein kann).
  • Da die erwartete E/A-Anforderungslatenz für den SCM-Lesecache 150 wie oben beschrieben von der kumulierten Datenmenge (pro Zeitraum) abhängen kann, kann ein E/A-Anforderungslatenzschwellenwert 210 für den SCM-Lesecache 150 basierend auf einem geschätzten E/A-Anforderungslatenzwert bestimmt werden entsprechend der Schwellendatenmenge 212 in den Leistungsdaten 202. In dem Beispiel von FIG. In 2A kann ein Latenzschwellenwert 210 für den SCM-Lesecache 150 basierend auf dem geschätzten E/A-Anforderungslatenzwert (z. B. 31 Mikrosekunden) an einem (tatsächlichen oder ungefähren) Schnittpunkt 214 zwischen dem Schwellendatenbetrag 212 (z. B. 400 MB) und bestimmt werden Leistungsdaten 202. In solchen Beispielen kann der Latenzschwellenwert 210 als Proxy für den Datenratenschwellenwert verwendet werden, und eine Bestimmung, dass eine repräsentative E/A-Anforderungslatenz (z. B. durchschnittliche E/A-Anforderungslatenz) über dem Latenzschwellenwert 210 liegt, kann als Hinweis darauf behandelt werden, dass der Der Datenratenschwellenwertwird für den SCM-Lesecache 150 angefahren oder überschritten. In einigen Beispielen kann der Datenratenschwellenwert als Datenmenge ausgedrückt oder dargestellt werden (dh den Datenratenschwellenwert als diese Datenmenge in einem gegebenen Zeitraum darstellen) oder in anderen geeigneten Begriffen (z. B. als Rate) dargestellt als Datenmenge pro Zeiteinheit).
  • Unter erneuter Bezugnahme auf FIG. In 1 können in einigen Beispielen die Steuerungen 102 und 104 ähnlich oder identisch sein (z. B. in mindestens einer der darauf gespeicherten Hardware- und maschinenlesbaren ausführbaren Anweisungen). Beispielsweise kann die Steuerung 104 mindestens eine Verarbeitungsressource 107 umfassen, die der mindestens eine Verarbeitungsressource 105 der Steuerung 102 ähnlich oder identisch ist, den Speicher 190 ähnlich oder identisch mit dem Speicher 140 der Steuerung 102 und das maschinenlesbare Speichermedium 117 ähnlich oder identisch mit der Steuerung 102 des maschinenlesbaren Speichermediums 190. In solchen Beispielen kann der Speicher 190 den Hauptcache 192 ähnlich oder identisch mit dem Hauptcache 142 der Steuerung 102 implementieren, und das Speichermedium 117 kann Anweisungen umfassen, die den Anweisungen 121 ähnlich oder identisch sind und durch Verarbeiten der Ressource 107 ausführbar sind, um die hierin beschriebenen Funktionen in Bezug auf zu implementieren Anweisungen 121.
  • In einigen Beispielen kann jeder der Controller 102 und 104 auf den SCM-Lesecache 150 zugreifen (z. B. von ihm lesen und in ihn schreiben). Beispielsweise kann die SCM-Vorrichtung, die den SCM-Lesecache 150 implementiert, doppelt portiert sein, und jeder der Controller 102 und 104 kann unter Verwendung eines entsprechenden Ports des SCM-Geräts mit zwei Ports auf den SCM-Lesecache 150 zugreifen. Beispielsweise kann ein solcher SCM-Lesecache 150 mit zwei Ports E/A-Anforderungen von jedem der Controller 102 und 104 empfangen und verarbeiten. In solchen Beispielen kann die Steuerung 104 den SCM-Lesecache 150 verwenden, wie hierin in Bezug auf die Steuerung 102 beschrieben. Beispielsweise kann die Steuerung 104 den SCM-Lesecache 150 verwenden, um die Kapazität des Hauptcaches 192 zum Bearbeiten von Leseanforderungen zu erweitem, und Daten aus dem Hauptcache 192 in den SCM-Lesecache 150 leeren oder entleeren, so dass die Daten anschließend zurückgelesen werden können Hauptcache 190 aus dem SCM-Lesecache 150. In solchen Beispielen kann keiner der Controller 102 und 104 in der Lage sein, die Datenmenge, die der andere Controller in einem bestimmten Zeitraum aus dem SCM-Lesecache 150 liest und in diesen schreibt, direkt zu überwachen, und als solcher kann keiner der Controller 102 und 104 in der Lage sein, die kumulative Datenmenge, von der die Steuerungen 102 und 104 in einem bestimmten Zeitraum aus dem SCM-Lesecache 150 lesen und in diesen schreiben, direkt zu überwachen. In solchen Beispielen kann es für einen der Controller 102 und 104 schwierig sein, zu bestimmen, ob die kumulierte Datenmenge in einem Zeitraum hoch genug ist, dass der Datenratenschwellenwert erreicht oder überschritten wird und dass einer oder beide Controller reduziert werden sollten Verwendung des SCM-Lesecaches (z. B. durch Umgehen des SCM-Lesecaches und/oder Löschen von Zielanforderungen).
  • Jeder der Controller, der den SCM-Lesecache 150 verwendet, erfährt jedoch ungefähr die gleichen E/A-Anforderungslatenzen im gleichen Zeitraum, da diese E/A-Anforderungslatenzen von der kumulierten Datenmenge abhängen, die aus dem SCM-Lesecache gelesen und/oder in diesen geschrieben wird 150 von allen Controllern. Wie oben erwähnt, kann die E/A-Anforderungslatenz als Proxy für (oder eine andere Anzeige von) der kumulierten Datenmenge verwendet werden, die in einem bestimmten Zeitraum von dem SCM-Gerät gelesen und in dieses geschrieben wird (dh über E/A-Anforderungen), wie oben angegeben und in den hier beschriebenen Beispielen kann jeder der Controller 102 und 104 die E/A-Anforderungslatenz der E/A-Anforderungen bestimmen, die er an den SCM-Lesecache 150 sendet. Als solches kann in einzelnen hier beschriebenen Beispielen jeder einzelne Controller die beobachteten E/A-Anforderungslatenzen messen und diese E/A-Anforderungslatenzen verwenden, um zu bestimmen, ob er die Verwendung des SCM-Lesecaches 150 durch Umgehen des SCM-Lesecaches 150 und/oder Löschen reduzieren soll Destage-Anforderungen, wie hierin beschrieben, obwohl ein gegebener Controller möglicherweise nicht in der Lage ist, die kumulative Datenmenge zu messen, die von allen Controllern für einen bestimmten Zeitraum aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurde.
  • Beispiele bezüglich der Steuerung der Verwendung des SCM-Lesecaches 150 basierend auf beobachteten E/A-Anforderungslatenzen sind nachstehend in Bezug auf die 1 und 2 beschrieben. 1, 3 und 4. 3 ist ein Flussdiagramm eines beispielhaften Verfahrens 300, das die Auswahl umfasst, ob ein SCM-Lesecache basierend auf einem SCM-Warteschlangentiefenschwellenwert verwendet werden soll. Obwohl die Ausführung des Verfahrens 300 nachstehend unter Bezugnahme auf die Rechenvorrichtung 100 von 1 beschrieben wird. In 1 können andere für die Ausführung des Verfahrens 300 geeignete Rechenvorrichtungen verwendet werden. Zusätzlich ist die Implementierung des Verfahrens 300 nicht auf solche Beispiele beschränkt. Obwohl das Flussdiagramm von 3 zeigt eine bestimmte Reihenfolge der Leistung bestimmter Funktionalitäten, das Verfahren 300 ist nicht auf diese Reihenfolge beschränkt. Beispielsweise können die im Flussdiagramm nacheinander gezeigten Funktionen in einer anderen Reihenfolge ausgeführt werden, gleichzeitig oder mit teilweiser Übereinstimmung oder einer Kombination davon ausgeführt werden. 4 ist ein Blockdiagramm von beispielhaften Betriebsdaten 130, die dem SCM-Lesecache 150 zugeordnet sein können. In einigen Beispielen können die Betriebsdaten 130 der Steuerung 102 einige oder alle der Daten 131-137 und 139 umfassen, die in dem Beispiel der Betriebsdaten 130 in 1 dargestellt sind. 4.
  • Bezugnehmend auf die Fign. In den 1, 3 und 4 können bei 305 des Verfahrens 300 die Anweisungen 122 der Steuerung 102 (z. B. wenn sie von der Verarbeitungsressource 105 ausgeführt werden) eine repräsentative E/A-Anforderungslatenz 131 (dh einen repräsentativen E/A-Anforderungslatenzwert 131) zwischen der Steuerung 102 bestimmen und SCM-Lesecache 150 während eines gegebenen Zeitraums, in dem die Steuerung 102 und die Steuerung 104 des Speichersystems 101 beide E/A-Anforderungen an den SCM-Lesecache 150 senden. In einigen Beispielen können Anweisungen 122 diese repräsentative E/A-Anforderungslatenz 131 basierend auf den jeweiligen Latenzen von E/A-Anforderungen bestimmen, die durch den SCM-Lesecache 150 für die Steuerung 102 in dem gegebenen Zeitraum abgeschlossen wurden. Beispielsweise können Anweisungen 122 die repräsentative E/A-Anforderungslatenz 131 basierend auf dem Akkumulieren der jeweiligen E/A-Anforderungslatenzen von E/A-Anforderungen, die durch den SCM-Lesecache 150 für die Steuerung 102 in dem gegebenen Zeitraum abgeschlossen wurden, und das Bestimmen einer durchschnittlichen E/A-Anforderungslatenz als repräsentative E/A bestimmen Anforderungslatenz 131 (z. B. durch Teilen der Summe der akkumulierten E/A-Anforderungslatenzen durch die Anzahl der E/A-Anforderungen, die für die Steuerung 102 in dem gegebenen Zeitraum abgeschlossen wurden), wie nachstehend in Bezug auf 4 ausführlicher beschrieben. 5A. In anderen Beispielen können Anweisungen 122 jeden anderen geeigneten Wert für die repräsentative E/A-Anforderungslatenz 131 basierend auf den jeweiligen E/A-Anforderungslatenzen von E/A-Anforderungen bestimmen, die durch den SCM-Lesecache 150 für die Steuerung 102 in dem gegebenen Zeitraum abgeschlossen wurden.
  • Die Anweisungen 122 können die E/A-Anforderungslatenz für jede E/A-Anforderung bestimmen, die von der Steuerung 102 ausgegeben und vom SCM-Lesecache 150 auf irgendeine geeignete Weise vervollständigt wird. Beispielsweise können Anweisungen 122 ein erstes Mal (z. B. „t1“) aufzeichnen, bei dem eine gegebene E/A-Anforderung von einem Treiber für den SCM-Lesecache 150 (z. B. einem NVMe ™ -Treiber) an eine Übermittlungswarteschlange des implementierenden SCM-Geräts ausgegeben wird Der SCM-Lesecache 150 kann auch ein zweites Mal (z. B. „t2“) aufzeichnen, bei dem eine Anzeige, dass die gegebene E/A-Anforderung abgeschlossen ist, vom Treiber für den SCM-Lesecache 150 (z. B. den NVMe ™ -Treiber) von a empfangen wird Abschlusswarteschlange des SCM-Geräts, das den SCM-Lesecache 150 implementiert. In solchen Beispielen können Anweisungen 122 die E/A-Anforderungslatenz für die gegebene E/A-Anforderung bestimmen, indem sie das erste Mal vom zweiten Mal subtrahieren (z. B. E/A-Anforderungslatenz = t2 - t1). In solchen Beispielen können Anweisungen 122 die E/A-Anforderungslatenz jeder E/A-Anforderung bestimmen, die von der Steuerung 102 an den SCM-Lesecache 150 ausgegeben wird. In einigen Beispielen können Befehle 122 auch eine Gesamtlatenz der E/A-Anforderung für einen bestimmten Zeitraum akkumulieren, indem sie alle einzelnen Latenzen der E/A-Anforderung für jede E/A-Anforderung addieren, die von der Steuerung 102 ausgegeben und vom SCM-Lesecache in der angegebenen Zeit abgeschlossen wurde Zeitraum wie unten beschrieben.
  • Bei 310 können Befehle 124 (z. B. wenn sie von der Verarbeitungsressource 105 ausgeführt werden) mindestens einen SCM-Warteschlangentiefenschwellenwert für die Steuerung 102 (z. B. in Betriebsdaten 130) als Reaktion auf eine Bestimmung anpassen, dass die bestimmte repräsentative E/A-Anforderungslatenz 131 überschreitet einen E/A-Anforderungslatenzschwellenwert 132 (z. B. von Betriebsdaten 130) für den SCM-Lesecache 150. Beispielsweise können Anweisungen 124 bestimmen, ob die repräsentative E/A-Anforderungslatenz 131 den E/A-Anforderungslatenzschwellenwert 132 überschreitet. Die Anweisungen 124 können mindestens einen der SCM-Warteschlangentiefenschwellenwerte der Steuerung 102 verringern, basierend auf einer Feststellung, dass die repräsentative E/A-Anforderungslatenz 131 den E/A-Anforderungslatenzschwellenwert 132 überschreitet. Die Anweisungen 124 können mindestens einen der SCM-Warteschlangentiefenschwellenwerte der Steuerung 102 erhöhen, basierend auf einer Bestimmung, dass die repräsentative E/A-Anforderungslatenz 131 den Schwellenwert 132 nicht überschreitet (dh kleiner oder gleich ist), wie ausführlicher beschrieben unten in Bezug auf die 5A-5C.
  • In den hier beschriebenen Beispielen kann eine „Warteschlangentiefe“ für einen Controller zu einem bestimmten Zeitpunkt eine Anzahl von E/A-Anforderungen (z. B. eines bestimmten Typs) sein, die zum angegebenen Zeitpunkt ausstehen (z. B. vom Controller ausgegeben und noch nicht abgeschlossen) oder zum gegebenen Zeitpunkt dem Controller als erledigt gemeldet). In den hier beschriebenen Beispielen kann eine „SCM-Warteschlangentiefe“ für einen Controller zu einem bestimmten Zeitpunkt eine Anzahl von E/A-Anforderungen (z. B. eines bestimmten Typs) sein, die an einem SCM-Lesecache (oder einem anderen SCM-Gerät) zu dem angegebenen Zeitpunkt ausstehen Zeit (z. B. vom Controller an den SCM-Lesecache ausgegeben und zum angegebenen Zeitpunkt noch nicht abgeschlossen oder dem Controller als erledigt gemeldet). In einigen hier beschriebenen Beispielen kann sich eine SCM-Warteschlangentiefe auf eine SCM-Lesewarteschlangentiefe oder eine SCM-Schreibwarteschlangentiefe beziehen. In solchen Beispielen kann eine „SCM-Lesewarteschlangentiefe“ für die Steuerung zu einem bestimmten Zeitpunkt eine Gesamtzahl von Leseanforderungen sein, die von der Steuerung an einen SCM-Lesecache (oder ein anderes SCM-Gerät) ausgegeben werden und zu dem bestimmten Zeitpunkt ausstehen (dh vom Controller an den SCM-Lesecache ausgegeben und zum angegebenen Zeitpunkt noch nicht abgeschlossen oder als abgeschlossen gemeldet). In den hier beschriebenen Beispielen kann eine „SCM-Schreibwarteschlangentiefe“ für eine Steuerung zu einem bestimmten Zeitpunkt eine Gesamtzahl von Schreibanforderungen (z. B. Zielanforderungen) sein, die von der Steuerung an einen SCM-Lesecache (oder ein anderes SCM-Gerät) ausgegeben werden zum angegebenen Zeitpunkt ausstehend (dh vom Controller an den SCM-Lesecache ausgegeben und zum angegebenen Zeitpunkt noch nicht abgeschlossen oder als abgeschlossen gemeldet).
  • In den hier beschriebenen Beispielen kann ein „SCM-Warteschlangentiefenschwellenwert“ für einen Controller ein einstellbarer Schwellenwert sein, der sich auf eine SCM-Warteschlangentiefe für den Controller in Bezug auf einen SCM-Lesecache (oder ein anderes SCM-Gerät) bezieht (z. B. für diesen eingestellt ist). In solchen Beispielen kann sich ein Schwellenwert für die Tiefe der SCM-Warteschlange beispielsweise auf einen Schwellenwert für die Tiefe der SCM-Lesewarteschlange oder einen Schwellenwert für die Tiefe der SCM-Schreibwarteschlange beziehen. In den hier beschriebenen Beispielen kann ein „Schwellenwert für die Tiefe der SCM-Lesewarteschlange“ für eine Steuerung eine einstellbare Schwelle sein, die sich auf eine Tiefe der SCM-Lesewarteschlange für die Steuerung in Bezug auf einen SCM-Lesecache (oder ein anderes SCM-Gerät) bezieht (z. B. für diese festgelegt ist).. Ein „SCM-Schreibwarteschlangentiefenschwellenwert“ für eine Steuerung kann ein einstellbarer Schwellenwert sein, der sich auf eine SCM-Schreibwarteschlangentiefe für die Steuerung in Bezug auf einen SCM-Lesecache (oder ein anderes SCM-Gerät) bezieht (z. B. für diese festgelegt ist).
  • In einigen Beispielen können Anweisungen 121 einen einzelnen SCM-Warteschlangentiefenschwellenwert 138 der Steuerung 102 für den SCM-Lesecache 150 implementieren, und Befehle 124 können den einzelnen SCM-Warteschlangentiefenschwellenwert anpassen. In anderen Beispielen können Anweisungen 121 mehrere SCM-Warteschlangentiefenschwellenwerte der Steuerung 102 für den SCM-Lesecache 150 implementieren, wie beispielsweise eine SCM-Lesewarteschlangentiefenschwelle 137 der Steuerung 102 und eine SCM-Schreibwarteschlangentiefenschwelle 139 der Steuerung 102, jeweils für SCM-Lesecache 150. In solchen Beispielen können die Anweisungen 124 jeweils einen dieser Schwellenwerte selektiv einstellen (wie nachstehend in Bezug auf die 5B und 5C ausführlicher beschrieben). In solchen Beispielen können Anweisungen 124 die SCM-Lese-und Schreibwarteschlangentiefenschwellen 137 und 139 in abgestufter Weise anpassen. In anderen Beispielen können die Anweisungen 124 die SCM-Schwellenwerte 137 und 139 für die Lese- und Schreibwarteschlangentiefe gleichmäßig anpassen (z. B. beide gleichzeitig in die gleiche Richtung einstellen, um sie auf dem gleichen Wert zu halten).
  • In einigen Beispielen kann der SCM-Lesewarteschlangentiefenschwellenwert 137 der Steuerung 102 für den SCM-Lesecache 150 ein Schwellenwert sein, mit dem eine aktuelle SCM-Lesewarteschlangentiefe des Controllers 102 für den SCM-Lesecache 150 als Antwort auf eine Leseanforderung 180 verglichen werden kann Lesen der angeforderten Daten aus dem SCM-Lesecache 150. In einigen Beispielen kann der SCM-Schreibwarteschlangentiefenschwellenwert 139 der Steuerung 102 für den SCM-Lesecache ein Schwellenwert sein, mit dem eine aktuelle SCM-Schreibwarteschlangentiefe des Controllers 102 für den SCM-Lesecache 150 als Antwort auf eine Zielanforderung 180 zum Schreiben verglichen werden kann Bereinigen Sie die Daten vom Hauptcache 142 zum SCM-Lesecache 150. In Beispielen, in denen es einen einzelnen Schwellenwert für die Tiefe der SCM-Warteschlange des Controllers 102 für den SCM-Lesecache 150 gibt, eine aktuelle Tiefe der SCM-Warteschlange des Controllers 102 (z. B. die Tiefe der SCM-Lesewarteschlange, die Tiefe der SCM-Schreibwarteschlange oder eine Kombination aus beiden). kann mit der einzelnen SCM-Warteschlangentiefenschwelle der Steuerung 102 als Antwort entweder auf die oben beschriebene Leseanforderung 180 oder die Destage-Anforderung 180 verglichen werden. In den hier beschriebenen Beispielen kann eine „aktuelle“ SCM-Warteschlangentiefe eines Controllers, eines SCM-Lesecaches, der Wert dieser SCM-Warteschlangentiefe (z. B. SCM-Lesewarteschlangentiefe oder SCM-Schreibwarteschlangentiefe) des Controllers zum Zeitpunkt des Werts sein (z. B. von ausstehenden E/A-Vorgängen eines bestimmten Typs in den SCM-Lesecache 150) wird als Antwort auf eine E/A-Anforderung (die in den hier beschriebenen Beispielen eine „aktuelle“ Zeit sein kann) überprüft oder bestimmt.
  • Bei 315 des Verfahrens 300 können Befehle 126 (z. B. wenn sie von der Verarbeitungsressource 105 ausgeführt werden) eine E/A-Anforderung 180 der Steuerung 102 für den SCM-Lesecache 150 empfangen. Die E/A-Anforderung 180 kann eine Leseanforderung zum Lesen angeforderter Daten aus dem SCM-Lesecache 150 in den Hauptcache 142 oder eine Zielanforderung zum Schreiben von Daten vom Hauptcache 142 in den SCM-Lesecache 150 sein. In Antwort auf die E/A-Anforderung 180 können die Anweisungen 126 einen Typ der E/A-Anforderung 180 (z. B. eine Leseanforderung oder eine Zielanforderung) bestimmen und eine SCM-Warteschlangentiefe für die Steuerung 102 mit einer der mindestens eine SCM-Warteschlangentiefe vergleichen Schwelle für die Steuerung 102 (wie nachstehend in Bezug auf 6 ausführlicher beschrieben).
  • In den hier beschriebenen Beispielen können die Arten von E/A-Anforderungen (oder E/A) für den SCM-Lesecache 150 Leseanforderungen und Zielanforderungen umfassen. In einigen Beispielen können Leseanforderungen Anforderungen zum Lesen bestimmter angeforderter Daten aus dem SCM-Lesecache 150 basierend auf Host-E/A-Anforderungen an das Computergerät 100 sein, und Zielanforderungen können Zielanforderungen sein, die von der Steuerung 102 erzeugt werden (dh intern von der Steuerung 102 erzeugt werden und nicht zum Beispiel ein Host-Schreib-E/A). Beispielsweise kann ein Computergerät 100 eine Leseanforderung von einem vom Computergerät 100 getrennten Host-Computergerät über ein oder mehrere Computernetzwerke empfangen. In einigen Beispielen kann eine solche Host-Leseanforderung für bestimmte angeforderte Daten die Steuerung 102 dazu veranlassen, 180 anzufordern, dass die Anweisungen 126 einige oder alle angeforderten Daten aus dem SCM-Lesecache 150 lesen (z. B. wenn die angeforderten Daten nicht im Hauptcache 142 vorhanden sind ist aber im SCM-Lesecache vorhanden 150). Im Gegensatz dazu kann eine Destage-Anforderung 180 in den hier beschriebenen Beispielen intern von der Steuerung 102 erzeugt werden, wenn die Steuerung 102 feststellt, dass der Hauptcache 142 zu voll ist, und beschließt, beispielsweise saubere Daten vom Hauptcache 142 zum SCM-Lesecache 150 zu destagen. In den hier beschriebenen Beispielen kann ein Host ein beliebiges geeignetes Computergerät sein, das über ein oder mehrere Computernetzwerke mit dem Computergerät 100 kommunizieren kann. 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 umfassen dergleichen oder eine Kombination davon.
  • Wie oben erwähnt, können die Anweisungen 126 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 SCM-Warteschlangentiefe der Steuerung 102 für den SCM-Lesecache 150 mit einer vergleichen des mindestens einen SCM-Warteschlangentiefenschwellenwerts der Steuerung 102 (wie nachstehend in Bezug auf 6 ausführlicher beschrieben). In einigen Beispielen kann das Vergleichen einer SCM-Warteschlangentiefe des Controllers 102 mit dem Schwellenwert (den SCM-Warteschlangentiefen) des Controllers 102 das Vergleichen einer aktuellen Anzahl von E/A-Anforderungen (z. B. eines bestimmten Typs) umfassen, die vom Controller 102 ausgegeben werden und beim SCM-Lesen ausstehen Cache 150 auf einen der SCM-Warteschlangentiefenschwellenwerte der Steuerung 102.
  • In einigen Beispielen können Betriebsdaten 130 der Steuerung 102 eine SCM-Lesewarteschlangentiefe 135 der Steuerung 102 für den SCM-Lesecache 150 (z. B. eine Anzahl ausstehender Leseanforderungen, die von der Steuerung 102 an den SCM-Lesecache 150 ausgegeben werden) und einen SCM-Schreibvorgang enthalten Warteschlangentiefe 136 der Steuerung 102 für den SCM-Lesecache 150 (z. B. eine Anzahl ausstehender Schreibanforderungen, die von der Steuerung 102 an den SCM-Lesecache 150 ausgegeben wurden). In solchen Beispielen können Anweisungen 126 als Antwort auf die E/A-Anforderung 180 den Typ der E/A-Anforderung 180 bestimmen. Wenn die E/A-Anforderung 180 eine Leseanforderung ist, können die Anweisungen 126 die aktuelle SCM-Lesewarteschlangentiefe 135 der Steuerung 102 mit der SCM-Lesewarteschlangentiefenschwelle 137 der Steuerung 102 als Antwort auf die E/A-Anforderung 180 vergleichen. Wenn die E/A-Anforderung 180 eine Zielanforderung ist, können die Anweisungen 126 die aktuelle SCM-Schreibwarteschlangentiefe 136 des Controllers 102 mit dem SCM-Schreibwarteschlangentiefenschwellenwert 139 des Controllers 102 als Antwort auf die E/A-Anforderung 180 vergleichen.
  • Zurück zu FIG. In 3 können bei 320 die Befehle 126 (z. B. wenn sie von der Verarbeitungsressource 105 ausgeführt werden) basierend auf einem Typ der E/A-Anforderung 180 und einem Ergebnis des Vergleichs zwischen (1) der Verarbeitung der E/A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150 auswählen. (2) Löschen der E/A-Anforderung 180 und (3) Verarbeiten der E/A-Anforderung 180 ohne Verwendung des SCM-Lesecaches 150. In Reaktion auf die Auswahl können die Anweisungen 126 (bei 325 des Verfahrens 300) die ausgewählte Verarbeitung oder das Löschen der E/A-Anforderung 180 durchführen (wie nachstehend in Bezug auf 6 ausführlicher beschrieben). Basierend auf (i) einer Bestimmung, dass die E/A-Anforderung 180 eine Anforderung ist, Daten an den SCM-Lesecache 150 zu senden, und (ii) dem Ergebnis des Vergleichs, das angibt, dass die SCM-Schreibwarteschlangentiefe 136 des Controllers 102 größer als der SCM-Schreibvorgang ist Warteschlangentiefenschwelle 139 der Steuerung 102, Anweisungen 126 können auswählen, um die E/A-Anforderung 180 zu löschen. In Reaktion auf die Auswahl zum Löschen der E/A-Anforderung 180 können die Anweisungen 126 die Auswahl (bei 325 des Verfahrens 300) durchführen, einschließlich des Löschens der E/A-Anforderung 180, ohne die Daten (dh durch die Zielanforderung spezifiziert) in den SCM-Lesecache 150 oder zum Backend zu schreiben Lagerung 160.
  • In den hier beschriebenen Beispielen ist eine Anforderung zum Entsperren von Daten in den SCM-Lesecache 150 eine Anforderung zum Löschen sauberer Daten vom Hauptcache 142 zum SCM-Lesecache 150. In den hier beschriebenen Beispielen sind „saubere“ Daten im Hauptcache 142 Daten, für die gegenwärtig eine Kopie im Backend-Speicher 160 vorhanden ist (z. B. weil sie im Hauptcache 142 nicht geändert wurden, seit sie aus dem Backend-Speicher in den Hauptcache 142 gebracht wurden 160 oder weil es nicht geändert wurde, seit es in den Backend-Speicher gespült wurde 160). Für solche sauberen Daten im Hauptcache 142 existiert zum Zeitpunkt der Destage-Anforderung eine Kopie der sauberen Daten im Backend-Speicher 160. Im Gegensatz dazu sind „schmutzige“ Daten in einem Cache Daten, die nicht im Backend-Speicher vorhanden sind, da beispielsweise die Daten im Cache neu oder geändert sind und mit den Änderungen nicht in den Backend-Speicher verschoben wurden. In solchen Beispielen kann das Löschen einer Anforderung zum Löschen verschmutzter Daten zu Datenverlust führen (z. B. Verlust der Änderungen an den Daten). In den hier beschriebenen Beispielen bezieht sich die Destage-Anforderung jedoch auf das Destaging sauberer Daten vom Hauptcache 142 zum SCM-Lesecache 150, und wie oben erwähnt, sind die sauberen Daten bereits im Backend-Speicher 160 vorhanden, so dass das Löschen der Destage-Anforderung wahrscheinlich nicht resultieren würde bei jedem Datenverlust.
  • In den hier beschriebenen Beispielen kann eine Destage-Anforderung empfangen werden, wenn die Steuerung 102 festgestellt hat, dass der Hauptcache 142 zu voll ist und Speicherplatz im Hauptcache 142 freigegeben werden muss (z. B. durch Destaging der zuletzt verwendeten Daten oder dergleichen). In solchen Beispielen können die sauberen Daten vom Hauptcache 142 in den SCM-Lesecache 150 übertragen werden, wo sie zum späteren Lesen aus dem SCM-Lesecache 150 mit geringerer Latenz gehalten werden können, als wenn sie die Daten später aus dem Backend-Speicher 160 lesen würden Zeit. Während das Destaging in den SCM-Lesecache 150 beim späteren erneuten Lesen der Daten Zeit sparen kann, sind die potenziellen zukünftigen Einsparungen möglicherweise nicht die zusätzliche Belastung des SCM-Lesecaches 150 wert, um in den SCM-Lesecache 150 zu schreiben, um das Destage durchzuführen. Wenn beispielsweise der SCM-Lesecache 150 kürzlich Daten bei, über oder nahe einem Datenratenschwellenwert für den SCM-Lesecache 150 verarbeitet hat, kann die zusätzliche Last der Verarbeitung der Zielanforderung den Datenratenschwellenwert überschreiten und spätere E/A verursachen Führen Sie die Ausführung mit einer viel höheren Latenz aus, als wenn beispielsweise der Datenratenschwellenwert nicht überschritten würde. Daher kann es unter bestimmten Umständen vorzuziehen sein, eine Destage-Anfrage zu löschen.
  • Als solches können in den hierin beschriebenen Beispielen die Anweisungen 124 den SCM-Schreibwarteschlangentiefenschwellenwert 139 der Steuerung 102 für den SCM-Lesecache 150 basierend auf der repräsentativen E/A-Anforderungslatenz 131 zwischen der Steuerung 102 und dem SCM-Lesecache 150 anpassen, wie oben in Bezug auf beschrieben Anweisungen 122 können als repräsentative E/A-Anforderungslatenz 131 als Proxy für die kumulative Menge von Daten dienen, die von den Steuerungen 102 und 104 aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben werden. In solchen Beispielen können Anweisungen 126 auswählen, eine Zielanforderung zu löschen, wenn die aktuelle SCM-Schreibwarteschlangentiefe 136 des Controllers 102 für den SCM-Lesecache 150 größer ist als der aktuelle SCM-Schreibwarteschlangentiefenschwellenwert 139 des Controllers 102 für den SCM-Lesecache 150 in um eine Überlastung des SCM-Lesecaches 150 zu vermeiden und möglicherweise eine viel höhere Latenz für spätere E/A-Anforderungen zu verursachen. In solchen Beispielen können, wenn eine Zielanforderung verworfen wird, die sauberen Daten, die aus dem Hauptcache 142 entfernt werden sollten, im Hauptcache 142 freigegeben werden, ohne an anderer Stelle geschrieben zu werden (z. B. in den SCM-Lesecache 150 oder den Backend-Speicher 160).
  • Zurück zu 320 von Verfahren 300 von FIG. In 3 können Anweisungen 126 eine alternative Auswahl treffen, wenn unterschiedliche Kriterien erfüllt sind. Zum Beispiel basierend auf (i) einer Bestimmung, dass die E/A-Anforderung 180 eine Leseanforderung für angeforderte Daten ist, und (ii) dem Ergebnis des Vergleichs, das angibt, dass die SCM-Lesewarteschlangentiefe 135 der Steuerung 102 größer als der SCM-Lesewarteschlangentiefenschwellenwert ist In 137 der Steuerung 102 können die Anweisungen 126 auswählen, die E/A-Anforderung 180 zu verarbeiten, ohne den SCM-Lesecache 150 zu verwenden. Als Antwort können die Anweisungen 126 die Auswahl durchführen (bei 325 des Verfahrens 300), einschließlich des Umgehens des SCM-Lesecaches 150 und des Lesens der angeforderten Daten in den Hauptcache 142 des Controllers 102 aus einem anderen Speicher (z. B. mindestens einem des Backend-Speichers 160 des Speichers) System 101 oder ein entferntes Computergerät). In anderen Beispielen treffen die Anweisungen 126 weitere Bestimmungen (z. B. basierend auf dem Ort und der Verwendung eines anderen Speichers, aus dem die angeforderten Daten gelesen werden würden) und entscheiden, ob der SCM-Lesecache 150 teilweise auch aufgrund dieser weiteren Bestimmung umgangen werden soll.
  • In solchen Beispielen kann das Lesen aus dem SCM-Lesecache 150 im Allgemeinen eine geringere Latenz aufweisen als das Lesen aus dem Backend-Speicher 160 (wie oben beschrieben), aber wenn die Datenrate, die der SCM-Lesecache 150 erfährt, den Datenratenschwellenwert überschreitet, werden nachfolgende E/A zum SCM-Lesen Der Cache 150 kann, wie oben beschrieben, erheblich höhere Latenzen aufweisen. Als solche können die Anweisungen 126 den SCM-Lesecache 150 umgehen und direkt aus dem Backend-Speicher 160 lesen, wenn ein aktueller Schwellenwert 137 für die SCM-Lesewarteschlangentiefe 137 des Controllers 102 für den SCM-Lesecache 150 von der aktuellen SCM-Lesewarteschlangentiefe 135 des Controllers 102 für SCM überschritten wird Lese-Cache 150, wobei der Schwellenwert 137 für die SCM-Lesewarteschlange 137 basierend auf der repräsentativen E/A-Anforderungslatenz 131 wie oben beschrieben angepasst wird. In solchen Beispielen kann das Steuern des SCM-Lesewarteschlangentiefenschwellenwerts und das selektive Umgehen des SCM-Lesecaches 150 basierend auf diesem Schwellenwert die Datenrate, die der SCM-Lesecache 150 erfährt, vorteilhaft unter dem Datenratenschwellenwert halten.
  • Zurück zu 320 von FIG. In 3 können Anweisungen 126 eine weitere Auswahl treffen, wenn unterschiedliche Kriterien erfüllt sind. Basierend auf (i) einer Bestimmung, dass die E/A-Anforderung 180 eine Anforderung ist, Daten an den SCM-Lesecache 150 zu senden, und (ii) dem Ergebnis des Vergleichs, das angibt, dass die SCM-Schreibwarteschlangentiefe 160 der Steuerung 102 für das SCM-Lesen ist Der Cache 150 ist nicht größer als der Schwellenwert 139 der SCM-Schreibwarteschlangentiefe des Controllers 102, Anweisungen 126 können auswählen, um die E/A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150 zu verarbeiten. In Reaktion auf die Auswahl können Anweisungen 126 (bei 325 des Verfahrens 300) die durch die Zielanforderung 180 spezifizierten Daten vom Hauptcache 142 zum SCM-Lesecache 150 zerstören (z. B. schreiben).
  • In einigen Beispielen können Anweisungen 126 noch eine weitere Auswahl treffen, wenn unterschiedliche Kriterien erfüllt sind. Zum Beispiel basierend auf (i) einer Bestimmung, dass die E/A-Anforderung 180 eine Leseanforderung zum Lesen angeforderter Daten aus dem SCM-Lesecache 150 ist, und (ii) dem Ergebnis des Vergleichs, das angibt, dass die SCM-Lesewarteschlangentiefe 135 der Steuerung 102 für das SCM-Lesen Der Cache 150 ist nicht größer als der Schwellenwert 137 der SCM-Lesewarteschlange der Steuerung 102 für den SCM-Lesecache 150, Anweisungen 126 können auswählen, um die E/A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150 zu verarbeiten. Basierend auf der Auswahl können die Anweisungen 126 (bei 325 des Verfahrens 300) die angeforderten Daten aus dem SMC-Lesecache 150 in den Hauptcache 142 lesen.
  • Beispiele, die oben in Bezug auf das Verfahren 300 von 3 wird nun nachstehend in Bezug auf die Beispiele der 1 und 2 ausführlicher beschrieben. 5A, 5B und 5C. 5A ist ein Flussdiagramm eines beispielhaften Verfahrens 500A, das das Anpassen eines Schwellenwerts für die SCM-Warteschlangentiefe basierend auf einer repräsentativen E/A-Anforderungslatenz und einem E/A-Anforderungslatenzschwellenwert umfasst. 5B ist ein Flussdiagramm eines beispielhaften Verfahrens 500B, das das selektive Verringern eines Schwellenwerts für die Tiefe der SCM-Schreibwarteschlange und eines Schwellenwerts für die Tiefe der SCM-Lesewarteschlange einer Steuerung umfasst. 5C ist ein Flussdiagramm eines beispielhaften Verfahrens 500C, das das selektive Erhöhen eines Schwellenwerts für die Tiefe der SCM-Schreibwarteschlange und eines Schwellenwerts für die Tiefe der SCM-Lesewarteschlange einer Steuerung umfasst. Obwohl die Ausführung der Verfahren 500A, 500B und 500C nachstehend unter Bezugnahme auf die Rechenvorrichtung 100 von 1 beschrieben wird. In 1 können andere für die Ausführung dieser Verfahren geeignete Rechenvorrichtungen verwendet werden. Darüber hinaus ist die Implementierung dieser Methoden nicht auf solche Beispiele beschränkt. Obwohl die Flussdiagramme der 5A - 5C zeigen jeweils eine bestimmte Leistungsreihenfolge bestimmter Funktionen, die Verfahren sind nicht auf diese Reihenfolge beschränkt. Beispielsweise können die in den Flussdiagrammen nacheinander gezeigten Funktionen in einer anderen Reihenfolge ausgeführt werden, gleichzeitig oder mit teilweiser Übereinstimmung oder einer Kombination davon ausgeführt werden.
  • Wie oben in Bezug auf die Fign. In den 1 und 3 können die Befehle 122 eine repräsentative E/A-Anforderungslatenz 131 zwischen der Steuerung 102 und dem SCM-Lesecache 150 während eines gegebenen Zeitraums (bei 305 des Verfahrens 300) bestimmen, und die Anweisungen 124 können mindestens eine SCM-Warteschlangentiefenschwelle der Steuerung 102 einstellen (bei 310 des Verfahrens 300) als Antwort auf eine Feststellung, dass die repräsentative E/A-Anforderungslatenz 131 einen E/A-Anforderungslatenzschwellenwert 132 der Steuerung 102 für den SCM-Lesecache 150 überschreitet. In einigen Beispielen können diese Funktionen periodisch durch einen Hintergrundprozess (oder Thread) ausgeführt werden, der zumindest teilweise durch die Anweisungen 122 und 124 implementiert ist. Die oben in Bezug auf 305 und 310 von 3 kann nachstehend in Bezug auf die 1 und 2 ausführlicher beschrieben werden. 5A-5C.
  • Bezugnehmend auf FIG. In 5A kann das Verfahren 500A bei 505 beginnen, wobei die Anweisungen 122 bestimmen können, ob eine Zeitspanne verstrichen ist. Beispielsweise kann ein Hintergrundprozess (wie oben erwähnt) periodisch das Bestimmen einer repräsentativen E/A-Anforderungslatenz und das selektive Anpassen der SCM-Warteschlangentiefenschwelle (n) durchführen. In dem Beispiel von FIG. In 5A kann die Bestimmung und selektive Anpassung am Ende jeder von mehreren aufeinanderfolgenden Zeitperioden durchgeführt werden. Solche Zeiträume können jeweils eine feste Zeitdauer sein, wie beispielsweise etwa 100 Millisekunden (oder eine andere geeignete Zeitdauer). In solchen Beispielen können Befehle 122 während jeder der Zeitperioden (dh während die Zeitperiode nicht verstrichen ist) die Gesamtmenge von Daten akkumulieren, die während der Zeitspanne von der Steuerung 102 aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurden, die Gesamtsumme Anzahl der von der Steuerung 102 an den SCM-Lesecache 150 ausgegebenen E/A-Anforderungen, die während des Zeitraums abgeschlossen wurden, und die gesamte Latenz der E/A-Anforderungen der E/A-Anforderungen, die vom SCM-Lesecache 150 während des Zeitraums abgeschlossen wurden. Dies kann beispielsweise durchgeführt werden, indem zu jedem dieser Summen jedes Mal hinzugefügt wird, wenn eine E/A-Anforderung durch den SCM-Lesecache 150 abgeschlossen wird.
  • Zum Beispiel bei 505 des Verfahrens 500A von FIG. In 5A kann, wenn die aktuelle Zeitperiode nicht abgelaufen ist („NEIN“ bei 505), das Verfahren 500A mit 510 fortfahren, wobei die Anweisungen 122 bestimmen können, ob eine ausstehende E/A-Anforderung, die von der Steuerung 102 an den SCM-Lesecache 150 ausgegeben wurde, abgeschlossen ist. Wenn der SCM-Lesecache 150 keine ausstehende E/A-Anforderung von der Steuerung 102 abgeschlossen hat („NEIN“ bei 510), können die Anweisungen 122 zu 505 zurückkehren, um zu bestimmen, ob die aktuelle Zeitspanne abgelaufen ist.
  • Wenn der SCM-Lesecache 150 eine ausstehende E/A-Anforderung von der Steuerung 102 neu abgeschlossen hat („JA“ bei 510), können die Anweisungen 122 die Gesamtmenge der Daten erhöhen, die von der Steuerung 102 in der aktuellen Zeitperiode aus der SCM-Lesecache 150 gelesen und in diese geschrieben werden basierend auf der Größe der abgeschlossenen E/A-Anforderung (dh durch Hinzufügen der von der E/A-Anforderung gelesenen oder geschriebenen Datenmenge). Beispielsweise können bei 515 für jede E/A-Anforderung von der Steuerung 102, die durch den SCM-Lesecache 150 neu abgeschlossen wird (dh nicht bereits zum Erhöhen der Gesamtdatenmenge verwendet wird), die Anweisungen 122 die gelesene und/oder geschriebene Datenmenge hinzufügen durch die abgeschlossene E/A-Anforderung an eine laufende Gesamtmenge von Daten 133 für den aktuellen Zeitraum. Bei 518 können die Anweisungen 122 für jede E/A-Anforderung von der Steuerung 102, die durch den SCM-Lesecache 150 neu abgeschlossen wurde (dh nicht bereits zum Erhöhen der E/A-Anforderung oder der Latenzsummen verwendet wird), (i) die laufende Gesamtzahl 134 der E/A-Anforderungen erhöhen abgeschlossen durch den SCM-Lesecache 150 in der aktuellen Zeitperiode, und (ii) Hinzufügen der E/A-Anforderungslatenz der neu abgeschlossenen E/A-Anforderung zu einer laufenden Gesamt-E/A-Anforderungslatenz für die aktuelle Zeitperiode (dh der gesamten E/A-Anforderungslatenz für alle solche) E/A-Anforderungen, die vom SCM-Lesecache 150 für die Steuerung 102 in der aktuellen Zeitspanne abgeschlossen wurden). In einigen Beispielen können jeweils die Gesamtmenge der Daten 133, die Gesamtzahl 134 der E/A-Anforderungen und die Gesamtlatenz der E/A-Anforderung als Betriebsdaten 130 der Steuerung 102 gespeichert werden (siehe z. B. 4). Nach angemessenem Erhöhen der Gesamtmenge von Daten 133, der Gesamtzahl 134 von E/A-Anforderungen und der Gesamtlatenz von E/A-Anforderungen bei 515 und 518 können die Anweisungen 122 zu 505 zurückkehren, um zu bestimmen, ob der aktuelle Zeitraum abgelaufen ist. In solchen Beispielen können Befehle 122 durch wiederholtes Ausführen von 510, 515 und 518, während die Zeitspanne nicht abgelaufen ist (bei 505), die Gesamtmenge der Daten 133 akkumulieren, die aus dem SCM-Lesecache 150 gelesen und über IO-Anforderungen geschrieben wurden, die von der Steuerung ausgegeben wurden 102 während des Zeitraums die gesamte E/A-Anforderungslatenz für E/A-Anforderungen akkumulieren, die vom SCM-Lesecache 150 während des Zeitraums abgeschlossen wurden, und die Gesamtzahl 134 der E/A-Anforderungen des Controllers 102 akkumulieren, die vom SCM-Lesecache 150 während des Zeitraums abgeschlossen wurden. Die Anweisungen 122 können die Latenz der E/A-Anforderung für jede abgeschlossene E/A-Anforderung wie oben beschrieben bestimmen. In einigen Beispielen kann die Steuerung 102 mehrere verschiedene Threads ausführen, die aus dem SCM-Lesecache 150 lesen und in diesen schreiben können (z. B. einen oder mehrere Lesethreads und einen Zielthread). In solchen Beispielen können Anweisungen 122 die Gesamtmenge an Daten, Latenz und Anzahl von E/A-Anforderungen, wie oben beschrieben, für alle diese Threads akkumulieren (z. B. indem die akkumulierten Summen auf jeder E/A-Anforderung basieren, die durch den SCM-Lesecache 150 abgeschlossen wurde)..
  • Bei 505 kann das Verfahren 500A nach Ablauf der aktuellen Zeitperiode (z. B. am Ende der aktuellen 100-ms-Zeitspanne) („JA“ bei 505) mit 520 fortfahren, wo die Anweisungen 124 bestimmen können, ob der E/A-Anforderungslatenzschwellenwert 132 bestimmt der Steuerung 102 für den SCM-Lesecache 150 wird in dem Zeitraum überschritten, basierend auf der akkumulierten Gesamtlatenz in dem Zeitraum und der akkumulierten Gesamtzahl abgeschlossener E/A-Anforderungen in dem Zeitraum. Beispielsweise können Anweisungen 122 eine repräsentative E/A-Anforderungslatenz 131 bestimmen, wie beispielsweise eine durchschnittliche E/A-Anforderungslatenz 131 basierend auf einem Ergebnis der Division der akkumulierten Gesamtlatenz in dem Zeitraum durch die akkumulierte Gesamtzahl abgeschlossener E/A-Anforderungen in dem Zeitraum. In solchen Beispielen können die Anweisungen 124 bei 520 bestimmen, ob die repräsentative E/A-Anforderungslatenz 131 den E/A-Anforderungslatenzschwellenwert 132 der Steuerung 102 überschreitet.
  • Basierend auf der Bestimmung bei 520 können die Anweisungen 124 mindestens einen SCM-Warteschlangentiefenschwellenwert der Steuerung 102 für den SCM-Lesecache 150 anpassen. Wenn beispielsweise die Anweisungen 124 bestimmen, dass die repräsentative E/A-Anforderungslatenz 131 für den Zeitraum den E/A-Anforderungslatenzschwellenwert 132 der Steuerung 102 überschreitet („JA“ bei 520), können die Anweisungen 124 bei 530 als Antwort mindestens einen SCM verringern Warteschlangentiefenschwelle der Steuerung 102 für den SCM-Lesecache 150. Das Verfahren 500A kann dann mit 550 fortfahren, wobei die Anweisungen 122 (i) die Gesamtmenge der Daten 133 für den Zeitraum auf Null zurücksetzen können (in Vorbereitung auf den nächsten Zeitraum), (ii) die Gesamtzahl der in abgeschlossenen E/A-Anforderungen zurücksetzen können den Zeitraum auf Null (in Vorbereitung auf den nächsten Zeitraum), (iii) die gesamte E/A-Anforderungslatenz für den Zeitraum auf Null zurücksetzen (in Vorbereitung auf den nächsten Zeitraum), (iv) den nächsten Zeitraum starten, (v) und (bei 505) beginnen erneut, das Verfahren 500A für den nächsten Zeitraum (z. B. den nächsten Zeitraum von 100 ms) durchzuführen.
  • In anderen Beispielen können, wenn Anweisungen 124 bestimmen, dass die repräsentative E/A-Anforderungslatenz 131 für den Zeitraum den E/A-Anforderungslatenzschwellenwert 132 der Steuerung 102 nicht überschreitet („NEIN“ bei 520), als Antwort bei 540 die Anweisungen 124 bei erhöhen Mindestens ein SCM-Warteschlangentiefenschwellenwert der Steuerung 102 für den SCM-Lesecache 150. Das Verfahren 500A kann dann mit 550 fortfahren, wobei die Anweisungen 122 die oben in Bezug auf 550 beschriebenen Funktionen ausführen können. Obwohl hierin Beispiele im Zusammenhang mit einer Zeitspanne von 100 ms beschrieben werden, können andere geeignete Zeitperioden verwendet werden. In den hier beschriebenen Beispielen kann es einen Kompromiss zwischen kürzeren Intervallen (z. B. 10 ms, die eine häufigere Rückmeldung über die kürzlich beobachtete Datenübertragungsrate liefern, aber auch mehr Ressourcen verbrauchen können) und längeren Intervallen (z. B. 1) geben zweitens, was möglicherweise weniger Ressourcen verbraucht, aber auch weniger häufiges Feedback liefert und anfälliger für Verzerrungen durch vorübergehende Datenübertragungsstöße ist). 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 Computergeräte-Ressourcen zunehmen.
  • Unter erneuter Bezugnahme auf FIG. In 5A können in Beispielen, in denen es einen SCM-Warteschlangentiefenschwellenwert der Steuerung 102 für den SCM-Lesecache 150 gibt, die Anweisungen 124 diesen einen SCM-Warteschlangentiefenschwellenwert bei 540 des Verfahrens 500A erhöhen und diesen einen SCM-Warteschlangentiefenschwellenwert bei 530 von verringern Methode 500A. In anderen Beispielen, in denen es mehrere Schwellenwerte für die SCM-Warteschlangentiefe der Steuerung 102 für den SCM-Lesecache 150 gibt und diese mehreren Schwellenwerte für die Tiefe der SCM-Warteschlangentiefe durch die Anweisungen 124 gleich behandelt werden (z. B. einen Schwellenwert für die Tiefe der SCM-Lesewarteschlange und eine Tiefe für die SCM-Schreibwarteschlange Schwellenwert) können die Befehle 124 beide Schwellenwerte für die Tiefe der SCM-Warteschlange bei 540 des Verfahrens 500A erhöhen und beide Schwellenwerte für die Tiefe der SCM-Warteschlange bei 530 des Verfahrens 500A verringem. In anderen Beispielen können Anweisungen 121 einen SCM-Leseschlangen-Tiefenschwellenwert 137 und einen anderen SCM-Schreibwarteschlangentiefenschwellenwert 139 implementieren, und Befehle 124 können sie unterschiedlich einstellen. In einigen Beispielen können die Anweisungen 124 entweder den Schwellenwert 137 für die SCM-Lesewarteschlangentiefe 137 oder den Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 (aber nicht beide) bei 530 in einigen Beispielen verringern, und die Anweisungen 124 können entweder den Schwellenwert 137 für die Tiefe der SCM-Lesewarteschlange 137 oder den Schwellenwert 137 für die SCM-Lesewarteschlange erhöhen In einigen Beispielen wird der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 (aber nicht beide) bei 540 angegeben.
  • In einigen Beispielen können die Anweisungen 124 den Tiefenschwellenwert 137 für die SCM-Lesewarteschlange 137 und den Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 unterschiedlich und schrittweise einstellen, wie nachstehend in Bezug auf die 1 und 2 beschrieben. 5B und 5C. Zum Beispiel wird unter Bezugnahme auf FIG. In 5B kann das Verfahren 500B ein beispielhaftes Verfahren zum Implementieren des Blocks 530 des Verfahrens 500A sein (dh Verringern eines Schwellenwerts für die Tiefe der SCM-Warteschlange), bei dem ein Schwellenwert für die Tiefe der SCM-Lesewarteschlange und ein Schwellenwert für die Tiefe der SCM-Schreibwarteschlange schrittweise eingestellt werden. Beispielsweise können basierend auf den Anweisungen 124, die bestimmen, dass die repräsentative E/A-Anforderungslatenz 131 den E/A-Anforderungslatenzschwellenwert 132 der Steuerung 102 für den SCM-Lesecache 150 überschreitet („JA“ bei 520), die Anweisungen 124 zu 532 des Verfahrens 500B übergehen, wo die Anweisungen 124 können Bestimmen, ob der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 über einem ersten Mindestwert liegt (z. B. Null oder einem anderen geeigneten Wert). Wenn dies der Fall ist („JA“ bei 532), können die Anweisungen 124 bei 534 den Schwellenwert 139 für die SCM-Schreibwarteschlangentiefe verringern und dann mit 550 des Verfahrens 500A (von 5A) fortfahren. Wenn nicht („NEIN“ bei 532; dh der SCM-Schreibwarteschlangentiefenschwellenwert 139 hat den ersten Mindestwert), können die Anweisungen 124 bei 536 bestimmen, ob der SCM-Lesewarteschlangentiefenschwellenwert 137 über einem zweiten Mindestwert liegt (z. B. 10% von ein Standard- oder Maximalwert für den Schwellenwert für die Tiefe der SCM-Lesewarteschlange). Wenn dies der Fall ist („JA“ bei 536), können die Anweisungen 124 den Schwellenwert 137 für die SCM-Lesewarteschlange bei 538 verringern und dann mit 550 des Verfahrens 500A (von 5A) fortfahren. Wenn der Schwellenwert für die Tiefe der SCM-Lesewarteschlange 536 auch den ersten Mindestwert hat („NEIN“ bei 536), können die Anweisungen 124 weder den Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 noch den Schwellenwert für die Tiefe der SCM-Lesewarteschlange 137 bei 539 verringern und dann mit 550 des Verfahrens fortfahren 500A (von 5A).
  • In dem Beispiel von FIG. In 5B können die Anweisungen 124, wenn verschiedene Schwellenwerte für die Tiefe der SCM-Warteschlange schrittweise verringert werden, zuerst den Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 verringern, bis ein Minimalwert erreicht ist (z. B. 0 oder ein anderer geeigneter Minimalwert), und beginnen, die SCM-Lesewarteschlange zu verringern Tiefenschwelle 137 erst, nachdem die Tiefenschwelle 139 der SCM-Schreibwarteschlange den Mindestwert erreicht hat, und dann die Verringerung der Tiefenschwellen 137 und 139 der SCM-Warteschlange nicht mehr zu verringern, wenn beide ihre jeweiligen Mindestwerte erreichen (die gleich oder unterschiedlich sein können). Auf diese Weise können hier beschriebene Beispiele Lesevorgänge aus dem SCM-Lesecache 150 gegenüber Schreibvorgängen priorisieren, beispielsweise Zieloperationen zum Schreiben sauberer Daten aus dem Hauptcache 142 in den SCM-Lesecache 150. Durch Anpassen der Schwellenwerte für die SCM-Warteschlangentiefe auf diese Weise können Zieloperationen aggressiver gelöscht werden, als der SCM-Lesecache 150 für Leseoperationen umgangen wird. Dies kann in einigen Beispielen vorteilhaft sein, da beispielsweise eine gegenwärtige Leseoperation den Vorteil des Lesens mit geringerer Latenz aus dem SCM-Lesecache 150 (gegenüber einem Lesevorgang aus dem Backend-Speicher 160) sofort realisiert, während Destage-Operationen tatsächlich die gegenwärtigen Kosten verursachen Schreiben in den SCM-Lesecache 150, um die Möglichkeit bereitzustellen, zu einem späteren Zeitpunkt ein Lesen mit geringerer Latenz aus dem SCM-Lesecache 150 zu ermöglichen. Daher kann es vorteilhaft sein, Schreibvorgänge aggressiver zu löschen, als den SCM-Lesecache 150 für Lesevorgänge zu umgehen.
  • In den hier beschriebenen Beispielen kann ein SCM-Warteschlangentiefenschwellenwert um einen beliebigen geeigneten Betrag erhöht oder verringert werden, beispielsweise einen festen Betrag, einen festen Proportionalwert (z. B. 10% des aktuellen Werts des SCM-Warteschlangentiefenschwellenwerts) oder einen anderen geeigneten festen Wert oder variabler Betrag. In einigen Beispielen kann ein Schwellenwert für die SCM-Warteschlangentiefe des Controllers 102 um einen Betrag erhöht oder verringert werden, der auf dem Anteil der kumulierten Datenmenge basiert, die von allen Controllern (z. B. den Controllern 102 und 102) aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wird 104) in einem Zeitraum, der von der Steuerung 102 in dem Zeitraum gelesen und geschrieben wird. In einigen Beispielen kann ein definierter Standardanpassungsbetrag eingestellt werden (z. B. 10% des aktuellen Werts des SCM-Warteschlangentiefenschwellenwerts, der angepasst wird), und ein SCM-Warteschlangentiefenschwellenwert der Steuerung 102 kann um einen Anteil dieser definierten Anpassung eingestellt werden Betrag basierend auf dem Anteil der kumulierten Datenmenge, die von allen Steuerungen in einem Zeitraum, der von der Steuerung 102 in dem Zeitraum gelesen und geschrieben wird, aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wird. Wenn beispielsweise die Steuerung 102 für das Lesen und Schreiben von 1/4 der kumulierten Datenmenge in einem gegebenen Zeitraum verantwortlich ist, können die Anweisungen 124 einen Schwellenwert für die SCM-Warteschlangentiefe um 1/4 von 10% oder 2,5% des Stroms anpassen Wert des Schwellenwerts für die Tiefe einer SCM-Warteschlange der Steuerung 102.
  • Wie oben erwähnt, kann in den hier beschriebenen Beispielen die E/A-Anforderungslatenz als Proxy für (oder andere Anzeige) der kumulierten Datenmenge verwendet werden, die in einer bestimmten Zeit von dem SCM-Gerät gelesen und in dieses geschrieben wird (dh über E/A-Anforderungen) Zeitraum. Eine Steuerung, wie beispielsweise die Steuerung 102, kann auch die Gesamtmenge an Daten 133 bestimmen, die in dem gegebenen Zeitraum wie oben beschrieben aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurden. In solchen Beispielen kann die Steuerung 102 die E/A-Anforderungslatenz und ihre Gesamtdatenmenge 133 verwenden, um den Anteil der kumulierten Datenmenge zu bestimmen, der der Steuerung 102 zugeordnet werden kann.
  • Ein Beispiel einer solchen Bestimmung ist nachstehend in Bezug auf die 1 und 2 beschrieben. 2B und 2C, wobei 2C ist ein Graph 260 von beispielhaften SCM-Vorrichtungsleistungsdaten 202 von 1. 2A und veranschaulicht eine bestimmte Latenz 220 und eine geschätzte Datenmenge 224 gemäß einem Beispiel. Wie oben beschrieben, können die Anweisungen 122 eine repräsentative E/A-Anforderungslatenz 131 zwischen der Steuerung 102 und dem SCM-Lesecache 150 während eines gegebenen Zeitraums bestimmen. Beispielsweise können die Befehle 122 eine durchschnittliche E/A-Anforderungslatenz von 42 Mikrosekunden bestimmen, um die repräsentative E/A-Anforderungslatenz 131 für die Steuerung 102 in dem gegebenen Zeitraum zu sein. Diese ermittelte durchschnittliche E/A-Anforderungslatenz 131 ist in dem Diagramm 260 von 1 gezeigt. 2C als horizontale Linie 220. Wie oben beschrieben, können die Befehle 122 auch eine Gesamtmenge von Daten 133 bestimmen, die von der Steuerung 102 während des gegebenen Zeitraums aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben werden. Beispielsweise können die Anweisungen 122 die Gesamtmenge der Daten 133 für den gegebenen Zeitraum auf 160 MB bestimmen. Diese bestimmte Datenmenge ist in der Grafik 260 von 1 gezeigt. 2C als vertikale Linie 222.
  • Wie in FIG. In 2C ist die Datenmenge 222, die von der Steuerung 102 in dem gegebenen Zeitraum (z. B. 160 MB) aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurde (z. B. 160 MB), wahrscheinlich nicht groß genug, um die E/A-Anforderungslatenz in dem gegebenen Zeitraum zu verursachen in diesem Beispiel bis zur ermittelten E/A-Anforderungslatenz 220 von 42 Mikrosekunden ansteigen. Wenn die 160 MB alle Daten wären, die in dem gegebenen Zeitraum aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurden, kann eine E/A-Anforderungslatenz von ungefähr 16 Mikrosekunden basierend auf den beispielhaften Leistungsdaten 202 des Graphen 206 (z. B. basierend) erwartet werden wo sich die ermittelte Datenmenge 222 mit den Leistungsdaten 202 schneidet). Als solche lesen wahrscheinlich auch andere Controller aus dem SCM-Lesecache 150 in dem gegebenen Zeitraum (z. B. Controller 104) und/oder schreiben in diesen.
  • In einigen Beispielen können Anweisungen 124 eine geschätzte kumulative Menge von Daten bestimmen, die von allen Steuerungen (z. B. Steuerungen 102 und 104) während des gegebenen Zeitraums basierend auf der bestimmten repräsentativen E/A-Anforderung aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben werden Latenz 131 für den gegebenen Zeitraum und Leistungsdaten 202 für den SCM-Lesecache 150. Beispielsweise können die Anweisungen 124 eine Datenmenge bestimmen, die der bestimmten repräsentativen E/A-Anforderungslatenz 131 in den Leistungsdaten 202 für den SCM-Lesecache 150 entspricht, und diese Datenmenge als geschätzte kumulative Datenmenge 224 bestimmen, aus der gelesen und geschrieben wird zum SCM-Lese-Cache 150 von allen Controllern (z. B. Controllern 102 und 104) in dem gegebenen Zeitraum.
  • In solchen Beispielen können Anweisungen 124 eine Datenmenge in Leistungsdaten 202 basierend auf dem Wert der bestimmten repräsentativen E/A-Anforderungslatenz 131 für einen gegebenen Zeitraum bestimmen (z. B. lokalisieren). Wenn beispielsweise die Leistungsdaten 202 als Paare von diskreten Latenz- und Datenmengenwerten ausgedrückt werden (wie beispielsweise in der Tabelle von 2B gezeigt), können die Anweisungen 124 einen Latenzwert in den Leistungsdaten 202 finden, der dem am nächsten liegt Wert der repräsentativen E/A-Anforderungslatenz 131 für den gegebenen Zeitraum und Bestimmen der Datenmenge in den Leistungsdaten 202, die dem nächsten Latenzwert entspricht (z. B. gepaart mit diesem Latenzwert). Die Anweisungen 124 können dann die Datenmenge, die dem nächsten Latenzwert in den Leistungsdaten 202 entspricht, als eine geschätzte kumulative Datenmenge 224 für den gegebenen Zeitraum betrachten. In anderen Beispielen kann die geschätzte kumulative Datenmenge aus der repräsentativen E/A-Anforderungslatenz 131 und den Leistungsdaten 202 auf andere geeignete Weise bestimmt werden. Beispielsweise können einer oder beide der Latenz- und Datenwerte der Leistungsdaten 202 entsprechenden Bereichen (z. B. Rändern usw.) zugeordnet sein, oder einer oder beide der Latenz- und Datenwerte können als Bereiche ausgedrückt werden. In solchen Beispielen können die Anweisungen den Bereich finden, der den Wert der repräsentativen E/A-Anforderungslatenz 131 enthält, und die Datenmenge (oder den Bereich) bestimmen, die diesem Latenzwert oder Bereich entspricht (oder mit diesem gepaart ist). In solchen Beispielen können Anweisungen 124 die entsprechende Datenmenge (z. B. Wert, Bereich oder Wert im Bereich usw.) als geschätzte kumulative Datenmenge bestimmen.
  • Zurück zu dem oben in Bezug auf die 1 und 2 beschriebenen Beispiel. In den 2B und 2C kann die bestimmte repräsentative E/A-Anforderungslatenz 131 (z. B. eine durchschnittliche E/A-Anforderungslatenz zwischen der Steuerung 102 und dem SCM-Lesecache 150 für den gegebenen Zeitraum) 42 Mikrosekunden betragen, dargestellt durch die Zeile 220 in 1. 2C. Wie oben beschrieben, können Anweisungen 124 eine Datenmenge in Leistungsdaten 202 basierend auf dem Wert der bestimmten repräsentativen E/A-Anforderungslatenz 131 für den gegebenen Zeitraum bestimmen, die der Datenmenge 224 entsprechen kann (dargestellt durch eine vertikale Linie in einem Diagramm 260) an dem Punkt, der durch den Schnittpunkt 226 der repräsentativen E/A-Anforderungslatenz 131 (z. B. Leitung 220) und der Leistungsdaten 202 (wie in 2C dargestellt) dargestellt ist. In solchen Beispielen kann die geschätzte Datenmenge 224 ungefähr 490 MB betragen. Während 2C stellt eine visuelle Darstellung zur Veranschaulichung bereit, die Leistungsdaten können durch eine Tabelle 250 von diskreten Werten dargestellt werden, wie in 1 gezeigt. 2B oder dergleichen, wie oben beschrieben. In solchen Beispielen können Anweisungen 124 in Tabelle 250 der Leistungsdaten 202 einen Latenzwert 252 finden, der dem Wert der repräsentativen E/A-Anforderungslatenz 131 für den gegebenen Zeitraum am nächsten liegt. Wenn die repräsentative E/A-Anforderungslatenz 131 für den gegebenen Zeitraum 42 Mikrosekunden beträgt (wie oben beschrieben), können die Anweisungen 124 bestimmen, dass der nächste Latenzwert 252 in Tabelle 250 40 Mikrosekunden beträgt, und können 480 MB als Datenmenge in Leistungsdaten bestimmen 202, die dem nächsten Latenzwert entspricht (z. B. mit diesem gepaart ist). In solchen Beispielen können die Befehle 124 auf der Grundlage der repräsentativen E/A-Anforderungslatenz 131 und der Leistungsdaten 202 eine geschätzte kumulative Menge von Daten, die 224 aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wurden, in dem gegebenen Zeitraum auf 480 MB bestimmen.
  • Unter Verwendung dieses bestimmten Wertes können die Anweisungen 124 dann einen Betrag bestimmen, um mindestens einen SCM-Warteschlangentiefenschwellenwert des Controllers 102 basierend auf der Gesamtmenge der Daten 133 für den Controller 102 für den gegebenen Zeitraum und der geschätzten kumulierten Datenmenge 224 für den Controller 102 anzupassen gegebener Zeitraum. Beispielsweise können die Anweisungen 124 den Betrag bestimmen, um den Schwellenwert für mindestens eine SCM-Warteschlangentiefe so einzustellen, dass er ein Anteil eines definierten Anpassungsbetrags (wie oben beschrieben) ist, wobei der Anteil auf einem Verhältnis der Datenmenge 133 für die Steuerung basiert 102 für den gegebenen Zeitraum und die geschätzte kumulierte Datenmenge 224 für den gegebenen Zeitraum. In dem Beispiel von FIG. In 2B beträgt beispielsweise die Datenmenge 133 für die Steuerung 102 für den gegebenen Zeitraum 160 MB und die geschätzte kumulative Datenmenge 224 für den gegebenen Zeitraum beträgt 480, und das Verhältnis dieser Datenmenge 133 für die Steuerung 102 auf die geschätzte kumulative Datenmenge 224 beträgt 160/480 oder 1/3 (das heißt, die Steuerung 102 ist für 1/3 der Datenmenge verantwortlich, die in dem gegebenen Zeitraum aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wird). In solchen Beispielen können Anweisungen 124 den Betrag bestimmen, um den mindestens einen SCM-Warteschlangentiefenschwellenwert der Steuerung 102 so einzustellen, dass er ein Anteil eines definierten Anpassungsbetrags ist, der auf dem bestimmten Verhältnis basiert, das in diesem Beispiel 1/3 sein kann (dh das ermittelte Verhältnis) des definierten Anpassungsbetrags (10%), was in diesem Beispiel zu 1/3 * 10% oder einem Anpassungsbetrag von etwa 3,3% führen kann.
  • In solchen Beispielen können die Anweisungen 124 (z. B. bei 530 des Verfahrens 500A) den aktuellen Wert eines Schwellenwerts für die Tiefe der SCM-Warteschlange (z. B. einen Schwellenwert für die Tiefe der SCM-Lesewarteschlange oder einen Schwellenwert für die Tiefe der SCM-Schreibwarteschlange, siehe 5B) der Steuerung verringern 102 um etwa 3,3%. Auf diese Weise kann die Steuerung 102 ihre SCM-Warteschlangentiefenschwelle (n) basierend auf dem Anteil der kumulierten Datenmenge anpassen, die aus dem SCM-Lesecache 150 in einem Zeitraum gelesen und in diesen geschrieben wird, der der Steuerung 102 zugeordnet werden kann. Wie oben erwähnt, kann in einigen Beispielen die Steuerung 104 auch Anweisungen 121 enthalten, und die Verarbeitungsressource 107 kann diese Anweisungen 121 ausführen, um die hierin beschriebenen Funktionen in Bezug auf die Anweisungen 121 der Steuerung 102 auszuführen. In solchen Beispielen kann die Steuerung 104 auch ihre SCM-Warteschlangentiefenschwelle (n) basierend auf dem Anteil der kumulierten Datenmenge anpassen, die aus dem SCM-Lesecache 150 in einem Zeitraum gelesen und in diesen geschrieben wird, der der Steuerung 104 zugeordnet werden kann. In solchen Beispielen können die hier beschriebenen Beispiele die Last, die dem SCM-Lesecache 150 zwischen auferlegt wird, gerechter steuern, wobei die Steuerungen 102 und 104 jeweils ihre jeweiligen Schwellenwerte für die SCM-Warteschlangentiefe basierend auf dem Anteil der kumulierten Datenmenge verringern, für die sie jeweils verantwortlich sind Controller 102 und 104 als wenn ihre jeweiligen SCM-Warteschlangentiefenschwellenwerte unabhängig von den jeweiligen Belastungen, die sie auf den SCM-Erreichungscache 150 ausüben, gleichmäßig verringert würden.
  • Unter Bezugnahme auf FIG. In 5C kann das Verfahren 500C ein beispielhaftes Verfahren zum Implementieren des Blocks 540 des Verfahrens 500A sein (dh Erhöhen eines SCM-Warteschlangentiefenschwellenwerts), in dem der SCM-Leseschlangentiefenschwellenwert 137 und der SCM-Schreibwarteschlangentiefenschwellenwert 139 in abgestufter Weise eingestellt werden. Beispielsweise können basierend auf den Anweisungen 124, die bestimmen, dass die repräsentative E/A-Anforderungslatenz 131 den E/A-Anforderungslatenzschwellenwert 132 der Steuerung 102 für den SCM-Lesecache 150 („NEIN“ bei 520) nicht überschreitet, die Anweisungen 124 mit 542 des Verfahrens 500C fortfahren, wo Anweisungen 124 kann bestimmen, ob der Schwellenwert für die SCM-Lesewarteschlangentiefe 137 unter einem ersten Maximalwert liegt (z. B. ein Standardwert für den Schwellenwert für die Tiefe der SCM-Lesewarteschlange 137, wie 100, 500 oder ein anderer geeigneter Wert). Wenn dies der Fall ist („JA“ bei 542), können die Anweisungen 124 den Schwellenwert 137 für die SCM-Lesewarteschlange erhöhen und dann mit 550 des Verfahrens 500A (von 5A) fortfahren. Wenn nicht („NEIN“ bei 542; dh der SCM-Lesewarteschlangentiefenschwellenwert 137 hat den ersten Maximalwert), können die Befehle 124 bei 546 bestimmen, ob der SCM-Schreibwarteschlangentiefenschwellenwert 139 unter einem zweiten Maximalwert liegt, der der sein kann gleich oder verschieden von dem ersten Maximalwert (z. B. ein Standardwert für den Schwellenwert 139 für die SCM-Schreibwarteschlangentiefe, z. B. 100, 500 oder ein anderer geeigneter Wert). Wenn dies der Fall ist („JA“ bei 546), können die Anweisungen 124 den Schwellenwert 139 für die SCM-Schreibwarteschlangentiefe erhöhen und dann mit 550 des Verfahrens 500A (von 5A) fortfahren. Wenn nicht („NEIN“ bei 546; dh der SCM-Schreibwarteschlangentiefenschwellenwert 139 hat den zweiten Maximalwert), können die Anweisungen 124 bestimmen, weder den SCM-Lesewarteschlangentiefenschwellenwert 137 noch den SCM-Schreibwarteschlangentiefenschwellenwert 139 zu erhöhen.
  • In dem Beispiel von FIG. In 5C können die Befehle 124, wenn verschiedene Schwellenwerte für die Tiefe der SCM-Warteschlange 137 und 139 in einer abgestuften Weise erhöht werden, zuerst den Schwellenwert für die Tiefe der SCM-Lesewarteschlange 137 erhöhen, bis ein erster Maximalwert erreicht ist, und erst nach dem Lesen des SCM beginnen, den Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 zu erhöhen Der Schwellenwert für die Warteschlangentiefe 137 hat den ersten Maximalwert erreicht und hört dann auf, einen der Schwellenwerte für die SCM-Warteschlangentiefe 137 und 139 zu erhöhen, wenn beide ihre jeweiligen Maximalwerte erreichen (die gleich oder unterschiedlich sein können). Auf diese Weise können hier beschriebene 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.
  • In einigen Beispielen können Befehle 124 einen SCM-Warteschlangentiefenschwellenwert der Steuerung 102 um einen definierten Erhöhungsbetrag erhöhen, beispielsweise 5%. In solchen Beispielen kann jede der Steuerungen 102 und 104 den gleichen definierten Erhöhungsbetrag (z. B. 5%) verwenden, um die SCM-Warteschlangentiefenschwelle (n) zu erhöhen, wie oben in Bezug auf 540 von 1 beschrieben. 5A und Verfahren 500C von 5C. In anderen Beispielen können Anweisungen 124 einen SCM-Warteschlangentiefenschwellenwert der Steuerung 102 um einen Betrag erhöhen, der auf dem Anteil der kumulierten Datenmenge basiert, die von allen Steuerungen (z. B. Steuerungen 102 und 104) aus dem SCM-Lesecache 150 gelesen und in diesen geschrieben wird) in einem Zeitraum, der von der Steuerung 102 in dem Zeitraum gelesen und geschrieben wird, wie oben in Bezug auf die Bestimmung der Beträge der Schwellenwerte für die Tiefe der SCM-Warteschlangentiefe beschrieben.
  • In solchen Beispielen können Anweisungen 124 eine geschätzte kumulative Menge von Daten 224 bestimmen, die von allen Controllern (z. B. Controllern 102 und 104) während des gegebenen Zeitraums gelesen und in den SCM-Lesecache 150 geschrieben werden, basierend auf der bestimmten repräsentativen E/A-Anforderungslatenz 131 für die gegebener Zeitraum und Leistungsdaten 202 für den SCM-Lesecache 150. In solchen Beispielen können Anweisungen 124 einen Betrag bestimmen, um den Schwellenwert 137 für die SCM-Lesewarteschlangentiefe 137 oder den Schwellenwert 139 für die SCM-Schreibwarteschlangentiefe zu erhöhen, um ein Anteil (z. B. 1/3) eines definierten Anpassungsbetrags (z. B. 10%), des Anteils, zu sein basierend auf einem Verhältnis der Gesamtdatenmenge 133 für die Steuerung 102 in dem gegebenen Zeitraum und der geschätzten kumulierten Datenmenge 224 in dem gegebenen Zeitraum, wie oben beschrieben.
  • Wie oben in Bezug auf 315, 320 und 325 von FIG. In 3 können als Antwort auf eine E/A-Anforderung 180 die Anweisungen 126 (bei 320) wählen zwischen (1) Verarbeiten der E/A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150, (2) Löschen der E/A-Anforderung 180 und (3) Verarbeiten der E/A-Anforderung 180 ohne Verwendung des SCM-Lesecaches 150, basierend auf einem Typ der E/A-Anforderung 180 und einem Ergebnis eines Vergleichs (bei 315), und kann (bei 325) die ausgewählte Verarbeitung oder das Löschen als Antwort auf die Auswahl durchführen. In einigen Beispielen können diese Funktionen von einem E/A-Prozess (oder Thread) ausgeführt werden (z. B. zumindest teilweise durch Anweisungen 126 implementiert), der sich von dem oben beschriebenen Hintergrundprozess (oder Thread) unterscheidet (z. B. zumindest implementiert in) Teil durch Anweisungen 122 und 124). Der E/A-Prozess kann beispielsweise ein Prozess zum Implementieren des adaptiven Zwischenspeicherns von Daten in der Rechenvorrichtung 100 sein.
  • Die oben in Bezug auf 315, 320 und 325 von 3 kann nachstehend in Bezug auf die 1 und 2 ausführlicher beschrieben werden. 1 und 6, wobei 6 ist ein Flussdiagramm eines beispielhaften Verfahrens 600, das die Auswahl umfasst, ob eine E/A-Anforderung unter Verwendung eines SCM-Lesecaches verarbeitet werden soll. Obwohl die Ausführung des Verfahrens 600 nachstehend unter Bezugnahme auf die Rechenvorrichtung 100 von 1 beschrieben wird. In 1 können andere für die Ausführung dieses Verfahrens geeignete Rechenvorrichtungen verwendet werden. Darüber hinaus ist die Implementierung dieser Methoden nicht auf solche Beispiele beschränkt. Obwohl das Flussdiagramm von 6 zeigt eine bestimmte Reihenfolge der Leistung bestimmter Funktionen, das Verfahren ist nicht auf diese Reihenfolge beschränkt. Beispielsweise können die im Flussdiagramm nacheinander gezeigten Funktionen in einer anderen Reihenfolge ausgeführt werden, gleichzeitig oder mit teilweiser Übereinstimmung oder einer Kombination davon ausgeführt werden.
  • Bezugnehmend auf FIG. In 6 kann das Verfahren 600 bei 605 beginnen, wobei die Anweisungen 126 eine E/A-Anforderung 180 für den SCM-Lesecache 150 empfangen können. Bei 610 können die Anweisungen 126 bestimmen, ob die E/A-Anforderung 180 eine Leseanforderung oder eine Zielanforderung ist. In Reaktion auf eine Feststellung, dass die E/A-Anforderung 180 eine Leseanforderung für angeforderte Daten ist („READ“ bei 610), können die Anweisungen 126 bei 625 bestimmen, ob eine SCM-Lesewarteschlangentiefe 135 der Steuerung 102 für den SCM-Lesecache 150 (z. B. a Die aktuelle Anzahl ausstehender Lese-E/A des Controllers 102 für den SCM-Lesecache 150) ist größer als ein Schwellenwert für die Tiefe der SCM-Lesewarteschlange 137 des Controllers 102 für den SCM-Lesecache 150. Wenn dies der Fall ist („JA“ bei 625), können die Anweisungen 126 bei 630 den SCM-Lesecache 150 umgehen und die angeforderten Daten aus dem BackEnd-Speicher 160 (oder einem anderen Speicher, wie z. B. Speichergeräten eines entfernten Knotens oder Arrays) lesen Hauptcache 142 (und ohne die angeforderten Daten aus dem SCM-Lesecache 150 zu lesen), wie oben beschrieben, und fahren Sie dann mit 605 fort, um auf eine nachfolgende E/A-Anforderung für den SCM-Lesecache 150 zu warten. In anderen Beispielen können weitere Bestimmungen bei 630 vorgenommen 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) fortgefahren werden soll, wie nachstehend ausführlicher beschrieben wird. Wenn die SCM-Lesewarteschlangentiefe 135 des Controllers 102 für den SCM-Lesecache 150 (z. B. eine aktuelle Anzahl ausstehender Lese-E/A des Controllers 102 für den SCM-Lesecache 150) nicht größer als der Schwellenwert 137 für die SCM-Lesewarteschlangentiefe 137 ist („NEIN“ bei 625), dann können bei 635 die Anweisungen 126 die E/A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150 ausführen, was in diesem Beispiel das Lesen der angeforderten Daten (der Leseanforderung 180) aus dem SCM-Lesecache 150 in den Hauptcache 142 der Steuerung 102 umfassen kann. Wie oben beschrieben, kann die Leseanforderung 180 für angeforderte Daten durch eine Host-Leseanforderung ausgelöst werden (z. B. eine Leseanforderung von einem Host-Computergerät, das von dem Computergerät 100 für mindestens die angeforderten Daten getrennt ist). In einigen Beispielen kann der Hauptcache 142 einen flüchtigen Speicher umfassen, wie oben beschrieben.
  • Zurück zu 610 des Verfahrens 600 als Antwort auf eine Feststellung, dass die E/A-Anforderung 180 eine Destage-Anforderung ist („DESTAGE“ bei 610), können die Anweisungen 126 bei 615 bestimmen, ob eine SCM-Schreibwarteschlangentiefe 136 der Steuerung 102 (z. B. ein Strom) Die Anzahl der ausstehenden Schreib-E/A des Controllers 102 für den SCM-Lesecache 150) ist größer als ein Schwellenwert für die Tiefe der SCM-Schreibwarteschlange 139 des Controllers 102 für den SCM-Lesecache 150. Wenn dies der Fall ist („JA“ bei 615), können die Anweisungen 126 bei 620 die E/A-Anforderung 180 (dh die Zielanforderung 180) wie oben beschrieben löschen, das Destaging der Daten vom Hauptcache 142 zum SCM-Lesecache 150 überspringen und dann fortfahren bis 605, um auf eine nachfolgende E/A-Anforderung für den SCM-Lesecache 150 zu warten. In solchen Beispielen können Anweisungen 126 ermöglichen, dass die mit der Zielanforderung verbundenen Daten aus dem Hauptcache 142 entfernt werden, ohne die Daten an den SCM-Lesecache 150 zu senden. Wenn die Tiefe 136 der SCM-Schreibwarteschlange nicht größer als der Schwellenwert 139 der SCM-Schreibwarteschlangentiefe des Controllers 102 für den SCM-Lesecache 150 ist („NEIN“ bei 615), können die Anweisungen 126 bei 635 die E/A-Anforderung 180 unter Verwendung des SCM-Lesecaches 150 ausführen. Dies kann in diesem Beispiel das Auslagern von Daten vom Hauptcache 142 in den SCM-Lesecache 150 umfassen, einschließlich des Schreibens der mit der Auslagerungsanforderung verbundenen Daten in den SCM-Lesecache 150, und dann mit 605 fortfahren, um auf eine nachfolgende E/A-Anforderung für den SCM-Lesecache 150 zu warten. Wie oben beschrieben, kann eine Zielanforderung 180 eine Anforderung sein, die intern von der Rechenvorrichtung 100 erzeugt wird, um saubere Daten vom Hauptcache 142 in den SCM-Lesecache 150 zu speichern.
  • In einigen Beispielen können die Anweisungen 126 die Anzahl der ausstehenden Lese-E/A des Controllers 102 für den SCM-Lesecache 150 als SCM-Lesewarteschlangentiefe 135 und die Anzahl der ausstehenden Schreib-E/A des Controllers 102 für den SCM-Lesecache 150 als SCM-Schreibwarteschlangentiefe beibehalten 136. In solchen Beispielen können Anweisungen 126 diese Nummern beibehalten, indem sie beispielsweise die Anzahl ausstehender Lese-E/A jedes Mal erhöhen, wenn eine Lese-E/A-Anforderung der Steuerung 102 an den SCM-Lesecache 150 (z. B. an einen Gerätetreiber für ein SCM-Gerät) ausgegeben wird Implementieren des SCM-Lesecaches 150) und Verringern dieser Zahl jedes Mal, wenn eine der Lese-E/A-Anforderungen der Steuerung 102 an den SCM-Lesecache 150 abgeschlossen ist (z. B. als abgeschlossen gemeldet wird). In ähnlicher Weise können Anweisungen 126 die Anzahl ausstehender Schreib-E/A jedes Mal erhöhen, wenn eine Schreib-E/A-Anforderung der Steuerung 102 an den SCM-Lese-Cache 150 (z. B. an einen Gerätetreiber für ein SCM-Gerät, das den SCM-Lese-Cache 150 implementiert) ausgegeben wird, und verringern diese Nummer jedes Mal, wenn eine der Schreib-E/A-Anforderungen der Steuerung 102 an den SCM-Lesecache 150 abgeschlossen ist (z. B. als abgeschlossen gemeldet). In anderen Beispielen können Anweisungen 126 diese Zahlen auf jede andere geeignete Weise bestimmen. In einigen hier beschriebenen Beispielen kann der Vergleich einer aktuellen SCM-Warteschlangentiefe des Controllers 102 für den SCM-Lesecache 150 mit einem jeweiligen SCM-Warteschlangentiefenschwellenwert des Controllers 102 durch Empfangen einer E/A-Anforderung 180 (z , eine Lese- oder Zielanforderung) für den SCM-Lesecache 150. In solchen Beispielen kann die E/A-Anforderung 180 durch den E/A-Prozess oder das Thread-Ausführungsverfahren 600 von 1 empfangen werden. 6 (z. B. der Prozess oder Thread, der zumindest teilweise durch Anweisungen 126 implementiert ist).
  • In anderen Beispielen kann der E/A-Prozess (oder Thread) selbst (z. B. Anweisungen 126) periodisch bestimmen, ob der Hauptcache 142 zu voll ist (z. B. zu wenig freien Speicherplatz hat) und bestimmen, das Destaging von Seite (n) auszulösen (z. zuletzt verwendete Seite (n) vom Hauptcache 142 zum SCM-Lesecache 150. In solchen Beispielen können die Anweisungen 126 als Reaktion auf eine Bestimmung, Daten aus dem SCM-Lesecache 150 des Hauptcaches 142 zu entfernen, einen ähnlichen Prozess wie den oben in Bezug auf das Verfahren 600 beschriebenen ausführen, wobei von 615 ausgegangen wird. Beispielsweise können als Reaktion auf die Bestimmung, Daten zu zerstören, die Anweisungen 126 die Daten vom Hauptcache 142 zum SCM-Lesecache 150 (bei 635) destagen, wenn die aktuelle SCM-Schreibwarteschlangentiefe 136 der Steuerung 102 nicht größer als die SCM-Schreibwarteschlange ist Tiefenschwelle 139 der Steuerung 102. In anderen Beispielen können Befehle 126 als Reaktion auf die Bestimmung, Daten zu zerstören, das Auslagern der Daten vom Hauptcache 142 zum SCM-Lesecache 150 (z. B. ähnlich zu 620) überspringen, wenn die aktuelle SCM-Schreibwarteschlangentiefe 136 der Steuerung 102 größer als ist SCM-Schreibwarteschlangentiefenschwelle 139 der Steuerung 102.
  • In einigen Beispielen kann es vorteilhafter sein, aus dem SCM-Lesecache 150 zu lesen, als aus dem Backend-Speicher 160 oder einem entfernten Knoten (z. B. einem anderen Speicherarray), selbst wenn die Anweisungen 126 bestimmen, dass die SCM-Lesewarteschlangentiefe 135 der Steuerung 102 ist größer als der Schwellenwert für die Tiefe der SCM-Lesewarteschlange 137. 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 Speichergeräten gelesen werden, die lokal auf dem Computergerät sind, einschließlich des SCM-Lesecaches 150 (z. B. Computergerät 100), wie beispielsweise einem Speichergerät (s) des Backend-Speichers 160, wenn diese Speichergeräte eine relativ geringe Auslastung aufweisen. Es kann jedoch vorteilhafter sein, mit dem Lesen der angeforderten Daten aus dem SCM-Lesecache 150 fortzufahren, selbst wenn der Schwellenwert 137 für die SCM-Lesewarteschlange der Steuerung 102 überschritten wird, wenn beispielsweise die angeforderten Daten ansonsten von einer Fernbedienung gelesen würden Knoten (z. B. ein Remote-Computergerät, z. B. ein anderes Speicherarray) oder von Speichergeräten mit relativ hoher Auslastung. Als solches können einige Beispiele hierin weitere Bestimmungen vornehmen, bevor bestimmt wird, ob der SCM-Lesecache 150 für eine Leseanforderung 180 umgangen werden soll, wenn der Schwellenwert 137 für die SCM-Lesewarteschlange der Steuerung 102 überschritten wird.
  • Beispielsweise als Antwort auf eine Leseanforderung 180 für den SCM-Lesecache 150 (z. B. „READ“ bei 610 von 6) und eine Bestimmung, dass die aktuelle SCM-Lesewarteschlangentiefe 135 der Steuerung 102 größer als eine SCM-Lesewarteschlangentiefe ist Der Schwellenwert 137 der Steuerung 102 („JA“ bei 625), Anweisungen 126 können weitere Bestimmungen (z. B. bei 630) vornehmen, bevor bestimmt wird, ob (i) der SCM-Lesecache 150 umgangen und die angeforderten Daten aus einem anderen Speicher als in den Hauptcache 142 eingelesen werden sollen Der SCM-Lesecache 150 oder (ii) fahren mit dem Lesen der angeforderten Daten aus dem SCM-Lesecache 150 in den Hauptcache 142 fort, unabhängig von dem überschrittenen Schwellenwert 137 für die SCM-Lesewarteschlangentiefe 137. Beispielsweise können bei 630 die Anweisungen 126 weitere Bestimmungen in Bezug auf einen oder mehrere der Positionen des anderen Speichers vornehmen, von dem die angeforderten Daten gelesen würden, wenn der SCM-Lesecache 150 umgangen würde, und eine aktuelle Nutzung dieses anderen Speichers. Zum Beispiel als Antwort auf die Leseanforderung 180 (z. B. „READ“ bei 610) und die Feststellung, dass die aktuelle Anzahl 136 ausstehender Lese-E/A größer ist als der Schwellenwert für die SCM-Lesewarteschlangentiefe für den SCM-Lesecache 150 („YES“ bei 625) können bei 630 die Anweisungen 126 zuerst bestimmen, von welchen anderen Speichervorrichtungen die angeforderten Daten gelesen werden sollen, wenn der SCM-Lesecache 150 umgangen wird, und von den Orten dieser anderen Speichervorrichtungen. Wenn beispielsweise die Anweisungen 126 bestimmen, dass sich die anderen Speichergeräte in einem entfernten Knoten befinden, wie beispielsweise ein Computergerät, ein Speicherarray usw., das von dem Computergerät 100 entfernt ist, können die Anweisungen 126 bestimmen, das zu lesen angeforderte Daten vom SCM-Lesecache 150 unabhängig von der überschrittenen SCM-Lesewarteschlangentiefenschwelle 137 der Steuerung 102. In solchen Beispielen kann es vorteilhafter sein, die Daten aus dem SCM-Lesecache 150 zu lesen (obwohl der Schwellenwert 137 für die SCM-Lesewarteschlange überschritten wird), als die angeforderten Daten von einem entfernten Knoten zu lesen, was eine erheblich höhere Latenz als bedeuten kann Lesen von einem lokalen Speichergerät des Backend-Speichers 160 des Computergeräts 100.
  • Wenn in einigen Beispielen die Anweisungen 126 bestimmen, dass die anderen Speichervorrichtungen lokal für das Computergerät 100 sind (z. B. im Backend-Speicher 160), können die Anweisungen 126 ferner eine aktuelle Auslastung dieser anderen Speichervorrichtungen bestimmen. Wenn in solchen Beispielen die aktuelle Auslastung eines oder mehrerer dieser Speichervorrichtungen größer als ein Auslastungsschwellenwert ist, können die Anweisungen 126 bestimmen, mit dem Lesen der angeforderten Daten aus dem SCM-Lesecache 150 fortzufahren, unabhängig von der überschrittenen SCM-Lesewarteschlangentiefe Schwelle 137. In solchen Beispielen kann es vorteilhafter sein, mit dem Lesen der Daten aus dem SCM-Lesecache 150 fortzufahren, als mit den anderen Speichervorrichtungen, da die relativ hohe Auslastung dieser Speichervorrichtungen zu einer signifikant höheren Latenz in führen kann Der Lesevorgang im Vergleich zu einer geringeren Auslastung der Speichergeräte. In anderen Beispielen können Anweisungen 126 bestimmen, mit der Umgehung von SCM fortzufahren, wenn Anweisungen 126 bestimmen, dass die anderen Speichervorrichtungen lokal für das Computergerät 100 sind (z. B. im Backend-Speicher 160) und eine aktuelle Auslastung aufweisen, die unter dem Schwellenwert liegt Lesen Sie den Cache 150 und lesen Sie bei 430 von den anderen Speichergeräten (z. B. dem Backend-Speicher 160). In solchen Beispielen kann der Ort und die Verwendung der anderen Speichervorrichtung (en) derart sein, dass es vorteilhafter sein kann, von diesen Speichervorrichtung (en) als vom SCM-Lesecache 150 zu lesen, wenn der Schwellenwert für die Tiefe der SCM-Lesewarteschlange überschritten wird. In solchen Beispielen können die Anweisungen 126 von Fall zu Fall auf intelligente Weise bestimmen, ob es vorzuziehen ist, den SCM-Lesecache 150 zu umgehen oder nicht, wenn der Schwellenwert 137 für die SCM-Lesewarteschlange 137 überschritten wird, basierend auf Bedingungen, die sich auf die beziehen bestimmte Speichergeräte, von denen das Lesen sonst stattfinden würde. In solchen Beispielen kann diese individualisierte Bestimmung für verschiedene E/A und verschiedene Backend-Speichervorrichtungen zu einer insgesamt verringerten Latenz im Speichersystem 101 führen. In den hier beschriebenen Beispielen kann jedes geeignete Maß für die Verwendung von Speichervorrichtungen durch die Anweisungen 126 in Block 630 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 ausstehender E/A für das Speichergerät zu einem bestimmten Zeitpunkt basieren. In solchen Beispielen kann eine maximale Auslastung der Speichervorrichtung durch eine maximale Anzahl von E/A dargestellt werden, die gleichzeitig auf der Speichervorrichtung ausstehen dürfen. In solchen Beispielen kann die Verwendung einer Speichervorrichtung als die tatsächliche Anzahl ausstehender E/A oder als Anteil der maximal zulässigen E/A (z. B. 50%, 100% usw.) dargestellt werden. In solchen Beispielen kann der Nutzungsschwellenwert als feste Anzahl von E/A oder als Schwellenprozentsatz der maximalen Auslastung (z. B. 50%) festgelegt werden. In anderen Beispielen können andere Nutzungsmaße verwendet werden.
  • In einigen Beispielen kann die Computervorrichtung 100 mehrere SCM-Lesecaches umfassen. In solchen Beispielen können Befehle 121 ausführbar sein, um die hierin beschriebenen Funktionen in Bezug auf Befehle 121 unabhängig für jeden der mehreren SCM-Lesecaches auszuführen. In solchen Beispielen können die Anweisungen 121 Betriebsdaten wie die Betriebsdaten 130 von 1 verwalten. 4 für jeden der SCM-Lesecaches (z. B. SCM-Warteschlangentiefe (n), SCM-Warteschlangentiefenschwelle (n) usw.). 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 „ausschließlich basierend auf‟ gelesen werden. Vielmehr ist der Ausdruck „basierend auf“, wie er hier verwendet wird, inklusiv und bedeutet dasselbe wie der alternative Ausdruck „basierend auf mindestens“ oder „zumindest teilweise basierend 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 basiert auf (oder zumindest teilweise basierend auf) 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 „Anweisungen“ ausgeführt beschrieben werden, als Funktionalitäten verstanden werden, die von diesen Anweisungen 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 Engines implementiert werden, die eine beliebige Kombination aus Hardware und Programmierung sein können, um die Funktionalitäten der Engine (s) 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, einschließlich einer Verarbeitungsressource. In den hier beschriebenen Beispielen kann eine Verarbeitungsressource beispielsweise einen Prozessor oder mehrere Prozessoren umfassen, die in einem einzelnen Computergerät enthalten sind oder auf mehrere Computergeräte verteilt sind. Wie hierin verwendet, kann ein „Prozessor“ mindestens eine Zentralverarbeitungseinheit (CPU), ein Mikroprozessor auf Halbleiterbasis, eine Grafikverarbeitungseinheit (GPU) oder ein feldprogrammierbares Gate-Array (FPGA) sein, das zum Abrufen und Ausführen konfiguriert ist Anweisungen, andere elektronische Schaltungen, die zum Abrufen und Ausführen von Anweisungen geeignet sind, die auf einem maschinenlesbaren Speichermedium oder einer Kombination davon gespeichert sind. In den hier beschriebenen Beispielen kann eine Verarbeitungsressource auf einem Speichermedium gespeicherte Anweisungen abrufen, decodieren 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 irgendwelche hierin beschriebenen Anweisungen beschriebenen Funktionen in Form einer elektronischen Schaltung, in Form von ausführbaren 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 entfernt von der Rechenvorrichtung (z. B. über ein Computernetzwerk) zur Ausführung, aber für diese zugänglich sein. In dem in FIG. In 1 können das Speichermedium 120 und das Speichermedium 117 jeweils durch ein maschinenlesbares Speichermedium oder mehrere maschinenlesbare Speichermedien implementiert werden.
  • In den hier beschriebenen Beispielen kann ein Speicherarray eine Computervorrichtung sein, die mehrere Speichervorrichtungen und einen oder mehrere Controller umfasst, um mit Hostgeräten zu interagieren und den Zugriff auf die Speichervorrichtungen zu steuern. In einigen Beispielen können die Speichervorrichtungen Festplatten, SSDs oder irgendeinen anderen geeigneten Typ von Speichervorrichtung oder eine beliebige Kombination davon enthalten. 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 oben beschriebenen Funktionen in Bezug auf die hier beschriebenen Anweisungen von einer oder mehreren Motoren implementiert werden, die eine beliebige Kombination von Hardware und Programmierung sein können, um die Funktionen der Motoren 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 Engines ausführbare Anweisungen des Prozessors sein, die auf mindestens einem nicht vorübergehenden maschinenlesbaren Speichermedium gespeichert sind, und die Hardware für die Engines kann mindestens eine Verarbeitungsressource enthalten, um diese Anweisungen auszuführen. 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, zumindest teilweise einige oder alle Engines implementieren. In solchen Beispielen kann eine Rechenvorrichtung das mindestens eine maschinenlesbare Speichermedium enthalten, das die Anweisungen speichert, und die mindestens eine Verarbeitungsressource, um die Anweisungen auszuführen. In anderen Beispielen kann der Motor durch eine elektronische Schaltung implementiert werden.
  • Wie hierin verwendet, kann ein „maschinenlesbares Speichermedium“ eine beliebige elektronische, magnetische, optische oder andere physikalische Speichervorrichtung sein, um Informationen wie ausführbare Anweisungen, Daten und dergleichen zu enthalten oder zu speichern. Beispielsweise kann jedes hier beschriebene maschinenlesbare Speichermedium RAM, EEPROM, flüchtiger Speicher, nichtflüchtiger Speicher, Flash-Speicher, ein Speicherlaufwerk (z. B. eine Festplatte, eine SSD) oder eine beliebige Art von Speicherplatte (z , eine CD, eine DVD usw.) oder dergleichen oder eine Kombination davon. Ferner kann jedes hierin beschriebene maschinenlesbare Speichermedium nicht vorübergehend sein. In den hier beschriebenen Beispielen kann ein maschinenlesbares Speichermedium oder -medium Teil eines Artikels (oder eines Herstellungsartikels) sein. Ein Artikel oder ein Herstellungsartikel kann sich auf eine 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 aller zugehörigen Ansprüche, Zusammenfassungen und Zeichnungen) und/oder alle Elemente eines so offenbarten Verfahrens oder Verfahrens können in einer beliebigen Kombination kombiniert werden, mit Ausnahme von Kombinationen, bei denen zumindest einige dieser Merkmale vorliegen und/oder Elemente schließen sich gegenseitig aus. Zum Beispiel die hierin beschriebenen Funktionalitäten in Bezug auf eine der 1 - Fig. Die 1 bis 6 können in Kombination mit den hierin beschriebenen Funktionalitäten in Bezug auf jede andere der 1 bis 2 bereitgestellt werden. 1-6.

Claims (20)

  1. Verfahren eines Speichersystems (101), umfassend: Bestimmen (305) einer repräsentativen Eingabe/Ausgabe (10) -Anforderungslatenz zwischen einem ersten Controller (102) und einem Speicherklassenspeicher (SCM)-Lesecache (150) mit dem ersten Controller (102) des Speichersystems (101) während eines bestimmten Zeitraums, in dem der erste Controller (102) und ein zweiter Controller (104) des Speichersystems (101) E/A-Anforderungen an den SCM-Lesecache (150) senden, wobei der erste (102) und der zweite (104) Controller jeweils einen jeweiligen Hauptcache (142, 192) umfassen und das Speichersystem (101) einen Backend-Speicher (160) umfasst; Bestimmen einer ersten Gesamtmenge von Daten, die von dem ersten Controller (102) während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wurden; und Bestimmen, mit dem ersten Controller (102), einer geschätzten kumulativen Datenmenge, die vom ersten (102) und zweiten (104) Controller während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wird, basierend auf der ermittelten repräsentativen E/A-Anforderungslatenz für den gegebenen Zeitraum und Leistungsdaten für den SCM-Lesecache (150); Bestimmen eines Anpassungsbetrags für den Schwellenwert für mindestens eine SCM-Warteschlangentiefe des ersten Controllers(102) basierend auf der ersten Gesamtdatenmenge und der geschätzten kumulierten Datenmenge; Anpassen (310) mindestens eines SCM-Warteschlangentiefenschwellenwerts des ersten Controllers(102) um den Anpassungsbetrag als Reaktion auf eine Feststellung, dass die ermittelte repräsentative E/A-Anforderungslatenz einen E/A-Anforderungslatenzschwellenwert für den SCM-Lesecache (150) überschreitet; als Antwort auf eine E/A-Anforderung des ersten Controllers(102) für den SCM-Lesecache (150), Vergleichen (315) einer SCM-Warteschlangentiefe des ersten Controllers(102) mit einem der mindestens einen SCM-Warteschlangentiefenschwellenwerte des ersten Controllers(102); Wählen (320) zwischen der Verarbeitung der E/A-Anforderung unter Verwendung des SCM-Lesecaches (150), dem Löschen der E/A-Anforderung und der Verarbeitung der E/A-Anforderung ohne Verwendung des SCM-Lesecaches (150) basierend auf einem Typ der E/A-Anforderung und einem Ergebnis des Vergleichs; und Durchführen (325) der ausgewählten Verarbeitung oder Löschen als Reaktion auf die Auswahl.
  2. Verfahren nach Anspruch 1, wobei das Bestimmen der geschätzten Gesamtdatenmenge umfasst: Bestimmen der geschätzten kumulativen Datenmenge als Datenmenge, die der ermittelten repräsentativen E/A-Anforderungslatenz in den Leistungsdaten für den SCM-Lesecache (150) entspricht, wobei die repräsentative E/A-Anforderungslatenz eine durchschnittliche E/A-Anforderungslatenz zwischen dem ersten Controller (102) und dem SCM-Lesecache (150) während des angegebenen Zeitraums ist.
  3. Verfahren nach Anspruch 1, wobei das Bestimmen des Anpassungsbetrag des Schwellenwerts für mindestens eine SCM-Warteschlangentiefe umfasst: Bestimmen des Anpassungsbetrag des Schwellenwerts für mindestens eine SCM-Warteschlangentiefe als Anteil eines definierten Anpassungsbetrags, wobei der Anteil auf einem Verhältnis der ersten Gesamtdatenmenge und der geschätzten kumulierten Datenmenge basiert.
  4. Verfahren nach Anspruch 1, wobei: Die Auswahl umfasst die Auswahl zum Löschen der E/A-Anforderung, basierend auf der Feststellung, dass die E/A-Anforderung eine Anforderung zum Destage von Daten an den SCM-Lesecache (150) ist, und dem Ergebnis des Vergleichs, der angibt, dass eine SCM-Schreibwarteschlangentiefe (136) des ersten Controllers(102) größer als ein Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) des ersten Controllers(102) ist; und Das Durchführen umfasst das Löschen der E/A-Anforderung, ohne die Daten als Antwort auf die Auswahl in den SCM-Lesecache (150) oder den Backend-Speicher (160) zu schreiben.
  5. Verfahren nach Anspruch 1, wobei: Die Auswahl umfasst die Auswahl zum Verarbeiten der E/A-Anforderung ohne Verwendung des SCM-Lesecaches (150), 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 SCM-Lesewarteschlangentiefe (137) des ersten Controllers(102) größer ist als ein SCM-Lesewarteschlangentiefenschwellenwert des ersten Controllers(102); und Das Durchführen umfasst das Umgehen des SCM-Lesecaches (150) und das Lesen der angeforderten Daten aus mindestens einem Backend-Speicher (160) des Speichersystems (101) oder eines Remote-Computergeräts in den Hauptcache (142) des ersten Controllers(102).
  6. Verfahren nach Anspruch 1, wobei: Das Auswählen umfasst das Auswählen zum Verarbeiten der E/A-Anforderung unter Verwendung des SCM-Lesecaches (150), basierend auf einer Feststellung, dass die E/A-Anforderung eine Anforderung zum Destage von Daten an den SCM-Lesecache (150) ist, und dem Ergebnis des Vergleichs, das angibt, dass eine SCM-Schreibwarteschlangentiefe (136) des ersten Controllers (102) nicht größer ist als ein Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) des ersten Controllers (102), und Das Durchführen umfasst das Auslagern der Daten in den SCM-Lesecache (150) basierend auf der Auswahl.
  7. Verfahren nach Anspruch 1, wobei: Die Auswahl umfasst die Auswahl zum Verarbeiten der E/A-Anforderung unter Verwendung des SCM-Lesecaches (150), basierend auf der Feststellung, dass die E/A-Anforderung eine Leseanforderung zum Lesen angeforderter Daten aus dem SCM-Lesecache (150) ist, und dem Ergebnis des Vergleichs, der angibt, dass eine SCM-Lesewarteschlangentiefe (137) des ersten Controllers (102) nicht größer ist als ein Schwellenwert für die Tiefe der SCM-Lesewarteschlange des ersten Controllers (102), und Das Durchführen umfasst das Lesen der angeforderten Daten aus dem SMC-Lesecache (150) basierend auf der Auswahl.
  8. Ein Artikel, der mindestens ein nicht vorübergehendes maschinenlesbares Speichermedium umfasst, umfassend Anweisungen, die von mindestens einer Verarbeitungsressource (105) eines Speichersystems (101) ausgeführt werden können, zum: Bestimmen (305) einer repräsentativen Eingabe/Ausgabe (E/A) - Anforderungslatenz zwischen einem ersten Controller (102) des Speichersystems (101) und einem SCM-Lesecache (Storage Class Memory) (150) während eines bestimmten Zeitraums, in dem der erste Controller (102) und ein zweiter Controller (104) des Speichersystems (101) E/A Anforderungen an den SCM-Lesecache (150) sendet; Anpassen (310) eines Schwellenwerts für die Tiefe der SCM-Lesewarteschlange oder eines Schwellenwerts für die Tiefe der SCM-Schreibwarteschlange (139) des ersten Controllers (102) basierend auf der Feststellung, dass die ermittelte repräsentative E/A-Anforderungslatenz einen E/A-Anforderungslatenzschwellenwert für den SCM-Lesecache (150) überschreitet; Löschen einer Destage-Anforderung beim ersten Controller (102), wenn die Tiefe der SCM-Schreibwarteschlange (139) des ersten Controllers (102) größer als der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) ist; und Als Antwort auf eine Anforderung des ersten Controllers (102), angeforderte Daten aus dem SCM-Lesecache (150) zu lesen, umgehen des SCM-Lesecaches (150) und lesen der angeforderten Daten aus dem Backend-Speicher (160) des Speichersystems (101) oder von einem Remote-Computergerät in einen Hauptcache des ersten Controllers (102), wenn die Tiefe der SCM-Lesewarteschlange des ersten Controllers (102) größer als der Schwellenwert für die Tiefe der SCM-Lesewarteschlange ist.
  9. Artikel nach Anspruch 8, wobei die Anweisungen von der mindestens einen Verarbeitungsressource (105) ausführbar sind, um: basierend auf der Feststellung, dass die repräsentative E/A- Anforderungslatenz den E/A-Anforderungslatenzschwellenwert für den SCM-Lesecache (150) überschreitet, einen der folgenden Schritte auszuführen: Wenn der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) über einem ersten Mindestwert liegt, verringern des Schwellenwertes für die Tiefe der SCM-Schreibwarteschlange (139), Wenn der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) den ersten Mindestwert hat und der Schwellenwert für die Tiefe der SCM-Lesewarteschlange über einem zweiten Mindestwert liegt, verringern des Schwellenwertes für die Tiefe der SCM-Lesewarteschlange, und Wenn der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) den ersten Mindestwert und der Schwellenwert für die Tiefe der SCM-Lesewarteschlange den zweiten Mindestwert hat, verringern des Schwellenwertes für die Tiefe der SCM-Schreibwarteschlange (139) noch den Schwellenwert für die Tiefe der SCM-Lesewarteschlange.
  10. Artikel nach Anspruch 9, wobei die Anweisungen von der mindestens einen Verarbeitungsressource (105) ausführbar sind, zum: Bestimmen einer ersten Gesamtmenge von Daten, die von der ersten Steuerung während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wurden; und Bestimmen einer geschätzten kumulativen Menge von Daten, die von der ersten und zweiten Steuerung während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben werden, basierend auf der bestimmten repräsentativen E/A-Anforderungslatenz für den gegebenen Zeitraum und Leistungsdaten für den SCM-Lesecache (150); und Bestimmen eines Betrags zum Verringern des Schwellenwerts für die Tiefe der SCM-Lesewarteschlange oder des Schwellenwerts für die Tiefe der SCM-Schreibwarteschlange (139) als Anteil eines definierten Anpassungsbetrags, wobei der Anteil auf einem Verhältnis der ersten Gesamtdatenmenge und der geschätzten kumulierten Datenmenge basiert.
  11. Artikel nach Anspruch 8, wobei die Anweisungen von der mindestens einen Verarbeitungsressource (105) ausführbar sind, zum: basierend auf der Feststellung, dass die repräsentative E/A-Anforderungslatenz den E/A-Anforderungslatenzschwellenwert für den SCM-Lesecache (150) nicht überschreitet, einen der folgenden Schritte auszuführen: Wenn der Schwellenwert für die Tiefe der SCM-Lesewarteschlange unter einem ersten Maximalwert liegt, erhöhen des Schwellenwertes für die Tiefe der SCM-Lesewarteschlange, Wenn der Schwellenwert für die Tiefe der SCM-Lesewarteschlange den ersten Maximalwert hat und der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) unter einem zweiten Maximalwert liegt, erhöhen des Schwellenwertes für die Tiefe der SCM-Schreibwarteschlange (139), und Wenn der Schwellenwert für die Tiefe der SCM-Lesewarteschlange den ersten Maximalwert und der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) den zweiten Maximalwert hat, erhöhen weder des Schwellenwertes für die Tiefe der SCM-Lesewarteschlange noch des Schwellenwertes für die Tiefe der SCM-Schreibwarteschlange (139).
  12. Artikel nach Anspruch 11, wobei die Anweisungen von der mindestens einen Verarbeitungsressource (105) ausführbar sind, zum: Bestimmen einer ersten Gesamtmenge von Daten, die von der ersten Steuerung während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wurden; Bestimmen einer geschätzten kumulativen Datenmenge, die vom ersten (102) und zweiten (104) Controller während des angegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wird, basierend auf der ermittelten repräsentativen E/A-Anforderungslatenz für den angegebenen Zeitraum und Leistungsdaten für den SCM-Lesecache (150); und Bestimmen eines Betrags zum Erhöhen des Schwellenwerts für die Tiefe der SCM-Lesewarteschlange oder des Schwellenwerts für die Tiefe der SCM-Lesewarteschlange als Anteil eines definierten Anpassungsbetrags, wobei der Anteil auf einem Verhältnis der ersten Gesamtdatenmenge und der geschätzten kumulierten Datenmenge basiert.
  13. Artikel nach Anspruch 8, wobei die Anweisungen von der mindestens einen Verarbeitungsressource (105) ausführbar sind, zum: als Antwort auf die Destage-Anforderung die mit der Destage-Anforderung verknüpften Destage-Daten vom Hauptcache (142) zum SCM-Lesecache (150), wenn die Tiefe der SCM-Schreibwarteschlange (139) des ersten Controllers (102) nicht größer als der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) ist; und Als Antwort auf die Destage-Anforderung, wenn die Tiefe der SCM-Schreibwarteschlange (139) des ersten Controllers (102) größer als der Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) ist, ermöglichen des Entfernens der mit der Destage-Anforderung verknüpften Daten aus dem Hauptcache e, ohne die Daten an den SCMe.
  14. Artikel nach Anspruch 8, wobei die Anweisungen von der mindestens einen Verarbeitungsressource (105) für jeden von mehreren aufeinanderfolgenden Zeiträumen, einschließlich des gegebenen Zeitraums, ausführbar sind: Sammeln einer Gesamtmenge von Daten, die während des Zeitraums über E/A-Anforderungen des ersten Controllers (102) aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wurden; Sammeln einer Gesamtlatenz für jede der E/A-Anforderungen des ersten Controllers (102) an den SCM-Lesecache (150) während des Zeitraums; Sammeln Sie eine Gesamtzahl der E/A-Anforderungen des ersten Controllers (102) an den SCM-Lesecache (150) während des Zeitraums, Wenn der Zeitraum abgelaufen ist, bestimmen, ob der Schwellenwert für die E/A- Anforderungslatenz für den SCM-Lesecache (150) im Zeitraum überschritten wird, basierend auf der akkumulierten Gesamtlatenz und der akkumulierten Gesamtzahl der E/A-Anforderungen für den ersten Controller (102) an den SCM für die Zeit Zeitraum; anpassen mindestens einen Schwellenwert für die Tiefe der SCM-Lesewarteschlange und den Schwellenwert für die Tiefe der SCM-Schreibwarteschlange (139) für den SCM-Lesecache (150), um festzustellen, dass der Schwellenwert für die E/A-Anforderungslatenz für den SCM-Lesecache (150) für den Zeitraum überschritten wurde, und zurücksetzen auf Null der gesamten Datenmenge, der Gesamtlatenz und der Gesamtzahl der E/A-Anforderungen zur Vorbereitung auf den nächsten Zeitraum.
  15. Speichersystem (101), Folgendes umfassend: Erste (102) und zweite (104) Controller; einen SCM-Lesecache (150) (Dual-Ported Storage Class Memory) zum Empfangen und Verarbeiten von E/A-Anforderungen von jedem der ersten (102) und zweiten (104) Controller; Backend-Speicher (160); und mindestens ein nicht vorübergehendes maschinenlesbares Speichermedium (120), das Anweisungen (121) umfasst, die von der mindestens einen Verarbeitungsressource (105) des ersten Controllers (102) ausgeführt werden können, zum: Bestimmen einer repräsentativen Eingangs-/Ausgangsanforderungslatenz (E/A) zwischen dem ersten Controller (102) und dem SCM-Lesecache (150) während eines bestimmten Zeitraums; Anpassen eines Schwellenwerts für die SCM-Warteschlangentiefe des ersten Controllers (102) basierend auf einer Feststellung, dass die repräsentative E/A-Anforderungslatenz einen E/A-Anforderungslatenzschwellenwert für den SCM überschreitet; Löschen, als Antwort auf eine Anforderung zum Destage von Daten in den SCM-Lesecache (150), der Destage-Anforderung, ohne die Daten in den SCM-Lesecache (150) zu schreiben, wenn eine SCM-Schreibwarteschlangentiefe (136) größer als ein SCM-Schreibwarteschlangentiefenschwellenwert des ersten Controllers (102) ist, und Umgehen, als Antwort auf eine Anforderung zum Lesen der angeforderten Daten aus dem SCM-Lesecache (150), den SCM-Lesecache (150) und lesen der angeforderten Daten aus dem Back-End-Speicher (160) oder von einem Remote-Computergerät, wenn die Tiefe der SCM-Lesewarteschlange größer als die Tiefe der SCM-Lesewarteschlangenschwelle des ersten Controllers (102) ist.
  16. Speichersystem (101) nach Anspruch 15, das ferner Folgendes umfasst: Der SCM-Lesecache (150) umfasst einen Lesecache (150), der von einem SCM-Gerät mit geringerer Latenz als ein seriell angeschlossenes SCSI (SAS) Solid State Drive (SSD) implementiert wird, und Das SCM-Gerät soll mit anderen Komponenten des Speichersystems (101) unter Verwendung eines mit NVM Express™ (NVMe™) konsistenten Protokolls kommunizieren.
  17. Speichersystem (101) nach Anspruch 15, das ferner Folgendes umfasst: Der SCM-Lesecache (150) umfasst einen Lesecache (150), der von einem SCM-Gerät implementiert wird, das keine Flash-Übersetzungsschicht (FTL) aufweist und eine geringere Latenz aufweist als ein Solid-State-Laufwerk (SSD), das eine FTL umfasst.
  18. Speichersystem (101) nach Anspruch 17, das ferner Folgendes umfasst: Die Anweisungen sind ausführbar, um die angeforderten Daten aus dem SCM-Lesecache (150) in einen Hauptcache (142) des ersten Controllers (102) zu lesen, wobei der Hauptcache (142) einen flüchtigen Speicher umfasst, und Der Backend-Speicher (160) umfasst ein oder mehrere nichtflüchtige Speichergeräte, wobei die nichtflüchtigen Speichergeräte mindestens eines von Festplattenlaufwerken (HDDs) oder Solid-State-Laufwerken (SSDs) oder eine Kombination von HDDs und SSDs umfassen.
  19. Speichersystem (101) nach Anspruch 15, wobei die Anweisungen ausführbar sind, zum: Bestimmen einer ersten Gesamtmenge von Daten, die von dem ersten Controller (102) während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wurden; und Bestimmen einer geschätzten kumulativen Datenmenge, die vom ersten und zweiten Controller (104) während des gegebenen Zeitraums aus dem SCM-Lesecache (150) gelesen und in diesen geschrieben wird, basierend auf der ermittelten repräsentativen E/A-Anforderungslatenz für den gegebenen Zeitraum und Leistungsdaten für den SCM-Lesecache (150); Bestimmen eines Betrags zum Anpassen des Schwellenwerts der SCM-Warteschlangentiefe als Teil eines vorbestimmten Änderungswertes, wobei der Teil auf einem Verhältnis der ersten Gesamtdatenmenge und der geschätzten kumulierten Datenmenge basiert.
  20. Speichersystem (101) nach Anspruch 15, wobei die Anweisungen ausführbar sind, zum: Bestimmen der geschätzten kumulativen Datenmenge als Datenmenge, die der ermittelten repräsentativen E/A-Anforderungslatenz in den Leistungsdaten für den SCM-Lesecache (150) entspricht, wobei die repräsentative E/A-Anforderungslatenz eine durchschnittliche E/A-Anforderungslatenz zwischen dem ersten Controller (102) und dem SCM-Lesecache (150) während des angegebenen Zeitraums ist.
DE102020103817.8A 2019-04-19 2020-02-13 Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers Active DE102020103817B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/389,266 US11030107B2 (en) 2019-04-19 2019-04-19 Storage class memory queue depth threshold adjustment
US16/389,266 2019-04-19

Publications (2)

Publication Number Publication Date
DE102020103817A1 DE102020103817A1 (de) 2020-10-22
DE102020103817B4 true DE102020103817B4 (de) 2022-10-27

Family

ID=72660059

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020103817.8A Active DE102020103817B4 (de) 2019-04-19 2020-02-13 Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers

Country Status (3)

Country Link
US (1) US11030107B2 (de)
CN (1) CN111831219B (de)
DE (1) DE102020103817B4 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US11226904B2 (en) 2019-04-26 2022-01-18 Hewlett Packard Enterprise Development Lp Cache data location system
KR20210017264A (ko) * 2019-08-07 2021-02-17 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11556513B2 (en) 2020-06-30 2023-01-17 Hewlett Packard Enterprise Development Lp Generating snapshots of a key-value index
US11461299B2 (en) 2020-06-30 2022-10-04 Hewlett Packard Enterprise Development Lp Key-value index with node buffers
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 华云数据控股集团有限公司 缓存读写方法、装置及电子设备
US11868287B2 (en) 2020-12-17 2024-01-09 Micron Technology, Inc. Just-in-time (JIT) scheduler for memory subsystems
US11861176B2 (en) * 2021-04-23 2024-01-02 Netapp, Inc. Processing of input/ouput operations by a distributed storage system based on latencies assigned thereto at the time of receipt
US11687258B2 (en) 2021-09-08 2023-06-27 Hewlett Packard Enterprise Development Lp Operational feature activation/disabling
US11720285B2 (en) * 2021-09-21 2023-08-08 Microsoft Technology Licensing, Llc Computer system with data storage transfer recommendation
CN116560842B (zh) * 2023-05-12 2024-04-16 无锡众星微系统技术有限公司 一种sas存储业务中的i/o队列调度方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040136712A1 (en) 2003-01-13 2004-07-15 Globespan Virata Incorporated Integrated PON processor
US7739470B1 (en) 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US20120072670A1 (en) 2010-09-21 2012-03-22 Lsi Corporation Method for coupling sub-lun load measuring metadata size to storage tier utilization in dynamic storage tiering
US20150286438A1 (en) 2014-04-03 2015-10-08 Lsi Corporation System, Method and Computer-Readable Medium for Dynamically Configuring an Operational Mode in a Storage Controller
US20160188223A1 (en) 2014-12-30 2016-06-30 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047312B1 (en) 2000-07-26 2006-05-16 Nortel Networks Limited TCP rate control with adaptive thresholds
US6912612B2 (en) 2002-02-25 2005-06-28 Intel Corporation Shared bypass bus structure
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
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
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
US8893146B2 (en) 2009-11-13 2014-11-18 Hewlett-Packard Development Company, L.P. Method and system of an I/O stack for controlling flows of workload specific I/O requests
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 삼성전자주식회사 반도체 저장 장치 및 상기 반도체 저장 장치의 성능 조절 방법
US9292205B2 (en) 2012-06-14 2016-03-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Methods and systems for adaptive queue depth management
US9852058B2 (en) 2012-09-28 2017-12-26 International Business Machines Corporation NVS thresholding for efficient data management
US9507733B2 (en) 2013-06-21 2016-11-29 Microsoft Technology Licensing, Llc Cache destaging for virtual storage devices
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
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
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
KR102403489B1 (ko) 2015-07-10 2022-05-27 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
US9779026B2 (en) 2016-01-14 2017-10-03 Seagate Technology Llc Cache bypass utilizing a binary tree
CN107818056B (zh) 2016-09-14 2021-09-07 华为技术有限公司 一种队列管理方法及装置
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10331582B2 (en) 2017-02-13 2019-06-25 Intel Corporation Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time
US10387078B1 (en) 2018-03-13 2019-08-20 Western Digital Technologies, Inc. Adaptive control of host queue depth for command submission throttling using data storage controller
US11003582B2 (en) * 2018-09-27 2021-05-11 Intel Corporation Cache utilization of backing storage for aggregate bandwidth
US10776276B2 (en) 2018-11-30 2020-09-15 Hewlett Packard Enterprise Development Lp Bypass storage class memory read cache based on a queue depth threshold
US10996985B2 (en) 2019-01-11 2021-05-04 Hewlett Packard Enterprise Development Lp Dynamic queue depth management with non-volatile memory controllers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040136712A1 (en) 2003-01-13 2004-07-15 Globespan Virata Incorporated Integrated PON processor
US7739470B1 (en) 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US20120072670A1 (en) 2010-09-21 2012-03-22 Lsi Corporation Method for coupling sub-lun load measuring metadata size to storage tier utilization in dynamic storage tiering
US20150286438A1 (en) 2014-04-03 2015-10-08 Lsi Corporation System, Method and Computer-Readable Medium for Dynamically Configuring an Operational Mode in a Storage Controller
US20160188223A1 (en) 2014-12-30 2016-06-30 International Business Machines Corporation Promoting consistent response times in a data storage system having multiple data retrieval mechanisms

Also Published As

Publication number Publication date
DE102020103817A1 (de) 2020-10-22
CN111831219A (zh) 2020-10-27
CN111831219B (zh) 2022-04-19
US20200334163A1 (en) 2020-10-22
US11030107B2 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
DE102020103817B4 (de) Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers
DE102019130450B4 (de) Bypass-Speicherklasse Lese Cache auf der Grundlage eines Schwellwertes der Warteschlange
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE112005001050T5 (de) Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE112010003788B4 (de) Datenspeicherung
DE112012001302B4 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE112012004209T5 (de) Dynamisch eingestellter Schwellenwert zum Belegen eines sekundären Cache-Speichers
DE112018000834T5 (de) System und verfahren zur adaptiven befehlsabruf-aggregation
DE102016013577B4 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE112012004540T5 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
DE102015014851A1 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102017104150A1 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112012004796B4 (de) Periodische Auslagerungen von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE112012002452T5 (de) Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten
DE102012212183B4 (de) Verfahren und Speichercontroller zur Bestimmung einer Zugriffscharakteristik einer Datenentität
DE112010003794T5 (de) Datenspeicherung unter Verwendung von Bitmaps
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112020004958T5 (de) Dynamische zonenaktivgrenze für offenen zns
DE102013210719B4 (de) Verfahren und Systeme zum Verwalten von Cache-Speichern
DE112017003203T5 (de) Mehr-ebenen-systemspeicher mit near-memory-scrubbing basierend auf vorhergesagter far-memory-leerlaufzeit
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff

Legal Events

Date Code Title Description
R082 Change of representative

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

R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

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

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPEMENT LP, HOUSTON, TX, US

R020 Patent grant now final