IP Library Granted Patent US 8,041,893
Granted Patent B1
US 8,041,893 · App. 12/206,909 · Granted Oct 18, 2011

System and method for managing large filesystem-based caches

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,041,893
App. No.
12/206,909
Granted
Oct 18, 2011
Kind
B1
Abstract

Embodiments disclosed herein utilize statistical approximations to manage large filesystem-based caches based on imperfect information. When removing entries from a large cache, which may have a million or more entries, the cache manager does not need to find the absolutely oldest entry that has been accessed the least recently. Instead, it suffices to find an entry that is older than most. In embodiments disclosed herein, statistical sampling of the cache is performed to produce models of different properties of the cache, including the number of entries, distribution of access times, distribution of entry sizes, etc. The models are then used to guide decisions that involve those properties. The size of the samples can be adjusted to balance the cost of acquiring the samples against the confidence level of the models produced by the samples. To achieve randomness, entries are stored using prefixes of addresses generated via a message-digest function.

Claims (68)

1. A method of managing a cache, comprising:

at a computer, obtaining a statistical sampling of said cache;

generating a last access histogram based on said statistical sampling of said cache, wherein said last access histogram represents a distribution of access times of entries in said cache;

generating a size histogram based on said statistical sampling of said cache, wherein said size histogram represents a distribution of entry sizes in said cache;

determining a mean size of cache entries using said size histogram;

determining a percentage of entries to be removed from said cache;

determining a cutoff time based on said last access histogram and said percentage of said entries to be removed from said cache; and

removing, from said cache, entries whose last access time is older than said cutoff time.

2. The method of claim 1 , further comprising:

based on said last access histogram, estimating a percentage of cache entries whose last access time is earlier than a reference point in time.

3. The method of claim 1 , further comprising:

based on said size histogram, estimating a cumulative size of all cache entries.

4. The method of claim 1 , wherein obtaining a statistical sampling of said cache comprises:

randomly selecting a directory of said cache;

reading entries of said randomly selected directory of said cache; and

comparing a number of said entries of said randomly selected directory of said cache to a predefined sample size.

5. The method of claim 4 , wherein said number of said entries of said randomly selected directory of said cache is smaller than said predefined sample size, further comprising:

repeating said randomly selecting step and said reading step until said number of said entries matches or exceeds said predefined sample size.

6. The method of claim 1 , further comprising:

receiving a cache entry; and

generating a cache address for said cache entry using a message-digest function.

7. The method of claim 6 , further comprising:

storing said cache entry in said directory of said cache based on prefixes of said cache address.

8. The method of claim 1 , wherein said cache contains a million or more entries.

9. A system, comprising:

a processor;

at least one non-transitory computer-readable storage medium accessible by said processor and carrying computer instructions executable by said processor, wherein when executed by said processor said computer instructions are operable to perform:

obtaining a statistical sampling of a filesystem-based cache;

generating a last access histogram based on said statistical sampling of said cache, wherein said last access histogram represents a distribution of access times of entries in said cache;

generating a size histogram based on said statistical sampling of said cache, wherein said size histogram represents a distribution of entry sizes in said cache;

determining a mean size of cache entries using said size histogram;

determining a percentage of entries to be removed from said cache;

determining a cutoff time based on said last access histogram and said percentage of said entries to be removed from said cache; and

removing from said cache entries whose last access time is older than said cutoff time.

10. The system of claim 9 , wherein said computer instructions are further operable to perform:

based on said last access histogram, estimating a percentage of cache entries whose last access time is earlier than a reference point in time.

11. The system of claim 9 , wherein said computer instructions are further operable to perform:

based on said size histogram, estimating a cumulative size of all cache entries.

12. The system of claim 9 , wherein said computer instructions are further operable to perform:

randomly selecting a directory of said cache;

reading entries of said randomly selected directory of said cache;

comparing a number of said entries of said randomly selected directory of said cache to a predefined sample size; and

