IP Library Granted Patent US 8,407,419
Granted Patent B2
US 8,407,419 · App. 12/956,921 · Granted Mar 26, 2013

System and method for managing a cache using file system metadata

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,407,419
App. No.
12/956,921
Granted
Mar 26, 2013
Kind
B2
Abstract

Systems and methods for management of a cache are disclosed. In general, embodiments described herein store access counts in file system metadata associated with files in the cache. By encoding access counts in the file system metadata, file I/O operations are reduced. Preferably, the reference count is encoded in an access count timestamp in the file system metadata. The access counts can be decoded based on the difference between the access count time stamp and a base time value, with larger differences reflecting a larger access count. The cache can be aged by advancing the base time value, thereby causing the access count for a file to drop. The base time value can also be stored in file system metadata, thereby reducing file I/O operations when performing aging.

Claims (37)

1. A cache management system comprising:

a processor;

a memory;

a secondary storage device formatted according to a file system;

a non-transitory computer readable storage medium storing a set of computer instructions, the computer instructions executable to:

manage a multi-level cache comprising in-memory cache stored in the memory and file system based cache stored on the secondary storage device;

store a file in the file system based cache on the secondary storage device as a cached file; store an in-memory version of the cached file in the memory;

maintain an in-memory access count for the in-memory version of the cached file; encode a file system based cache access count for the cached file in an access count timestamp in file system metadata associated with the cached file;

determine whether to evict the cached file from the file system based cache based on the access count timestamp; update the file system based cache access count with the in-memory access count; encode the updated file system based cache access count in an updated access count timestamp; and reset the in-memory access count.

2. The cache management system of claim 1 , wherein encoding the file system based cache access count comprises adding the file system based cache access count times a time constant to a base time value to generate an access count timestamp value and storing the access count timestamp in the file system metadata associated with the cached file.

3. The system of claim 2 , wherein set of computer instructions further comprise instructions executable to:

decode the file system based cache access count from the access count timestamp, add the in-memory access count to the file system based cache access count to generate the updated file system based cache access count.

4. The system of claim 2 , further wherein the set of computer instructions further comprise instructions executable to age the file system based cache by updating a base time.

5. The system of claim 4 , wherein the set of computer instructions further comprise computer instructions executable to evict the cached file from the file system based cache if the access count time stamp is less than a threshold time.

6. A method for managing a multi-level cache for a device having a memory and a secondary storage device formatted according to a file system, the method comprising:

storing a cached file in a file-system based cache on the secondary storage device;

storing an in-memory version of the cached file in the memory; maintaining in memory an in-memory access count for the in-memory version of the cached file; encoding a file system based cache access count for the cached file in file system metadata associated with the cached file; transforming the state of the file system based cache by evicting the cached file from the file system based cache based on the access count timestamp value; updating the file system based cache access count with the in-memory access count; encoding the updated file system based cache access count in an updated access count timestamp; and resetting the in-memory access count.

7. The method of claim 6 , wherein encoding the file system based cache access count comprises adding the file system based cache access count times a time constant to a base time value to generate an access count timestamp value and storing the access count timestamp in the file system metadata associated with the cached file.

8. The method of claim 7 , wherein updating the second access count comprises:

decoding the file system based cache access count from the access count timestamp, adding the in-memory access count to the file system based cache access count to generate the updated file system based cache access count.

9. The method of claim 8 , further comprising aging the file system based cache by updating the base time value to a new base time value.

10. The method of claim 9 , further comprising evicting the cached file from the file system based cache if the access count time stamp value is less than the new base time value.

11. The method of claim 10 , further comprising providing a cache management system comprising the memory, the storage device, an in-memory access count module, an encoding module, a decoding module, a resolving module, an aging module, and an eviction module, wherein:

maintaining the in-memory access count is performed by the in-memory access count module;

encoding a file system based cache access count is performed by the encoding module;

decoding the file system based cache access count from the access count timestamp is performed by the decoding module;

updating the file system based cache access count with the in-memory access count is performed by the resolving module;

aging the file system based cache is performed by the aging module; and

expunging the cached file from file system based cache is performed by the eviction module.

12. The method of claim 6 , further comprising maintaining an access count file associated with the cached file in a file-system based cache, wherein the file system metadata associated with the cached file is file system metadata for the access count file.

13. A computer program product comprising a non-transitory computer readable medium storing computer executable instructions, the computer executable instructions comprising instruction executable to:

store a cached file in a file system based cache stored on a secondary storage device formatted according to a file system; store an in-memory version of the cached file in a memory; maintain an in-memory access count for the in-memory version of the cached file; encode a file system based cache access count for the cached file in file system metadata associated with the cached file; transform the state of the file system based cache by evicting the cached file from the file system based cache based on the access count timestamp value; update the file system based cache access count with the in-memory access count; encode the updated file system based cache access count in an updated access count timestamp; and reset the in-memory access count.

14. The computer program product of claim 13 , wherein encoding the file system based cache access count comprises adding the file system based cache access count times a time constant to a base time value to generate an access count timestamp value and storing the access count timestamp in the file system metadata associated with the cached file.

15. The computer program product of claim 14 , wherein set of computer instructions further comprise instructions executable to:

decode the file system based cache access count from the access count timestamp, add the in-memory access count to the file system based cache access count to generate the updated file system based cache access count.

16. The computer program product of claim 15 , wherein the set of computer instructions further comprise instructions executable to age the file system based cache by updating the base time value to a new base time value.

17. The computer program product of claim 16 , wherein the set of computer instructions further comprise instructions executable to expunge the cached file from the file system based cache based on the access count time stamp.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2024
From: OPEN TEXT CORP.
To: CROWDSTRIKE, INC.
Reel/Frame 068122/0301 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 14, 2024
From: OPEN TEXT SA ULC
To: OPEN TEXT CORP.
Reel/Frame 067400/0102 →