DE112017008158T5 - Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen - Google Patents

Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen Download PDF

Info

Publication number
DE112017008158T5
DE112017008158T5 DE112017008158.0T DE112017008158T DE112017008158T5 DE 112017008158 T5 DE112017008158 T5 DE 112017008158T5 DE 112017008158 T DE112017008158 T DE 112017008158T DE 112017008158 T5 DE112017008158 T5 DE 112017008158T5
Authority
DE
Germany
Prior art keywords
file
files
fufl
cache
accesses
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.)
Pending
Application number
DE112017008158.0T
Other languages
English (en)
Inventor
Liang Fang
Zhen Zhou
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE112017008158T5 publication Critical patent/DE112017008158T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/44Arrangements for executing specific programs
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es sind Techniken für die Einplanung von Vorababrufen von einem Dateiensystem zu einem Cachespeicher (104) bereitgestellt, um nachfolgende Latenz zu verringern, die mit zukünftigen Zugriffen auf diese Dateien verknüpft ist. Eine Methodologie die die Techniken implementiert, beinhaltet Überwachen von Zugriffen auf Dateien eines Dateiensystems (610) (z.B. Dateienöffnungs- und Dateienlesebetriebe) und Betreuen einer Aufzeichnung für jede der zugegriffenen Dateien. Die Aufzeichnung beinhaltet eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicher- (104) Fehlern, die mit diesen Zugriffen verknüpft ist. Das Verfahren beinhaltet auch Speichern, der Aufzeichnung in eine Dateienzugriffshistoriendatenbank (FAHD) (630). Das Verfahren beinhaltet weiter Erstellen in Antwort auf ein Betriebssystem- (OS) (820) Herunterfahren einer Liste regelmäßig verwendeter Dateien (FUFL) (208) basierend auf der FAHD (218). Das Verfahren beinhaltet weiter Vorababrufen von Dateien, die durch einen ausgewählten Teilsatz der FUFL (208) identifiziert sind, zu dem Cachespeicher (104) während eines OS (820) Hochfahrens.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Rechenplattformen beinhalten oft irgendeine Form von Cachespeicher, der als eine Schnittstelle zwischen relativ schnellem Speicher nahe dem Prozessor und größeren/langsameren Datenspeichersystemen wie Festplattenlaufwerken agiert, die weiter von dem Prozessor entfernt sind. Obwohl diese Cachespeichersysteme im Vergleich zu anderen Speichersystemen auf der Plattform typischerweise klein sind, können sie eine gewisse Menge regelmäßig verwendeter Daten speichern, sodass diese für den Prozessor, verglichen mit zum Beispiel der Zeit, die es dauern würde, die Daten von einem Datenträgerlaufwerk abzurufen, mit verringerter Latenz verfügbar sind. Im Allgemeinen kann es jedoch schwer sein zu ermitteln, welche Daten in dem Cachespeicher gespeichert werden sollten und manche bestehenden Techniken verlassen sich auf Anwender und/oder Softwarevertreiber, diese Informationen bereitzustellen.
  • Figurenliste
  • Merkmale und Vorteile von Ausführungsformen des beanspruchten Gegenstands werden im Lauf der folgenden ausführlichen Beschreibung und unter Bezug auf die Zeichnungen ersichtlich, wobei ähnliche Ziffern ähnliche Teile bezeichnen.
    • 1 ist ein Top-Level-Blockdiagramm einer Implementierung eines Einplanungssystems von Dateienvorababruf auf einer Rechenplattform in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung.
    • 2 ist ein detaillierteres Blockdiagramm des Einplanungssystems von Dateienvorababruf in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung.
    • 3 veranschaulicht ein Beispielformat einer Dateienzugriffshistoriendatenbank (FAHD, File Access History Database) in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung.
    • 4 ist ein Ablaufdiagramm, das einen Prozess für Cachespeichervorababruf veranschaulicht, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung.
    • 5 ist ein Ablaufdiagramm, das einen Prozess für Dateienvorababruf basierend auf einer regelmäßig verwendeten Dateienliste (FUFL, Frequently Used File List) veranschaulicht, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung.
    • 6 ist ein Ablaufdiagramm, das einen Prozess für Dateienvorababrufeinplanung in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 7 ist eine Tabelle, die Dateienanheftungspriorisierung in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • 8 ist ein Blockdiagramm, das schematisch ein Rechensystem, um Dateienvorababrufeinplanung einzusetzen, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung veranschaulicht.
    • Obwohl die folgende ausführliche Beschreibung mit Bezugnahme auf veranschaulichende Ausführungsformen ablaufen wird, werden viele Alternativen, Modifikationen und Variationen davon im Licht dieser Offenbarung ersichtlich.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Im Allgemeinen beschreibt diese Offenbarung Techniken für die Einplanung von Vorababrufen von einem Dateiensystem zu einem Cachespeicher, um nachfolgende Latenz zu verringern, die mit zukünftigen Zugriffen auf diese Dateien durch einen Prozessor verknüpft ist. Der Cachespeicher dient als eine Schnittstelle oder ein Puffer zwischen dem relativ schnellen Speicher nahe dem Prozessor (z.B. Direktzugriffspeicher oder RAM) und den größeren, aber langsameren Dateiendatenspeichersystemen (z.B. Festplattenlaufwerke), die weiter von dem Prozessor entfernt sind. Gemäß einer Ausführungsform basiert die Identifizierung der vorab von dem Dateiensystem zu dem Cache abzurufenden Dateien auf einer Liste regelmäßig verwendeter Dateien, die automatisch aus einer Historie der Dateienzugriffe und Cachefehler über eine ausgewählte Zeitdauer erstellt wird. Diese identifizierten Dateien werden während Hochfahrens des Betriebssystems (OS, Operating System) von dem Dateiensystem zu dem Cachespeicher transferiert. Die offenbarte Technik wird hierin auch als „smarte Dateienanheftung“ bezeichnet, im Gegensatz zu „fester Dateienanheftung“, bei der der Anwender Dateien spezifiziert, die in dem Speichercache zu speichern sind, und „weicher Dateienanheftung“, in der Softwarevertreiber Dateien (die mit deren Anwendungen verknüpft sind) spezifizieren, die in dem Speichercache zu speichern sind.
  • Die offenbarten Techniken können zum Beispiel in einem Rechensystem oder einem Softwareprodukt, das von solchen Systemen ausführbar oder anderswie steuerbar ist, implementiert werden, obwohl andere Ausführungsformen ersichtlich werden. In manchen Ausführungsformen ist das System oder Produkt konfiguriert, Einplanung von Dateienvorababrufen von einem Dateiensystem zu einem Cachespeicher durchzuführen. In Übereinstimmung mit einer Ausführungsform beinhaltet ein Prozess oder eine Methodologie, diese Techniken zu implementieren, Zugriffe auf Dateien des Dateiensystems (z.B. Dateienöffnungs- und Dateienlesebetriebe) zu überwachen und eine Aufzeichnung für jede der zugegriffenen Dateien zu betreuen. In manchen Ausführungsformen beinhaltet die Aufzeichnung eine Kennung der Datei, die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen verknüpft sind, über eine ausgewählte Zeitdauer, wie einen Anwenderanmelde-/-abmeldezyklus. Das Verfahren beinhaltet auch Speichern der Aufzeichnung in einer Dateienzugriffshistoriendatenbank (FAHD). Das Verfahren beinhaltet weiter Erstellen, in Antwort auf eine OS-Abschaltung, einer Liste regelmäßig verwendeter Dateien (FUFL) basierend auf der FAHD. Die FUFL ist basierend auf einer Kombination von Zugriffen und Cachefehlern sortiert. Das Verfahren beinhaltet weiter Vorababrufen von Dateien, die durch einen ausgewählten Teilsatz der sortierten FUFL identifiziert sind, während eines OS-Hochfahrens zu dem Cachespeicher.
  • Wie begrüßt werden wird, können die hierin beschriebenen Techniken verbesserte Identifizierung von Dateien erlauben, die von einem Dateiensystem zu dem Cachespeicher vorab abzurufen sind, verglichen mit bestehenden Verfahren, die sich auf Identifizierung solcher Dateien durch den Anwender und/oder den Softwareanwendungsvertreiber verlassen, was beschwerlich, fehleranfällig und unzuverlässig sein kann. Zum Beispiel können sich Anwender nicht über diese bestehenden Verfahren bewusst sein oder können schlechte Dateienauswahlentscheidungen treffen, die Speichercachearbeitsleistung nachteilig beeinträchtigen. Zusätzlich können Softwarevertreiber unwillig sein, deren Code zu modifizieren und zu aktualisieren, um regelmäßig verwendete Dateien zu dem System zu spezifizieren (z.B. durch eine bereitgestellte Anwendungsprogrammierschnittstelle).
  • Die offenbarten Techniken können auf einer breiten Spanne von Plattformen implementiert werden, beinhaltend Serversysteme, Arbeitsstationen, persönliche Computer, Laptops, Tablets und andere solche Vorrichtungen. Diese Techniken können weiter in Hardware oder Software oder einer Kombination davon implementiert werden.
  • 1 ist ein Top-level-Blockdiagramm 100 einer Implementierung eines Dateienvorababrufeinplanungssystems auf einer Rechenplattform in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Das System ist gezeigt, einen Prozessor 110, ein smartes Dateienanheftungssystem 114, eine optionale harte/weiche Dateienanheftung-Anwendungsprogrammierschnittstelle (API, Application Programming Interface) 112, ein Festplattenlaufwerk (HDD, Hard Disk Drive) 102 und einen Cachespeicher 104 zu beinhalten.
  • Bei einer hohen Ebene ist das smarte Dateienanheftungssystem konfiguriert, automatische Identifizierung regelmäßig verwendeter Dateien bereitzustellen, die von Datenspeicherung in dem Cachespeicher profitieren können, um verringerte Latenz bereitzustellen, bevor der Anwender die Datei anfragt. Dies wird unter Verwendung von Daten bewerkstelligt, die von Dateiennutzungsüberwachung gesammelt werden, die vor dem aktuellsten OS-Hochfahren durchgeführt wird, was Verfolgen relativ langzeitlicher Trends von Dateiennutzung ermöglicht, wie unten in größerem Detail erklärt wird. Die hierin offenbarten smarten Anheftungstechniken können in Kombination mit üblichen harten Dateienanheftungs- und weichen Dateienanheftungstechniken verwendet werden. Daher kann eine optionale Dateienanheftung-API 112 bereitgestellt sein, um dem Anwender zu ermöglichen, Dateien zu spezifizieren, die in dem Speichercache gespeichert werden sollen (z.B. feste Dateienanheftung) und unabhängigen Softwarevertreibern (ISVs, Independent Software Vendors) ermöglichen, Dateien zu spezifizieren, die in dem Speichercache gespeichert werden sollen (z.B. weiche Dateienanheftung).
  • 2 ist ein detaillierteres Blockdiagramm 200 des Vorababrufeinplanungssystems in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Das System ist gezeigt, eine beliebige Zahl von Softwareanwendungen 202 zu beinhalten, die durch Dateiensystem-APIs 204 mit Dateiensystem 212 interagieren. Das Dateiensystem 212 ist in diesem Beispiel auf einem Festplattenlaufwerk (HDD) 102 gespeichert, auf das durch Datenträgertreiber 216 zugegriffen wird. Wenn die Softwareanwendungen ablaufen, werden sie somit zum Beispiel für gewöhnlich auf Dateien von dem Dateiensystem zugreifen, die auf dem HDD gespeichert sind.
  • Das System ist auch gezeigt, ein Cachespeichervorababrufprogramm 206 zu beinhalten, das konfiguriert ist, die FUFL 208 zu erstellen und den Dateienvorababruf von dem Dateiensystem 212 zu dem Cachespeicher 104 durchzuführen, wie unten erklärt wird. Das System ist weiter gezeigt, ein FAHD-Aktualisierungsprogramm 214 zu beinhalten, das die FAHD 218 erstellt und betreut, wie unten erklärt wird.
  • Das smarte Dateienanheftungsmodul 114, das in 1 gezeigt ist, weist das Cachespeichervorababrufprogramm 206, das FAHD-Aktualisierungsprogramm 214, die FUFL 208 und die FAHD 218 auf. In manchen Ausführungsformen ist das System in einen Anwenderbereich 230 und einen Kernelbereich 240 unterteilt, wobei der Kernelbereich allgemein höhere Stufen von Privilegien als der Anwenderbereich zulässt.
  • Das FAHD-Aktualisierungsprogramm 214 ist konfiguriert, Zugriffe auf Dateien des Dateiensystems zu überwachen und eine Aufzeichnung für jede der zugegriffenen Dateien zu erstellen und zu betreuen. Dateienzugriffe beinhalten für die Zwecke des FAHD-Aktualisierungsprogramms Dateiöffnungen und Dateilesevorgänge. Die Aufzeichnung beinhaltet eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern, die mit diesen Dateizugriffen verknüpft sind. Die Aufzeichnung kann Dateizugriffe und Cachespeicherfehler für eine Zahl von „Runden“ aufnehmen, wobei jede Runde mit einer ausgewählten Zeitdauer verknüpft ist, wie zum Beispiel eine gegebene Zahl von Anwenderanmelde-/-abmeldezyklen oder eine andere ausgewählte Sequenz von Ereignissen oder Dauern. FAHD-Aktualisierungsprogramm 214 ist weiter konfiguriert, die Aufzeichnung in die FAHD zu speichern. Falls die Datei später aus dem Dateiensystem gelöscht wird, kann auch die verknüpfte Aufzeichnung dieser Datei in der FAHD gelöscht werden. Der Inhalt und das Format der FAHD 218 wird unten in größerem Detail in Verbindung mit 3 beschrieben.
  • Das Cachespeichervorababrufprogramm 206 ist konfiguriert, ein OS-Herunterfahren zu erfassen und in Antwort auf dieses Herunterfahren eine FUFL basierend auf den Aufzeichnungen zu erstellen, die in der FAHD gespeichert sind. In manchen Ausführungsformen sind Dateienkennungen von der FAHD in einer sortierten Reihung in FUFL gespeichert. Die Sortierung kann unter Verwendung der Zahl von Zugriffen der Datei als ein Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als ein Nebensortierungsschlüssel durchgeführt werden. Die Sortierung kann in einer beliebigen Reihung durchgeführt werden, die am passendsten ist, zum Beispiel in ansteigender oder absteigender Reihung. In manchen Ausführungsformen kann ein ausgewählter Teilsatz der sortierten Liste, zum Beispiel die obersten 1000 zugegriffenen Dateien, in der FUFL aufbewahrt werden. Das heißt, die obersten 1000 Einträge der FUFL würden aufbewahrt werden, falls die FUFL in absteigender Reihung sortiert wäre, oder die untersten 1000 Einträge würden aufbewahrt werden, falls die FUFL in aufsteigender Reihung sortiert wäre. Daher kann die FUFL konfiguriert sein, diese Dateien zu beinhalten, die mit der größten Zahl von Zugriffen und der größten Zahl von Cachespeicherfehlern verknüpft sind. In manchen Ausführungsformen kann die Sortierung der FUFL zwischen Zugriffen und Cachespeicherfehlern auf eine beliebige gewünschte Weise gewichtet werden. In manchen Ausführungsformen kann die Sortierung der FUFL auch durch die Größe der Dateien gewichtet werden. Zum Beispiel kann es wünschenswert sein, eine Datei einer bestimmten Größe nicht vorab abzurufen, die einen relativ großen Abschnitt des Cachespeichers verbrauchen könnte.
  • In manchen Ausführungsformen ist Cachespeichervorababrufprogramm 206 weiter konfiguriert, die Dateien, die durch die FUFL identifiziert sind, oder einen Abschnitt davon, von dem Dateiensystem zu dem Cachespeicher während oder kurz nach einem OS-Hochfahren vorab abzurufen. Die FUFL kann gelöscht werden, nachdem der Vorababruf abgeschlossen ist. Auf die vorababgerufenen Dateien kann dann durch den Prozessor mit verringerter Latenz, verglichen mit Dateien, die ausschließlich auf dem HDD-Dateiensystem liegen, zugegriffen werden.
  • 3 veranschaulicht ein Beispielformat einer Dateienzugriffshistoriendatenbank (FAHD) 218 in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Jeder Reiheneintrag 300 in der Tabelle ist mit einer Datei verknüpft. Für jede Datei ist eine Dateienkennung 302 aufgezeichnet, die die Datei eindeutig identifiziert. Für diese Datei sind auch die Zahl von Dateiensystemzugriffen und die Zahl von Cachespeicherfehlern in Spalte R1 304, R2 306 und R3 308 aufgezeichnet. Spalte R1 stellt eine erste Runde von Dateienzugriffen dar, die mit einer ausgewählten Zeitdauer verknüpft ist, wie zum Beispiel die Dauer zwischen einer Anwenderanmeldung und Abmeldung. Spalte R2 und R3 stellen zweite und dritte Runden von Dateienzugriffen dar, zum Beispiel von den zwei vorigen Anwenderanmelde-/-abmeldezyklen. In manchen Ausführungsformen können mehr als 3 Runden oder weniger als 3 Runden von Daten gesammelt und gespeichert werden. In manchen Ausführungsformen können die Zeitdauern für jede Runde mit anderen geeigneten Ereignissen verknüpft werden oder auf eine beliebige gewünschte Dauer eingestellt werden.
  • In manchen Ausführungsformen können die Runden als ein Ringpuffer gespeichert werden. Zum Beispiel geht, nachdem Spalte R3 geschrieben wurde, das System zu Spalte R1 zurück und überschreibt die alten Daten in der Spalte mit neuen Daten. In manchen Ausführungsformen können die Daten von den 3 Runden summiert werden, um eine Summierung der Zahl von Zugriffen und eine Summierung der Zahl von Cachefehlern zur Verwendung in der Sortierung bereitzustellen. Es wird begrüßt werden, dass andere Dateienformate möglich sind und dass ein beliebiges geeignetes Format, das die zuvor beschriebenen Informationen bereitstellt, verwendet werden kann.
  • Methodologie
  • 4-6 sind Ablaufdiagramme, die Beispielprozesse veranschaulichen, die mit Aspekten der Einplanung von Dateienvorababrufen von einem Dateiensystem in einen Cachespeicher verknüpft sind, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Wie gesehen werden kann, beinhalten die Beispielverfahren eine Zahl von Phasen und Teilprozessen, deren Abfolge von einer Ausführungsform zur anderen variieren kann. Jedoch, wenn im Ganzen betrachtet, bilden diese Phasen und Teilprozesse einen Prozess zur Dateienvorababrufeinplanung in Übereinstimmung mit gewissen der hierin offenbarten Ausführungsformen. Diese Ausführungsformen können zum Beispiel unter Verwendung der Systemarchitektur implementiert werden, die in 1 und 2 wie oben beschrieben veranschaulicht ist. Jedoch können andere Systemarchitekturen in anderen Ausführungsformen verwendet werden, wie im Licht dieser Offenbarung ersichtlich wird. Folglich ist die Korrelation der verschiedenen in 4-6 gezeigten Funktionen zu den spezifischen Komponenten, die in den anderen Figuren veranschaulicht sind, nicht angedacht, beliebige strukturelle und/oder Verwendungsbegrenzungen zu vermitteln. Eher können andere Ausführungsformen zum Beispiel variierende Grade von Integration beinhalten, wobei viele Funktionalitäten effektiv von einem System durchgeführt werden. Zum Beispiel kann in einer alternativen Ausführungsform ein einzelnes Modul, das entkoppelte Teilmodule hat, verwendet werden, um alle der Funktionen dieser Verfahren durchzuführen. Daher können andere Ausführungsformen weniger oder mehr Module und/oder Teilmodule haben, abhängig von der Granularität von Implementierung. In noch anderen Ausführungsformen kann der abgebildete Prozess als ein Computerprogrammprodukt implementiert werden, das ein oder mehr nichttransitorische maschinenlesbare Medien beinhaltet, die, wenn von einem oder mehr Prozessoren ausgeführt, eine Umsetzung des Prozesses veranlassen. Zahlreiche Variationen und alternative Konfigurationen werden im Licht dieser Offenbarung ersichtlich.
  • 4 ist ein Ablaufdiagramm, das einen Beispielprozess für Cachespeichervorababruf 206 veranschaulicht, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Bei Betrieb 400 wird ein Ereignis erfasst und als eines von einem OS-Herunterfahren, einem OS-Hochfahren oder einer Anwenderabmeldung identifiziert. Bei Betrieb 402 wird in Antwort auf die Identifikation eines OS-Herunterfahrens die FAHD abgefragt und bei Betrieb 404 wird die FUFL basierend auf den Inhalten der FAHD erstellt. Daher kann die FAHD konfiguriert sein, Dateienzugriffsinformationen während einer Zeitdauer aufzunehmen, die sich bis zu dem Abschluss von Ausführung von Anwendermodusanwendungen erstreckt und diesen beinhaltet. In manchen Ausführungsformen werden Dateienidentifikationen von der FAHD in die FUFL sortiert und ein ausgewählter Teilsatz (z.B. die N meisten Zugriffsdateien und/oder meisten Cachefehlerdateien) wird behalten.
  • Bei Betrieb 406 werden in Antwort auf die Identifikation eines OS-Hochfahrens Dateien, die von der FUFL identifiziert sind, vorab von dem Dateiensystem zu dem Cachespeicher abgerufen, wie unterhalb in Verbindung mit 5 in größerem Detail beschrieben wird. Bei Betrieb 408 wird die FUFL gelöscht und bei Betrieb 410 wird die FAHD zu der ersten Runde eröffnet. Daher kann die FAHD konfiguriert sein, Dateienzugriffsinformationen während einer Zeitdauer aufzunehmen, die vor der Ausführung von Anwendermodusanwendungen beginnt. Bei Betrieb 412 wird in Antwort auf die Identifikation einer Anwenderabmeldung die FAHD-Runde aktualisiert, sodass eine neue Runde von Dateienzugriffsstatistiken gesammelt wird.
  • 5 ist ein Ablaufdiagramm, das einen Beispielprozess 406 für Dateienvorababruf basierend auf der FUFL veranschaulicht, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Bei Betrieb 502 wird eine Ermittlung über die Menge von freiem Bereich, der in dem Cachespeicher 104 verfügbar ist, angestellt. Eine Schwelle für freien Bereich wird auch ausgewählt oder ermittelt. Die Schwelle spezifiziert eine gewünschte untere Grenze von freiem Bereich beim Cachespeicher. Bei Betrieb 504 wird die FUFL geöffnet und ein FUFL-Zeiger ist als null eröffnet. Als nächstes werden bei Betrieb 506 Dateieninformationen von dem Dateiensystem unter Verwendung der Dateienkennung von der FUFL bei dem aktuellen Zeiger (z.B. FUFL[FUFL pointer].FileID) bezogen. Bei Betrieb 508 wird die Größe der Datei, die von den bezogenen Dateieninformationen erhalten ist, mit dem freiem Bereich von Cachespeicher verglichen. Falls die Datei in den Cache passt, wird bei Betrieb 512 die Datei an den Cache angeheftet, zum Beispiel indem der Dateieninhalt, der mit der Dateienkennung verknüpft ist, von dem HDD in den Cachespeicher kopiert wird. Bei Betrieb 514 wird der freie Bereich von Cache um die Größe der angehefteten Datei verringert. Bei Betrieb 510 wird der FUFL-Zeiger hochgezählt. Bei Betrieb 516, falls das Ende der FUFL erreicht wurde oder falls der freie Bereich von Cache unter die Schwelle gefallen ist, wird der Prozess abgeschlossen. Ansonsten läuft der Prozess bei Betrieb 506 mit dem Beziehen der nächsten in der FUFL gelisteten Datei fort.
  • 6 ist ein Ablaufdiagramm, das einen Beispielprozess 600 zur Einplanung von Dateienvorababrufen von einem Dateiensystem in einen Cachespeicher veranschaulicht, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Prozess 600 zur Vorababrufeinplanung startet bei Betrieb 610 mit Überwachen von Zugriffen auf Dateien eines Dateiensystems. Dateienzugriffe beinhalten Dateienöffnungsbetriebe und Dateienlesebetriebe. In manchen Ausführungsformen ist das Dateiensystem auf einem Festplattenlaufwerk gespeichert.
  • Als nächstes wird bei Betrieb 620 eine Aufzeichnung für jede der zugegriffenen Dateien betreut. Die Aufzeichnung beinhaltet eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind. In manchen Ausführungsformen kann die Aufzeichnung Dateienzugriffe und Cachespeicherfehler über eine ausgewählte Zeitdauer aufnehmen, wie zum Beispiel eine gegebene Zahl von Anwenderanmelde-/-abmeldezyklen oder eine andere gewählte Abfolge von Ereignissen oder Dauern. In manchen Ausführungsformen ist der Cachespeicher ein nichtflüchtiger Speicher, wie zum Beispiel ein Festzustandslaufwerk.
  • Bei Betrieb 630 wird die Aufzeichnung in eine Dateienzugriffshistoriendatenbank (FAHD) gespeichert. Wenn die Datei aus dem Dateiensystem gelöscht wird, kann die verknüpfte Aufzeichnung dieser Datei in der FAHD ebenso gelöscht werden.
  • Bei Betrieb 640 wird eine Liste regelmäßig verwendeter Dateien (FUFL) in Antwort auf ein OS-Herunterfahren erstellt. Die FUFL basiert auf der FAHD. In manchen Ausführungsformen sind Dateien von der FAHD unter Verwendung der Zahl von Zugriffen auf die Datei als ein Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als ein Nebensortierungsschlüssel in die FUFL sortiert. Ein Teilsatz der sortierten Dateien (z.B. alle oder ein ausgewählter Abschnitt) kann dann in der FUFL behalten werden. Daher kann die FUFL konfiguriert sein, die am meisten zugegriffenen Dateien mit den meisten Cachespeicherfehlern zu beinhalten.
  • Bei Betrieb 650 werden Dateien, die in der FUFL gelistet sind, während eines OS-Hochfahrens von dem Dateiensystem zu dem Cachespeicher vorababgerufen, um nachfolgende Zugriffslatenz auf diese Dateien zu verringern. Die FUFL kann dann gelöscht werden, nachdem die Dateienvorababrufe durchgeführt sind.
  • Selbstverständlich können in manchen Ausführungsformen zusätzliche Betriebe durchgeführt werden, wie zuvor in Verbindung mit dem System beschrieben wurde. Zum Beispiel können die offenbarten Techniken, die als smarte Dateienanheftung bezeichnet sind, mit einer Kombination von harten Dateienanheftungs- und weichen Dateienanheftungstechniken kombiniert werden. In solchen Fällen wird den hart angehefteten Dateien die höchste Priorität für Vorababruf verliehen, während den weich angehefteten Dateien eine mittlere Priorität verliehen wird und den smart angehefteten Dateien die niedrigste Priorität verliehen wird.
  • Integration mit harten und weichen Dateienanheftungsprozessen
  • 7 ist eine Tabelle 700, die Dateienanheftungspriorisierung veranschaulicht, in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung. Wie zuvor besprochen, können die offenbarten Techniken für smarte Dateienanheftung in Kombination mit harten Dateienanheftungs- und weichen Dateienanheftungsprozeduren eingesetzt werden. In solchen Fällen ist die Priorisierung, die ermittelt, welche Dateien in den Cachespeicher vorab abgerufen werden, in Tabelle 700 festgelegt, die Dateienanheftungsverfahren 704 gegen Priorität von Dateien in Cache 702 listet. Insbesondere wird Dateien, die durch harte Dateienanheftung spezifiziert sind, die höchste Priorität verliehen, Dateien, die durch weiche Dateienanheftung spezifiziert sind, wird eine mittlere Priorität verliehen und Dateien, die durch smarte Dateienanheftung identifiziert sind, wird die niedrigste Priorität verliehen. In manchen Ausführungsformen kann dies bewerkstelligt werden, indem zuerst die harte Dateienanheftung durchgeführt wird, gefolgt von der weichen Dateienanheftung, gefolgt von der smarten Dateienanheftung. Daher, falls Bereich in dem Cachespeicher knapp wird, wenn Dateien vorab abgerufen werden, können Dateien, die durch smarte Dateienanheftung identifiziert sind, nicht in dem Cachespeicher gespeichert werden. Dies stellt sicher, dass Dateien, die insbesondere durch den Anwender und/oder den Softwarevertreiber für Zugriff mit niedrigster Latenz identifiziert sind, die beste Chance haben, in dem Cachespeicher gespeichert zu werden. Zusätzlich können in manchen Ausführungsformen Dateien in und aus dem Speichercache gemäß der in Tabelle 700 festgelegten Prioritäten ausgetauscht werden. Daher kann eine smart angeheftete Datei durch eine hart angeheftete Datei ausgetauscht werden, wie durch den „Ja“ Eintrag 706 in der Tabelle angegeben.
  • Beispielsvstem
  • 8 veranschaulicht ein Beispielrechensystem 800, das Dateienvorababrufplanung einsetzt, die in Übereinstimmung mit gewissen Ausführungsformen der vorliegenden Offenbarung konfiguriert ist. In manchen Ausführungsformen weist System 800 die Rechenplattform 100 auf, die einen persönlichen Computer, eine Arbeitsstation, ein Serversystem, einen Laptopcomputer, Ultra-Laptopcomputer, tragbaren Computer und so weiter hosten oder anderswie darin eingegliedert sein kann. Eine beliebige Kombination unterschiedlicher Ausführungsformen kann in gewissen Ausführungsformen verwendet werden.
  • In manchen Ausführungsformen kann Plattform 100 eine beliebige Kombination von einem Prozessor 110, einem Speicher 830, einem smarten Dateienanheftungssystem 114, einer Dateienanheftung-API 112 (optional), einer Netzwerkschnittstelle 840, einem Eingabe-/Ausgabe-(I/O, Input/Output) System 850, einer Anwenderschnittstelle 860, einem Datenspeichersystem 870, einem Festplattenlaufwerk (HDD) 870 und einem Cachespeicher 104 aufweisen. Wie weiters gesehen werden kann, sind ein Bus und/oder eine Verschaltung 892 bereitgestellt, um Kommunikation zwischen den verschiedenen Komponenten, die oben gelistet sind, und/oder anderen nicht gezeigten Komponenten zuzulassen. Plattform 100 kann mit einem Netzwerk 894 durch Netzwerkschnittstelle 840 gekoppelt sein, um Kommunikationen mit anderen Rechenvorrichtungen, Plattformen oder Ressourcen zuzulassen. Andere Komponentenausstattung und Funktionalität, die nicht in dem Blockdiagramm von 8 veranschaulicht sind, werden im Licht dieser Offenbarung ersichtlich und es wird begrüßt werden, dass andere Ausführungsformen nicht auf eine beliebige bestimmte Hardwarekonfiguration begrenzt sind.
  • Prozessor 110 kann ein beliebiger geeigneter Prozessor sein und kann einen oder mehr Coprozessoren oder Steuergeräte beinhalten, wie eine Grafikverarbeitungseinheit, einen Audioprozessor oder Hardwarebeschleuniger, um bei Steuerungs- und Verarbeitungsbetrieben zu helfen, die mit System 800 verknüpft sind. In manchen Ausführungsformen kann der Prozessor 110 als eine beliebige Zahl von Prozessorkernen implementiert sein. Der Prozessor (oder Prozessorkerne) kann ein beliebiger Typ von Prozessor sein, wie zum Beispiel ein Mikroprozessor, ein eingebetteter Prozessor, ein Digitalsignalprozessor (DSP), ein Grafikprozessor (GPU), ein Netzwerkprozessor, ein feldprogrammierbares Gate-Array oder eine andere Vorrichtung, die konfiguriert ist, Code auszuführen. Die Prozessoren können Multithread-Kerne sein, indem sie mehr als einen Hardwarethreadkontext (oder „logischen Prozessor“) pro Kern beinhalten können. Prozessor 110 kann als ein komplexer Befehlssatzcomputer- (CISC, Complex Instruction Set Computer) oder ein verringerter Befehlssatzcomputer- (RISC, Reduced Instruction Set Computer) Prozessor sein. In manchen Ausführungsformen kann Prozessor 110 als ein mit x86-Befehlsssatz kompatibler Prozessor konfiguriert sein.
  • Speicher 830 kann unter Verwendung eines geeigneten Typs von digitalem Datenspeicher implementiert sein, beinhaltend zum Beispiel Flashspeicher und/oder Direktzugriffspeicher (RAM, Random Access Memory). In manchen Ausführungsformen kann der Speicher 830 verschiedene Schichten von Speicherhierarchie und/oder Speichercaches, wie sie Fachkundigen bekannt sind, beinhalten. Speicher 830 kann als eine flüchtige Speichervorrichtung implementiert sein, wie, aber nicht begrenzt auf, eine RAM-, dynamische RAM- (DRAM), oder statische RAM- (SRAM) Vorrichtung. Datenspeichersystem 870 kann als eine nichtflüchtige Datenspeichervorrichtung implementiert sein, wie, aber nicht begrenzt auf, eines oder mehr von einem Festplattenlaufwerk (HDD) 102, einem Festzustandslaufwerk (SSD), einem Universal Serial Bus (USB) Laufwerk, einem optischen Datenträgerlaufwerk, Bandlaufwerk, einer internen Datenspeichervorrichtung, einer angehängten Datenspeichervorrichtung, Flashspeicher, batterieunterstützter synchroner DRAM (SDRAM) und/oder einer netzwerkzugänglichen Datenspeichervorrichtung. In manchen Ausführungsformen kann Datenspeicher 870 Technologie aufweisen, um den erhöhten Schutz von Datenspeicherarbeitsleitung für wertvolle digitale Medien zu erhöhen, wenn mehrere Festlaufwerke beinhaltet sind. Cachespeicher 104 kann als ein Zwischenspeichersystem zwischen Speicher 830 und HDD 102 konfiguriert sein, um regelmäßig zugegriffene Dateien zu speichern und verringerte Zugriffslatenz für diese Dateien bereitzustellen, wie zuvor beschrieben wurde. In manchen Ausführungsformen kann Cachespeicher 104 ein nichtflüchtiger Speicher sein, wie zum Beispiel ein Festzustandslaufwerk.
  • Prozessor 110 kann konfiguriert sein, ein Betriebssystem (OS) 820 auszuführen, das ein beliebiges geeignetes Betriebssystem aufweisen kann, wie Google Android (Google Inc., Mountain View, CA), Microsoft Windows (Microsoft Corp., Redmond, WA), Apple OS X (Apple Inc., Cupertino, CA), Linux, ein Echtzeitbetriebssystem (RTOS, Real-Time Operating System) oder beliebige Varianten davon. Wie im Licht dieser Offenbarung begrüßt werden wird, können die hierin bereitgestellten Techniken ohne Bezug auf das bestimmte Betriebssystem implementiert werden, das in Verbindung mit System 800 bereitgestellt ist, und können deshalb auch unter Verwendung einer beliebigen geeigneten bestehenden oder nachfolgend entwickelten Plattform implementiert werden.
  • Netzwerkschnittstellenschaltkreis 840 kann ein beliebiger geeigneter Netzwerkchip oder Chipsatz sein, der kabelgebundene und/oder drahtlose Verbindung zwischen anderen Komponenten von Computersystem 800 und/oder Netzwerk 894 zulässt, wodurch es System 800 ermöglicht wird, mit anderen lokalen und/oder fernen Rechensystemen, Servern, Cloud-basierten Servern und/oder anderen Ressourcen zu kommunizieren. Kabelgebundene Kommunikation kann bestehenden (oder noch zu entwickelnden) Standards entsprechen, wie zum Beispiel Ethernet. Drahtlose Kommunikation kann bestehenden (oder noch zu entwickelten) Standards entsprechen, wie zum Beispiel Zellkommunikationen, beinhaltend LTE (Long Term Evolution), Wireless Fidelity (Wi-Fi), Bluetooth und/oder Nahfeldkommunikation (NFC, Near Field Communication). Beispielhafte drahtlose Netzwerke beinhalten, sind aber nicht begrenzt auf, drahtlose Lokalnetzwerke, drahtlose persönliche Netzwerke, drahtlose Großraumnetzwerke, Zellnetzwerke und Satellitennetzwerke.
  • I/O-System 850 kann konfiguriert sein, zwischen verschiedenen I/O-Vorrichtungen und anderen Komponenten von Computersystem 800 zu verbinden. I/O-Vorrichtungen können eine Benutzerschnittstelle 860 beinhalten, sind aber nicht darauf begrenzt. Anwenderschnittstelle 860 kann Vorrichtungen (nicht gezeigt) beinhalten, wie ein Anzeigeelement, ein Berührungsfeld, eine Tastatur, eine Maus, ein Mikrofon und einen Lautsprecher, usw. I/O-System 850 kann ein Grafikteilsystem beinhalten, das konfiguriert ist, Verarbeitung von Bildern zum Rendern auf einem Anzeigeelement durchzuführen. Grafikteilsystem kann zum Beispiel eine Grafikverarbeitungseinheit oder eine visuelle Verarbeitungseinheit (VPU, Virtual Processing Unit) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um Grafikteilsystem und das Anzeigeelement kommunikativ zu koppeln. Zum Beispiel kann die Schnittstelle eine beliebige von einer High Definition Multimedia Interface (HDMI), DisplayPort, drahtlosen HDMI und/oder eine beliebige andere geeignete Schnittstelle unter Verwendung drahtloser High Definition-konformer Techniken sein. In manchen Ausführungsformen könnte das Grafikteilsystem in Prozessor 110 oder einen beliebigen Chipsatz von Plattform 100 integriert sein.
  • Es wird begrüßt werden, dass in manchen Ausführungsformen die verschiedenen Komponenten des Systems 800 kombiniert oder in einer System-auf-einem-Chip (SoC, System-On-a-Chip) Architektur integriert sein können. In manchen Ausführungsformen können die Komponenten Hardwarekomponenten, Firmwarekomponenten, Softwarekomponenten oder eine beliebige geeignete Kombination von Hardware, Firmware oder Software sein.
  • Smartes Dateienanheftungsmodul 114 ist konfiguriert, Dateienvorabrufe von einem Dateiensystem, das auf HDD 102 oder anderem Datenspeichersystem 870 gespeichert ist, in Cachespeicher 104 einzuplanen, um nachfolgende Latenz zu verringern, die mit zukünftigen Zugriffen auf diese Dateien verknüpft ist, wie zuvor beschrieben wurde. Smartes Dateienanheftungsmodul 114 kann beliebige oder alle der Schaltungen/Programme/Komponenten beinhalten, die in 2 veranschaulicht sind, beinhaltend Cachespeichervorababrufprogramm 206, Liste regelmäßig verwendeter Dateien 208, Dateienzugriffshistoriendatenbank-Aktualisierungsprogramm 214 und Dateienzugriffshistoriendatenbank 218, wie zuvor beschrieben. Diese Komponenten können implementiert oder anderswie in Verbindung mit einer Vielfalt von geeigneter Software und/oder Hardware verwendet werden, die mit Plattform 100 gekoppelt ist oder anderswie einen Teil davon bildet. Diese Komponenten können zusätzlich oder alternativ implementiert oder anderswie in Verbindung mit Anwender-I/O-Vorrichtungen verwendet werden, die im Stande sind, Informationen an einen Anwender bereitzustellen und Informationen und Befehle von diesem zu empfangen. In manchen Fällen kann Zugriff auf Ressourcen auf einem gegebenen Netzwerk oder Rechensystem Anmeldedaten benötigen, wie Anwendernamen, Passwörter und/oder Konformität mit einem beliebigen anderen geeigneten Sicherheitsmechanismus.
  • In verschiedenen Ausführungsformen kann System 800 als ein drahtloses System, ein kabelgebundenes System oder eine Kombination von beidem implementiert sein. Wenn als ein drahtloses System implementiert, kann System 800 Komponenten und Schnittstellen beinhalten, die zum Kommunizieren über ein drahtloses geteiltes Medium geeignet sind, wie ein(e) oder mehr Antennen, Sender, Empfänger, Sendeempfänger, Verstärker, Filter, Steuerungslogik und so weiter. Ein Beispiel von drahtlosen geteilten Medien kann Abschnitt eines drahtlosen Spektrums beinhalten, wie das Funkfrequenzspektrum und so weiter. Wenn als ein kabelgebundenes System implementiert, kann System 800 Komponenten und Schnittstellen beinhalten, die zum Kommunizieren über kabelgebundene Kommunikationsmedien geeignet sind, wie Eingabe/Ausgabe-Adapter, physische Verbinder, um den Eingabe/Ausgabe-Adapter mit einem entsprechenden kabelgebundenen Kommunikationsmedium zu verbinden, eine Netzwerkschnittstellenkarte (NIC, Network Interface Card), Datenträgersteuergerät, Videosteuergerät, Audiosteuergerät und so weiter. Beispiele kabelgebundener Kommunikationsmedien können einen Draht, Kabelmetallüberbrückungen, Platine (PCB, Printed Circuit Board), Rückwandplatine, Schaltmatrix, Halbleitermaterial, Doppelkabel, Koaxialkabel, Glasfaser und so weiter beinhalten.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination beider implementiert sein. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (zum Beispiel Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, ASICs, programmierbare Logikvorrichtungen, Digitalsignalprozessoren, FPGAs, Logikgates, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze und so weiter beinhalten. Beispiele von Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Teilroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen, Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon beinhalten. Zu ermitteln, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert ist, kann in Übereinstimmung mit einer beliebigen Zahl von Faktoren variieren, wie gewünschter Rechenrate, Leistungsstufe, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingabedatenraten, Ausgabedatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und andere Gestaltungs- und Arbeitsleistungsbeschränkungen.
  • Manche Ausführungsformen können unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“ gemeinsam mit deren Ableitungen beschrieben werden. Diese Ausdrücke sind nicht als Synonyme füreinander gedacht. Zum Beispiel können manche Ausführungsformen unter Verwendung der Ausdrücke „verbunden“ und/oder „gekoppelt“ beschrieben werden, um anzugeben, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander sind. Der Ausdruck „gekoppelt“ kann jedoch auch meinen, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sind, aber trotzdem zusammenwirken oder miteinander interagieren.
  • Die verschiedenen hierin offenbarten Ausführungsformen können in verschiedenen Formen von Hardware, Software, Firmware und/oder Sonderzweckprozessoren implementiert sein. Zum Beispiel hat in einer Ausführungsform mindestens ein nichttransitorisches computerlesbares Datenspeichermedium darauf codierte Befehle, die, wenn von einem oder mehr Prozessoren ausgeführt, eine Implementierung einer oder mehr der hierin offenbarten Dateienvorababrufmethodologien veranlassen. Die Befehle können unter Verwendung einer geeigneten Programmiersprache codiert werden, wie C, C++, objektorientiertes C, Java, JavaScript, Visual Basic .NET, Beginner's All-Purpose Symbolic Instruction Code (BASIC), oder alternativ unter Verwendung von angepassten oder proprietären Befehlssätzen. Die Befehle können in der Form von einer oder Mehr Computersoftwareanwendungen und/oder Applets bereitgestellt sein, die greifbar an einer Speichervorrichtung ausgeführt sind und die von einem Computer ausgeführt werden können, der eine beliebige geeignete Architektur hat. In einer Ausführungsform kann das System auf einer gegebenen Webseite gehostet werden und zum Beispiel unter Verwendung von JavaScript oder einer anderen geeigneten Browser-basierten Technologie implementiert sein. Zum Beispiel kann in gewissen Ausführungsformen das System sich Verarbeitungsressourcen zunutze machen, die von einem über Netzwerk 894 zugänglichen fernen Computersystem bereitgestellt sind. Die hierin offenbarten Computersoftwareanwendungen können eine beliebige Zahl unterschiedlicher Module, Teilmodule oder anderer Komponenten von unterschiedlicher Funktionalität beinhalten und können Informationen an noch andere Komponenten bereitstellen oder Informationen von diesen empfangen. Diese Module können zum Beispiel verwendet werden, um mit Eingabe- und/oder Ausgabevorrichtungen zu kommunizieren, wie einem Anzeigebildschirm, einer berührungsempfindlichen Oberfläche, einem Drucker und/oder einer beliebigen anderen geeigneten Vorrichtung. Andere Komponentenausstattung und Funktionalität, die nicht in den Veranschaulichungen widerspiegelt sind, werden im Licht dieser Offenbarung ersichtlich und es wird begrüßt werden, dass andere Ausführungsformen auf keine bestimmte Hardware- oder Softwarekonfiguration begrenzt sind. Daher kann in anderen Ausführungsformen System 800 zusätzliche, weniger oder alternative Teilkomponenten verglichen mit denen, die in der Beispielausführungsform von 8 beinhaltet sind, aufweisen.
  • Das zuvor erwähnte nichttransitorische computerlesbare Medium kann ein beliebiges geeignetes Medium zum Speichern digitaler Informationen sein, wie eine Festplatte, ein Server, ein Flashspeicher und/oder Direktzugriffspeicher (RAM) oder eine Kombination von Speichern. In alternativen Ausführungsformen können hierin offenbarte Komponenten und/oder Module mit Hardware implementiert sein, die Gate-Stufenlogik beinhaltet, wie ein feldprogrammierbares Gate-Array (FPGA) oder alternativ einen zweckgebundenen Halbleiter, wie eine anwendungsspezifische integrierte Schaltung (ASIC). Noch andere Ausführungsformen können mit einer Mikrosteuerung implementiert sein, die eine Zahl von Eingabe-/Ausgabeanschlüssen zum Empfangen und Ausgeben von Daten und eine Zahl von eingebetteten Routinen zum Umsetzen der hierin offenbarten verschiedenen Funktionalitäten hat. Es wird ersichtlich, dass eine beliebige geeignete Kombination von Hardware, Software und Firmware verwendet werden kann und dass andere Ausführungsformen nicht auf eine beliebige bestimmte Systemarchitektur begrenzt sind.
  • Manche Ausführungsformen können zum Beispiel unter Verwendung eines maschinenlesbaren Mediums oder Gegenstands implementiert sein, das oder der einen Befehl oder einen Befehlssatz speichern kann, der, falls von einer Maschine ausgeführt, die Maschine veranlassen kann, Verfahren und/oder Betriebe in Übereinstimmung mit den Ausführungsformen durchzuführen. Solch eine Maschine kann zum Beispiel eine(n) beliebige(n) geeignete(n) Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, Rechensystem, Verarbeitungssystem, Computer, Prozess oder dergleichen beinhalten und kann unter Verwendung einer beliebigen geeigneten Kombination von Hardware und/oder Software implementiert sein. Das maschinenlesbare Medium oder der Gegenstand kann zum Beispiel einen beliebigen geeigneten Typ von Speichereinheit, Speichervorrichtung, Speicherartikel, Speichermedium, Datenspeichervorrichtung, Datenspeicherartikel, Datenspeichermedium und/oder Datenspeichereinheit beinhalten, wie Speicher, entnehmbare oder nicht-entnehmbare Medien, löschbare oder nichtlöschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Diskette, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R) Speicher, Compact Disk Rewriteable (CR-RW) Speicher, optischer Datenträger, magnetische Medien, magneto-optische Medien, entnehmbare Speicherkarten oder Datenträger, verschiedene Typen von Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Befehle können einen beliebigen geeigneten Typ von Code, wie Sourcecode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, verschlüsselten Code und dergleichen beinhalten, der unter Verwendung einer beliebigen geeigneten hochstufigen, niederstufigen, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert ist.
  • Wenn nicht ausdrücklich anderes angegeben ist, kann begrüßt werden, dass Ausdrücke wie „verarbeiten“, „rechnen“, „berechnen“, „ermitteln“ oder dergleichen die Handlung und/oder den Prozess eines Computers oder Rechensystems oder ähnlicher elektronischen Rechenvorrichtung bezeichnen, die bzw. der Daten, die als physische Mengen (zum Beispiel Elektronik) innerhalb der Register und/oder Speichereinheiten des Computersystems dargestellt sind, in andere Daten verändert und/oder transformiert, die ähnlich als physische Mengen innerhalb der Register, Speichereinheiten oder anderen solchen Informationsdatenspeicherübertragung oder Anzeigen des Computersystems dargestellt sind. Die Ausführungsformen sind in diesem Zusammenhang nicht begrenzt.
  • Die Ausdrücke „Schaltung“ oder „Schaltkreis“ sind, wie in einer beliebigen Ausführungsform hierin verwendet, funktional und können zum Beispiel einzeln oder in einer beliebigen Kombination festverdrahtete Schaltkreise, programmierbare Schaltkreise, wie Computerprozessoren, die einen oder mehr individuelle Befehlsverarbeitungskerne aufweisen, Zustandsmaschinenschaltkreise und/oder Firmware aufweisen, die Befehle speichert, die von programmierbaren Schaltkreisen ausgeführt werden. Die Schaltkreise können einen Prozessor und/oder eine Steuerung beinhalten, der oder die konfiguriert ist, einen oder mehr Befehle auszuführen, um einen oder mehr hierin beschriebene Betriebe durchzuführen. Die Befehle können zum Beispiel als Anwendung, Software, Firmware usw. ausgeführt sein, die konfiguriert ist, die Schaltkreise zu veranlassen, beliebige der zuvor erwähnten Betriebe durchzuführen. Software kann als ein Softwarepackage, Code, Befehle, Befehlssätze und/oder Daten, ausgeführt sein, die auf einer computerlesbaren Datenspeichervorrichtung aufgezeichnet sind. Software kann ausgeführt oder implementiert sein, eine beliebige Zahl von Prozessen zu beinhalten und Prozesse wiederrum können ausgeführt oder implementiert sein, eine beliebige Zahl von Threads usw. auf eine hierarchische Weise zu beinhalten. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten, die in Speichervorrichtungen hartcodiert sind (z.B. nicht-flüchtig), ausgeführt sein. Die Schaltkreise können gemeinsam oder individuell als Schaltkreise ausgeführt sein, die Teil eines größeren Systems bilden, zum Beispiel einer integrierten Schaltung (IC), einer anwendungsspezifischen integrierten Schaltung (ASIC), eines System-auf-einem-Chip (SoC), von Desktopcomputern, Laptopcomputern, Tabletcomputern, Servern, Smartphones usw. Andere Ausführungsformen können als Software implementiert sein, die von einer programmierbaren Steuerungsvorrichtung ausgeführt wird. In solchen Fällen sind die Ausdrücke „Schaltkreise“ oder „Schaltung“ angedacht, eine Kombination von Software und Hardware zu beinhalten, wie eine programmierbare Steuerungsvorrichtung oder einen Prozessor, der im Stande ist, die Software auszuführen. Wie hierin beschrieben, können verschiedene Ausführungsformen unter Verwendung von Hardwareelementen, Softwareelementen oder einer beliebigen Kombination davon implementiert sein. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), Digitalsignalprozessoren (DSP), feldprogrammierbares Gate-Array (FPGA), Logikgates, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter beinhalten.
  • Zahlreiche spezifische Details wurden hierin vorgebracht, um ein tiefgreifendes Verständnis der Ausführungsformen bereitzustellen. Der Durchschnittsfachmann wird jedoch verstehen, dass die Ausführungsformen ohne diese spezifischen Details ausgeübt werden können. In anderen Beispielen wurden wohlbekannte Betriebe, Komponenten und Schaltungen nicht im Detail beschrieben, um die Ausführungsformen nicht zu verschleiern. Es kann begrüßt werden, dass die spezifischen hierin offenbarten strukturellen und funktionalen Details stellvertretend sind und nicht unbedingt den Umfang der Ausführungsformen begrenzen. Zusätzlich, obwohl der Gegenstand mit einer Wortwahl beschrieben wurde, die für strukturelle Merkmale und/oder methodologische Handlungen spezifisch ist, ist zu verstehen, dass der in den angehängten Ansprüchen definierte Gegenstand nicht unbedingt auf die hierin beschriebenen spezifischen Merkmale oder Handlungen begrenzt ist. Eher sind die hierin beschriebenen spezifischen Merkmale und Handlungen als Beispielsformen einer Implementierung der Ansprüche offenbart.
  • Weitere Beispielausführungsformen
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen, aus denen zahlreiche Abwandlungen und Konfigurationen ersichtlich werden.
  • Beispiel 1 ist ein prozessorimplementiertes Verfahren für Dateienvorababrufeinplanung, wobei das Verfahren aufweist: Überwachen, durch ein prozessorbasiertes System, von Zugriffen auf Dateien eines Dateiensystems; Betreuen, durch das prozessorbasierte System, einer Aufzeichnung für jede der zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft ist, aufweist; Speichern, durch das prozessorbasierte System, der Aufzeichnung in eine Dateienzugriffshistoriendatenbank (FAHD); Erstellen, durch das prozessorbasierte System, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL) basierend auf der FAHD; und Vorababrufen, durch das prozessorbasierte System, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, wobei das Erstellen der FUFL weiter Sortieren der FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und Verwenden der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel und Erhalten eines ausgewählten Teilsatzes der sortierten FUFL aufweist.
  • Beispiel 3 beinhaltet den Gegenstand von Beispiel 1 oder 2, weiter aufweisend Löschen der FUFL nach Durchführen des Vorababrufs.
  • Beispiel 4 beinhaltet den Gegenstand von einem beliebigen der Beispiele 1-3, wobei die Zahl von Zugriffen der Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer betreut werden, die mit einer ausgewählten Zahl von Anwenderanmelde-/-abmeldezyklen verknüpft ist.
  • Beispiel 5 beinhaltet den Gegenstand von einem beliebigen der Beispiele 1-4, wobei das Dateiensystem auf einem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  • Beispiel 6 beinhaltet den Gegenstand von einem beliebigen der Beispiele 1-5, wobei das Vorababrufen weiter Vorababrufen von Dateien aufweist, die durch mindestens einen von einem harten Dateienanheftungsprozess, bei einer ersten Priorität, und einem weichen Dateienanheftungsprozess, bei einer zweiten Priorität, ausgewählt sind, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die von der FUFL vorab abgerufen wurden.
  • Beispiel 7 beinhaltet den Gegenstand von einem beliebigen der Beispiele 1-6, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens einen von einem Dateienöffnungsbetrieb und einem Dateienlesebetrieb beinhalten.
  • Beispiel 8 beinhaltet den Gegenstand von einem beliebigen der Beispiele 1-7, weiter aufweisend Entfernen der gespeicherten Aufzeichnung, die mit einer gelöschten Datei aus der FAHD verknüpft ist, in Antwort auf Erfassen einer Löschung der zugegriffenen Datei aus dem Dateiensystem.
  • Beispiel 9 beinhaltet den Gegenstand von einem beliebigen der Beispiele 1-8, weiter aufweisend Zugreifen, durch eine Softwareanwendung, auf eine vorababgerufene Datei aus dem Cachespeicher.
  • Beispiel 10 ist ein System für eine Dateienvorababrufeinplanung, wobei das System aufweist: ein Dateiensystem; einen Cachespeicher; ein Dateienzugriffshistoriendatenbank-(FAHD) Aktualisierungsprogramm zum: Überwachen von Zugriffen auf Dateien des Dateiensystems; Betreuen einer Aufzeichnung für jede der zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, aufweist, und Speichern der Aufzeichnung in die FAHD; und ein Cachespeichervorababrufprogramm zum: Erstellen, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL), basierend auf der FAHD; und Vorababrufen, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  • Beispiel 11 beinhaltet den Gegenstand von Beispiel 10, wobei das Cachespeichervorababrufprogramm weiter dazu dient, die FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel zu sortieren und einen ausgewählten Teilsatz der sortierten FUFL zu erhalten.
  • Beispiel 12 beinhaltet den Gegenstand von Beispiel 10 oder 11, wobei das Cachespeichervorababrufprogramm weiter dazu dient, die FUFL nach Durchführen des Vorababrufens zu löschen.
  • Beispiel 13 beinhaltet den Gegenstand von einem der Beispiele 10-12, wobei das FAHD-Aktualisierungsprogramm weiter dazu dient, die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer zu betreuen, die mit einer ausgewählten Zahl von Anwenderanmelde-/- abmeldezyklen verknüpft ist.
  • Beispiel 14 beinhaltet den Gegenstand von einem beliebigen der Beispiele 10-13, weiter aufweisend ein Festplattenlaufwerk, wobei das Dateiensystem auf dem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  • Beispiel 15 beinhaltet den Gegenstand von einem beliebigen der Beispiele 10-14, wobei das Cachespeichervorababrufprogramm weiter dazu dient, Dateien vorab abzurufen, die durch mindestens eines von einem harten Dateienanheftungsprozess, bei einer ersten Priorität, und einer weichen Dateienanheftung, bei einer zweiten Priorität, ausgewählt sind, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die aus der FUFL abgerufen werden.
  • Beispiel 16 beinhaltet den Gegenstand von einem beliebigen der Beispiele 10-15, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens eines von einem Dateienöffnungsbetrieb und einem Dateienlesebetrieb beinhalten.
  • Beispiel 17 beinhaltet den Gegenstand von einem beliebigen der Beispiele 10-16 wobei das FAHD-Aktualisierungsprogramm weiter dazu dient, die gespeicherte Aufzeichnung zu entfernen, die mit einer gelöschten Datei von der FAHD verknüpft ist, in Antwort darauf, eine Löschung der zugegriffenen Datei aus dem Dateiensystem zu erfassen.
  • Beispiel 18 ist mindestens ein nichttransitorisches computerlesbares Datenspeichermedium, das Befehle darauf codiert hat, die, wenn von einem oder mehr Prozessoren ausgeführt, in den folgenden Betrieben zur Dateienvorababrufeinplanung resultieren, wobei die Betriebe aufweisen: Überwachen von Zugriffen auf Dateien eines Dateiensystems; Betreuen einer Aufzeichnung für jede zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern aufweist, die mit den Zugriffen auf die Datei verknüpft sind; Speichern der Aufzeichnung in eine Dateienzugriffshistoriendatenbank (FAHD); Erstellen, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL), basierend auf der FAHD; und Vorababrufen, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  • Beispiel 19 beinhaltet den Gegenstand von Beispiel 18, wobei das Erstellen der FUFL weiter die Betriebe zum Sortieren der FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel und Erhalten eines ausgewählten Teilsatzes der sortierten FUFL aufweist.
  • Beispiel 20 beinhaltet den Gegenstand von Beispiel 18 oder 19, weiter aufweisend den Betrieb zum Löschen der FUFL nach Durchführen des Vorababrufens.
  • Beispiel 21 beinhaltet den Gegenstand von einem beliebigen der Beispiele 18-20, wobei die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer betreut werden, die mit einer ausgewählten Zahl von Anwenderanmelde-/-abmeldezyklen verknüpft ist.
  • Beispiel 22 beinhaltet den Gegenstand von einem beliebigen der Beispiele 18-21, wobei das Dateiensystem auf einem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  • Beispiel 23 beinhaltet den Gegenstand von einem der Beispiele 18-22, wobei das Vorababrufen weiter den Betrieb zum Vorababrufen von Dateien aufweist, die durch mindestens einen von einem harten Dateienanheftungsprozess, bei einer ersten Priorität, und einem weichen Dateienanheftungsprozess, bei einer zweiten Priorität, ausgewählt sind, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die aus der FUFL vorab abgerufen sind.
  • Beispiel 24 beinhaltet den Gegenstand von einem beliebigen der Beispiele 18-23, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens einen eines Dateienöffnungsbetriebs und eines Dateienlesebetriebs beinhalten.
  • Beispiel 25 beinhaltet den Gegenstand von einem beliebigen der Beispiele 18-24, weiter aufweisend den Betrieb zum Entfernen der gespeicherten Aufzeichnung, die mit einer gelöschten Datei aus der FAHD verknüpft ist, in Antwort auf Erfassen einer Löschung der zugegriffenen Datei aus dem Dateiensystem.
  • Beispiel 26 ist ein System zur Dateienvorababrufeinplanung, wobei das System aufweist: Mittel zum Überwachen von Zugriffen auf Dateien eines Dateiensystems; Mittel zum Betreuen einer Aufzeichnung für jede der zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherzugriffen, die mit den Zugriffen auf die Datei verknüpft ist, aufweist; Mittel zum Speichern der Aufzeichnung in einer Dateienzugriffshistoriendatenbank (FAHD); Mittel zum Erstellen, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL), basierend auf der FAHD; und Mittel zum Vorababrufen, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  • Beispiel 27 beinhaltet den Gegenstand von Beispiel 26, wobei das Erstellen der FUFL weiter Mittel zum Sortieren der FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel, und Erhalten eines ausgewählten Teilsatzes der sortierten FUFL aufweist.
  • Beispiel 28 beinhaltet den Gegenstand von Beispiel 26 oder 27, weiter aufweisend Mittel zum Löschen der FUFL nach Durchführen des Vorababrufs.
  • Beispiel 29 beinhaltet den Gegenstand von einem beliebigen der Beispiele 26-28, wobei die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer betreut werden, die mit einer ausgewählten Zahl von Anwenderanmelde-/-abmeldezyklen verknüpft ist.
  • Beispiel 30 beinhaltet den Gegenstand von einem beliebigen der Beispiele 26-29, wobei das Dateiensystem auf einem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  • Beispiel 31 beinhaltet den Gegenstand von einem beliebigen der Beispiele 26-30, wobei der Vorababruf weiter Mittel zum Vorababrufen von Dateien aufweist, die durch mindestens eines von einem harten Dateienanheftungs-, bei einer ersten Priorität, und einem weichen Dateienanheftungsprozess, bei einer zweiten Priorität, ausgewählt werden, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die aus der FUFL vorab abgerufen sind.
  • Beispiel 32 beinhaltet den Gegenstand von einem beliebigen der Beispiele 26-31, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens eines von einem Dateienöffnungsbetrieb und einem Dateienlesebetrieb beinhalten.
  • Beispiel 33 beinhaltet den Gegenstand von einem beliebigen der Beispiele 26-32, weiter aufweisend Mittel zum Entfernen der gespeicherten Aufzeichnung, die mit einer gelöschten Dateiverknüpft ist, aus der FAHD in Antwort auf Erfassen einer Löschung der zugegriffenen Datei aus dem Dateiensystem.
  • Beispiel 34 beinhaltet den Gegenstand von einem beliebigen der Beispiele 26-33, weiter aufweisend Mittel zum Zugreifen durch eine Softwareanwendung auf eine vorababgerufene Datei aus dem Cachespeicher.
  • Die Begriffe und Ausdrücke, die hierin eingesetzt wurden, sind als Begriffe der Beschreibung und nicht der Begrenzung verwendet und es gibt keine Absicht bei der Verwendung solcher Begriffe und Ausdrücke, beliebige Gleichwertigkeiten der gezeigten und beschriebenen Merkmale (oder von Abschnitten davon) auszuschließen und es wird festgehalten, dass verschiedene Modifikationen innerhalb des Umfangs der Ansprüche möglich sind. Dementsprechend sind die Ansprüche beabsichtigt, alle solchen Gleichwertigkeiten abzudecken. Verschiedene Merkmale, Aspekte und Ausführungsformen wurden hierin beschrieben. Die Merkmale, Aspekte und Ausführungsformen sind empfänglich für Kombinationen miteinander, wie auch Variationen und Modifikationen, wie vom Fachkundigen verstanden werden wird. Die vorliegende Offenbarung sollte deshalb angesehen werden, solche Kombinationen, Variationen und Modifikationen zu umschließen. Es ist beabsichtigt, dass der Umfang der vorliegenden Offenbarung nicht durch die ausführliche Beschreibung begrenzt sein soll, sondern eher durch die daran angehängten Ansprüche. Zukünftig eingereichte Anmeldungen, die die Priorität dieser Anmeldung beanspruchen, können den offenbarten Gegenstand auf eine unterschiedliche Weise beanspruchen und können im Allgemeinen einen beliebigen Satz von einem oder mehr Elementen, wie verschiedentlich offenbart oder anderswie hierin dargeboten beinhalten.

