IP Library Granted Patent US 10,061,706
Granted Patent B2
US 10,061,706 · App. 15/220,409 · Granted Aug 28, 2018

System and method for eviction and replacement in large content-addressable flash 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 10,061,706
App. No.
15/220,409
Granted
Aug 28, 2018
Kind
B2
Abstract

In a processing system in which at least one entity issues data read and write requests to at least one storage system that stores data as data units, pluralities of data units are grouped. Each group is written as a respective cache line in a cache, which is deduplicated. Before evicting a selected one of the cache lines, a caching component determines whether at least one of the data units in the selected cache line is still active; if so, then the still active data unit(s) in the selected cache line is read and written to a different cache line.

Claims (62)

1. In a processing system in which at least one entity issues data read and write requests to at least one storage system that stores data as data units, a caching method comprising:

grouping pluralities of data units and writing each group as a respective cache line in a cache;

deduplicating the cache;

before evicting a selected one of the cache lines from the cache:

determining that both a first data unit and a second data unit in the selected cache line are still active;

determining that the first data unit is in use and the second data unit is not in use;

reading said first data unit in the selected cache line and writing it to a different cache line; and

evicting the selected cache line from the cache without writing the second data unit to another cache line in the cache.

2. The method of claim 1 , further comprising:

computing a content-derived fingerprint for each of the data units; and

deduplicating the cache as a function of the content-derived fingerprints of the data units included in the cache.

3. The method of claim 1 , further comprising:

for the data units in the cache, maintaining a count of references by the at least one writing entity to the respective data units; and

determining that a data unit with a reference count of zero is not in use.

4. The method of claim 1 , in which sets of the data units correspond to respective data objects, further comprising:

enumerating references to the data units to be retained in the cache for respective data objects; and

determining that a data unit with no references to it is not in use.

5. The method of claim 1 , further comprising:

determining a measure of a level of activity of the data units in the cache lines; and

selecting the cache line for eviction based on a plurality of factors, wherein the plurality of factors includes both:

the measures of activity of the data units in the different cache lines, and

the number of data units that are not in use in the different cache lines.

6. The method of claim 1 , in which the data units are clumps, each clump comprising a plurality of data blocks.

7. The method of claim 1 , further comprising:

buffering the active data units of the cache line selected for eviction;

determining which, if any, of the buffered active data units are associated; and

including the buffered, associated, evicted but active data units in a common new cache line.

8. The method of claim 1 , further comprising implementing the cache as a solid-state drive (SSD).

9. The method of claim 1 , in which the cache is within a host and caches data stored in a plurality of shared, remote storage nodes.

10. A processing system comprising:

at least one entity that issues data read and write requests to at least one storage system that stores data as data units;

a caching system comprising a caching component provided:

for grouping pluralities of the data units and for deduplicating the cache;

for writing each group as a respective cache line in a cache, and

before evicting a selected one of the cache lines from the cache:

for determining that both a first data unit and a second data unit in the selected cache line are still active;

for determining that the first data unit is in use and the second data unit is not in use;

for reading said first data unit in the selected cache line and writing it to a different cache line; and

for evicting the selected cache line from the cache without writing the second data unit to another cache line in the cache.

11. The system of claim 10 further comprising a storage management component provided:

for computing a content-derived fingerprint for each of the data units; and

for deduplicating the cache as a function of the content-derived fingerprints of the data units included in the cache.

12. The system of claim 10 , in which the caching component is further provided:

for the data units in the cache, for maintaining a count of references by the at least one writing entity to the respective data units; and

for determining that a data unit with a reference count of zero is not in use.

13. The system of claim 10 , in which:

sets of the data units correspond to respective data objects; and

the caching component is further provided

for enumerating references to the data units to be retained in the cache for respective data objects; and

for determining that a data unit with no references to it is not in use.

14. The system of claim 10 , in which the caching component is further provided:

for determining a measure of a level of activity of the data units in the cache lines; and

for selecting the cache line for eviction based on a plurality of factors, wherein

the plurality of factors includes both:

the measures of activity of the data units in the different cache lines, and

the number of data units that are not in use in the different cache lines.

15. The system of claim 10 , in which the data units are clumps, each clump comprising a plurality of data blocks.

16. The system of claim 10 , further comprising:

a buffer buffering the active data units of the cache line selected for eviction;

said caching component being further provided for determining which, if any, of the buffered active data units are associated; and for including the buffered, associated, evicted but active data units in a common new cache line.

17. The system of claim 10 , in which the cache is a solid-state drive (SSD).

18. The system of claim 10 , in which the cache is within a host and caches data stored in a plurality of shared, remote storage nodes.

Assignments (3)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
NUNC PRO TUNC ASSIGNMENT Recorded Nov 6, 2020
From: DATRIUM, INC.
To: VMWARE, INC.
Reel/Frame 054303/0534 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2018
From: BOHRA, ATA; CHEN, MIKE; WEISSMAN, BORIS
To: DATRIUM, INC.
Reel/Frame 044917/0389 →