DE112013000650T5 - Datenzwischenspeicherungsbereich - Google Patents

Datenzwischenspeicherungsbereich Download PDF

Info

Publication number
DE112013000650T5
DE112013000650T5 DE112013000650.2T DE112013000650T DE112013000650T5 DE 112013000650 T5 DE112013000650 T5 DE 112013000650T5 DE 112013000650 T DE112013000650 T DE 112013000650T DE 112013000650 T5 DE112013000650 T5 DE 112013000650T5
Authority
DE
Germany
Prior art keywords
staging area
memory
area
program code
objects
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
DE112013000650.2T
Other languages
English (en)
Other versions
DE112013000650B4 (de
Inventor
c/o IBM Corporation Burka Peter
Jeffrey M. c/o IBM Corporation Disher
c/o IBM Corporation Micic Aleksander
c/o IBM Corporation Sciampacone Ryan A.
c/o IBM Corporation El-Haddad Elijah
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013000650T5 publication Critical patent/DE112013000650T5/de
Application granted granted Critical
Publication of DE112013000650B4 publication Critical patent/DE112013000650B4/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation

Abstract

Eine veranschaulichende Ausführungsform eines durch einen Computer umgesetzten Prozesses zum Verwalten eines Zwischenspeicherungsbereichs erstellt den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte, verschiebt die identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich, verfolgt einen Anwendungszugriff auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, und bestimmt, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten. In Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, wird das spezifische Objekt in einen regulären Bereich verschoben und bestimmt, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet. In Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, verschiebt der durch den Computer umgesetzte Prozess restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich.

Description

  • HINTERGRUND
  • 1. Technisches Gebiet:
  • Diese Offenbarung betrifft allgemein Arbeitsspeicherverwaltung in einem Datenverarbeitungssystem und insbesondere Verwalten von Datenzwischenspeicherung in dem Datenverarbeitungssystem.
  • 2. Beschreibung des einschlägigen Stands der Technik:
  • Da mehrere verschiedene ausführende Schichten im Arbeitsspeicher zunehmend ausgeprägter werden, wird der zugrunde liegende physische Arbeitsspeicher in Computersystemen uneinheitlicher. Des Weiteren nimmt die Verwendung von virtualisierten Umgebungen mit dem Aufkommen von Cloud-Computing-Technologien in einem Bemühen zu, Maschinen in Bezug auf Prozessoren und Arbeitsspeicher bis zu einer Höchstkapazität zu nutzen.
  • Anwendungs-Arbeitsspeicherplatz ist typischerweise über mehrere verschiedene zugrunde liegende physische Arbeitsspeicher-Umsetzungen verteilt, von denen jede eine andere Zugriffsgeschwindigkeit aufweist. Somit besteht eine hohe Notwendigkeit, Anwendungsdaten in einer hinsichtlich der Zugriffshäufigkeit bewussten Weise zu verteilen. Ein Platzieren von Daten mit häufigstem Zugriff oder von beliebteren Daten auf einem schnellsten physischen Arbeitsspeicher stellt eine optimale Anwendungsleistung sicher, verringert den Stromverbrauch und ermöglicht ein höchstes Niveau von Hardware-Nutzung zu.
  • Um sich dieser Herausforderung zu stellen, wurden mehrere Verfahren zur Erkennung von Datenzugriffshäufigkeit entwickelt. Ein Kombinieren eines Verfahrens zur Erkennung von Datenzugriffshäufigkeit mit einem Arbeitsspeicherverwaltungssystem, wie beispielsweise einem Garbage-Collector (Sammeleinrichtung für wertlose Daten), der einer virtuellen Maschine mit einer verwalteten Laufzeit zugehörig ist, führt zu einer Fähigkeit, einer Anwendung zugehörige Daten intelligent in einer in Schichten aufgebauten Arbeitsspeicherumgebung zu verteilen. Eine bessere Verteilung verbessert typischerweise die gesamten Datenzugriffszeiten der Anwendung.
  • Allerdings hat eine perfekt genaue Erkennung der Datenzugriffshäufigkeit eine sehr große negative Auswirkung auf die Anwendungsleistung. Die Verfahren zur Erkennung der Datenzugriffshäufigkeit müssen daher einen gewissen Genauigkeitsgrad zugunsten eines niedrigeren Laufzeit-Systemaufwands opfern. Eine verringerte Genauigkeit verursacht typischerweise, dass gewisse Teile von Daten, auf die sehr häufig zugegriffen wird, von einem Prozess zur Beliebtheitserkennung übersehen werden. Die Verschiebung von selbst wenigen sehr beliebten Datenelementen (oder Objekten) in eine langsamere Arbeitsspeicherform kann die Leistung der Anwendung in hohem Maße verringern.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einer Ausführungsform erstellt ein durch einen Computer umgesetzter Prozess zum Verwalten eines Zwischenspeicherungsbereichs den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte, verschiebt die identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich, verfolgt einen Anwendungszugriff auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, und bestimmt, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten. In Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, wird das spezifische Objekt in einen regulären Bereich verschoben und bestimmt, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet. In Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, verschiebt der durch den Computer umgesetzte Prozess restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich.
  • Gemäß einer weiteren Ausführungsform weist ein Computerprogrammprodukt zum Verwalten eines Zwischenspeicherungsbereichs ein Medium eines durch einen Computer beschreibbaren Typs auf, das einen darauf gespeicherten, durch einen Computer ausführbaren Programmcode enthält. Der durch einen Computer ausführbare Programmcode weist einen durch einen Computer ausführbaren Programmcode zum Erstellen des Zwischenspeicherungsbereichs für identifizierte kalte Kandidatenobjekte auf, wodurch der Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte erstellt wird, einen durch einen Computer ausführbaren Programmcode zum Verschieben der identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich, einen durch einen Computer ausführbaren Programmcode zum Verfolgen eines Anwendungszugriffs auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich enthält, einen durch einen Computer ausführbaren Programmcode zum Bestimmen, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten, einen durch einen Computer ausführbaren Programmcode, der auf eine Bestimmung reagiert, dass die Informationen über eine Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, um das spezifische Objekt in einen regulären Bereich zu verschieben, einen durch einen Computer ausführbaren Programmcode zum Bestimmen, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, und einen durch einen Computer ausführbaren Programmcode, der auf eine Bestimmung reagiert, dass die aktuelle Zeit einen vordefinierten Schwellenwert zum Verschieben restlicher Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich überschreitet.
  • Gemäß einer weiteren Ausführungsform weist eine Vorrichtung zum Verwalten eines Zwischenspeicherungsbereichs eine Datenübertragungsstruktur auf, einen mit der Datenübertragungsstruktur verbundenen Arbeitsspeicher, wobei der Arbeitsspeicher durch den Computer ausführbaren Programmcode enthält, eine mit der Datenübertragungsstruktur verbundene Datenübertragungseinheit, eine mit der Datenübertragungsstruktur verbundene Eingabe/Ausgabe-Einheit, eine mit der Datenübertragungsstruktur verbundene Anzeige und einen mit der Datenübertragungsstruktur verbundenen Prozessor. Die Prozessoreinheit führt den durch den Computer ausführbaren Programmcode aus, um die Vorrichtung anzuweisen, den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte zu erstellen, den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte zu erstellen, die identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich zu verschieben, den Anwendungszugriff auf den Arbeitsspeicher zu verfolgen, der den Zwischenspeicherungsbereich enthält, zu bestimmen, ob die Informationen über die Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten, in Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, das spezifische Objekt in einen regulären Bereich zu verschieben, zu bestimmen, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet und in Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich zu verschieben.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
  • Für ein umfassenderes Verständnis dieser Offenbarung wird im Folgenden auf die nachstehende Kurzbeschreibung in Verbindung mit den begleitenden Zeichnungen und einer ausführlichen Beschreibung Bezug genommen, wobei gleiche Bezugszeichen für gleiche Teile stehen.
  • 1 ist ein Blockschaubild eines beispielhaften Netzwerk-Datenverarbeitungssystems, das für verschiedene Ausführungsformen der Offenbarung betriebsfähig ist;
  • 2 ist ein Blockschaubild eines beispielhaften Datenverarbeitungssystems, das für verschiedene Ausführungsformen der Offenbarung betriebsfähig ist;
  • 3 ist ein Blockschaubild eines Arbeitsspeichermanagers, der für verschiedene Ausführungsformen der Offenbarung betriebsfähig ist;
  • 4 ist ein Blockschaubild einer Arbeitsspeicherkonfiguration, die durch einen Arbeitsspeichermanager gemäß einer Ausführungsform der Offenbarung verwaltet wird;
  • 5 ist ein Blockschaubild einer Arbeitsspeicherkonfiguration mit Zwischenspeicherungsbereich gemäß einer Ausführungsform der Offenbarung;
  • 6 ist ein Blockschaubild einer Arbeitsspeicherkonfiguration mit Zwischenspeicherungsbereich gemäß einer Ausführungsform der Offenbarung;
  • 7 ist ein Blockschaubild einer Arbeitsspeicherkonfiguration mit Zwischenspeicherungsbereich gemäß einer Ausführungsform der Offenbarung;
  • 8 ist ein Blockschaubild einer Arbeitsspeicherkonfiguration, die mit einem Arbeitsspeichermanager gemäß einer veranschaulichenden Ausführungsform der Offenbarung verwendet wird;
  • 9 ist ein Ablaufplan eines Prozesses zum Verwalten eines Zwischenspeicherungsbereichs gemäß verschiedenen Ausführungsformen der Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Obwohl eine veranschaulichende Umsetzung von einer oder mehreren Ausführungsformen im Folgenden bereitgestellt wird, können die offenbarten Systeme und/oder Verfahren unter Verwendung einer beliebigen Anzahl von Techniken umgesetzt werden., Diese Offenbarung soll keinesfalls auf die veranschaulichenden Umsetzungen, Zeichnungen und Techniken begrenzt sein, die im Folgenden veranschaulicht werden, einschließlich der beispielhaften Auslegungen und Umsetzungen, die hierin veranschaulicht und beschrieben werden, sondern können innerhalb des Schutzumfangs der Ansprüche im Anhang zusammen mit der vollen Bandbreite ihrer Entsprechungen geändert werden.
  • Wie von einem Fachmann anerkannt werden wird, können Aspekte der vorliegenden Offenbarung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Offenbarung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung”, „Modul” oder „System” Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode verkörpert ist.
  • Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit oder eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit dem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel entweder im Basisband oder als Teil einer Trägerwelle. Ein derartiges verbreitetes Signal kann jede einer Vielfalt von Formen annehmen, einschließlich elektromagnetisch, optisch oder jede geeignete Kombination davon, es ist aber nicht darauf beschränkt. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung übertragen, verbreiten oder transportieren kann.
  • Auf einem computerlesbaren Medium ausgeführter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination des Vorgenannten, ist aber nicht darauf beschränkt.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Offenbarung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java®, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C” oder ähnlichen Programmiersprachen. Java und alle Marken und Logos auf der Grundlage von Java sind Marken von Oracle und/oder von dessen verbundenen Unternehmen in den Vereinigten Staaten, anderen Ländern oder beidem. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weltverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
  • Aspekte der vorliegenden Offenbarung werden im Folgenden unter Bezugnahme auf Ablaufplan-Veranschaulichungen und/oder Blockschaubilder von Verfahren, Vorrichtungen, (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können.
  • Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Fertigungsartikel erzeugen, einschließlich Anweisungen, die die in dem Block oder den Blöcken von Ablaufplan und/oder Blockschaubild angegebene Funktion/Handlung implementieren.
  • Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere Vorrichtung, die programmierbare Daten verarbeitet, geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer oder einer anderen Vorrichtung, die programmierbare Daten ausführt, zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben sind.
  • Unter folgender Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf die 1 bis 2 werden beispielhafte Darstellungen von Datenverarbeitungsumgebungen bereitgestellt, in denen veranschaulichende Ausführungsformen umgesetzt werden können. Es sollte klar sein, dass die 1 bis 2 nur beispielhaft sind und durch sie keinerlei Einschränkung hinsichtlich der Umgebungen festgestellt oder impliziert werden soll, in denen verschiedene Ausführungsformen umgesetzt werden können. An den dargestellten Umgebungen können viele Modifizierungen vorgenommen werden.
  • 1 zeigt eine bildliche Darstellung eines Netzwerks von Datenverarbeitungssystemen, in denen veranschaulichende Ausführungsformen umgesetzt werden können. Ein Netzwerk-Datenverarbeitungssystem 100 ist ein Netzwerk von Computern, in denen die veranschaulichenden Ausführungsformen umgesetzt werden können. Das Netzwerk-Datenverarbeitungssystem 100 enthält ein Netzwerk 102, welches das Medium ist, das zum Bereitstellen von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die in dem Netzwerk-Datenverarbeitungssystem 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen enthalten, wie drahtgebundene, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel.
  • In dem dargestellten Beispiel sind ein Server 104 und ein Server 106 zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Außerdem sind auch Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Die Clients 110, 112 und 114 können zum Beispiel Personal Computer, Netzwerk-Computer oder dergleichen sein. In dem dargestellten Beispiel stellt der Server 104 Daten wie beispielsweise Boot-Dateien, Betriebssystemabbilder und Anwendungen für die Clients 110, 112 und 114 bereit. Die Clients 110, 112 und 114 sind in diesem Beispiel Clients für den Server 104. Das Netzwerk- Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und weitere nicht gezeigte Einheiten enthalten.
  • In dem dargestellten Beispiel ist das Netzwerk-Datenverarbeitungssystem 100 das Internet, wobei das Netzwerk 102 für eine weltweite Sammlung von Netzwerken und Gateways steht, welche die Protokollgruppe Transmission Control Protocol/Internet Protocol (TCP/IP) für den Datenaustausch untereinander verwenden. Das Kernstück des Internets ist ein Backbone von Hochgeschwindigkeits-Datenübertragungsleitungen zwischen Hauptknoten oder Host-Computern, die aus Tausenden von gewerblichen, behördlichen, schulischen und anderen Computersystemen bestehen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das Netzwerk-Datenverarbeitungssystem 100 auch als eine Anzahl von verschiedenen Typen von Netzwerken umgesetzt werden, wie zum Beispiel ein Intranet, ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN) oder dergleichen. 1 soll als Beispiel dienen und nicht als Architektur-Einschränkung für verschiedene veranschaulichende Ausführungsformen.
  • Unter Bezugnahme auf 2 wird ein Blockschaubild eines beispielhaften Datenverarbeitungssystems dargestellt, das für verschiedene Ausführungsformen der Offenbarung betriebsfähig ist. In diesem veranschaulichenden Beispiel enthält ein Datenverarbeitungssystem 200 eine Datenübertragungsstruktur 202, die Datenübertragungen zwischen einer Prozessoreinheit 204, einem Arbeitsspeicher 206, einem permanenten Speicher 208, einer Datenübertragungseinheit 210, einer Eingabe/Ausgabe-(E/A)Einheit 212 und einer Anzeige 214 bereitstellt.
  • Die Prozessoreinheit 204 dient zum Ausführen von Anweisungen für Software, die in den Arbeitsspeicher 206 geladen werden kann. Die Prozessoreinheit 204 kann eine Gruppe von einem oder mehreren Prozessoren sein oder kann ein Multiprozessorkern sein, was von der jeweiligen Umsetzung abhängt. Ferner kann die Prozessoreinheit 204 unter Verwendung von einem oder mehreren heterogenen Prozessorsystemen umgesetzt werden, in denen ein Hauptprozessor mit sekundären Prozessoren auf einem einzelnen Chip vorhanden ist. Als weiteres veranschaulichendes Beispiel kann die Prozessoreinheit 204 ein symmetrisches Multiprozessorsystem sein, das mehrere Prozessoren desselben Typs enthält.
  • Der Arbeitsspeicher 206 und der permanente Speicher 208 sind Beispiele für Speichereinheiten 216. Eine Speichereinheit ist jedes Hardware-Element, das in der Lage ist, ohne Einschränkung Informationen wie zum Beispiel Daten, Programmcode in Funktionsform und/oder andere geeignete Informationen entweder auf einer temporären Grundlage und/oder einer permanenten Grundlage zu speichern. In diesen Beispielen kann der Arbeitsspeicher 206 beispielsweise ein Direktzugriffsspeicher oder jede andere geeignete flüchtige oder nicht-flüchtige Speichereinheit sein. Der permanente Speicher 208 kann verschiedene Formen annehmen, die von der jeweiligen Umsetzung abhängen. Zum Beispiel kann der permanente Speicher 208 eine oder mehrere Komponenten oder Einheiten enthalten. Zum Beispiel kann der permanente Speicher 208 eine Festplatte, ein Flash-Speicher, eine wiederbeschreibbare optische Platte, ein wiederbeschreibbares Magnetband oder irgendeine Kombination des Vorgenannten sein. Das von dem permanenten Speicher 208 verwendete Medium kann auch austauschbar sein. Zum Beispiel kann eine austauschbare Festplatte für den permanenten Speicher 208 verwendet werden.
  • Die Datenübertragungseinheit 210 sorgt in diesen Beispielen für Datenaustausch mit anderen Datenverarbeitungssystemen oder -einheiten. In diesen Beispielen ist die Datenübertragungseinheit 210 eine Netzwerk-Schnittstellenkarte. Die Datenübertragungseinheit 210 kann Datenübertragungen durch die Verwendung von physischen oder drahtlosen Datenübertragungsverbindungen oder beidem bereitstellen.
  • Die Eingabe/Ausgabe-Einheit 212 ermöglicht ein Eingeben und Ausgeben von Daten mit anderen Einheiten, die mit dem Datenverarbeitungssystem 200 verbunden sein können. Zum Beispiel kann die Eingabe/Ausgabe-Einheit 212 eine Verbindung für eine Benutzereingabe über eine Tastatur, eine Maus und/oder irgendeine andere geeignete Eingabeeinheit bereitstellen. Ferner kann die Eingabe/Ausgabe-Einheit 212 eine Ausgabe an einen Drucker senden. Die Anzeige 214 stellt einen Mechanismus zum Anzeigen von Informationen für einen Benutzer bereit.
  • Anweisungen für das Betriebssystem, Anwendungen und/oder Programme können sich in den Speichereinheiten 216 befinden, die mit der Prozessoreinheit 204 über die Datenübertragungsstruktur 202 in Datenaustausch stehen. In diesen veranschaulichenden Beispielen befinden sich die Anweisungen in einer Funktionsform auf dem permanenten Speicher 208. Diese Anweisungen können zur Ausführung durch die Prozessoreinheit 204 in den Arbeitsspeicher 206 geladen werden. Die Prozesse der verschiedenen Ausführungsformen können von der Prozessoreinheit 204 unter Verwendung von durch den Computer umgesetzten Anweisungen ausgeführt werden, die sich in einem Arbeitsspeicher wie dem Arbeitsspeicher 206 befinden können.
  • Diese Anweisungen werden als Programmcode, durch den Computer verwendbarer Programmcode oder computerlesbarer Programmcode bezeichnet, der von einem Prozessor in der Prozessoreinheit 204 gelesen und ausgeführt werden kann. Der Programmcode in den verschiedenen Ausführungsformen kann auf verschiedenen physischen oder konkreten computerlesbaren Speichermedien verkörpert werden, wie beispielsweise dem Arbeitsspeicher 206 oder dem permanenten Speicher 208.
  • Ein Programmcode 218 befindet sich in einer Funktionsform auf computerlesbaren Speichermedien 220, die selektiv ausgetauscht werden können, und kann zur Ausführung durch die Prozessoreinheit 204 in das Datenverarbeitungssystem 200 geladen und/oder übertragen werden. Der Programmcode 218 und die computerlesbaren Speichermedien 220 bilden in diesen Beispielen ein Computerprogrammprodukt 222. In einem Beispiel können die computerlesbaren Speichermedien 220 in einer konkreten Form vorliegen, zum Beispiel als optische oder Magnetplatte, die in ein Laufwerk oder eine andere Einheit, die Teil des permanenten Speichers 208 ist, für eine Übertragung in eine Speichereinheit eingesetzt oder platziert wird, wie beispielsweise eine Festplatte, die Teil des permanenten Speichers 208 ist. In einer konkreten Form können die computerlesbaren Speichermedien 220 auch die Form eines permanenten Speichers annehmen, wie beispielsweise eine Festplatte, ein Thumb-Drive (USB-Stick) oder ein Flash-Speicher, der mit dem Datenverarbeitungssystem 200 verbunden ist. Die konkrete Form der computerlesbaren Speichermedien 220 wird auch als durch den Computer beschreibbare Speichermedien bezeichnet. In einigen Fällen können die computerlesbaren Speichermedien 220 nicht ausgetauscht werden.
  • Alternativ kann der Programmcode 218 von den computerlesbaren Speichermedien 220 zu dem Datenverarbeitungssystem 200 über eine Datenübertragungsverbindung mit der Datenübertragungseinheit 210 und/oder eine Verbindung mit der Eingabe/Ausgabe-Einheit 212 übertragen werden. Die Datenübertragungsverbindung und/oder die Verbindung können in den veranschaulichenden Beispielen physisch oder drahtlos sein. Die computerlesbaren Medien können auch die Form nicht-konkreter Medien annehmen wie beispielweise Datenübertragungsverbindungen oder drahtlose Übertragungen, die den Programmcode enthalten.
  • In einigen veranschaulichenden Ausführungsformen kann der Programmcode 218 über ein Netzwerk aus einer anderen Einheit oder einem anderen Datenverarbeitungssystem in den permanenten Speicher 208 zur Verwendung in dem Datenverarbeitungssystem 200 heruntergeladen werden. Zum Beispiel kann ein Programmcode, der in einem computerlesbaren Speichermedium in einem Server-Datenverarbeitungssystem gespeichert ist, über ein Netzwerk aus dem Server in das Datenverarbeitungssystem 200 heruntergeladen werden. Das Datenverarbeitungssystem, das den Programmcode 218 bereitstellt, kann ein Servercomputer, ein Client-Computer oder eine andere Einheit sein, die fähig ist, den Programmcode 218 zu speichern und zu übertragen.
  • Unter Verwendung des Datenverarbeitungssystems 200 von 2 als Beispiel wird ein durch einen Computer umgesetzter Prozess zum Verwalten eines Zwischenspeicherungsbereichs dargestellt. Die Prozessoreinheit 204 erstellt den Zwischenspeicherungsbereich für identifizierte Kandidatenobjekte, verschiebt die identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich unter Verwendung der Speichereinheiten 216, verfolgt einen Anwendungszugriff auf einen Arbeitsspeicher der Speichereinheiten 216, die den Zwischenspeicherungsbereich aufweisen, und bestimmt, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten. In Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, verschiebt die Prozessoreinheit 204 das spezifische Objekt in einen regulären Bereich und bestimmt, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet. In Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, verschiebt die Prozessoreinheit 204 restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich.
  • Eine Ausführungsform des offenbarten Prozesses stellt einen typischen Zwischenspeicherungsbereich mit geringem Systemaufwand bereit, in den Objekte, auf die dem Anschein nach nicht häufig zugegriffen wird, für einen bestimmten Zeitraum verlagert werden, bevor bestimmt wird, ob die Objekte wirklich unbeliebt sind und in einen relativ langsameren physischen Arbeitsspeicher verschoben werden. Das Erstellen eines Zwischenspeicherungsbereichs bietet eine Gelegenheit, Datenabsonderungsergebnisse eines laufenden Systems zu testen, um potenzielle Konsequenzen einer weiteren Verschiebung von Datenobjekten zu prüfen. Daten, die durch Profilerstellung als mit häufigem Zugriff eingestuft werden, können aus dem Zwischenspeicherungsbereich zurück verschoben werden, Daten, auf die nicht häufig zugegriffen wird, können dann in eine niedrigere Speicherschicht verschoben werden.
  • Unter Bezugnahme auf 3 wird ein Blockschaubild eines Arbeitsspeichermanagers gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Ein Arbeitsspeichermanager 300 ist ein Beispiel für eine Ausführungsform, die eine Fähigkeit bereitstellt, eine Nutzung einer Speicherschicht in einer Speicherhierarchie zu erstellen und zu verwalten. Die Speicherhierarchie weist eine Anzahl von Typen und Geschwindigkeiten eines Arbeitsspeichers auf, die einen Bereich zwischen einer höchsten Priorität und einer niedrigsten Priorität umfassen.
  • Der Arbeitsspeichermanager 300 weist Funktionselemente auf, zu denen eine Zwischenspeicherungsbereich-Steuereinheit 302, ein Zugriffsmuster-Überwachungsprogramm 304, Erkennungsverfahren 306 und eine Konfiguration 308 gehören. Der Arbeitsspeichermanager 300 und zugehörige Komponenten nutzen eine Unterstützung eines zugrunde liegenden Datenverarbeitungssystems wie des Datenverarbeitungssystems 200 von 2 oder eines Datenverarbeitungssystems in einem Netzwerk des Datenverarbeitungssystems 100 von 1. Funktionselemente des Arbeitsspeichermanagers 300 können als diskrete physische Komponenten in dem Arbeitsspeichermanager 300 oder als logische Einheiten umgesetzt werden, die funktional in den Arbeitsspeichermanager 300 integriert sind. Der Arbeitsspeichermanager 300 stellt eine Fähigkeit bereit, Arbeitsspeicher-Speicherorte von Objekten unter Verwendung eines differenzierten Prozesses auf einer Grundlage pro Objekt statt einer gröber differenzierten Grundlage pro Seite zu verwalten.
  • Die Zwischenspeicherungsbereich-Steuereinheit 302 stellt eine Fähigkeit bereit, einen Arbeitsspeicher-Zwischenspeicherungsbereich zu erstellen und zu entfernen sowie Objekte als Kandidaten für eine Verschiebung in den und aus dem Zwischenspeicherungsbereich zu identifizieren. Ein Zwischenspeicherungsbereich ist eine Datenstruktur, die durch die Zwischenspeicherungsbereich-Steuereinheit 302 verwaltet wird, die logisch ein Teil eines regulären Arbeitsspeicherbereichs ist. Der Zwischenspeicherungsbereich kann aus einem vorher zugeordneten physischen Abschnitt eines regulären Arbeitsspeicherbereichs oder aus einer separaten Zuordnung erstellt werden, die als logisch und dem regulären Arbeitsspeicherbereich zugehörig betrachtet wird.
  • Das Zugriffsmuster-Überwachungsprogramm 304 stellt eine Gruppe von Verfahren bereit, die zum Identifizieren und Verwalten von Informationen verwendet werden, die einem Anwendungszugriff auf Datenobjekte zugehörig sind. Die Zugriffsmuster von Objekten in dem Arbeitsspeicher einschließlich des Zwischenspeicherungsbereichs können unter Verwendung eines ausgewählten Verfahrens oder einer Kombination von Verfahren einschließlich herkömmlicher Lese-/Schreibsperren, Seitenschutzmechanismen, Häufigkeitsdaten in Arbeitsspeicher-Cache/Adressumsetzpufferspeicher (TLB – Translations Look Aside Buffer), durch Hardware gestützte Profilerstellung und andere ähnliche Techniken verfolgt werden. Zu Informationen, die typischerweise in einer Datenstruktur verwaltet werden, zählen zum Beispiel Zugriffshäufigkeitsinformationen einschließlich eines Zugriffszählers, der als Ergebnis eines Zugriffs auf ein jeweiliges Objekt in dem Arbeitsspeicher und eines Zeitpunkts des letzten Zugriffs erhöht wird.
  • Erkennungsverfahren 306 stellen eine Gruppe von Verfahren bereit, die zum Identifizieren und Einordnen von Objekten im Arbeitsspeicher gemäß zugehöriger Nutzungsinformationen verwendet werden. Zum Beispiel kann ein Verfahren zur Beliebtheitserkennung aus der Gruppe von Verfahren ausgewählt und auf der Grundlage von Zugriffsanforderungen für Objekte zum Sammeln von Informationen verwendet werden, die eine Gruppe von Objekten in einem regulären Arbeitsspeicher aufweisen. Das Verfahren zur Beliebtheitserkennung ordnet jedes Objekt typischerweise gemäß einer Anzahl von Zugriffen als eine Form der Zugriffshäufigkeit ein. Ein im Rang höher eingeordnetes Objekt hat mehr Datenzugriffe als ein im Rang niedriger eingeordnetes Objekt. Auch ein Zeitpunkt eines letzten Zugriffs kann verwendet werden, um eine weitere Angabe für kürzlichen Zugriff bereitzustellen.
  • In dem aktuellen Beispiel ermöglicht ein Verwenden eines Zwischenspeicherungsbereichs in Kombination mit einem Verfahren zur Beliebtheitserkennung, statt sich vollständig auf das Verfahren alleine zu verlassen, ein Verringern typischer nachteiliger Auswirkungen von Fehlern der Beliebtheitserkennung. Der Zwischenspeicherungsbereich ist so ausgelegt, dass er einen viel geringeren Systemaufwand für Datenzugriff aufweist als ein Speicher einer niedrigeren Schicht außerhalb des herkömmlichen dynamischen Arbeitsspeichers (DRAM – Dynamic Random Access Memory). Der niedrigere Systemaufwand impliziert, dass, wenn durch eine Anwendung häufig auf ein Objekt zugegriffen wird, dies von dem Verfahren zur Beliebtheitserkennung aber übersehen wird, die Gesamtleistung typischerweise nicht so nachteilig beeinflusst wird, wenn das Objekt in den Zwischenspeicherungsbereich gestellt wird als wenn es im Vergleich dazu direkt in den langsameren physischen Arbeitsspeicher verschoben wird.
  • Während das Verfahren zur Beliebtheitserkennung auf probabilistischen oder stichprobenweisen Ansätzen beruht, um Beliebtheit zu erkennen, erkennt der Zwischenspeicherungsbereich jeden tatsächlichen Objektzugriff und stellt eine viel genauere Beliebtheitsdarstellung bereit. Die Verwendung des Zwischenspeicherungsbereichs in Kombination mit Beliebtheitserkennung ermöglicht auch eine automatische Feinabstimmung der Beliebtheitserkennung. Der Zwischenspeicherungsbereich kann zum programmatischen Feinabstimmen von Parametern für das Verfahren zur Beliebtheitserkennung verwendet werden, indem Zugriffsmuster in beliebten Objekten aufgedeckt werden, die vom Verfahren zur Beliebtheitserkennung übersehen wurden.
  • Der Zwischenspeicherungsbereich mit Beliebtheitserkennung fügt dem Verfahren zur Beliebtheitserkennung mehr Flexibilität hinzu. Der Zwischenspeicherungsbereich stellt ein Flexibilitätsmaß dafür bereit, wie strikt der Algorithmus der Beliebtheitserkennung sein muss, um wirkungsvoll zu sein und es zu ermöglichen, dass das Verfahren zur Beliebtheitserkennung so konfiguriert wird, dass es höhere Genauigkeit zugunsten von Geschwindigkeit opfert.
  • Die Konfiguration 308 stellt eine Fähigkeit bereit, den Betrieb des Arbeitsspeichermanagers 300 zu leiten oder zu kontrollieren. Zu Konfigurationsinformationen zählt eine Gruppe von betrieblichen Informationen, die einen Wert für einen Speicherort (zum Beispiel Pfadinformationen, Bereich des Arbeitsspeichers) aufweisen, der zum Erstellen eines Zwischenspeicherungsbereichs verwendet wird, eine Größe des Zwischenspeicherungsbereichs einschließlich ursprünglicher Größe und maximaler Größe sowie einen Zeitraum-Schwellenwert, der angibt, wann der Zwischenspeicherungsbereich bereinigt werden muss. Der Zwischenspeicherungsbereich wird bei Bedarf typischerweise dynamisch erstellt. In gewissen Situationen kann jedoch ein statischer dedizierter Zwischenspeicherungsbereich erforderlich sein. Zum Beispiel stellt ein Verwenden von gewissen spezialisierten Hardware-Lösungen als separates Element eines dedizierten Arbeitsspeichers, der schneller als der Kaltbereichspeicher ist, aber auch eine Zugriffsverfolgung zulässt, eine Fähigkeit für eine exklusive Verwendung als Zwischenspeicherungsbereich bereit. Der dedizierte Arbeitsspeicher, zum Beispiel eine Solid-State-Platte, wird speziell für die Verwendung als Zwischenspeicherungsbereich initialisiert und verwaltet.
  • Unter Bezugnahme auf 4 wird ein Blockschaubild einer durch einen Arbeitsspeichermanager verwalteten Arbeitsspeicherkonfiguration gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Ein Arbeitsspeicher 400 wird in einer logischen Ansicht dargestellt, wobei Abschnitte des dargestellten Arbeitsspeichers nicht als eine physische Einheit unter Verwendung eines Arbeitsspeichers desselben Typs oder derselben Geschwindigkeit umgesetzt sein müssen. Der Arbeitsspeicher 400 ist ein Beispiel für einen Arbeitsspeicher, der durch den Arbeitsspeicher 300 von 3 verwaltet wird.
  • Der Arbeitsspeicher 400 weist eine Anzahl von Abschnitten einschließlich eines regulären Bereichs 402 und eines kalten Bereichs 404 auf. In dem Arbeitsspeicher 400 wird eine Gruppe von Objekten verwaltet, wie beispielsweise ein Objekt 406, das als in den regulären Bereich 402 gestellt gezeigt wird, sich aber genauso gut in anderen Speicherorten in dem Arbeitsspeicher befinden kann. Aktuell verwendete Objekte befinden sich typischerweise in dem regulären Bereich 402, wogegen weniger häufig verwendete Objekte dazu neigen, in den kalten Bereich 404 zu migrieren.
  • Der Arbeitsspeicher 400 ist gemäß einer Speicherpriorität 408 logisch angeordnet. Die Speicherpriorität 408 gibt eine Anordnung des Arbeitsspeichers von einer hohen Priorität, die einem Abschnitt des regulären Bereichs 402 zugehörig ist, der am weitesten von einem Abschnitt des kalten Bereichs 404 entfernt ist, bis zu einer niedrigen Priorität an, die einem Abschnitt des kalten Bereichs 404 zugehörig ist, der am weitesten von einem Abschnitt des regulären Bereichs 402 entfernt ist. Aktuell verwendete Objekte befinden sich typischerweise in dem regulären Bereich 402, wogegen weniger häufig verwendete Objekte dazu neigen, in den kalten Bereich 404 zu migrieren.
  • Die Zwischenspeicherungs-Steuereinheit 302 des Arbeitsspeichermanagers 300 von 3 verwendet Beliebtheitsdaten, die durch ein Datenzugriffshäufigkeitsverfahren gesammelt werden, um zu bestimmen, welcher Bereich eines Arbeitsspeichers in einen Zwischenspeicherungsbereich umgewandelt werden soll. In einem Beispiel ist der Arbeitsspeicher 400 ein regulärer Java-Heap. Bevor das Verfahren zur Beliebtheitserkennung nicht genügend Zeit gehabt hat zu bestimmen, welche Objekte warm (beliebt) oder kalt (nicht beliebt) sind, besteht keine Bedarf, einen Abschnitt des regulären Bereichs 402 umzuwandeln und den Abschnitt des Arbeitsspeichers zu schützen.
  • Unter Bezugnahme auf 5 wird ein Blockschaubild einer Arbeitsspeicherkonfiguration mit Zwischenspeicherungsbereich gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Ein Zwischenspeicherungsbereich 500 ist ein Beispiel für einen Abschnitt eines Arbeitsspeichers, der durch den Arbeitsspeicher 300 von 3 verwaltet wird.
  • Unter Verwendung des vorherigen Beispiels des Arbeitsspeichers 400 von 4 wird der Zwischenspeicherungsbereich 500 aus einem Abschnitt des Arbeitsspeichers erstellt, der zuvor als regulärer Bereich 402 definiert wurde. Die Erstellung des Zwischenspeicherungsbereichs 500 wird durch die Zwischenspeicherungs-Steuereinheit 302 des Arbeitsspeichermanagers 300 von 3 ausgeführt unter Verwendung von Beliebtheitsdaten, die durch ein Datenzugriffshäufigkeitsverfahren gesammelt wurden, um zu bestimmen, welcher Bereich eines Arbeitsspeichers in den Zwischenspeicherungsbereich 500 umgewandelt werden soll. In einem Beispiel ist der Arbeitsspeicher 400 ein regulärer Java-Heap, der in den Zwischenspeicherungsbereich 500 umgewandelt wird. In einem weiteren Beispiel kann der Zwischenspeicherungsbereich 500 dynamisch aus einem Abschnitt des regulären Bereichs 402 erstellt werden oder dem regulären Bereich 402 logisch zugehörig, aber physisch auf einem anderen Speichertyp und/oder einer anderen Einheit erstellt werden. Der Speicherbereich 500 kann dynamisch oder statisch unter Verwendung einer Vorab-Zuordnung in Verbindung mit Konfigurationsinformationen erstellt werden.
  • Wenn das Verfahren zur Beliebtheitserkennung im Lauf der Zeit Datenzugriffsinformationen erhält und verarbeitet, wird die Objektzugriffshäufigkeit deutlicher. Der Arbeitsspeichermanager 300 von 3 gruppiert in einer erweiterten verwalteten Laufzeit die dem Anschein nach kalten Objekte zusammen in den Zwischenspeicherungsbereich 500, der ein Teil des regulären Bereichs 402 ist, und deaktiviert in einem Beispiel, in dem als Verfolgungsmechanismus eine Technik zum Aktivieren/Deaktivieren des Arbeitsspeichers verwendet wird, jeden Arbeitsspeicherzugriff auf den Zwischenspeicherungsbereich 500. Ein Objekt 502 und ein Objekt 504 sowie weitere Objekte, die eine Gruppe von Objekten aufweisen, die vorher in dem regulären Bereich 402 positioniert waren, werden in den Zwischenspeicherungsbereich 500 positioniert.
  • Eine Deaktivierung des Anwendungszugriffs auf den Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, ist eine Beispielausführung für eine Umsetzung des offenbarten Prozesses. Ausführungsformen des offenbarten Prozesses überwachen und verfolgen alle Zugriffe, die auf die Objekte in dem Zwischenspeicherungsbereich erfolgen, unter Verwendung eines aus einer Gruppe von Verfolgungsverfahren ausgewählten Verfolgungsverfahrens. Zum Beispiel können Modifizierungen in einen Betriebssystemkernel integriert werden, um Arbeitsspeicherzugriffe auf gewisse Arbeitsspeicherbereiche gründlicher zu verfolgen. Eine dedizierte Hardware/Firmware-Lösung zur Zugriffsverfolgung kann auch mit einer Solid-State-Platte verwendet werden, wenn sie für die Bereitstellung des Zwischenspeicherungsbereichs des Arbeitsspeichers verwendet wird.
  • Unter Bezugnahme auf 6 wird ein Blockschaubild einer Arbeitsspeicherkonfiguration mit Zwischenspeicherungsbereich gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Der Zwischenspeicherungsbereich 500 ist ein Beispiel für einen Abschnitt eines Arbeitsspeichers, der durch den Arbeitsspeicher 300 von 3 verwaltet wird, von dem aus eine Objektverlagerung geplant wird.
  • Wenn der Arbeitsspeicherzugriff auf den Zwischenspeicherungsbereich 500 deaktiviert ist, befindet sich die Anwendung in völliger Unkenntnis über den deaktivierten Zustand und setzt ihre Ausführung wie üblich fort. Da kalte Objekte wie das Objekt 502, das Objekt 504 und ein Objekt 600 immer noch verwendet werden, wenn auch weniger häufig als andere, versucht die Anwendung, die kalten Objekte zu lesen oder in sie zu schreiben. Eine Anwendungsanforderung für ein kaltes Objekt wie das Objekt 504 in dem Zwischenspeicherungsbereich 500 löst unter Verwendung des Beispiels einen Arbeitsspeicherschutzfehler aus.
  • Eine Signalverarbeitungsroutine der Zwischenspeicherungs-Steuereinheit 302 von 3, die den Zwischenspeicherungsbereich 500 bearbeitet, erfasst den Arbeitsspeicherschutzfehler, zeichnet auf, auf welches Objekt zugegriffen wurde, aktualisiert einen dem Objekt zugehörigen Zugriffshäufigkeitszähler und lässt einen vorübergehenden Zugriff auf den Arbeitsspeicher zu, der das Objekt enthält. Ein Zugriffshäufigkeitszähler wird für alle Objekte geführt, auf die im Zwischenspeicherungsbereich 500 zugriffen wird, und wenn auf ein Objekt wie das Objekt 504 zu häufig zugegriffen wird, wird das Objekt identifiziert und für die Verlagerung aus dem Zwischenspeicherungsbereich 500 in einen Speicherort 602 des regulären Bereichs 402 vorbereitet. In einem weiteren Beispiel können ein Seitenschutzmechanismus, Häufigkeitsdaten in Arbeitsspeicher-Cache/Adressumsetzpufferspeicher (TLB) oder eine durch Hardware gestützte Profilerstellung einen Zugriff für ein Objekt in dem Zwischenspeicherungsbereich auslösen, indem zugehörige Informationen über die Verwendungshäufigkeit aktualisiert werden.
  • Unter Bezugnahme auf 7 wird ein Blockschaubild einer Arbeitsspeicherkonfiguration mit Zwischenspeicherungsbereich gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Der Zwischenspeicherungsbereich 500 ist ein Beispiel für einen Abschnitt eines Arbeitsspeichers, der durch den Arbeitsspeicher 300 von 3 verwaltet wird, von dem aus ein Objekt in einen regulären Bereich verlagert wird.
  • Das Objekt 504, auf das zu häufig zugegriffen wird, wird aus dem Zwischenspeicherungsbereich 500 in den regulären Bereich 402 verlagert. Im Gegensatz zu der Verschiebung des Objekts 504 werden übliche Migrationen von Objekten, zum Beispiel gemäß Informationen über eine geringe Zugriffshäufigkeit, als Migrationsrichtung 700 zu einem Abschnitt des kalten Bereichs 404 angegeben, der am weitesten von einem Abschnitt des regulären Bereichs 402 entfernt ist.
  • Unter Bezugnahme auf 8 wird ein Blockschaubild einer Arbeitsspeicherkonfiguration, die mit einem Arbeitsspeichermanager verwendet wird, gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. In dem Beispiel ist der Zwischenspeicherungsbereich 500 eines Abschnitts des Arbeitsspeichers, der durch den Arbeitsspeichermanager 300 von 3 verwaltet wird, nicht mehr erforderlich.
  • Die üblichen Migrationen von Objekten wie dem Objekt 502 und dem Objekt 600 sind gemäß niedrigen Zugriffshäufigkeitszählern eingetreten, wie durch die Migrationsrichtung 700 von 7 zu einem Abschnitt des kalten Bereichs 404 angegeben, der am weitesten von einem Abschnitt des regulären Bereichs 402 entfernt ist. Der Speicherbereich 500 von 7 wurde gelöscht, weil für diese Speicherebene keine Anforderung mehr vorhanden ist. Arbeitsspeicher, der vorher dem Speicherbereich 500 von 7 zugewiesen war, wurde an einen regulären Bereich 402 zurückgegeben. Wenn der Speicherbereich 500 in einen anderen Speicherort gestellt wird als den regulären Bereich 402, wird der Speicherbereich logisch entfernt und wartet auf erneute Verwendung.
  • Unter Bezugnahme auf 9 wird ein Ablaufplan eines Prozesses zum Verwalten eines Zwischenspeicherungsbereichs gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. In dem Beispiel ist ein Prozess 900 ein Beispiel für ein Verwalten eines Zwischenspeicherungsbereichs in einem Abschnitt eines Arbeitsspeichers, der durch den Arbeitsspeichermanager 300 von 3 verwaltet wird.
  • Der Prozess 900 beginnt (Schritt 902) und bestimmt, ob kalte Kandidatenobjekte für einen Zwischenspeicherungsbereich vorhanden sind (Schritt 904). Kalte Kandidatenobjekte können zum Beispiel unter Verwendung von Informationen über die Zugriffshäufigkeit identifiziert werden, die unter Verwendung eines Verfahrens zur Beliebtheitserkennung erhalten werden, wobei Objekte, auf die weniger häufig zugegriffen wird, als Kandidaten für eine Verlagerung in einen weniger leistungsintensiven Arbeitsspeicher betrachtet werden. In Reaktion auf eine Bestimmung, dass für einen Zwischenspeicherungsbereich keine kalten Kandidatenobjekte vorhanden sind, kehrt der Prozess 900 in einer Schleife zurück, um den Schritt 902 wie vorher auszuführen.
  • In Reaktion auf eine Bestimmung, dass kalte Kandidatenobjekte für einen Zwischenspeicherungsbereich vorhanden sind, bestimmt der Prozess 900, ob der Zwischenspeicherungsbereich vorhanden ist (Schritt 906). In Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich nicht vorhanden ist, erstellt der Prozess 900 den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte (Schritt 908). Der Zwischenspeicherungsbereich kann unter Verwendung einer Standardgröße erstellt werden, die aus einer Datenstruktur erhalten wurde, die einem Arbeitsspeichermanager zugehörig ist, wie beispielsweise einer Konfigurationsdatei oder Eigenschaftendatei. Eine anfängliche Größe kann eingestellt werden, die kleiner oder gleich einer Größe eines kalten Bereichs ist. Der Zwischenspeicherungsbereich kann logisch ein Abschnitt eines in Verwendung befindlichen regulären Arbeitsspeicherbereichs oder ein anderer Abschnitt eines Arbeitsspeichers sein, der physisch von dem regulären Arbeitsspeicher getrennt ist. Der Zwischenspeicherungsbereich kann auch von einem anderen Typ von Arbeitsspeicher als dem des regulären Bereichs zugewiesen werden.
  • In Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich vorhanden ist, verschiebt der Prozess 900 die identifizierten kalten Kandidatenobjekte in den Zwischenspeicherungsbereich (Schritt 910). Die identifizierten Kandidatenobjekte werden aus dem regulären Bereich in den Zwischenspeicherungsbereich verlagert. Wie vorher festgestellt, kann der Zwischenspeicherungsbereich ein Abschnitt des regulären Bereichs sein oder kann ein physisch anderer Speicherort und eine physisch andere Einheit sein.
  • Der Prozess 900 verfolgt den Anwendungszugriff auf den Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist (Schritt 912). In einem Beispiel deaktiviert der Prozess 900 den Anwendungszugriff auf den Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, als ein Verfolgungsmechanismus für Objekte in dem Zwischenspeicherungsbereich. Ein Deaktivieren des Zugriffs auf den Arbeitsspeicher des Zwischenspeicherungsbereichs ermöglicht es Anwendungen, Objekte in dem Zwischenspeicherungsbereich weiterhin zu verwenden und auf sie zuzugreifen, jedoch tritt bei jeder Anwendungsanforderung für ein Objekt in dem Zwischenspeicherungsbereich ein Arbeitsspeicherzugriffsfehler auf. In einem weiteren Beispiel weist ein Anwendungszugriff einen Zugriffsverfolgungsmechanismus, wie beispielsweise eine Seitenanforderung, warnend auf einen Wunsch hin, einen Inhalt des Zwischenspeicherungsbereichs zu verwenden.
  • Der Prozess 900 aktualisiert Informationen über die Zugriffshäufigkeit, die jedem spezifischen Objekt in dem Zwischenspeicherungsbereich zugehörig sind.. Wenn eine andere Technik zum Überwachen und Verfolgen von Zugriff auf den Zwischenspeicherungsbereich verwendet wird, kann keine weitere Genehmigung erforderlich sein. In einem weiteren Beispiel verwaltet der Prozess 900 eine Datenstruktur, die eine Zugriffsliste von Objekten in dem Zwischenspeicherungsbereich aufweist, aktualisiert die Liste für jedes weitere Objekt, einschließlich einer Erhöhung eines Verwendungshäufigkeitsindikators wie einem Zugriffszähler, der repräsentativ für Zugriffshäufigkeitsinformationen über eine Anzahl von Zugriffen auf ein Objekt und einen letzten Zugriffszeitpunkt ist.
  • Der Prozess 900 bestimmt, ob die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten (Schritt 914). In Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, verschiebt der Prozess 900 das spezifische Objekt aus dem Zwischenspeicherungsbereich in den regulären Bereich (Schritt 916).
  • In Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert nicht überschreiten, bestimmt der Prozess 900, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet (Schritt 918). Die aktuelle Zeit wird mit einem vordefinierten Wert für einen Zeitwert verglichen, der einen Zeitrahmen oder eine Dauer seit einem letzten Zugriff auf ein spezifisches Objekt darstellt. Wenn die aktuelle Zeit zum Beispiel Y ist und auf ein Objekt zum Zeitpunkt X zugegriffen wurde, die Differenz Zeit Z ist und die Zeit Z einen vordefinierten Schwellenwert nicht überschreitet, wird das Objekt beibehalten, andernfalls wird das Objekt gelöscht. In Reaktion auf eine Bestimmung, dass die aktuelle Zeit keinen vordefinierten Schwellenwert überschreitet, endet der Prozess 900 (Schritt 928).
  • In Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, verschiebt der Prozess 900 restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich (Schritt 920). Der Prozess 900 bestimmt, ob der Zwischenspeicherungsbereich entfernt werden soll (Schritt 922). In Reaktion auf eine Bestimmung, den Zwischenspeicherungsbereich zu entfernen, entfernt der Prozess 900 die Zwischenspeicherung (Schritt 924). Die Zwischenspeicherung kann physisch oder logisch entfernt werden, was von der aktuellen Zuweisungsform des Zwischenspeicherungsbereichs abhängt. In Reaktion auf eine Bestimmung, den Zwischenspeicherungsbereich nicht zu entfernen, endet der Prozess 900 anschließend (Schritt 928).
  • Wenn ein alternatives Beispiel für das Deaktivieren des Zugriffs auf den Arbeitsspeicher verwendet wird, hat der Prozess 900 Kenntnis davon, dass der Anwendungszugriff auf den Arbeitsspeicher, der den Zwischenspeicherungsbereich enthält, deaktiviert worden ist. Der Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, wird jetzt aktiviert. Der vorher als Zwischenspeicherungsbereich verwendete Arbeitsspeicher wird an den regulären Bereich zurückgegeben, da der Zwischenspeicherungsbereich nicht mehr benötigt wird, und der Zwischenspeicherungsbereich wird somit entfernt.
  • Somit wird in einer veranschaulichenden Ausführungsform ein durch einen Computer umgesetzter Prozess zum Verwalten eines Zwischenspeicherungsbereichs dargestellt. Der durch einen Computer umgesetzte Prozess erstellt den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte, verschiebt die identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich, verfolgt den Anwendungszugriff auf den Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, und bestimmt, ob Informationen über die Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten. In Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, wird das spezifische Objekt in einen regulären Bereich verschoben und bestimmt, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet. In Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, verschiebt der durch den Computer umgesetzte Prozess restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen einer angegebenen logischen Funktion aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten könnten als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Ablaufplanveranschaulichung und Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplanveranschaulichung durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen alle Strukturen, Materialien oder Handlungen zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, wie speziell beansprucht. Die Beschreibung der vorliegenden Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung erstellt, sie soll aber keineswegs erschöpfend oder auf die Erfindung in der offenbarten Form eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, ohne von dem Schutzbereich und dem Erfindungsgedanken der Erfindung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erklären und es anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Modifizierungen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.
  • Die Erfindung kann die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform oder einer Ausführungsform annehmen, die Hardware- und Software-Elemente enthält. In einer bevorzugten Ausführungsform wird die Erfindung in Software umgesetzt, zu der Firmware, residente Software, Mikrocode und weitere Software-Medien zählen, die einem Fachmann bekannt sein können, sie ist aber nicht darauf beschränkt.
  • Es ist wichtig anzumerken, dass, obwohl die vorliegende Erfindung in dem Kontext eines voll funktionierenden Datenverarbeitungssystems beschrieben wurde, Fachleuten klar sein wird, dass die Prozesse der vorliegenden Erfindung in der Form eines computerlesbaren Mediums mit Anweisungen und einer Vielfalt von Formen verteilt werden können, und dass die vorliegende Erfindung auch ohne Berücksichtigung des bestimmten Typs von Signalträgermedien Anwendung findet, die tatsächlich zum Ausführen der Verteilung verwendet werden. Zu Beispielen für computerlesbare Medien gehören Medien eines beschreibbaren Typs wie beispielsweise eine Diskette, ein Festplattenlaufwerk, ein RAM, CD-ROMs, DVD-ROMs und Medien eines Übertragungstyps wie digitale und analoge Datenübertragungsverbindungen, drahtgebundene oder drahtlose Datenübertragungsverbindungen, die Übertragungsformen verwenden wie beispielsweise Funkfrequenz- und Lichtwellenübertragungen. Die computerlesbaren Medien können die Form von verschlüsselten Formaten annehmen, die zur tatsächlichen Verwendung in einem bestimmten Datenverarbeitungssystem entschlüsselt werden.
  • Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, enthält mindestens einen Prozessor, der direkt oder indirekt über einen Systembus mit Speicherelementen verbunden ist. Die Speicherelemente können einen lokalen Speicher, der während der tatsächlichen Ausführung des Programmcodes verwendet wird, einen Massenspeicher und Cache-Speicher enthalten, die eine vorübergehende Speicherung von mindestens einigem Programmcode bereitstellen, um die Anzahl zu verringern, wie oft Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe-/Ausgabe- oder E/A-Einheiten (einschließlich Tastaturen, Anzeigen, Zeigeeinheiten usw., jedoch nicht darauf beschränkt) können entweder direkt oder über zwischengeschaltete E/A-Controller mit dem System verbunden werden.
  • Netzwerkadapter können ebenfalls mit dem System verbunden werden, um zu ermöglichen, dass das Datenverarbeitungssystem mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten über dazwischenliegende private oder öffentliche Netzwerke verbunden werden kann. Modems, Kabelmodems oder Ethernet-Karten sind nur einige der derzeit verfügbaren Typen von Netzwerkadaptern.

Claims (20)

  1. Durch einen Computer umgesetzter Prozess zum Verwalten eines Zwischenspeicherungsbereichs, wobei der durch einen Computer umgesetzte Prozess aufweist: Erstellen des Zwischenspeicherungsbereichs für identifizierte kalte Kandidatenobjekte; Verschieben der identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich; Verfolgen eines Anwendungszugriffs auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist; Bestimmen, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten; in Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, Verschieben des spezifischen Objekts in einen regulären Bereich; Bestimmen, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet; und in Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, Verschieben von restlichen Objekten aus dem Zwischenspeicherungsbereich in einen kalten Bereich.
  2. Durch einen Computer umgesetzter Prozess nach Anspruch 1, wobei Erstellen des Zwischenspeicherungsbereichs für die identifizierten kalten Kandidatenobjekte ferner aufweist: Bestimmen, ob kalte Kandidatenobjekte für den Zwischenspeicherungsbereich vorhanden sind; in Reaktion auf eine Bestimmung, dass kalte Kandidatenobjekte für den Zwischenspeicherungsbereich vorhanden sind, Bestimmen, ob der Zwischenspeicherungsbereich vorhanden ist; in Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich nicht vorhanden ist, Verwenden eines Abschnitts eines regulären Bereichs eines Arbeitsspeichers, wobei der Arbeitsspeicher repräsentativ ist für einen Arbeitsspeicher, der mit einer verwalteten Laufzeit verwendet wird, und wobei der Arbeitsspeicher in Leistungsebenen angeordnet ist, die eine Ebene hoher Leistung, die dem regulären Bereich zugehörig ist, bis zu einer Ebene niedriger Leistung eines kalten Bereichs aufweisen, und wobei der Arbeitsspeicher einen von verschiedenen Typen von Arbeitsspeicher und derselben Typen von Arbeitsspeicher aufweist; und in Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich vorhanden ist, Verwenden des Zwischenspeicherungsbereichs.
  3. Durch einen Computer umgesetzter Prozess nach Anspruch 1, wobei das Erstellen des Zwischenspeicherungsbereichs für die identifizierten kalten Kandidatenobjekte ferner aufweist: Verfolgen von Zugriffsmustern von Objekten unter Verwendung eines ausgewählten Verfahrens, zu dem eine Kombination von Verfahren zählt, die aus einer Gruppe von Verfahren ausgewählt wurden, einschließlich herkömmlicher Lese-/Schreibsperren, Seitenschutzmechanismen, Häufigkeitsdaten in Arbeitsspeicher-Cache/Adressumsetzpufferspeicher (TLB – Translations Look Aside Buffer) und durch Hardware gestützte Profilerstellung, wobei Verfolgungsinformationen die Zugriffshäufigkeitsinformationen enthalten einschließlich eines Zugriffszählers, der als Ergebnis eines Zugriffs auf ein jeweiliges Objekt in dem Arbeitsspeicher und eines Zeitpunkts des letzten Zugriffs erhöht wird; Sammeln von Informationen unter Verwendung der Informationen über die Verwendungshäufigkeit für jedes Objekt, das eine Gruppe von Objekten in einem regulären Arbeitsspeicher aufweist, wobei ein Verfahren zur Beliebtheitserkennung verwendet wird, das aus einer Gruppe von Verfahren ausgewählt wird; und Einordnen jeder Objektgruppe von Objekten gemäß den Informationen über die Verwendungshäufigkeit, um eine Zugriffshäufigkeit zu bilden.
  4. Durch einen Computer umgesetzter Prozess nach Anspruch 1, wobei Erstellen des Zwischenspeicherungsbereichs für identifizierte kalte Kandidatenobjekte ferner aufweist: Lesen einer Konfigurationsdatenstruktur, die Initialisierungswerte enthält; und Erstellen des Zwischenspeicherungsbereichs mit einer Größe, die durch einen anfänglichen Wert in der Konfigurationsdatenstruktur bestimmt wird, wobei der anfängliche Wert einen Wert darstellt, der aus einer vordefinierten Anzahl von Objekten und einer Größe eines kalten Bereichs ausgewählt wurde.
  5. Durch einen Computer umgesetzter Prozess nach Anspruch 1, wobei ein Verschieben der identifizierten kalten Kandidatenobjekte in den Zwischenspeicherungsbereich ferner aufweist: Aktualisieren eines Zeitpunkts, an dem zum letzten Mal auf Informationen zugegriffen wurde, die dem Objekt zugehörig sind.
  6. Durch einen Computer umgesetzter Prozess nach Anspruch 1, wobei Verschieben von restlichen Objekten aus dem Zwischenspeicherungsbereich in einen kalten Bereich ferner aufweist: Bestimmen, ob der Zwischenspeicherungsbereich entfernt werden soll; und in Reaktion auf eine Bestimmung, den Zwischenspeicherungsbereich zu entfernen, Entfernen des Zwischenspeicherungsbereichs aus dem Arbeitsspeicher.
  7. Durch einen Computer umgesetzter Prozess nach Anspruch 1, wobei Verfolgen eines Anwendungszugriffs auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, ferner Erkennen jedes tatsächlichen Objektszugriffs aufweist.
  8. Computerprogrammprodukt zum Verwalten eines Zwischenspeicherungsbereichs, wobei das Computerprogrammprodukt aufweist: ein Medium eines durch einen Computer beschreibbaren Typs, das einen darauf gespeicherten, durch einen Computer ausführbaren Programmcode enthält, wobei der durch einen Computer ausführbare Programmcode aufweist: durch einen Computer ausführbaren Programmcode zum Erstellen des Zwischenspeicherungsbereichs für identifizierte kalte Kandidatenobjekte; durch einen Computer ausführbaren Programmcode zum Verschieben der identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich; durch einen Computer ausführbaren Programmcode zum Verfolgen eines Anwendungszugriffs auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist; durch einen Computer ausführbaren Programmcode zum Bestimmen, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten; durch einen Computer ausführbaren Programmcode in Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, zum Verschieben des spezifischen Objekts in einen regulären Bereich; durch einen Computer ausführbaren Programmcode zum Bestimmen, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet; und durch einen Computer ausführbaren Programmcode in Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, zum Verschieben von restlichen Objekten aus dem Zwischenspeicherungsbereich in einen kalten Bereich.
  9. Computerprogrammprodukt nach Anspruch 8, wobei der durch einen Computer ausführbare Programmcode zum Erstellen des Zwischenspeicherungsbereichs für die identifizierten kalten Kandidatenobjekte ferner aufweist: durch einen Computer ausführbaren Programmcode zum Bestimmen, ob kalte Kandidatenobjekte für den Zwischenspeicherungsbereich vorhanden sind; durch einen Computer ausführbaren Programmcode in Reaktion auf eine Bestimmung, dass kalte Kandidatenobjekte für den Zwischenspeicherungsbereich vorhanden sind, zum Bestimmen, ob der Zwischenspeicherungsbereich vorhanden ist; durch einen Computer ausführbaren Programmcode in Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich nicht vorhanden ist, zum Verwenden eines Abschnitts eines regulären Bereichs eines Arbeitsspeichers, wobei der Arbeitsspeicher repräsentativ ist für einen Arbeitsspeicher, der mit einer verwalteten Laufzeit verwendet wird, und wobei der Arbeitsspeicher in Leistungsebenen angeordnet ist, die eine Ebene hoher Leistung, die dem regulären Bereich zugehörig ist, bis zu einer Ebene niedriger Leistung eines kalten Bereichs aufweisen, und wobei der Arbeitsspeicher einen von verschiedenen Typen von Arbeitsspeicher und einen Arbeitsspeicher derselben Typen aufweist; und durch einen Computer ausführbaren Programmcode in Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich vorhanden ist, zum Verwenden des Zwischenspeicherungsbereichs.
  10. Computerprogrammprodukt nach Anspruch 8, wobei der durch einen Computer ausführbare Programmcode zum Erstellen des Zwischenspeicherungsbereichs für die identifizierten kalten Kandidatenobjekte ferner aufweist: durch einen Computer ausführbaren Programmcode zum Verfolgen von Mustern für Zugriffe auf Objekte unter Verwendung eines ausgewählten Verfahrens, zu dem eine Kombination von Verfahren zählt, die aus einer Gruppe von Verfahren ausgewählt wurden, einschließlich herkömmlicher Lese-/Schreibsperren, Seitenschutzmechanismen, Häufigkeitsdaten in Arbeitsspeicher-Cache/Adressumsetzpufferspeicher (TLB – Translations Look Aside Buffer) und durch Hardware gestützte Profilerstellung, wobei Verfolgungsinformationen die Zugriffshäufigkeitsinformationen enthalten einschließlich eines Zugriffszählers, der als Ergebnis eines Zugriffs auf ein jeweiliges Objekt in dem Arbeitsspeicher und eines Zeitpunkts des letzten Zugriffs erhöht wird; durch einen Computer ausführbaren Programmcode zum Sammeln von Informationen unter Verwendung der Informationen über die Verwendungshäufigkeit für jedes Objekt, das eine Gruppe von Objekten in einem regulären Arbeitsspeicher aufweist, wobei ein Verfahren zur Beliebtheitserkennung verwendet wird, das aus einer Gruppe von Verfahren ausgewählt wird; und durch einen Computer ausführbaren Programmcode zum Einordnen jeder Objektgruppe von Objekten gemäß den Informationen über die Verwendungshäufigkeit, um eine Zugriffshäufigkeit zu bilden.
  11. Computerprogrammprodukt nach Anspruch 8, wobei der durch einen Computer ausführbare Programmcode zum Erstellen des Zwischenspeicherungsbereichs für identifizierte kalte Kandidatenobjekte ferner aufweist: durch einen Computer ausführbaren Programmcode zum Lesen einer Konfigurationsdatenstruktur, die Initialisierungswerte enthält; und durch einen Computer ausführbaren Programmcode zum Erstellen des Zwischenspeicherungsbereichs mit einer Größe, die durch einen anfänglichen Wert in der Konfigurationsdatenstruktur bestimmt wird, wobei der anfängliche Wert einen Wert darstellt, der aus einer vordefinierten Anzahl von Objekten und einer Größe eines kalten Bereichs ausgewählt wurde.
  12. Computerprogrammprodukt nach Anspruch 8, wobei der durch einen Computer ausführbare Programmcode zum Verschieben der identifizierten kalten Kandidatenobjekte in den Zwischenspeicherungsbereich ferner aufweist: durch einen Computer ausführbaren Programmcode zum Aktualisieren eines Zeitpunkts, an dem zum letzten Mal auf Informationen zugegriffen wurde, die dem Objekt zugehörig sind.
  13. Computerprogrammprodukt nach Anspruch 8, wobei der durch einen Computer ausführbare Programmcode zum Verschieben von restlichen Objekten aus dem Zwischenspeicherungsbereich in einen kalten Bereich ferner aufweist: durch einen Computer ausführbaren Programmcode zum Bestimmen, ob der Zwischenspeicherungsbereich entfernt werden soll; und durch einen Computer ausführbaren Programmcode in Reaktion auf eine Bestimmung, den Zwischenspeicherungsbereich zu entfernen, zum Entfernen des Zwischenspeicherungsbereichs aus dem Arbeitsspeicher.
  14. Computerprogrammprodukt nach Anspruch 8, wobei der durch einen Computer ausführbare Programmcode zum Verfolgen eines Anwendungszugriffs auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist, ferner durch einen Computer ausführbaren Programmcode zum Erkennen jedes tatsächlichen Objektszugriffs aufweist.
  15. Vorrichtung zum Verwalten eines Zwischenspeicherungsbereichs, wobei die Vorrichtung aufweist: eine Datenübertragungsstruktur; einen mit der Datenübertragungsstruktur verbundenen Arbeitsspeicher, wobei der Arbeitsspeicher durch einen Computer ausführbaren Programmcode enthält; eine mit der Datenübertragungsstruktur verbundene Datenübertragungseinheit; eine mit der Datenübertragungsstruktur verbundene Eingabe/Ausgabe-Einheit; eine mit der Datenübertragungsstruktur verbundene Anzeige; und eine mit der Datenübertragungsstruktur verbundene Prozessoreinheit, wobei die Prozessoreinheit den durch einen Computer ausführbaren Programmcode ausführt, um die Vorrichtung anzuweisen zum: Erstellen des Zwischenspeicherungsbereichs für identifizierte kalte Kandidatenobjekte; Verschieben der identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich; Verfolgen eines Anwendungszugriffs auf einen Arbeitsspeicher, der den Zwischenspeicherungsbereich aufweist; Bestimmen, ob Informationen über eine Verwendungshäufigkeit für ein spezifisches Objekt einen vordefinierten Schwellenwert überschreiten; in Reaktion auf eine Bestimmung, dass die Informationen über die Verwendungshäufigkeit für das spezifische Objekt einen vordefinierten Schwellenwert überschreiten, Verschieben des spezifischen Objekts in einen regulären Bereich; Bestimmen, ob eine aktuelle Zeit einen vordefinierten Schwellenwert überschreitet; und in Reaktion auf eine Bestimmung, dass die aktuelle Zeit einen vordefinierten Schwellenwert überschreitet, Verschieben von restlichen Objekten aus dem Zwischenspeicherungsbereich in einen kalten Bereich.
  16. Vorrichtung nach Anspruch 15, wobei die Prozessoreinheit den durch einen Computer ausführbaren Programmcode ausführt, um den Zwischenspeicherungsbereich für die identifizierten kalten Kandidatenobjekte zu erstellen, und die Vorrichtung ferner anweist zum: Bestimmen, ob kalte Kandidatenobjekte für den Zwischenspeicherungsbereich vorhanden sind; in Reaktion auf eine Bestimmung, dass kalte Kandidatenobjekte für den Zwischenspeicherungsbereich vorhanden sind, Bestimmen, ob der Zwischenspeicherungsbereich vorhanden ist; in Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich nicht vorhanden ist, Verwenden eines Abschnitts eines regulären Bereichs eines Arbeitsspeichers, wobei der Arbeitsspeicher repräsentativ ist für einen Arbeitsspeicher, der mit einer verwalteten Laufzeit verwendet wird, und wobei der Arbeitsspeicher in Leistungsebenen angeordnet ist, die eine Ebene hoher Leistung, die dem regulären Bereich zugehörig ist, bis zu einer Ebene niedriger Leistung eines kalten Bereichs aufweisen, und wobei der Arbeitsspeicher einen von verschiedenen Typen von Arbeitsspeicher und einen Arbeitsspeicher derselben Typen aufweist; und in Reaktion auf eine Bestimmung, dass der Zwischenspeicherungsbereich vorhanden ist, Verwenden des Zwischenspeicherungsbereichs.
  17. Vorrichtung nach Anspruch 15, wobei die Prozessoreinheit den durch einen Computer ausführbaren Programmcode ausführt, um den Zwischenspeicherungsbereich für die identifizierten kalten Kandidatenobjekte zu erstellen, und die Vorrichtung ferner anweist zum: Verfolgen von Mustern für Zugriffe auf Objekte unter Verwendung eines ausgewählten Verfahrens, zu dem eine Kombination von Verfahren zählt, die aus einer Gruppe von Verfahren ausgewählt wurden, einschließlich herkömmliche Lese-/Schreibsperren, Seitenschutzmechanismen, Häufigkeitsdaten in Arbeitsspeicher-Cache/Adressumsetzpufferspeicher und durch Hardware gestützte Profilerstellung, wobei die Zugriffshäufigkeitsinformationen einen Zugriffszähler enthalten, der als Ergebnis eines Zugriffs auf ein jeweiliges Objekt in dem Arbeitsspeicher und eines Zeitpunkts des letzten Zugriffs erhöht wird; Sammeln von Informationen unter Verwendung der Informationen über die Verwendungshäufigkeit für jedes Objekt, das eine Gruppe von Objekten in einem regulären Arbeitsspeicher aufweist, wobei ein Verfahren zur Beliebtheitserkennung verwendet wird, das aus einer Gruppe von Verfahren ausgewählt wird; und Einordnen jeder Objektgruppe von Objekten gemäß den enthaltenen Informationen über die Verwendungshäufigkeit, um eine Zugriffshäufigkeit zu bilden.
  18. Vorrichtung nach Anspruch 15, wobei die Prozessoreinheit den durch einen Computer ausführbaren Programmcode ausführt, um den Zwischenspeicherungsbereich für identifizierte kalte Kandidatenobjekte zu erstellen, und die Vorrichtung ferner anweist zum: Lesen einer Konfigurationsdatenstruktur, die Initialisierungswerte enthält; und Erstellen des Zwischenspeicherungsbereichs mit einer Größe, die durch einen anfänglichen Wert in der Konfigurationsdatenstruktur bestimmt wird, wobei der anfängliche Wert einen Wert darstellt, der aus einer vordefinierten Anzahl von Objekten und einer Größe eines kalten Bereichs ausgewählt wurde.
  19. Vorrichtung nach Anspruch 15, wobei die Prozessoreinheit den durch einen Computer ausführbaren Programmcode ausführt, um die identifizierten Kandidatenobjekte in den Zwischenspeicherungsbereich zu verschieben, und die Vorrichtung ferner anweist zum: Aktualisieren eines Zeitpunkts, an dem zum letzten Mal auf Informationen zugegriffen wurde, die dem Objekt zugehörig sind.
  20. Vorrichtung nach Anspruch 15, wobei die Prozessoreinheit den durch einen Computer ausführbaren Programmcode ausführt, um restliche Objekte aus dem Zwischenspeicherungsbereich in einen kalten Bereich zu verschieben, und die Vorrichtung ferner anweist zum: Bestimmen, ob der Zwischenspeicherungsbereich entfernt werden soll; und in Reaktion auf eine Bestimmung, den Zwischenspeicherungsbereich zu entfernen, Entfernen des Zwischenspeicherungsbereichs aus dem Arbeitsspeicher.
DE112013000650.2T 2012-01-23 2013-01-23 Datenzwischenspeicherungsbereich Active DE112013000650B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/356,010 US8972680B2 (en) 2012-01-23 2012-01-23 Data staging area
USUS-13/356,010 2012-01-23
US13/356,010 2012-01-23
PCT/CA2013/050042 WO2013110189A1 (en) 2012-01-23 2013-01-23 Data staging area

Publications (2)

Publication Number Publication Date
DE112013000650T5 true DE112013000650T5 (de) 2014-11-06
DE112013000650B4 DE112013000650B4 (de) 2023-05-04

Family

ID=48798210

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000650.2T Active DE112013000650B4 (de) 2012-01-23 2013-01-23 Datenzwischenspeicherungsbereich

Country Status (6)

Country Link
US (2) US8972680B2 (de)
JP (1) JP6192660B2 (de)
CN (1) CN104137093A (de)
DE (1) DE112013000650B4 (de)
GB (1) GB2515414B (de)
WO (1) WO2013110189A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014000274A1 (en) 2012-06-29 2014-01-03 Intel Corporation Methods and systems to identify and migrate threads among system nodes based on system performance metrics
US9727318B2 (en) * 2014-02-18 2017-08-08 Facebook, Inc. Techniques to identify and purge unused code
WO2016122494A1 (en) * 2015-01-28 2016-08-04 Hewlett Packard Enterprise Development Lp Garbage collector
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
US9423962B1 (en) 2015-11-16 2016-08-23 International Business Machines Corporation Intelligent snapshot point-in-time management in object storage
CN105677582B (zh) * 2016-02-24 2018-06-19 东南大学 基于可重构系统配置多模式传输的可控缓存实现系统
US11074267B2 (en) 2017-03-20 2021-07-27 Sap Se Staged approach to automatic data discovery and performance
US10489073B2 (en) 2017-04-28 2019-11-26 Netapp Inc. Multi-tier write allocation
JP6943125B2 (ja) * 2017-10-04 2021-09-29 トヨタ自動車株式会社 情報処理装置、情報処理方法及びプログラム
CN108984353B (zh) * 2018-06-22 2021-10-29 郑州云海信息技术有限公司 基于Vdbench构造热点数据测试数据分层的方法
US11010410B1 (en) * 2018-10-12 2021-05-18 Facebook, Inc. Processing data groupings belonging to data grouping containers

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4603382A (en) 1984-02-27 1986-07-29 International Business Machines Corporation Dynamic buffer reallocation
US5155835A (en) 1990-11-19 1992-10-13 Storage Technology Corporation Multilevel, hierarchical, dynamically mapped data storage subsystem
US6324620B1 (en) * 1998-07-23 2001-11-27 International Business Machines Corporation Dynamic DASD data management and partitioning based on access frequency utilization and capacity
EP1128267A1 (de) 2000-02-25 2001-08-29 Hewlett-Packard Company, A Delaware Corporation Festplatterspeicherungssystem mit redundanten Festkörperspeicherungsgeräten
JP2005539309A (ja) * 2002-09-16 2005-12-22 ティギ・コーポレイション 記憶システムアーキテクチャおよび多重キャッシュ装置
US7124272B1 (en) 2003-04-18 2006-10-17 Symantec Corporation File usage history log for improved placement of files in differential rate memory according to frequency of utilizations and volatility of allocation space
US7421681B2 (en) 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US20060136668A1 (en) * 2004-12-17 2006-06-22 Rudelic John C Allocating code objects between faster and slower memories
US8010764B2 (en) 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
US8363519B2 (en) 2006-06-30 2013-01-29 Seagate Technology Llc Hot data zones
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
US7870128B2 (en) 2006-07-28 2011-01-11 Diskeeper Corporation Assigning data for storage based on speed with which data may be retrieved
US8112603B2 (en) 2007-10-19 2012-02-07 International Business Machines Corporation Methods, systems, and computer program products for file relocation on a data storage device
US7836030B2 (en) * 2007-11-13 2010-11-16 International Business Machines Corporation Data library optimization
US7984259B1 (en) 2007-12-17 2011-07-19 Netapp, Inc. Reducing load imbalance in a storage system
US20090228669A1 (en) 2008-03-10 2009-09-10 Microsoft Corporation Storage Device Optimization Using File Characteristics
US8301852B2 (en) * 2008-11-13 2012-10-30 International Business Machines Corporation Virtual storage migration technique to minimize spinning disks
US8612668B2 (en) 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
WO2010087803A1 (en) * 2009-01-29 2010-08-05 Lsi Corporation Allocate-on-write snapshot mechanism to provide dynamic storage tiering on-line data placement for volumes
DE112009004503T5 (de) 2009-03-10 2012-05-31 Hewlett-Packard Development Co., L.P. Optimierung der zugriffszeit von auf speichern gespeicherten dateien
CN102438979A (zh) * 2009-03-12 2012-05-02 麦迪凯姆股份公司 苯甲酰基苯乙酰胺衍生物的新型晶体
US8880835B2 (en) * 2009-07-07 2014-11-04 International Business Machines Corporation Adjusting location of tiered storage residence based on usage patterns
US8429346B1 (en) * 2009-12-28 2013-04-23 Emc Corporation Automated data relocation among storage tiers based on storage load
US8321646B2 (en) 2010-04-13 2012-11-27 Dot Hill Systems Corporation Method and apparatus for rebalancing storage components within a storage tier

Also Published As

Publication number Publication date
DE112013000650B4 (de) 2023-05-04
JP2015505623A (ja) 2015-02-23
GB2515414A (en) 2014-12-24
CN104137093A (zh) 2014-11-05
WO2013110189A1 (en) 2013-08-01
GB201414534D0 (en) 2014-10-01
US8972680B2 (en) 2015-03-03
US20130191610A1 (en) 2013-07-25
JP6192660B2 (ja) 2017-09-06
GB2515414B (en) 2016-10-05
US9152575B2 (en) 2015-10-06
US20150169471A1 (en) 2015-06-18

Similar Documents

Publication Publication Date Title
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE102016103359B4 (de) Singleton-cachespeicher-verwaltungsprotokoll für hierarchische virtualisierte speichersysteme
DE112017002941B4 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
DE112014000254B4 (de) Mehrstufiges Zwischenspeichern und Migrieren in unterschiedlichen Granularitäten
DE112019002948T5 (de) Feststellen einer optimalen speicherumgebung für datensätze und für das migrieren von datensätzen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112019001480B4 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE112015001977T5 (de) Synchronisieren von Aktualisierungen von Statusanzeigern in einer Datenverarbeitungsumgebung
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102013204972A1 (de) Hybride Sicherung und Wiederherstellung eines sehr grossen Dateisystems unter Verwendung von Metadaten-Abbildsicherung und herkömmlicher Sicherung
DE112012005275T5 (de) Datenauswahl zur Sicherung von Datenspeichern
DE102016010277A1 (de) Verfahren und systeme zum verbessern von speicher-journaling
DE112012001302T5 (de) Cachen von Daten in einem Speichersystem mit mehreren Cache-Speichern
DE112012005032T5 (de) Entfernen der Datenremanenz in deduplizierten Speicher-Clouds
DE602004007925T2 (de) Verwalten einer beziehung zwischen einem zielvolumen und einem quellenvolumen
DE112018000900T5 (de) Verarbeiten eines Befehls zum Freigeben von Speicherplatz in einem Computersystem
DE112020004840T5 (de) Speicherbereinigung in datenspeichersystemen
DE112019005392T5 (de) Steigern von datenleistung durch transferieren von daten zwischen speicherebenen unter verwendung von arbeitslastmerkmalen
DE112017005022T5 (de) Umladen der Bandverarbeitung auf Objektspeicher
DE102012221928B4 (de) Dynamische Verwaltung von Speicherlebensdauer in Hybridspeicherkonfigurationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final