Claims (25)

  1. Computerimplementiertes Verfahren zur Dateienvorababrufeinplanung, wobei das Verfahren aufweist: Überwachen, durch einen Computerprozessor, von Zugriffen auf Dateien eines Dateiensystems; Betreuen, durch den Computerprozessor, einer Aufzeichnung für jede der zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern aufweist, die mit den Zugriffen auf die Datei verknüpft sind; Speichern, durch den Computerprozessor, der Aufzeichnung von jeder der zugegriffenen Dateien in eine Dateienzugriffhistoriendatenbank (FAHD); Erstellen, durch den Computerprozessor, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL), basierend auf der FAHD; und Vorababrufen, durch das Computerprozessorsystem, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  2. Verfahren nach Anspruch 1, wobei das Erstellen der FUFL weiter Sortieren der FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel und Erhalten eines ausgewählten Teilsatzes der sortierten FUFL aufweist.
  3. Verfahren nach Anspruch 1, weiter aufweisend Löschen der FUFL nach Durchführen des Vorababrufs.
  4. Verfahren nach Anspruch 1, wobei die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer betreut werden, die mit einer ausgewählten Zahl von Anwenderanmelde-/-abmeldezyklen verknüpft ist.
  5. Verfahren nach einem der Ansprüche 1-4, wobei das Dateiensystem auf einem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  6. Verfahren nach einem der Ansprüche 1-4, wobei das Vorababrufen weiter Vorababrufen von Dateien aufweist, die durch mindestens einen von einem harten Dateienanheftungsprozess, bei einer ersten Priorität, und einem weichen Dateienanheftungsprozess, bei einer zweiten Priorität, ausgewählt werden, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die aus der FUFL vorab abgerufen sind.
  7. Verfahren nach einem der Ansprüche 1-4, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens einen von einem Dateienöffnungsbetrieb und einem Dateienlesebetrieb beinhalten.
  8. Verfahren nach einem der Ansprüche 1-4, weiter aufweisend Entfernen der gespeicherten Aufzeichnung, die mit einer gelöschten Datei aus der FAHD verknüpft ist, in Antwort auf Erfassen einer Löschung der zugegriffenen Datei aus dem Dateiensystem.
  9. Verfahren nach einem der Ansprüche 1-4, weiter aufweisend Zugreifen, durch eine Softwareanwendung, auf eine vorababgerufene Datei aus dem Cachespeicher.
  10. System zur Dateienvorababrufeinplanung, wobei das System aufweist: ein Dateiensystem, das mehrere Dateien aufweist; einen Cachespeicher; ein Dateienzugriffshistoriendatenbank- (FAHD) Aktualisierungsprogramm zum: Überwachen von Zugriffen auf die mehreren der Dateien des Dateiensystems; Betreuen einer Aufzeichnung für jede der zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern aufweist, die mit den Zugriffen auf die Datei verknüpft sind; und Speichern der Aufzeichnung in die FAHD; und ein Cachespeichervorababrufprogramm zum: Erstellen, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL), basierend auf der FAHD; und Vorababrufen, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  11. System nach Anspruch 10, wobei das Cachespeichervorababrufprogramm weiter dazu dient, die FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel zu sortieren und einen ausgewählten Teilsatz der sortierten FUFL zu erhalten.
  12. System nach Anspruch 10, wobei das Cachespeichervorababrufprogramm weiter dazu dient, die FUFL nach Durchführen des Vorababrufs zu löschen.
  13. System nach Anspruch 10, wobei das FAHD-Aktualisierungsprogramm weiter dazu dient, die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer zu betreuen, die mit einer ausgewählten Zahl von Anwenderanmelde-/-abmeldezyklen verknüpft ist.
  14. System nach einem der Ansprüche 10-13, weiter aufweisend ein Festplattenlaufwerk, wobei das Dateiensystem auf dem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  15. System nach einem der Ansprüche 10-13, wobei das Cachespeichervorababrufprogramm weiter dazu dient, Dateien vorab abzurufen, die durch mindestens einen von einem harten Dateienanheftungsprozess, bei einer ersten Priorität, und einem weichen Dateienanheftungsprozess, bei einer zweiten Priorität, ausgewählt werden, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die aus der FUFL vorab abgerufen sind.
  16. System nach einem der Ansprüche 10-13, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens einen von einem Dateienöffnungsbetrieb und einem Dateienlesebetrieb beinhalten.
  17. System nach einem der Ansprüche 10-13, wobei das FAHD-Aktualisierungsprogramm weiter dazu dient, die gespeicherte Aufzeichnung, die mit einer gelöschten Datei von der FAHD verknüpft ist, in Antwort auf Erfassen einer Löschung der zugegriffenen Datei aus dem Dateiensystem zu entfernen.
  18. Nichttransitorisches computerlesbares Datenspeichermedium oder nichttransitorische computerlebare Datenspeichermedien, das/die Befehle darauf codiert hat/haben, die, wenn von einem oder mehr Prozessoren ausgeführt, in den folgenden Betrieben zur Dateienvorababrufeinplanung resultieren, wobei die Betriebe umfassen: Überwachen von Zugriffen auf Dateien eines Dateiensystems; Betreuen einer Aufzeichnung für jede der zugegriffenen Dateien, wobei die Aufzeichnung eine Kennung der Datei, eine Zahl von Zugriffen auf die Datei und eine Zahl von Cachespeicherfehlern aufweist, die mit den Zugriffen auf die Datei verknüpft sind; Speichern der Aufzeichnung von jeder der zugegriffenen Dateien in eine Dateienzugriffhistoriendatenbank (FAHD); Erstellen, in Antwort auf ein Betriebssystem- (OS) Herunterfahren, einer Liste regelmäßig verwendeter Dateien (FUFL), basierend auf der FAHD; und Vorababrufen, in Antwort auf ein OS-Hochfahren, von Dateien, die durch die FUFL identifiziert sind, zu dem Cachespeicher.
  19. Computerlesbares Datenspeichermedium nach Anspruch 18, wobei das Erstellen der FUFL weiter die Betriebe zum Sortieren der FUFL unter Verwendung der Zahl von Zugriffen auf die Datei als einen Hauptsortierungsschlüssel und unter Verwendung der Zahl von Cachespeicherfehlern als einen Nebensortierungsschlüssel und Erhalten eines ausgewählten Teilsatzes der sortierten FUFL aufweist.
  20. Computerlesbares Datenspeichermedium nach Anspruch 18, weiter aufweisend den Betrieb zum Löschen der FUFL nach Durchführen des Vorababrufens.
  21. Computerlesbares Datenspeichermedium nach Anspruch 18, wobei die Zahl von Zugriffen auf die Datei und die Zahl von Cachespeicherfehlern, die mit den Zugriffen auf die Datei verknüpft sind, in der Aufzeichnung über eine Zeitdauer betreut werden, die mit einer ausgewählten Zahl von Anwenderanmelde-/-abmeldezyklen verknüpft ist.
  22. Computerlesbares Datenspeichermedium nach einem der Ansprüche 18-21, wobei das Dateiensystem auf einem Festplattenlaufwerk gespeichert ist und der Cachespeicher ein nichtflüchtiger Speicher ist.
  23. Computerlesbares Datenspeichermedium nach einem der Ansprüche 18-21, wobei das Vorababrufen weiter den Betrieb zum Vorababrufen von Dateien aufweist, die durch mindestens einen von einem harten Dateienanheftungsprozess, bei einer ersten Priorität, und einem weichen Dateienanheftungsprozess, bei einer zweiten Priorität, ausgewählt sind, wobei die erste Priorität höher als die zweite Priorität ist und die zweite Priorität höher als eine dritte Priorität ist, die mit den Dateien verknüpft ist, die aus der FUFL vorab abgerufen sind.
  24. Computerlesbares Datenspeichermedium nach einem der Ansprüche 18-21, wobei die Zugriffe auf die Dateien des Dateiensystems mindestens einen eines Dateienöffnungsbetriebs und eines Dateienlesebetriebs beinhalten.
  25. Computerlesbares Datenspeichermedium nach einem der Ansprüche 18-21, weiter aufweisend den Betrieb zum Entfernen der gespeicherten Aufzeichnung, die mit einer gelöschten Datei aus der FAHD verknüpft ist, in Antwort auf Erfassen einer Löschung der zugegriffenen Datei aus dem Dateiensystem.
