IP Library Granted Patent US 11,204,870
Granted Patent B2
US 11,204,870 · App. 16/818,139 · Granted Dec 21, 2021

Techniques for determining and using caching scores for cached data

Inventors: Anton Kucherov (Dudley, MA); David Meiri (Somerville, MA)
Assignee: EMC IP Holding Company LLC
G06F12/0811G06F12/0871G06F2212/608
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 11,204,870
App. No.
16/818,139
Granted
Dec 21, 2021
Kind
B2
Abstract

Techniques for cache management may include: receiving pages of data having page scores, wherein each of the pages of data is associated with a corresponding one of the page scores, wherein the corresponding page score associated with a page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and storing the page of data in a cache in accordance with the plurality of page scores. The cache may include buckets of pages where each bucket is associated with a different page size and all pages in the bucket are the different page size. The one or more criteria may also include an access score. The page scores may be based on multiple criteria that is weighted.

Claims (52)

1. A method of performing cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the deduplication score for said one page of data stored in the cache, and wherein the deduplication score for said one page of data stored in the cache is determined in accordance with a deduplication reference count indicating a number of times said one page of data is referenced by a logical address.

2. The method of claim 1 , wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the compression score for said one page of data stored in the cache.

3. The method of claim 1 , wherein the each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria, and wherein the one or more criteria further includes an access score determined in accordance with when the one page of data was last accessed.

4. The method of claim 1 , wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria, and wherein the one or more criteria further includes an access score determined in accordance with a frequency of accesses of the one page of data that occurred within a specified window of time.

5. The method of claim 1 , wherein the one or more criteria include the neighbor score, the deduplication score, the compression score, and an access score.

6. The method of claim 1 , wherein the cache is a read cache that includes only read data for read I/O operations.

7. The method of claim 1 , further comprising:

sorting the plurality of pages stored in the cache in accordance with the plurality of page scores; and

selecting a first page of the plurality of pages stored in the cache for eviction, wherein the first page is determined by said sorting as having a lowest page score of the plurality of pages scores.

8. A method of performing cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the compression score for said one page of data stored in the cache, wherein said one page of data is stored in the cache in a compressed form, and wherein the compression score for said one page of data stored in the cache is determined in accordance with an amount of cache consumed to store the compressed form of said one page of data.

9. The method of claim 8 , wherein the cache includes a plurality of buckets of cache pages, wherein each of the plurality of buckets is associated with a different one of a plurality of cache page sizes, and wherein cache pages included in a same one of the plurality of buckets are a same size that is equal to the different one of a plurality of cache page sizes associated with the same one of the plurality of buckets.

10. The method of claim 9 , wherein each of the plurality of pages of data is stored in the cache in a compressed form and wherein the compressed form of said each page of data has an associated compressed size, and wherein the compressed form is stored in a cache page selected from one of the plurality of buckets having an associated cache size that is a smallest of the plurality of cache page sizes capable of storing the compressed form.

11. A method of performing cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the neighbor score for said one page of data stored in the cache, wherein the neighbor score uses a popularity metric based on deduplication related criteria of neighboring pages of data.

12. The method of claim 11 , wherein the neighbor score for said one page of data stored in the cache is determined based on one or more neighboring pages of data with respect to said one page of data, and wherein each of the one or more neighboring pages of data and said one page of data are located in a logical address space, and wherein each of the one or more neighboring pages are located in logical addresses adjacent to other logical addresses mapped to said one page of data.

13. The method of claim 12 , further comprising:

determining that a first of the one or more neighboring pages of said one page of data is stored in the cache; and

determining whether the first neighboring page is popular in accordance with the popularity metric, wherein the popularity metric determines that the first neighboring page is popular in accordance the deduplication related criteria of the first neighboring page.

14. The method of claim 13 , wherein the deduplication related criteria of the first neighboring page indicates that the first neighboring page is popular if it has an associated deduplication reference count above a specified threshold.

15. The method of claim 13 , wherein the popularity metric determines that the first neighboring page is popular of the first neighboring page stored in the cache has a last access time that is within a specified window of time.

16. A method of performing cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with criteria including a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data, and an access score; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data stored in the cache is determined using a function that takes a plurality of inputs for the one page of data, wherein the plurality of inputs includes the neighbor score, the deduplication score, the compression score, and the access score.

17. The method of claim 16 , wherein the function computes said each page score for the one page of data stored in the cache as a weighted sum of a plurality of terms in which each of the plurality of terms includes one of the plurality of inputs and a weight corresponding to said one input.

18. A system comprising:

one or more processors; and

a memory comprising code stored therein that, when executed, performs a method of cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the deduplication score for said one page of data stored in the cache, and wherein the deduplication score for said one page of data stored in the cache is determined in accordance with a deduplication reference count indicating a number of times said one page of data is referenced by a logical address.

19. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the deduplication score for said one page of data stored in the cache, and wherein the deduplication score for said one page of data stored in the cache is determined in accordance with a deduplication reference count indicating a number of times said one page of data is referenced by a logical address.

20. A system comprising:

one or more processors; and

a memory comprising code stored therein that, when executed, performs a method of cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the compression score for said one page of data stored in the cache, wherein said one page of data is stored in the cache in a compressed form, and wherein the compression score for said one page of data stored in the cache is determined in accordance with an amount of cache consumed to store the compressed form of said one page of data.

21. A system comprising:

one or more processors; and

a memory comprising code stored therein that, when executed, performs a method of cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with one or more criteria including one or more of a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data is determined in accordance with the one or more criteria including the neighbor score for said one page of data stored in the cache, wherein the neighbor score uses a popularity metric based on deduplication related criteria of neighboring pages of data.

22. A system comprising:

one or more processors; and

a memory comprising code stored therein that, when executed, performs a method of cache management comprising:

receiving a plurality of pages of data having a plurality of page scores, wherein each of the plurality of pages of data is associated with a corresponding one of the plurality of page scores, wherein the corresponding one of the plurality of page scores associated with said each page of data is determined in accordance with criteria including a deduplication score, a compression score, and a neighbor score that uses a popularity metric based on deduplication related criteria of neighboring pages of data, and an access score; and

storing the plurality of pages of data in a cache in accordance with the plurality of page scores, wherein each of the plurality of page scores associated with one of the plurality of pages of data stored in the cache is determined using a function that takes a plurality of inputs for the one page of data, wherein the plurality of inputs includes the neighbor score, the deduplication score, the compression score, and the access score.

Assignments (14)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060436/0441 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2020
From: KUCHEROV, ANTON
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054754/0017 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2020
From: MEIRI, DAVID
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052112/0708 →
Continuity (1)
Related Publication 20210286726A1 · Sep 16, 2021