DE102016013577B4 - Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern - Google Patents
Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern Download PDFInfo
- Publication number
- DE102016013577B4 DE102016013577B4 DE102016013577.8A DE102016013577A DE102016013577B4 DE 102016013577 B4 DE102016013577 B4 DE 102016013577B4 DE 102016013577 A DE102016013577 A DE 102016013577A DE 102016013577 B4 DE102016013577 B4 DE 102016013577B4
- Authority
- DE
- Germany
- Prior art keywords
- cache slices
- cache
- node
- slices
- routing table
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000000638 solvent extraction Methods 0.000 title claims abstract description 9
- 230000003044 adaptive effect Effects 0.000 title claims abstract description 5
- 230000015654 memory Effects 0.000 title description 10
- 238000011010 flushing procedure Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000011109 contamination Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 238000010792 warming Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- TECHNISCHES GEBIET
- Die vorliegende Offenbarung betrifft Systeme und Verfahren zum adaptiven Partitionieren von verteiltem Cache- oder Speicherungs-Speicher.
- VERWANDTE OFFENBARUNG
- Computercluster bestehen aus zwei oder mehr Computerknoten, die durch ein Netzwerk miteinander verbunden sein können. Computercluster können verteilte Speicherungs-Speichersysteme, z. B. verteilte Cache-Systeme, implementieren. Die gesamte Speicherungskapazität des Clusters wird typischerweise in eine Anzahl Slices einer bestimmten Standardgröße aufgeteilt. Die Slices sind über die Computerknoten des Clusters verteilt. Jedes Slice kann bezüglich eines und nur eines Computerknotens lokal sein. Jede Anforderung in einem Computerknoten einer logischen Blockadresse (LBA), die in einem Slice residiert, das einem entfernten Computerknoten gehört, muss zur Verarbeitung auf dem entfernten Knoten über das Netzwerk gesendet werden.
- Dies kann den Verkehr im Netzwerk vergrößern, was die Netzwerkbandbreite und die Latenz aufgrund von Netzwerkstau verschlechtern kann. Dementsprechend sind Systeme und Verfahren zum geeigneten Verteilen der Slices wünschenswert, die die Auswirkung von Ferndatenanforderungen auf die Netzwerkleistungsfähigkeit vermindern können.
- Die
US 2006/0123197 A1 - Die
US 2009/0049248 A1 - Die
US 2012/0005524 A1 - Die
US 8 429 346 B1 beschreibt Verfahren und Systeme zum Verschieben von Daten in einem physikalischen Speicherpool, der eine Vielzahl von Speicherschichten mit unterschiedlichen Leistungsmerkmalen umfasst, wobei der physikalische Speicherpool in eine oder mehrere logische Einheiten abgebildet wird, wobei jede logische Einheit eine Vielzahl von logischen Schichten der Datenspeicherung umfasst. Die Verfahren und Systeme können das Empfangen einer Verlagerungsliste beinhalten, wobei die Verlagerungsliste für jede aus einer Vielzahl von logischen Schichten einen Schichtkennzeichner, einen Temperaturwert und einen aktuellen physischen Standort beinhaltet, das Bestimmen einer Zielebene für jede logische Schicht auf der Verlagerungsliste, das Bewerten eines Leistungsgewinns für jede logische Schicht auf der Verlagerungsliste, der erwartet wird, indem die logische Schicht von ihrem aktuellen physischen Standort zu einem neuen Standort auf der Zielebene verschoben wird, und das Verlagern von Daten in einer logischen Schicht von ihrem aktuellen physischen Standort zu dem neuen Standort basierend auf der Bewertung. - KURZFASSUNG
- Es werden Verfahren und Systeme zum Durchführen adaptiver Partitionierung eines in Cache-Slices partitionierten verteilten Cache bereitgestellt. Die Slices des verteilten Cache werden auf der Basis einer Routingtabelle an verschiedene Computerknoten des Clusters vergeben. Nach einem vorbestimmten Zeitraum können die Cache-Slices auf der Basis von Zugriffsstatistiken neu an andere Computerknoten des Clusters vergeben werden, und es wird eine neue Routingtabelle bereitgestellt, die der Neuvergabe der Cache-Slices an die Computerknoten des Clusters entspricht.
- Gemäß Aspekten der Offenbarung wird ein Verfahren zur adaptiven Partitionierung eines verteilten Cache in einem Cluster bereitgestellt, das mehrere Computerknoten umfasst, die durch ein Netzwerk verbunden sind, wobei der verteilte Cache in Cache-Slices partitioniert wird. Das Verfahren kann die folgenden Schritte umfassen: Vergeben einer ersten Vielzahl von Cache-Slices an einen ersten Computerknoten auf der Basis einer ersten Routingtabelle, Neuvergeben einer zweiten Vielzahl von Cache-Slices an den ersten Computerknoten und einer ersten Teilmenge der ersten Vielzahl von Cache-Slices an mindestens einen anderen Computerknoten als den ersten Computerknoten nach einem ersten Zeitraum auf der Basis von Zugriffsstatistiken für die Cache-Slices der Computerknoten und Bereitstellen einer zweiten Routingtabelle gemäß Vergaben von Cache-Slices an die Computerknoten nach dem ersten Zeitraum.
- Gemäß Aspekten der Offenbarung wird ein System zur adaptiven Partitionierung eines verteilten Cache in einem Cluster bereitgestellt, das eine Vielzahl von Computerknoten umfasst, die durch ein Netzwerk verbunden sind. Das System kann einen in Cache-Slices partitionierten verteilten Cache und einen ersten Computerknoten umfassen. Der erste Computerknoten kann ausgelegt sein zum Vergeben einer ersten Vielzahl von Cache-Slices an den ersten Computerknoten auf der Basis einer ersten Routingtabelle, Neuvergeben einer zweiten Vielzahl von Cache-Slices an den ersten Computerknoten und einer ersten Teilmenge der ersten Vielzahl von Cache-Slices an mindestens einen anderen Computerknoten als den ersten Computerknoten nach einem ersten Zeitraum auf der Basis von Zugriffsstatistiken für die Cache-Slices der Computerknoten und Bereitstellen einer zweiten Routingtabelle gemäß Vergaben von Cache-Slices an die Computerknoten nach dem ersten Zeitraum.
- Figurenliste
- Verschiedene Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung können mit Bezugnahme auf die folgende ausführliche Beschreibung bei Betrachtung in Verbindung mit den folgenden Zeichnungen, in denen gleiche Bezugszahlen gleiche Elemente identifizieren, besser verständlich werden. Die folgenden Zeichnungen dienen nur zur Veranschaulichung und sollen keine Einschränkung der Erfindung sein, deren Schutzumfang in den folgenden Ansprüchen dargelegt wird.
-
1 zeigt ein beispielhaftes Clustersystem gemäß Aspekten der Offenbarung. -
2 zeigt ein beispielhaftes Clustersystem, Datentransferraten pro Clusterknoten und beispielhafte Slice-Vergaben gemäß Aspekten der Offenbarung. -
3 zeigt ein beispielhaftes Clustersystem, Datentransferraten pro Clusterknoten und Slice-Neuvergaben gemäß Aspekten der Offenbarung. -
4 zeigt ein beispielhaftes Verfahren zum Aktualisieren von Routingabbildungen in einem Clustersystem gemäß Aspekten der Offenbarung. - AUSFÜHRLICHE BESCHREIBUNG
- Es werden Systeme und Verfahren zur adaptiven Partitionierung von verteilten Cache-Systemen offenbart. Der gesamte Cache des Clusters wird in eine Anzahl Slices, aufgeteilt, die den Computerknoten des Clusters zugeordnet sind. Die offenbarten Systeme und Verfahren untersuchen die Netzwerkauslastung des Clusters und können die Slices neu an neue Computerknoten vergeben. Eine neue Routingabbildung, die die neuen Vergaben repräsentiert, kann zu jedem Computerknoten des Clusters geroutet werden.
-
1 zeigt ein beispielhaftes Cluster100 von Computerknoten. Spezifisch enthält das Cluster100 Computerknoten102 ,104 und106 . Knoten102 umfasst Server108 und Speicherungsvorrichtung110 , Knoten104 umfasst Server112 und Speicherungsvorrichtung114 und Knoten106 umfasst Server116 und Speicherungsvorrichtung118 . Die Knoten102 ,104 und106 sind mittels des Netzwerks120 miteinander verbunden. Einige vorbekannte verteilte Speicherungssysteme verteilen typischerweise Slices über Computerknoten mittels Striping. Die Daten-Striping-Technik speichert logisch sequenzielle Slices auf physischen Speicherungsvorrichtungen verschiedener Computerknoten, z. B. mittels einer Reigenmethode. Zum Beispiel können die Slices im Cluster100 aufeinanderfolgend an Knoten102 ,104 und106 in dieser Reihenfolge vergeben werden. Andere vorbekannte verteilte Speicherungssysteme können die Slices zufällig unter den Knoten des Clusters verteilen, z. B. unter Verwendung einer Hash-Funktion. - Diese vorbekannten Systeme weisen schlechte Skalierbarkeit auf. Unter der Annahme einer zufälligen und gleichförmigen Verteilung von Slices unter „N“ Knoten in einem Cluster ist z. B. die Wahrscheinlichkeit, dass ein angefordertes Datenpaket von einem Server eines bestimmten Knotens lokal auf dem Knoten gespeichert ist, nur 1/N. Wenn das angeforderte Datenpaket nicht lokal gespeichert wird, muss eine Anforderung des Datenpakets über das Netzwerk zu dem entfernten Knoten gesendet werden und das Datenpaket muss über das Netzwerk zu dem Knoten transferiert werden, der es angefordert hat. Mit wachsender Anzahl von Knoten muss eine zunehmende Anzahl von Datenpaketen über das Netzwerk transferiert werden, um Datenpaketanforderungen zu erfüllen. Dies kann sich negativ auf die verfügbare Bandbreite des Netzwerks auswirken. Da Anwendungen oberer Schichten auch versuchen können, um Netzwerkbandbreite zu konkurrieren, kann das System aufgrund von Netzwerkstau schlechte Leistungsfähigkeit aufweisen.
- Ohne Vorkenntnis über Zugriffe können wie oben besprochen die Slices anfänglich über alle Knoten im Cluster gestriped werden. Jeder Knoten kann eine Routingabbildung mit Informationen über jede Slice-Eigentümerschaft im Cluster aufweisen, womit man eine Anforderung zu einem geeigneten Eigentümer routen kann. Jeder Knoten kann auch Zugriffsstatistiken für alle Slices unterhalten. Die Datenstruktur zum Speichern dieser Informationen kann ein Array sein, das gemäß der Anzahl von Slices bemessen werden kann und kann auch ein Feld in dem Array für einen Zeitstempel aufweisen. Auf die Slice-Nummer kann aus dem Arrayindex geschlossen werden, und jeder Index in dem Array kann Zugriffsstatistik für dieses Slice angeben, z. B. die Menge an Daten, die gelesen und/oder in dieses bestimmte Slice von diesem Knoten geschrieben wurde. Es kann ein Zeitstempel für die gesamte Datenstruktur gespeichert werden, so dass die Datenrate (MB/s) für das Intervall seit dem letzten Rücksetzen der Informationen in der Datenstruktur leicht berechnet werden kann.
- Immer wenn ein bestimmter Knoten eine Anforderung einer logischen Blockadresse (LBA) empfängt, kann er das Slice bestimmen, zu dem die LBA gehört, und kann dann die Routingabbildung konsultieren, um den Eigentümerknoten dieses bestimmten Slice zu bestimmen. Wenn der bestimmte Knoten der Eigentümer des bestimmten Slice ist, kann der die Anforderung lokal versorgen, ohne irgendwelche Netzwerkressourcen zu verbrauchen. Wenn das bestimmte Slice einem anderen Knoten gehört, wird die Anforderung zu diesem Eigentümer geroutet. Der bestimmte Knoten kann auch den Zugriffsstatistikzähler für dieses Slice dementsprechend modifizieren.
- Gemäß Aspekten der Offenbarung können nach einem vorbestimmten Zeitraum die offenbarten Systeme und Verfahren neue Eigentümer für jedes Slice bestimmen, die die Netzwerkauslastung verringern könnten. Die neuen Eigentümer können nach dem vorbestimmten Zeitraum, in dem ausreichend Informationen über Zugriffsstatistiken gesammelt wurden, bestimmt werden, um die Entscheidung über die neuen Eigentümer zu informieren. Wenn das offenbarte Verfahren bestimmt, dass ein Slice zu einem neuen Eigentümer wechseln kann, kann es dynamisch neu vergeben werden, z. B. ohne Benutzerintervention oder die Notwendigkeit, den Cache neu zu erzeugen.
- Da mehr als ein Knoten auf Daten im selben Slice zugreifen können, können andere Knoten, nachdem ein Slice neu an einen neuen Eigentümer vergeben wird, immer noch erfordern, aus der Ferne auf das Slice zuzugreifen. Dementsprechend sollte das Netzwerk immer noch Anforderungen des Datenzugriffs in entfernten Knoten nachkommen. Gemäß Aspekten der Offenbarung kann ein Slice auf der Basis der Lokalität des Zugriffs neu an einen Knoten vergeben werden, z. B. an den Knoten, der die meisten Daten transferiert, was zur Minimierung der Auswirkung auf das Netzwerk führen kann.
- Zusätzlich zu der Netzwerkauslastungsverringerung kann die dynamische Zuteilung von Slices auch die Skalierbarkeit verbessern, da sie die Hinzufügung von mehr Computerknoten in das Cluster erlauben kann. Die offenbarten Systeme und Verfahren können sich auch besser an Änderungen von Zugriffsmustern anpassen, zum Beispiel im Fall von neuen Anwendungen, Anwendungsausfällen oder zum Lastausgleich.
-
2 und3 zeigen eine beispielhafte dynamische Zuteilung von Slices und die resultierende Netzwerkauslastungsverringerung. Spezifisch zeigt2 ein Cluster200 mit 2 Knoten (N1 ,N2 ). Der gesamte Cache des Clusters ist in vier Slices202 aufgeteilt. Anfänglich werden die Slices202 zwischen KnotenN1 undN2 im Reigenverfahren vergeben, wie in der Routingabbildung204 dargestellt. Spezifisch werden Slices {0 ,2 } an KnotenN1 und Slices {1 ,3 } an KnotenN2 vergeben. Alle empfangenen Anforderungen von Daten in den Slices werden gemäß der Routingabbildung204 versorgt. Zum Beispiel wird eine Anforderung auf KnotenN1 einer LBA, die im Slice0 residiert, lokal versorgt. Eine Anforderung auf KnotenN1 einer LBA, die in Slice1 residiert, wird über das Netzwerk versorgt, z. B. durch Anfordern der LBA von KnotenN2 . Wie oben besprochen können nach einem vorbestimmten Zeitraum die offenbarten Systeme und Verfahren neue Eigentümer für die Slices bestimmen, indem zum Beispiel Zugriffsstatistiken für die Knoten in dem Cluster untersucht werden. Als Anschauungsbeispiel zeigt Tabelle 206 die Zugriffsstatistiken für KnotenN1 und Tabelle 208 die Zugriffsstatistiken für KnotenN2 . Zum Beispiel zeigt Tabelle 206, dass KnotenN1 Daten von Slice0 mit einer Transferrate von 50 MB/s210 anfordert und Daten von Slice1 mit einer Transferrate von 100 MB/s212 anfordert. Wie oben besprochen, vergrößern nur Fernanforderungen die Netzwerkauslastung, wodurch die gesamte verfügbare Netzwerkbandbreite verringert wird, und deshalb trägt die Anforderung von Daten in entfernten Slices, z. B. den Slices1 und3 , für KnotenN1 zur Netzwerkauslastung bei. Für KnotenN2 kann Anforderung von Daten in entfernten Slices, z. B. den Slices0 und2 , dementsprechend zur Netzwerkauslastung beitragen. Auf der Basis der Zugriffsstatistiken in den Tabellen 206 und 208 kann die Fernanforderungsrate für KnotenN1 auf der Basis der folgenden Gleichung berechnet werden: -
- Die gesamte Netzwerkauslastung ist deshalb 130 MB/s + 80 MB/s = 210 MB/s, was hoch ist. Gemäß Aspekten der Offenbarung können auf der Basis der Ferntransferraten und Gesamtnetzwerkauslastung die Slices neu vergeben werden, um die Gesamtnetzwerkauslastung zu verringern. Dies ist in
3 dargestellt. Zum Beispiel zeigt3 das Cluster von2 , wobei zwei der Slices neu vergeben wurden. Spezifisch wurde Slice1 , das zuvor an KnotenN2 vergeben war, neu an KnotenN1 302 vergeben, und Slice2 , das zuvor an KnotenN1 vergeben wurde, wurde neu an KnotenN2 304 vergeben. Nach allen Neuvergaben wird die neue Routingabbildung306 zu allen Knoten zirkuliert, so dass jedem Knoten die neuen Slicevergaben bewusst sein können. -
- Ähnlich kann die Fernanforderungsrate für Knoten
N2 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N2) = Transferrate Slice 0 + Transferrate Slice 1 = 20 (Mb/s) + 40 (Mb/s) = 60 (Mb/s) - Die gesamte Netzwerkauslastung ist deshalb 50 MB/s + 60 MB/s = 110 MB/s, was wesentlich niedriger ist, z. B. verglichen mit dem anfänglichen Wert um 52,3% niedriger. Jeder Knoten im Cluster kann einen kumulativen Wert der Zugriffsgröße zum Beispiel in Byte für jedes Slice unterhalten, auf das er in einem gegebenen Zeitfenster zugegriffen hat. Die Transferrate für jedes Slice kann dann durch Dividieren der Zugriffsgröße durch die Fenstergröße berechnet werden. Zum Zeitpunkt der Umabbildung kann für jedes Slice ein Umabbildungsalgorithmus die Transferrate jedes Knotens prüfen und kann es an den Knoten vergeben, der die höchste Transferrate aufweist. Falls der aktuelle Eigentümer eines Slice die höchste Transferrate für das bestimmte Slice aufweist, muss das Slice nicht neu abgebildet werden. Wenn mehrere Knoten die höchste Transferrate aufweisen, können Verknüpfungen zum Beispiel unter Verwendung von Zugriffsgröße, Periodizität des Wechsels der Slice-Eigentümerschaft, Cache-Verschmutzung und anderer Heuristik unterbrochen werden. Die ursprüngliche und neue Netzwerkauslastung können durch Summierung von Transferraten für jedes Slice durch entfernte Knoten berechnet werden. Die Statistiken können nach einer Runde der Neuabbildung rückgesetzt werden.
- Die Häufigkeit der Neuabbildung kann durch einen Administrator bestimmt werden. Zum Beispiel kann sie zu einer bestimmten Zeit während des Tages laufen, z. B. wenn Anforderungsverkehr niedrig ist. Die Neuabbildung kann auch automatisch sein, zum Beispiel kann ein Prozess im Hintergrund die Transferraten von jedem Knoten periodisch abfragen und bestimmen, ob eine Änderung vom stationären Zustand, z. B. aufgrund einer Änderung von Anwendungszugriffsmustern, vorliegt.
- Gemäß alternativen Aspekten der Erfindung kann andere Heuristik verwendet werden, um eine verbesserte Slice-Platzierung zu bestimmen, wie etwa Cache-Raumauslastung auf einem Knoten, Ausräumung und Menge an schmutzigen Daten, die nach der Eigentümerschaftsänderung migriert werden müssten. Jeder Knoten kann die Menge an schmutzigen Daten, die ausgeräumt werden kann, verfolgen. Die Neuabbildung eines Slice kann vermieden werden, es würde Ausräumen von schmutzigen Daten über eine Schwelle bedeuten. Das Ausräumen massiver Mengen an Daten durch verschiedene Knoten während der Neuabbildung kann zufällige Schreibvorgänge auf dem Datenträger erzeugen und kann sich deshalb auf die Zeit zum Durchführen der Neuabbildung auswirken und kann sich auch auf Anwendungs-E/As auswirken, die Daten aus dem Datenträger bei einem Cache-Fehlen abrufen müssen. Cache-Auslastung kann auch betrachtet werden, weil ein Knoten z. B. auf der Basis der Transferrate der optimale Eigentümer für ein Slice sein kann, was aber nicht bedeutet, dass Speichern dieses Slice auf seinem optimalen Eigentümer die Leistungsfähigkeit verbessern würde. Für jeden Knoten können Prioritäten auf der Basis von Transferraten an diese Slices vergeben werden. Diese Prioritäten können zusammen mit der Cache-Auslastung während des Neuabbildens verwendet werden, um zu bestimmen, ob ein bestimmtes Slice neu auf einem gegebenen Knoten abgebildet werden sollte oder nicht. Wenn die Cache-Auslastung gering ist, kann Neuabbildung auftreten; andernfalls kann Abbilden eines Slice mit niedriger Priorität bewirken, dass Daten von anderen Slices mit höherer Priorität ausgeräumt werden, was sich negativ auf die Leistungsfähigkeit auswirken kann.
- Nachdem eine neue Routingabbildung erzeugt wurde, ist es wünschenswert, die Routingabbildungen in jedem Cluster dynamisch zu aktualisieren, z. B. ohne jegliche Ausfallzeit, ohne das Cluster zu löschen oder neu zu erzeugen oder die Verarbeitung von Datenanforderungen für lange Dauer anzuhalten.
- Gemäß Aspekten der Offenbarung kann die neue Routingabbildung atomisch über alle Knoten im Cluster hinweg aktualisiert werden. Zum Beispiel kann einer der Knoten an den Managerknoten vergeben werden, der für das Koordinieren der Aktualisierung verantwortlich sein kann. Der Managerknoten kann die neue Routingabbildung allen anderen Knoten des Clusters bereitstellen und kann von diesen anfordern, den Aktualisierungsprozess zu beginnen. Gemäß Aspekten der Offenbarung kann der Aktualisierungsprozess drei Schritte umfassen. Während des ersten Schritts können alle Knoten einzeln die neue Routingabbildung mit der aktuellen Routingabbildung vergleichen und können bestimmen, welche Slices an sie neu vergeben wurden, z. B. gewonnene Slices, und welche Slices nicht mehr an sie vergeben sind, z. B. verlorene Slices.
- Aktuelle Slice-Eigentümer können die Daten vom Backend bei einem Cache-Fehlen abrufen. Während der Neuabbildung könnte es, wenn der alte Eigentümer nicht alle schmutzigen Daten ausgespült hat und alle nachfolgenden Schreibvorgänge als Durchschreiben behandelt hat, dazu kommen, dass der neue Eigentümer verfallene Daten vom Backend abruft (nachdem die Ferntrefferperiode vorüber ist). Für alle verlorenen Slice-Eigentümerschaften können die Knoten jegliche schmutzigen Daten, die sie im Cache für diese Slices haben, ausspülen und können diese Slices auch in Durchschreiben verwandeln. Deshalb verschmutzen alle neuen Schreibvorgänge nach dem Ausspülen das Slice nicht nochmal. Dies kann Stimmigkeit mit dem Backend (Cache-gespeicherte Vorrichtung) sicherstellen, so dass im Fall eines etwaigen Fehlers keine Abhängigkeit von dem alten Eigentümer eines Slice bestehen kann.
- Für alle gewonnenen Slice-Eigentümerschaften können die Knoten etwaige bereits existierende Daten, die im Cache vorliegen, löschen. Diese Aktion wird durchgeführt, weil wie oben erläutert der Prozess für verlorene Slice-Eigentümerschaften die schmutzigen Daten ausspült, ohne Daten zu löschen, die zu Slices gehören, für die der Knoten Eigentümerschaft verloren hat. Diese Aktion führt zu keinerlei Problemen, da die Daten, die zu einem Slice gehören, für das Eigentümerschaft verloren wurde, letztendlich aus dem Cache ausgeräumt werden, während neue Daten Cache-gespeichert werden. Wenn zum Beispiel ein Slice auf einen neuen Eigentümer umabgebildet wurde, kann der alte Eigentümer etwaige schmutzige Daten, die dem Slice zugeordnet sind, vor der Eigentümerschaftsänderung ausspülen. Während einer Ferntrefferperiode nach der Eigentümerschaftsänderung kann der neue Eigentümer den alten Eigentümer nach Daten über ein Cache-Fehlen abfragen, weil es schneller sein kann, die Daten von dem alten Eigentümer zu erhalten, statt sie vom Backend zu erhalten. Dies ist im Allgemeinen wahr, weil Netzwerk- und Halbleiterlaufwerkzugriffe schneller als Festplattenzugriffe sind. Cache-Speicherung auf Bedarf nach Eigentümerschaftsänderung kann auch Cache-Verunreinigung vermeiden, weil nicht alle Blöcke des Slice, die in dem alten Eigentümer Cachegespeichert wurden, vom neuen Eigentümer benötigt werden. Die Ferntrefferperiode kann für eine endliche Dauer gelten und kann für Aufwärmung des Cache des neuen Eigentümers bestimmt sein. Bei einer Leseanforderung an einen Block kann der neue Eigentümer den alten Eigentümer nach dem Block abfragen und kann ihn Cache-speichern. Wenn der alte Eigentümer nicht über den Block verfügt, kann der neue Eigentümer ihn vom Backend abrufen. Eine Schreibanforderung zu einem späteren Zeitpunkt kann den Block modifizieren, wodurch die Kopie des Blocks auf dem alten Eigentümer verfallen würde. Wenn während einer neuen Runde der Neuabbildung das Slice neu auf seinen alten Eigentümer abgebildet wird, würde, wenn der alte Eigentümer immer noch den Block in seinem Cache hätte, er für eine Leseanforderung dann verfallene Daten zurückgeben. Dies ist der Grund für das Vorreinigen etwaiger existierender Daten, die ein Knoten für ein Slice haben könnte, für das er Eigentümerschaft gewinnt.
- Nach dem Abschluss dieses Schritts kann jeder Knoten den Managerknoten über den Status des Abschlusses des Schritts informieren, z. B. ob der Knoten erfolgreich die schmutzigen Daten ausgespült und etwaige bereits existierende Daten gelöscht hat oder ob in diesem Schritt ein Fehler aufgetreten ist. Gemäß Aspekten der Offenbarung kann der Managerknoten, wenn alle Knoten angegeben haben, dass sie den Schritt erfolgreich abgeschlossen haben, alle Knoten anweisen, zum zweiten Schritt des Aktualisierungsprozesses überzugehen. Wenn mindestens ein Knoten angegeben hat, dass während des ersten Schritts ein Fehler aufgetreten ist, kann der Managerknoten alle Knoten anweisen, den Aktualisierungsprozess abzubrechen.
- Im zweiten Schritt kann der Managerknoten alle Knoten anweisen, die Versorgung ihrer Anforderungen individuell anzuhalten, z. B. können die empfangenen Anforderungen in einer Warteschlange gehalten werden, und die neue Routingabbildung anzuwenden. Nach dem Abschluss dieses Schritts kann jeder Knoten den Managerknoten über den Status des Abschlusses des Schritts informieren, z. B. ob sie die neue Abbildung erfolgreich angewandt haben oder ob in diesem Schritt ein Fehler aufgetreten ist. Wenn alle Knoten angeben, dass der Schritt erfolgreich war, kann der Managerknoten alle Knoten anweisen, zum dritten Schritt des Aktualisierungsprozesses überzugehen. Wenn mindestens ein Knoten angegeben hat, dass während des ersten Schritts ein Fehler aufgetreten ist, kann der Managerknoten alle Knoten anweisen, den Aktualisierungsprozess abzubrechen. Wenn die Knoten die Abbruchanweisung empfangen, können die Knoten die neue Routingabbildung verwerfen und Verarbeitung ihrer Anforderungen gemäß der vorherigen Routingabbildung wiederaufnehmen. Gemäß alternativen Aspekten der Offenbarung kann der Managerknoten nach einiger Zeit das Protokoll erneut vom Anfang an versuchen. Im dritten Schritt des Aktualisierungsprozesses können alle Knoten die Versorgung ihrer Anforderungen wieder aufnehmen.
-
4 zeigt ein beispielhaftes Verfahren400 zum Aktualisieren der Routingabbildung gemäß Aspekten der Offenbarung. Spezifisch kann der Managerknoten die neue Routingabbildung zu allen Knoten senden und kann von ihnen anfordern, den Aktualisierungsprozess zu starten402 . Nachdem die Knoten die neue Routingabbildung empfangen, können die Knoten die neue Routingabbildung mit der aktuellen Routingabbildung vergleichen404 . Die Knoten können dann die Slices bestimmen, die sie gewonnen und/oder verloren haben406 . Für alle verlorenen Slice-Eigentümerschaften spülen die Knoten schmutzige Daten im Cache für diese Slices aus und verwandeln diese Slices in Durchschreiben408 . Für alle gewonnenen Slice-Eigentümerschaften löschen die Knoten etwaige bereits existierende Daten, die im Cache vorliegen könnten410 . Wenn in irgendeinem der Knoten ein Fehler auftritt412 , kann der Managerknoten den Prozess abbrechen414 . Wenn kein Fehler auftritt, können die Knoten die Versorgung ihrer Anforderung stoppen416 und die neue Routingabbildung anwenden418 . Wenn in irgendeinem der Knoten ein Fehler auftritt420 , kann der Managerknoten den Prozess abbrechen414 . Wenn kein Fehler auftritt, können die Knoten die Versorgung der Anforderungen wieder aufnehmen. - Nach dem Aktualisieren der Routingabbildung über alle Knoten hinweg, ist die neue Eigentümerschaft von Slices wirksam. Die neuen Eigentümer enthalten jedoch keinerlei Daten für die Slices, die sie nach der gerade abgeschlossenen Runde der Eigentümerschaftsaktualisierung gewonnen haben. Dadurch entstehen keinerlei Datenstimmigkeitsprobleme, weil vor der Eigentümerschaftsänderung alle schmutzigen Daten, die zu den Slices gehören, deren Eigentümerschaft sich geändert hat, ausgespült werden und deshalb der neue Eigentümer immer die Daten vom Backend abrufen kann, um eine etwaige Anforderung zu versorgen. Dadurch kann jedoch die Latenz vergrößert werden, weil der Cache wiederaufgewärmt werden muss, was nach jeder Runde der Eigentümerschaftsänderung zu Leistungsfähigkeitskurven des Sägezahntyps führen kann.
- Die offenbarten Systeme und Verfahren können dieses Problem mindern. Gemäß Aspekten der Offenbarung können die Daten vor der Eigentümerschaftsänderung zum neuen Eigentümer transferiert werden, statt zum Backend gespült zu werden. Gemäß alternativen Aspekten der Offenbarung können die Daten nach der Eigentümerschaftsänderung im Hintergrund vom alten Eigentümerknoten zum neuen Eigentümerknoten transferiert werden.
- Diese Lösungen können potentiell zu Cache-Verunreinigung führen, da nicht häufig auf alle Daten zugegriffen werden könnte, die für ein bestimmtes Slice Cache-gespeichert wurden. Zum Beispiel kann nur auf eine Teilmenge des Slice häufig zugegriffen werden, und auf den Rest wird wenig häufig zugegriffen, wodurch er nicht heiß genug wird, um Cache-gespeichert zu werden. Bei einigen Szenarien kann Transferieren aller Cachegespeicherten Daten für ein bestimmtes Slice vom alten Eigentümerknoten zum neuen Eigentümerknoten zu Ausräumung von einigen Daten, auf die häufiger zugegriffen wird, vom neuen Eigentümer führen.
- Gemäß Aspekten der Offenbarung kann Cache-Speichern von Daten auf Bedarf die Sägezahn-Leistungsfähigkeit verbessern und auch Cache-Verunreinigung vermeiden. Das Cache-Speichern von Daten auf Bedarf ist ein zeitbeschränkter Prozess, der als Ferntrefferperiode bezeichnet wird. Durch Konsultieren der neuen und alten Routingabbildung kann das offenbarte Verfahren den aktuellen und alten Eigentümer eines Slice bestimmen. Für jede Anforderung kann, wenn der neue Eigentümer nicht über die Daten verfügt, das offenbarte Verfahren den alten Eigentümer konsultieren und kann prüfen, ob er die Daten immer noch in seinem Cache hat. Dabei wird angenommen, dass während des Prozesses des Aktualisierens der Routingabbildung die Daten für ein verlorenes Slice nicht gelöscht werden. Die Daten können ausgespült werden, so dass es im Cache sauber ist und können letztendlich gemäß Cache-Müllabfuhrrichtlinien ausgeräumt werden.
- Gemäß Aspekten der Offenbarung kann die Anforderung versorgt werden, wenn der alte Eigentümer immer noch über die Daten verfügt. Die Daten werden auch Cache-gespeichert und in dem neuen Eigentümer angeheftet. Deshalb können Daten auf Bedarf vom alten Eigentümer zum neuen Eigentümer migrieren, wodurch Cache-Verunreinigung vermieden wird. Außerdem kann das Abrufen der Daten vom alten Eigentümer schneller als Abrufen der Daten vom Backend sein und deshalb kann die Sägezahn-Leistungsfähigkeit verbessert werden. Die Daten müssen auf den neuen Eigentümer angeheftet werden, weil sie modifiziert werden könnten, was bewirkt, dass der alte Eigentümer verfallene Daten hat. Dies kann Ausräumung von Daten auf dem neuen Eigentümer, die zu einem neugewonnenen Slice gehören, während der Ferntrefferperiode verhindern. Wenn der alte Eigentümer die Daten nicht in seinem Cache hat, können die Daten vom Backend abgerufen werden und können in dem neuen Eigentümer Cache-gespeichert und angeheftet werden.
- Nachdem die Ferntrefferperiode vorüber ist, wird der alte Eigentümer nicht mehr bezüglich etwaiger Cache-Fehltreffer konsultiert und die Daten können auf den neuen Eigentümer ent-heftet werden. Die Dauer der Ferntrefferperiode kann unter Verwendung verschiedener Heuristik bestimmt werden, zum Beispiel auf der Basis historischer Zeiten zur Aufwärmung des Cache.
Claims (24)
- Verfahren zur adaptiven Partitionierung eines verteilten Cache in einem Cluster (100), das eine Vielzahl von Computerknoten (102,104,106,N1,N2) umfasst, die durch ein Netzwerk (120) miteinander verbunden sind, wobei der verteilte Cache in Cache-Slices (202) partitioniert ist, wobei das Verfahren Folgendes umfasst: Vergeben einer ersten Vielzahl der Cache-Slices (202) an einen ersten Computerknoten (N1) auf der Basis einer ersten Routingtabelle (204); Neuvergeben einer zweiten Vielzahl der Cache-Slices (202) an den ersten Computerknoten (N1) und einer ersten Teilmenge der ersten Vielzahl der Cache-Slices an mindestens einen anderen Computerknoten (N2) als den ersten Computerknoten nach einem ersten Zeitraum auf der Basis von Zugriffsstatistiken für die Cache-Slices der Computerknoten; und Bereitstellen einer zweiten Routingtabelle (306) gemäß dem Neuvergeben der Cache-Slices an die Computerknoten nach dem ersten Zeitraum.
- Verfahren nach
Anspruch 1 , wobei die Zugriffsstatistiken (206,208) Transferraten für die Cache-Slices umfassen, die auf der Zugriffsgröße für jedes der Cache-Slices und einem Zeitraum basieren. - Verfahren nach
Anspruch 1 , wobei das Neuvergeben der zweiten Vielzahl der Cache-Slices und der ersten Teilmenge der ersten Vielzahl der Cache-Slices zu verringerter Netzwerkauslastung führt. - Verfahren nach
Anspruch 1 , das ferner Vergleichen der ersten Routingtabelle (204) und der zweiten Routingtabelle (306) umfasst, um die zweite Vielzahl der Cache-Slices und die erste Teilmenge der ersten Vielzahl der Cache-Slices zu bestimmen. - Verfahren nach
Anspruch 4 , ferner umfassend: (a) Ausspülen von schmutzigen Daten aus der ersten Teilmenge der ersten Vielzahl der Cache-Slices; (b) Verwandeln der ersten Teilmenge der ersten Vielzahl der Cache-Slices in Durchschreib-Cache-Slices; und (c) Löschen bereits existierender Daten aus der zweiten Vielzahl der Cache-Slices. - Verfahren nach
Anspruch 5 , das ferner Bestimmen umfasst, ob während (a) und/oder (b) und/oder (c) ein erster Fehler aufgetreten ist. - Verfahren nach
Anspruch 6 , das ferner Neuvergeben der ersten Vielzahl der Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle umfasst, wenn der erste Fehler aufgetreten ist. - Verfahren nach
Anspruch 6 , das ferner umfasst, in dem ersten Computerknoten die Versorgung von Datenanforderungen zu stoppen, wenn der erste Fehler nicht aufgetreten ist. - Verfahren nach
Anspruch 8 , das ferner umfasst, in dem ersten Computerknoten Ziele von Datenanforderungen auf der Basis der zweiten Routingtabelle zu bestimmen. - Verfahren nach
Anspruch 9 , das ferner umfasst, zu bestimmen, ob während des Bestimmens der Ziele von Datenanforderungen auf der Basis der zweiten Routingtabelle ein zweiter Fehler aufgetreten ist. - Verfahren nach
Anspruch 10 , das ferner Neuvergeben der ersten Vielzahl der Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle umfasst, wenn der zweite Fehler aufgetreten ist. - Verfahren nach
Anspruch 11 , das ferner umfasst, in dem ersten Computerknoten das Versorgen von Datenanforderungen wiederaufzunehmen, wenn der erste Fehler nicht aufgetreten ist. - System zur adaptiven Partitionierung eines verteilten Cache in einem Cluster (100), das eine Vielzahl von Computerknoten (102,104,106,N1,N2) umfasst, die durch ein Netzwerk (120) miteinander verbunden sind, wobei das System Folgendes umfasst: den in Cache-Slices (202) partitionierten verteilten Cache; und einen ersten Computerknoten (N1), ausgelegt zum: Vergeben einer ersten Vielzahl der Cache-Slices (202) an einen ersten Computerknoten (N1) auf der Basis einer ersten Routingtabelle (204); Neuvergeben einer zweiten Vielzahl der Cache-Slices (202) an den ersten Computerknoten (N1) und einer ersten Teilmenge der ersten Vielzahl der Cache-Slices an mindestens einen anderen Computerknoten (N2) als den ersten Computerknoten nach einem ersten Zeitraum auf der Basis von Zugriffsstatistiken für die Cache-Slices der Computerknoten; und Bereitstellen einer zweiten Routingtabelle (306) gemäß dem Neuvergeben der Cache-Slices an die Computerknoten nach dem ersten Zeitraum.
- System nach
Anspruch 13 , wobei die Zugriffsstatistiken (206,208) Transferraten für die Cache-Slices umfassen, die auf der Zugriffsgröße für jedes der Cache-Slices und einem Zeitraum basieren. - System nach
Anspruch 13 , wobei das Neuvergeben der zweiten Vielzahl der Cache-Slices und der ersten Teilmenge der ersten Vielzahl der Cache-Slices zu verringerter Netzwerkauslastung führt. - System nach
Anspruch 13 , wobei der erste Computerknoten ferner ausgelegt ist zum Vergleichen der ersten Routingtabelle (204) und der zweiten Routingtabelle (306), um die zweite Vielzahl der Cache-Slices und die erste Teilmenge der ersten Vielzahl der Cache-Slices zu bestimmen. - System nach
Anspruch 16 , wobei der erste Computerknoten ferner ausgelegt ist zum: (a) Ausspülen von schmutzigen Daten aus der ersten Teilmenge der ersten Vielzahl der Cache-Slices; (b) Verwandeln der ersten Teilmenge der ersten Vielzahl der Cache-Slices in Durchschreib-Cache-Slices; und (c) Löschen bereits existierender Daten aus der zweiten Vielzahl der Cache-Slices. - System nach
Anspruch 17 , wobei der erste Computerknoten ferner ausgelegt ist zum Bestimmen ob während (a) und/oder (b) und/oder (c) ein erster Fehler aufgetreten ist. - System nach
Anspruch 18 , wobei der erste Computerknoten ferner ausgelegt ist zum Neuvergeben der ersten Vielzahl der Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle, wenn der erste Fehler aufgetreten ist. - System nach
Anspruch 18 , wobei der erste Computerknoten ferner ausgelegt ist zum Stoppen der Versorgung von Datenanforderungen, wenn der erste Fehler nicht aufgetreten ist. - System nach
Anspruch 20 , wobei der erste Computerknoten ferner ausgelegt ist zum Bestimmen von Zielen von Datenanforderungen auf der Basis der zweiten Routingtabelle. - System nach
Anspruch 21 , wobei der erste Computerknoten ferner ausgelegt ist zum Bestimmen, ob während des Bestimmens der Ziele von Datenanforderungen auf der Basis der zweiten Routingtabelle ein zweiter Fehler aufgetreten ist. - System nach
Anspruch 22 , wobei der erste Computerknoten ferner ausgelegt ist zum Neuvergeben der ersten Vielzahl der Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle, wenn der zweite Fehler aufgetreten ist. - System nach
Anspruch 23 , wobei der erste Computerknoten ferner ausgelegt ist zum Wiederaufnehmen der Versorgung von Datenanforderungen, wenn der erste Fehler nicht aufgetreten ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/941,125 US9832277B2 (en) | 2015-11-13 | 2015-11-13 | Systems and methods for adaptive partitioning in distributed cache memories |
US14/941,125 | 2015-11-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102016013577A1 DE102016013577A1 (de) | 2017-05-18 |
DE102016013577B4 true DE102016013577B4 (de) | 2020-10-29 |
Family
ID=58640181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102016013577.8A Active DE102016013577B4 (de) | 2015-11-13 | 2016-11-14 | Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern |
Country Status (5)
Country | Link |
---|---|
US (1) | US9832277B2 (de) |
JP (1) | JP6263596B2 (de) |
KR (1) | KR101960138B1 (de) |
CN (1) | CN107018172B (de) |
DE (1) | DE102016013577B4 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160212198A1 (en) * | 2015-01-16 | 2016-07-21 | Netapp, Inc. | System of host caches managed in a unified manner |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
US10467195B2 (en) * | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
CN109842636A (zh) * | 2017-11-24 | 2019-06-04 | 阿里巴巴集团控股有限公司 | 云服务迁移方法、装置以及电子设备 |
CN112748867B (zh) * | 2019-10-31 | 2024-04-19 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、电子设备以及计算机程序产品 |
US11294808B2 (en) * | 2020-05-21 | 2022-04-05 | Micron Technology, Inc. | Adaptive cache |
US11409657B2 (en) | 2020-07-14 | 2022-08-09 | Micron Technology, Inc. | Adaptive address tracking |
US11422934B2 (en) | 2020-07-14 | 2022-08-23 | Micron Technology, Inc. | Adaptive address tracking |
US11507516B2 (en) | 2020-08-19 | 2022-11-22 | Micron Technology, Inc. | Adaptive cache partitioning |
US11372761B1 (en) | 2020-12-11 | 2022-06-28 | International Business Machines Corporation | Dynamically adjusting partitioned SCM cache memory to maximize performance |
US11379369B1 (en) * | 2021-01-15 | 2022-07-05 | Coupang Corp. | Systems and methods for dynamic in-memory caching of mappings into partitions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123197A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corp. | System, method and computer program product for application-level cache-mapping awareness and reallocation |
US20090049248A1 (en) * | 2007-08-16 | 2009-02-19 | Leo James Clark | Reducing Wiring Congestion in a Cache Subsystem Utilizing Sectored Caches with Discontiguous Addressing |
US20120005524A1 (en) * | 2010-07-05 | 2012-01-05 | Thanunathan Rangarajan | Fault tolerance of multi-processor system with distributed cache |
US8429346B1 (en) * | 2009-12-28 | 2013-04-23 | Emc Corporation | Automated data relocation among storage tiers based on storage load |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6321238B1 (en) | 1998-12-28 | 2001-11-20 | Oracle Corporation | Hybrid shared nothing/shared disk database system |
US6754220B1 (en) | 1999-05-31 | 2004-06-22 | International Business Machines Corporation | System and method for dynamically assigning routers to hosts through a mediator |
US7069324B1 (en) * | 2000-06-30 | 2006-06-27 | Cisco Technology, Inc. | Methods and apparatus slow-starting a web cache system |
US6792509B2 (en) | 2001-04-19 | 2004-09-14 | International Business Machines Corporation | Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria |
US6961821B2 (en) * | 2002-10-16 | 2005-11-01 | International Business Machines Corporation | Reconfigurable cache controller for nonuniform memory access computer systems |
JP2004139366A (ja) * | 2002-10-18 | 2004-05-13 | Hitachi Ltd | キャッシュ配置方法 |
US7461146B2 (en) | 2003-01-20 | 2008-12-02 | Equallogic, Inc. | Adaptive storage block data distribution |
US7827353B2 (en) * | 2003-07-15 | 2010-11-02 | International Business Machines Corporation | Self healing memory |
US7277897B2 (en) | 2003-08-01 | 2007-10-02 | Oracle International Corporation | Dynamic reassignment of data ownership |
US7120651B2 (en) * | 2003-08-01 | 2006-10-10 | Oracle International Corporation | Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping |
US7437510B2 (en) * | 2005-09-30 | 2008-10-14 | Intel Corporation | Instruction-assisted cache management for efficient use of cache and memory |
KR101498673B1 (ko) * | 2007-08-14 | 2015-03-09 | 삼성전자주식회사 | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 |
US8645965B2 (en) * | 2007-12-31 | 2014-02-04 | Intel Corporation | Supporting metered clients with manycore through time-limited partitioning |
US8069322B2 (en) * | 2008-08-15 | 2011-11-29 | International Business Machines Corporation | Active-active remote configuration of a storage system |
JP5257843B2 (ja) | 2008-12-12 | 2013-08-07 | 日本電気株式会社 | 分散キャッシュシステム、方法、プログラム、及び計算ノード |
US8769049B2 (en) * | 2009-04-24 | 2014-07-01 | Microsoft Corporation | Intelligent tiers of backup data |
US8477597B2 (en) | 2009-05-27 | 2013-07-02 | Yin Zhang | Method and system for resilient routing reconfiguration |
JP5381336B2 (ja) | 2009-05-28 | 2014-01-08 | 富士通株式会社 | 管理プログラム、管理装置および管理方法 |
JP5661355B2 (ja) | 2010-07-09 | 2015-01-28 | 株式会社野村総合研究所 | 分散キャッシュシステム |
CN101980192B (zh) * | 2010-10-15 | 2014-03-12 | 中兴通讯股份有限公司南京分公司 | 一种基于对象的集群文件系统管理方法及集群文件系统 |
CN101989999B (zh) * | 2010-11-12 | 2012-09-26 | 华中科技大学 | 一种分布式环境中的分级存储系统 |
US9336060B2 (en) * | 2011-06-17 | 2016-05-10 | Microsoft Technology Licensing, Llc | Middleware services framework for on-premises and cloud deployment |
US11178244B2 (en) * | 2011-08-09 | 2021-11-16 | Comcast Cable Communications, Llc | Content delivery network routing using border gateway protocol |
US8984162B1 (en) * | 2011-11-02 | 2015-03-17 | Amazon Technologies, Inc. | Optimizing performance for routing operations |
JP5920105B2 (ja) * | 2012-08-16 | 2016-05-18 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US9906436B2 (en) * | 2013-08-05 | 2018-02-27 | Futurewei Technologies, Inc. | Scalable name-based centralized content routing |
CN103616944B (zh) * | 2013-10-18 | 2016-05-11 | 杭州电子科技大学 | 云存储系统中基于预判性绿色数据分类策略的降耗方法 |
US20150293699A1 (en) * | 2014-04-11 | 2015-10-15 | Graham Bromley | Network-attached storage enhancement appliance |
US9690706B2 (en) * | 2015-03-25 | 2017-06-27 | Intel Corporation | Changing cache ownership in clustered multiprocessor |
US9734070B2 (en) * | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
US9824030B2 (en) * | 2015-10-30 | 2017-11-21 | International Business Machines Corporation | Adjusting active cache size based on cache usage |
-
2015
- 2015-11-13 US US14/941,125 patent/US9832277B2/en active Active
-
2016
- 2016-11-14 JP JP2016221690A patent/JP6263596B2/ja active Active
- 2016-11-14 KR KR1020160151208A patent/KR101960138B1/ko active IP Right Grant
- 2016-11-14 CN CN201611001934.2A patent/CN107018172B/zh active Active
- 2016-11-14 DE DE102016013577.8A patent/DE102016013577B4/de active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060123197A1 (en) * | 2004-12-07 | 2006-06-08 | International Business Machines Corp. | System, method and computer program product for application-level cache-mapping awareness and reallocation |
US20090049248A1 (en) * | 2007-08-16 | 2009-02-19 | Leo James Clark | Reducing Wiring Congestion in a Cache Subsystem Utilizing Sectored Caches with Discontiguous Addressing |
US8429346B1 (en) * | 2009-12-28 | 2013-04-23 | Emc Corporation | Automated data relocation among storage tiers based on storage load |
US20120005524A1 (en) * | 2010-07-05 | 2012-01-05 | Thanunathan Rangarajan | Fault tolerance of multi-processor system with distributed cache |
Also Published As
Publication number | Publication date |
---|---|
KR20170058293A (ko) | 2017-05-26 |
US9832277B2 (en) | 2017-11-28 |
CN107018172B (zh) | 2020-04-21 |
JP2017134817A (ja) | 2017-08-03 |
KR101960138B1 (ko) | 2019-03-19 |
DE102016013577A1 (de) | 2017-05-18 |
US20170142217A1 (en) | 2017-05-18 |
CN107018172A (zh) | 2017-08-04 |
JP6263596B2 (ja) | 2018-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102016013577B4 (de) | Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern | |
DE102009022151B4 (de) | Verringern von Invalidierungstransaktionen aus einem Snoop-Filter | |
DE102005029852B4 (de) | Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem | |
DE102020103817B4 (de) | Schwellwertanpassung der Warteschlangentiefe eines Speicherklassenspeichers | |
DE60117818T2 (de) | Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten | |
DE112011103290B4 (de) | Intelligente Schreibcacheoperationen für sequenzielle Datenspuren | |
DE69716663T2 (de) | Prozesszuweisung in einem Mehrrechnersystem | |
DE102013200032B4 (de) | Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher | |
DE112015000710T5 (de) | Verteiltes Speichersystem | |
DE112018005869T5 (de) | Strukturanpassung einer namensraumzuordnung in nicht flüchtigen speichervorrichtungen | |
DE112005001050T5 (de) | Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene | |
DE112010004969T5 (de) | Hybrides Speicherteilsystem | |
DE102013114256B4 (de) | Systeme und Verfahren zur Beibehaltung der Informationskohärenz | |
DE112019000992T5 (de) | Verwaltung virtueller Speicherlaufwerke in einem Datenspeichersystem | |
DE102016225545A1 (de) | Profilierungs-cache-ersatz | |
DE102006032832A1 (de) | Netzwerksystem und Verfahren zur Steuerung verteilter Speicher | |
DE112012002452B4 (de) | Anpassungsfähiges Zwischenspeichern von Datensätzen für Halbleiterplatten | |
DE102013210719B4 (de) | Verfahren und Systeme zum Verwalten von Cache-Speichern | |
DE112019000629B4 (de) | Koordination von cacheoperationen | |
DE102015007709A1 (de) | Invalidationsdatenbereich für einen Cache | |
DE60001170T2 (de) | Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung | |
DE112018006769T5 (de) | Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen | |
DE102007052853A1 (de) | Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter | |
DE112010003675T5 (de) | Adress-Server | |
DE112018005135T5 (de) | Thin provisioning unter verwendung von speicherbänken auf cloud-grundlage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R082 | Change of representative |
Representative=s name: MEWBURN ELLIS LLP, DE |
|
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: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, US Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL |
|
R082 | Change of representative |
Representative=s name: MEWBURN ELLIS LLP, DE |
|
R020 | Patent grant now final | ||
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATE, US Free format text: FORMER OWNER: WESTERN DIGITAL TECHNOLOGIES, INC., SAN JOSE, CA, US |
|
R082 | Change of representative |
Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE |
|
R081 | Change of applicant/patentee |
Owner name: SANDISK TECHNOLOGIES, INC. (N.D.GES.D. STAATES, US Free format text: FORMER OWNER: SANDISK TECHNOLOGIES, INC. (N.D.GES. D. STAATES DELAWARE), MILPITAS, CA, US |