DE112017008158.0T 2017-11-22 2017-11-22 Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen Pending DE112017008158T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/112360 WO2019100263A1 (en) 2017-11-22 2017-11-22 File pre-fetch scheduling for cache memory to reduce latency

Publications (1)

Publication Number Publication Date
DE112017008158T5 true DE112017008158T5 (de) 2020-09-10

Family

ID=66631274

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017008158.0T Pending DE112017008158T5 (de) 2017-11-22 2017-11-22 Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen

Country Status (4)

Country Link
US (1) US11366757B2 (de)
CN (1) CN111095204A (de)
DE (1) DE112017008158T5 (de)
WO (1) WO2019100263A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112017008158T5 (de) 2017-11-22 2020-09-10 Intel Corporation Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
US11403211B2 (en) * 2020-01-31 2022-08-02 Enmotus, Inc. Storage system with file priority mechanism and method of operation thereof
CN113535658A (zh) * 2020-04-20 2021-10-22 华为技术有限公司 一种文件预取方法、存储设备以及预取装置
CN114968076A (zh) * 2021-02-25 2022-08-30 华为技术有限公司 用于存储管理的方法、设备、介质和程序产品
CN113177031B (zh) * 2021-04-21 2023-08-01 北京人大金仓信息技术股份有限公司 数据库共享缓存的处理方法、装置、电子设备和介质
CN113268201A (zh) 2021-05-13 2021-08-17 三星(中国)半导体有限公司 基于文件属性的缓存管理方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739233B1 (en) * 2003-02-14 2010-06-15 Google Inc. Systems and methods for replicating data
US8230208B2 (en) * 2009-04-20 2012-07-24 Intel Corporation Booting an operating system of a system using a read ahead technique
US8938582B2 (en) * 2010-07-01 2015-01-20 Infinidat Ltd. Storage systems with reduced energy consumption
US8433694B1 (en) * 2011-01-31 2013-04-30 Symantec Corporation File cache optimization using element de-prioritization
US8990159B2 (en) * 2011-11-01 2015-03-24 Mongodb, Inc. Systems and methods for durable database operations in a memory-mapped environment
CN102707966B (zh) * 2012-04-12 2014-09-03 腾讯科技(深圳)有限公司 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
CN104133691B (zh) * 2014-05-05 2016-08-31 腾讯科技(深圳)有限公司 加速启动的方法及装置
US9804965B2 (en) * 2014-12-03 2017-10-31 Electronics And Telecommunications Research Institute Virtual machine host server apparatus and method for operating the same
JP6588624B2 (ja) 2016-04-05 2019-10-09 株式会社日立製作所 ヒューマノイドロボット
US10409728B2 (en) * 2017-05-09 2019-09-10 Futurewei Technologies, Inc. File access predication using counter based eviction policies at the file and page level
DE112017008158T5 (de) 2017-11-22 2020-09-10 Intel Corporation Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen

