DE102016013577A1 - Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern - Google Patents

Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern Download PDF

Info

Publication number
DE102016013577A1
DE102016013577A1 DE102016013577.8A DE102016013577A DE102016013577A1 DE 102016013577 A1 DE102016013577 A1 DE 102016013577A1 DE 102016013577 A DE102016013577 A DE 102016013577A DE 102016013577 A1 DE102016013577 A1 DE 102016013577A1
Authority
DE
Germany
Prior art keywords
cache
cache slices
slices
node
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.)
Granted
Application number
DE102016013577.8A
Other languages
English (en)
Other versions
DE102016013577B4 (de
Inventor
Pulkit Ambikanandan MISRA
Daniel Peter NOÉ
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.)
Western Digital Technologies Inc
Original Assignee
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102016013577A1 publication Critical patent/DE102016013577A1/de
Application granted granted Critical
Publication of DE102016013577B4 publication Critical patent/DE102016013577B4/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/63Routing a service request depending on the request content or context
    • 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/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details 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

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. Auf der Basis von Zugriffsstatistiken können nach einem vorbestimmten Zeitraum die Cache-Slices 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.

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.
  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 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 Cluster 100 von Computerknoten. Spezifisch enthält das Cluster 100 Computerknoten 102, 104 und 106. Knoten 102 umfasst Server 108 und Speicherungsvorrichtung 110, Knoten 104 umfasst Server 112 und Speicherungsvorrichtung 114 und Knoten 106 umfasst Server 116 und Speicherungsvorrichtung 118. Die Knoten 102, 104 und 106 sind mittels des Netzwerks 120 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 Cluster 100 aufeinanderfolgend an Knoten 102, 104 und 106 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 gesammelet 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 und 3 zeigen eine beispielhafte dynamische Zuteilung von Slices und die resultierende Netzwerkauslastungsverringerung. Spezifisch zeigt 2 ein Cluster 200 mit 2 Knoten (N1, N2). Der gesamte Cache des Clusters ist in vier Slices 202 aufgeteilt. Anfänglich werden die Slices 202 zwischen Knoten N1 und N2 im Reigenverfahren vergeben, wie in der Routingabbildung 204 dargestellt. Spezifisch werden Slices {0, 2} an Knoten N1 und Slices {1, 3} an Knoten N2 vergeben. Alle empfangenen Anforderungen von Daten in den Slices werden gemäß der Routingabbildung 204 versorgt. Zum Beispiel wird eine Anforderung auf Knoten N1 einer LBA, die im Slice 0 residiert, lokal versorgt. Eine Anforderung auf Knoten N1 einer LBA, die in Slice 1 residiert, wird über das Netzwerk versorgt, z. B. durch Anfordern der LBA von Knoten N2. 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 Knoten N1 und Tabelle 208 die Zugriffsstatistiken für Knoten N2. Zum Beispiel zeigt Tabelle 206, dass Knoten N1 Daten von Slice 0 mit einer Transferrate von 50 MB/s 210 anfordert und Daten von Slice 1 mit einer Transferrate von 100 MB/s 212 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 Slices 1 und 3, für Knoten N1 zur Netzwerkauslastung bei. Für Knoten N2 kann Anforderung von Daten in entfernten Slices, z. B. den Slices 0 und 2, dementsprechend zur Netzwerkauslastung beitragen. Auf der Basis der Zugriffsstatistiken in den Tabellen 206 und 208 kann die Fernanforderungsrate für Knoten N1 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N1) = Transferrate Slice 1 + Transferrate Slice 3 = 100 (Mb/s) + 30 (Mb/s) = 130 (Mb/s)
  • Ähnlich kann die Fernanforderungsrate für Knoten N2 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N2) = Transferrate Slice 0 + Transferrate Slice 2 = 20 (Mb/s) + 60 (Mb/s) = 80 (Mb/s)
  • 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 zeigt 3 das Cluster von 2, wobei zwei der Slices neu vergeben wurden. Spezifisch wurde Slice 1, das zuvor an Knoten N2 vergeben war, neu an Knoten N1 302 vergeben, und Slice 2, das zuvor an Knoten N1 vergeben wurde, wurde neu an Knoten N2 304 vergeben. Nach allen Neuvergaben wird die neue Routingabbildung 306 zu allen Knoten zirkuliert, so dass jedem Knoten die neuen Slicevergaben bewusst sein können.
  • Nach den Neuvergaben kann die Fernanforderungsrate für Knoten N1 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N1) = Transferrate Slice 2 + Transferrate Slice 3 = 20 (Mb/s) + 30 (Mb/s) = 50 (Mb/s)
  • Ä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 Cache-gespeichert 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 Verfahren 400 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 starten 402. Nachdem die Knoten die neue Routingabbildung empfangen, können die Knoten die neue Routingabbildung mit der aktuellen Routingabbildung vergleichen 404. Die Knoten können dann die Slices bestimmen, die sie gewonnen und/oder verloren haben 406. 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 Durchschreiben 408. Für alle gewonnenen Slice-Eigentümerschaften löschen die Knoten etwaige bereits existierende Daten, die im Cache vorliegen könnten 410. Wenn in irgendeinem der Knoten ein Fehler auftritt 412, kann der Managerknoten den Prozess abbrechen 414. Wenn kein Fehler auftritt, können die Knoten die Versorgung ihrer Anforderung stoppen 416 und die neue Routingabbildung anwenden 418. Wenn in irgendeinem der Knoten ein Fehler auftritt 420, kann der Managerknoten den Prozess abbrechen 414. 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 Cache-gespeicherten 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.
  • Für Fachleute wäre erkennbar, dass die verschiedenen Darstellungen in der Beschreibung und den Zeichnungen, die hier beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beidem implementiert werden können. Zur Veranschaulichung dieser Austauschbarkeit von Hardware und Software wurden oben verschiedene beispielhafte Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen im Hinblick auf ihre Funktionalität beschrieben. Ob solche Funktionalität als Hardware, Software oder Kombination implementiert wird, richtet sich nach der konkreten Anwendung und Entwurfsbeschränkungen, die dem Gesamtsystem auferlegt werden. Fachleute können die beschriebene Funktionalität auf verschiedene Weise für jede konkrete Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet werden (zum Beispiel in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert werden), ohne jeweils vom Schutzumfang der betreffenden Technologie abzuweichen.
  • Ferner kann eine Implementierung des Kommunikationsprotokolls auf zentralisierte Weise in einem Computersystem realisiert werden, oder auf verteilte Weise, wobei verschiedene Elemente über mehrere verbundene Computersysteme verteilt sind. Jede Art von Computersystem oder anderer Vorrichtung, die zur Ausführung der hier beschriebenen Verfahren ausgelegt ist, eignet sich für die Ausführung der hier beschriebenen Funktionen.
  • Eine typische Kombination von Hardware und Software könnte ein Vielzweck-Computersystem mit einem Computerprogramm sein, das, wenn es geladen und ausgeführt wird, das Computersystem so steuert, dass es die hier beschriebenen Verfahren ausführt. Die Verfahren für das Kommunikationsprotokoll können auch in einem Computerprogrammprodukt eingebettet sein, das alle Merkmale umfasst, die die Implementierung der hier beschriebenen Verfahren ermöglichen, und das, wenn es in ein Computersystem geladen ist, diese Verfahren ausführen kann.
  • Computerprogramm oder Anwendung bedeutet im vorliegenden Kontext einen beliebigen Ausdruck in einer beliebigen Sprache, einem beliebigen Code oder einer beliebigen Notation einer Menge von Anweisungen, die dafür bestimmt ist, zu bewirken, dass ein System, das eine Informationsverarbeitungsfähigkeit aufweist, eine bestimmte Funktion entweder direkt ausführt oder nach einem oder beiden von Folgendem: a) Umsetzung in eine andere Sprache, einen anderen Code oder eine andere Notation; b) Reproduktion in einer anderen materiellen Form. Insbesondere kann dieses Kommunikationsprotokoll in anderen spezifischen Formen realisiert werden, ohne vom Wesen oder den wesentlichen Attributen davon abzuweichen, und dementsprechend sollte man sich auf die folgenden Ansprüche beziehen, statt auf die obige Beschreibung, um den Schutzumfang der Erfindung zu bestimmen.
  • Das Kommunikationsprotokoll wurde im Detail mit spezifischer Erwähnung dieser dargestellten Ausführungsformen beschrieben. Es ist jedoch ersichtlich, dass innerhalb des Wesens und Schutzumfangs der Offenbarung, so, wie sie in der obigen Beschreibung beschrieben wird, verschiedene Modifikationen und Änderungen vorgenommen werden können und diese Modifikationen und Änderungen als Äquivalente und Teil der vorliegenden Offenbarung zu betrachten sind.