repeating said randomly selecting step and said reading step until said number of said entries matches said predefined sample size.

13. The system of claim 9 , wherein said computer instructions are further operable to perform:

receiving a cache entry;

generating a cache address for said cache entry using a message-digest function; and

storing said cache entry in said directory of said cache based on prefixes of said cache address.

14. A computer program product comprising at least one computer-readable storage medium accessible by a processor and carrying computer instructions executable by said processor, wherein when executed by said processor said computer instructions are operable to perform:

obtaining a statistical sampling of a filesystem-based cache;

generating a last access histogram based on said statistical sampling of said cache, wherein said last access histogram represents a distribution of access times of entries in said cache;

generating a size histogram based on said statistical sampling of said cache, wherein said size histogram represents a distribution of entry sizes in said cache;

determining a mean size of cache entries using said size histogram;

determining a percentage of entries to be removed from said cache;

determining a cutoff time based on said last access histogram and said percentage of said entries to be removed from said cache; and

removing from said cache entries whose last access time is older than said cutoff time.

15. The computer program product of claim 14 , wherein said computer instructions are further operable to perform:

based on said last access histogram, estimating a percentage of cache entries whose last access time is earlier than a reference point in time.

16. The computer program product of claim 14 , wherein said computer instructions are further operable to perform:

based on said size histogram, estimating a cumulative size of all cache entries.

17. The computer program product of claim 14 , wherein said computer instructions are further operable to perform:

randomly selecting a directory of said cache;

reading entries of said randomly selected directory of said cache;

comparing a number of said entries of said randomly selected directory of said cache to a predefined sample size; and

repeating said randomly selecting step and said reading step until said number of said entries matches or exceeds said predefined sample size.

18. The computer program product of claim 14 , wherein said computer instructions are further operable to perform:

receiving a cache entry;

generating a cache address for said cache entry using a message-digest function; and

storing said cache entry in said directory of said cache based on prefixes of said cache address.

Assignments (10)
IP BUSINESS SALE AGREEMENT Recorded Sep 13, 2016
From: OPEN TEXT S.A.
To: OT IP SUB, LLC
Reel/Frame 040019/0627 →
CERTIFICATE OF CONTINUANCE Recorded Sep 13, 2016
From: OP IP SUB, LLC
To: IP OT SUB ULC
Reel/Frame 040019/0500 →
CERTIFICATE OF AMALGAMATION Recorded Sep 13, 2016
From: IP OT SUB ULC
To: OPEN TEXT SA ULC
Reel/Frame 040019/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2011
From: VIGNETTE PARTNERSHIP, LP
To: OPEN TEXT S.A.
Reel/Frame 027483/0205 →
CERTIFICATE OF CONVERSION Recorded Oct 14, 2011
From: VIGNETTE OPERATING, LLC
To: VIGNETTE PARTNERSHIP, LP
Reel/Frame 027066/0773 →
CERTIFICATE OF CONVERSION Recorded Oct 13, 2011
From: VIGNETTE CORPORATION
To: VIGNETTE OPERATING, LLC
Reel/Frame 027091/0009 →
MERGER Recorded Oct 12, 2011
From: VIGNETTE SOFTWARE, LLC
To: VIGNETTE CORPORATION
Reel/Frame 027077/0423 →
INTELLECTUAL PROPERTY PURCHASE AGREEMENT Recorded Jan 14, 2010
From: VIGNETTE LLC (96%)
To: VIGNETTE SOFTWARE LLC
Reel/Frame 023792/0470 →
INTELLECTUAL PROPERTY PURCHASE AGREEMENT Recorded Jan 11, 2010
From: VIGNETTE CORPORATION (96%)
To: VIGNETTE LLC
Reel/Frame 024006/0001 →
INTELLECTUAL PROPERTY PURCHASE AGREEMENT Recorded Jan 11, 2010
From: VIGNETTE CORPORATION (4%)
To: VIGNETTE SOFTWARE LLC
Reel/Frame 023768/0708 →