Also Published As

Publication number Publication date
US20200257628A1 (en) 2020-08-13
CN111095204A (zh) 2020-05-01
US11366757B2 (en) 2022-06-21
WO2019100263A1 (en) 2019-05-31

Similar Documents

Publication Publication Date Title
DE112017008158T5 (de) Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
DE102011015555B4 (de) Verfahren und vorrichtung für interrupt-power-management
DE112016003249T5 (de) Container-Bereitstellung auf Abhängigkeitsgrundlage
DE112013000650B4 (de) Datenzwischenspeicherungsbereich
DE102013212482B4 (de) System, Verfahren und Computerprogrammprodukt zum Bestimmen, ob Parameterkonfigurationen vorbestimmte Kriterien erfüllen
DE112007001714T5 (de) Virtualisieren von Leistungszählern
DE202014010923U1 (de) Skriptfähigkeit für Drittanwendungen
DE102013213094B4 (de) System, Verfahren und Computer-Programm-Produkt zum Berechnen von Einstellungen für ein Gerät, unter Benutzung von einer oder mehreren Einschränkungen
DE202017105834U1 (de) Verwaltung von Anwendungsaktualisierungen
DE102018126146A1 (de) Maschinenlernbasierte feststellung von programmcodeeigenschaften
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE202014011089U1 (de) System zum Kopieren von Dateien zwischen verschlüsselten und unverschlüsselten Datenspeichereinrichtungen
DE112011105672T5 (de) Verwaltung der Datennutzung einer Recheneinrichtung
DE102018213549A1 (de) Verfahren und vorrichtungen zum breitstellen von zugriffsautorisierung auf benutzerebene für cloud-basierte feldprogrammierbare gate-arrays
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE102013213047A1 (de) System, Verfahren und Computerprogrammprodukt zum Testen von Vorrichtungsparametern
DE102013202060A1 (de) Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation
DE102008016180A1 (de) Darlegen von Systemtopologie für die Ausführungsumgebung
DE102013213048A1 (de) System, Verfahren und Computerprogrammprodukt zum Bestimmen von Einstellungen für eine Vorrichtung
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung
DE112019007230T5 (de) Multimodus-Geschützter-Speicher
DE102020112066B4 (de) Betriebsmetrik für gemeinsam genutzte ressourcen
DE102020118000A1 (de) Verfahren, systeme, herstellungsartikel und einrichtungen zum verwalten der speicherzuordnung
DE202016107380U1 (de) Systeme zum Speichern und Auslesen von Inhalten
DE102016203828A1 (de) Auf Zugriffsrechten beruhender Speicherfixierungsmechanismus

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: 2SPL PATENTANWAELTE PARTG MBB SCHULER SCHACHT , DE