Claims (24)

  1. Verfahren zur adaptiven Partitionierung eines verteilten Cache in einem Cluster, das eine Vielzahl von Computerknoten umfasst, die durch ein Netzwerk miteinander verbunden sind, wobei der verteilte Cache in Cache-Slices partitioniert ist, wobei das Verfahren Folgendes umfasst: 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.
  2. Verfahren nach Anspruch 1, wobei die Zugriffsstatistiken Transferraten für die Cache-Slices umfassen, die auf der Zugriffsgröße für jedes Cache-Slice und einem Zeitraum basieren.
  3. Verfahren nach Anspruch 1, wobei das Neuvergeben der zweiten Vielzahl von Cache-Slices und der ersten Teilmenge der ersten Vielzahl von Cache-Slices zu verringerter Netzwerkauslastung führt.
  4. Verfahren nach Anspruch 1, das ferner Vergleichen der ersten Routingtabelle und der zweiten Routingtabelle umfasst, um die zweite Vielzahl von Cache-Slices und die erste Teilmenge der ersten Vielzahl von Cache-Slices zu bestimmen.
  5. Verfahren nach Anspruch 4, ferner umfassend: (a) Ausspülen von schmutzigen Daten aus der ersten Teilmenge der ersten Vielzahl von Cache-Slices; (b) Verwandeln der ersten Teilmenge der ersten Vielzahl von Cache-Slices in Durchschreib-Cache-Slices; und (c) Löschen bereits existierender Daten aus der zweiten Vielzahl von Cache-Slices.
  6. Verfahren nach Anspruch 5, das ferner Bestimmen umfasst, ob während (a) und/oder (b) und/oder (c) ein erster Fehler aufgetreten ist.
  7. Verfahren nach Anspruch 6, das ferner Neuvergeben der ersten Vielzahl von Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle umfasst, wenn der erste Fehler aufgetreten ist.
  8. Verfahren nach Anspruch 6, das ferner umfasst, in dem ersten Computerknoten die Versorgung von Datenanforderungen zu stoppen, wenn der erste Fehler nicht aufgetreten ist.
  9. Verfahren nach Anspruch 8, das ferner umfasst, in dem ersten Computerknoten Ziele von Datenanforderungen auf der Basis der zweiten Routingtabelle zu bestimmen.
  10. 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.
  11. Verfahren nach Anspruch 10, das ferner Neuvergeben der ersten Vielzahl von Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle umfasst, wenn der zweite Fehler aufgetreten ist.
  12. Verfahren nach Anspruch 11, das ferner umfasst, in dem ersten Computerknoten das Versorgen von Datenanforderungen wiederaufzunehmen, wenn der erste Fehler nicht aufgetreten ist.
  13. System zur adaptiven Partitionierung eines verteilten Cache in einem Cluster, das eine Vielzahl von Computerknoten umfasst, die durch ein Netzwerk miteinander verbunden sind, wobei das System Folgendes umfasst: den in Cache-Slices partitionierten verteilten Cache; einen ersten Computerknoten, ausgelegt zum: 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.
  14. System nach Anspruch 13, wobei die Zugriffsstatistiken Transferraten für die Cache-Slices umfassen, die auf der Zugriffsgröße für jedes Cache-Slice und einem Zeitraum basieren.
  15. System nach Anspruch 13, wobei das Neuvergeben der zweiten Vielzahl von Cache-Slices und der ersten Teilmenge der ersten Vielzahl von Cache-Slices zu verringerter Netzwerkauslastung führt.
  16. System nach Anspruch 13, wobei der erste Computerknoten ferner ausgelegt ist zum Vergleichen der ersten Routingtabelle und der zweiten Routingtabelle, um die zweite Vielzahl von Cache-Slices und die erste Teilmenge der ersten Vielzahl von Cache-Slices zu bestimmen.
  17. 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 von Cache-Slices; (b) Verwandeln der ersten Teilmenge der ersten Vielzahl von Cache-Slices in Durchschreib-Cache-Slices; und (c) Löschen bereits existierender Daten aus der zweiten Vielzahl von Cache-Slices.
  18. 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.
  19. System nach Anspruch 18, wobei der erste Computerknoten ferner ausgelegt ist zum Neuvergeben der ersten Vielzahl von Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle, wenn der erste Fehler aufgetreten ist.
  20. System nach Anspruch 18, wobei der erste Computerknoten ferner ausgelegt ist zum Stoppen der Versorgung von Datenanforderungen, wenn der erste Fehler nicht aufgetreten ist.
  21. System nach Anspruch 20, wobei der erste Computerknoten ferner ausgelegt ist zum Bestimmen von Zielen von Datenanforderungen auf der Basis der zweiten Routingtabelle.
  22. 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.
  23. System nach Anspruch 22, wobei der erste Computerknoten ferner ausgelegt ist zum Neuvergeben der ersten Vielzahl von Cache-Slices an den ersten Computerknoten auf der Basis der ersten Routingtabelle, wenn der zweite Fehler aufgetreten ist.
  24. System nach Anspruch 23, wobei der erste Computerknoten ferner ausgelegt ist zum Wiederaufnehmen der Versorgung von Datenanforderungen, wenn der erste Fehler nicht aufgetreten ist.
DE102016013577.8A 2015-11-13 2016-11-14 Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern Active DE102016013577B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/941,125 2015-11-13
US14/941,125 US9832277B2 (en) 2015-11-13 2015-11-13 Systems and methods for adaptive partitioning in distributed cache memories

Publications (2)

Publication Number Publication Date
DE102016013577A1 true DE102016013577A1 (de) 2017-05-18
DE102016013577B4 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)

* Cited by examiner, † Cited by third party
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

Family Cites Families (35)

* Cited by examiner, † Cited by third party
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
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
US7277897B2 (en) 2003-08-01 2007-10-02 Oracle International Corporation Dynamic reassignment of data ownership
US8145870B2 (en) * 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
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 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US8433851B2 (en) * 2007-08-16 2013-04-30 International Business Machines Corporation Reducing wiring congestion in a cache subsystem utilizing sectored caches with discontiguous addressing
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
WO2010138545A1 (en) 2009-05-27 2010-12-02 Yin Zhang Method and system for resilient routing reconfiguration
JP5381336B2 (ja) 2009-05-28 2014-01-08 富士通株式会社 管理プログラム、管理装置および管理方法
US8429346B1 (en) 2009-12-28 2013-04-23 Emc Corporation Automated data relocation among storage tiers based on storage load
US8954790B2 (en) * 2010-07-05 2015-02-10 Intel Corporation Fault tolerance of multi-processor system with distributed cache
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

Also Published As

Publication number Publication date
JP6263596B2 (ja) 2018-01-17
DE102016013577B4 (de) 2020-10-29
CN107018172A (zh) 2017-08-04
JP2017134817A (ja) 2017-08-03
KR101960138B1 (ko) 2019-03-19
KR20170058293A (ko) 2017-05-26
US9832277B2 (en) 2017-11-28
CN107018172B (zh) 2020-04-21
US20170142217A1 (en) 2017-05-18

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
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE102005029852B4 (de) Steueranordnung zum Freigeben einer oder mehrerer virtueller Speicherseiten nach Beendigung eines Programms in einem Multiprozessorcomputersystem
DE69937946T2 (de) Hashen von objekten mit inkrementalen änderungen
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE112010004969B4 (de) Hybrides Speicherteilsystem und Verfahren zum Verwalten eines solchen
DE102009016742B4 (de) Mehrprozessor-Computersystem
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE112017001959T5 (de) Cachespeicher-Zugriff
DE112019000629B4 (de) Koordination von cacheoperationen
DE112017005868T5 (de) Verwaltung von e/a-abläufen für datenobjekte in einem speichersystem
DE112015000710T5 (de) Verteiltes Speichersystem
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE112005001050T5 (de) Liefern eines alternativen Cachespeicherungsschemas auf der Speicherbereichnetzwerkebene
DE112019000992T5 (de) Verwaltung virtueller Speicherlaufwerke in einem Datenspeichersystem
DE112013005903T5 (de) Speichersystem und Speichersteuerungsverfahren
DE102016225545A1 (de) Profilierungs-cache-ersatz
DE112005002268T5 (de) Verfahren und Vorrichtung für eine vorwärtslaufende Victim-Auswahl zum Verringern eines unerwünschten Ersatzverhaltens in inklusiven Caches
DE102015007709A1 (de) Invalidationsdatenbereich für einen Cache
DE112010003675T5 (de) Adress-Server
DE112011103290T5 (de) Intelligente Schreibcacheoperation für sequenzielle Datenspuren
DE112012004796B4 (de) Periodische Auslagerungen von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE102020108666A1 (de) Cache-kohärenz-management für multi-kategorie-erinnerungen
DE102013210719B4 (de) Verfahren und Systeme zum Verwalten von Cache-Speichern

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: 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