IP Library Granted Patent US 10,860,488
Granted Patent B1
US 10,860,488 · App. 16/527,572 · Granted Dec 8, 2020

Dynamic enabling of metadata prefetch into cache

Inventors: Maher Kachmar (Marlborough, MA); Philippe Armangau (Acton, MA)
Assignee: EMC IP HOLDING COMPANY LLC
G06F12/0862G06F16/172G06N20/00G06F2212/602
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,860,488
App. No.
16/527,572
Granted
Dec 8, 2020
Kind
B1
Abstract

A method is provided for use in a storage system to dynamically disable and enable prefetching, comprising: defining a first plurality of time windows; calculating a first plurality of weights; identifying a first plurality of values of a cache metric; calculating a prefetch score for a first type of data based on the first plurality of weights and the first plurality of caching metric values, the prefetch score being calculated by weighing each of the cache metric values based on a respective one of the first plurality of weights that corresponds to a same time window as the cache metric value; and when the prefetch score fails to meet a threshold, stopping prefetching of the first type of data, while continuing to prefetch a second type of data.

Claims (47)

1. A method for use in a storage system, comprising:

defining a first plurality of time windows, the first plurality of time windows including a current time window and one or more past time windows;

calculating a first plurality of weights, each of the first plurality of weights corresponding to a different one of the first plurality of time windows;

identifying a first plurality of values of a cache metric, wherein each of the first plurality of values of the cache metric corresponds to a different one of the first plurality of time windows;

calculating a prefetch score for a first type of data based on the first plurality of weights and the first plurality of caching metric values, the prefetch score being calculated by weighing each of the cache metric values based on a respective one of the first plurality of weights that corresponds to a same time window as the cache metric value; and

when the prefetch score fails to meet a threshold, stopping prefetching of the first type of data, while continuing to prefetch a second type of data.

2. The method of claim 1 , wherein the prefetching of the first type of data is stopped by modifying a data structure that is stored in a memory of the storage system, the data structure being modified to indicate that the prefetching of the first type of data is disabled.

3. The method of claim 1 , wherein the first type of data includes a first type of metadata that is used by the storage system for storing user data, and the second type of data includes a second type of metadata that is used by the storage system for storing user data.

4. The method of claim 1 , wherein the first type of data includes user data that is stored in a first logic unit (LU) of the storage system and the second type of data includes user data that is stored in a second LU of the storage system.

5. The method of claim 1 , wherein the first plurality of weights is generated by using an online machine learning engine that is configured to balance: (i) reductions in prefetching that is performed by the storage system with (ii) an increase in cache misses that occur in the storage system as a result of the reductions in prefetching, the online machine learning engine being executed by the storage system concurrently with a servicing of incoming Input/Output (I/O) requests by the storage system.

6. The method of claim 1 , further comprising recalculating the prefetch score for the first type of data and resuming the prefetching of the first type of data when the recalculated prefetch score for the first type of data meets the threshold, the prefetch score being recalculated at runtime of the storage system.

7. The method of claim 6 , further comprising:

defining a second plurality of time windows;

calculating a second plurality of weights, each of the second plurality of weights corresponding to a different one of the second plurality of time windows;

identifying a second plurality of values of a cache metric, wherein each of the second plurality of values of the cache metric corresponds to a different one of the second plurality of time windows,

wherein the prefetch score is recalculated based on the second plurality of weights and the second plurality of caching metric values.

8. A storage system comprising:

a memory; and

one or more processors operatively coupled to the memory, the one or more processors being configured to perform the operations of:

defining a first plurality of time windows, the first plurality of time windows including a current time window and one or more past time windows;

calculating a first plurality of weights, each of the first plurality of weights corresponding to a different one of the first plurality of time windows;

identifying a first plurality of values of a cache metric, wherein each of the first plurality of values of the cache metric corresponds to a different one of the first plurality of time windows;

calculating a prefetch score for a first type of data based on the first plurality of weights and the first plurality of caching metric values, the prefetch score being calculated by weighing each of the cache metric values based on a respective one of the first plurality of weights that corresponds to a same time window as the cache metric value; and

when the prefetch score fails to meet a threshold, stopping prefetching of the first type of data, while continuing to prefetch a second type of data.

9. The storage system of claim 8 , wherein:

the memory is configured to store a data structure including a plurality of entries, each entry including a respective identifier corresponding to a different respective type of data that is stored in the storage system and a respective indication of whether prefetching of the respective type of data is enabled,

the prefetching of the first type of data is stopped by modifying the data structure to indicate that the prefetching of the first type of data is disabled.

10. The storage system of claim 8 , wherein the first type of data includes a first type of metadata that is used by the storage system for storing user data, and the second type of data includes a second type of metadata that is used by the storage system for storing user data.

11. The storage system of claim 8 , wherein the first type of data includes user data that is stored in a first logic unit (LU) of the storage system and the second type of data includes user data that is stored in a second LU of the storage system.

12. The storage system of claim 8 , wherein the first plurality of weights is generated by using an online machine learning engine that is configured to balance: (i) reductions in prefetching that is performed by the storage system with (ii) an increase in cache misses that occur in the storage system as a result of the reductions in prefetching, the online machine learning engine being executed by the storage system concurrently with a servicing of incoming Input/Output (I/O) requests by the storage system.

13. The storage system of claim 8 , wherein the one or more processors are further configured to perform the operations of:

recalculating the prefetch score for the first type of data; and

resuming the prefetching of the first type of data when the recalculated prefetch score for the first type of data meets the threshold, the prefetch score being recalculated at runtime of the storage system.

14. The storage system of claim 13 , wherein:

the one or more processors are further configured to perform the operations of: defining a second plurality of time windows, calculating a second plurality of weights, each of the second plurality of weights corresponding to a different one of the second plurality of time windows, identifying a second plurality of values of a cache metric; and

the prefetch score is recalculated based on the second plurality of weights and the second plurality of caching metric values.

15. A non-transitory computer-readable medium storing one or more processor-executable instructions, which when executed by one or more processors, cause the one or more processors to perform the operations of:

defining a first plurality of time windows, the first plurality of time windows including a current time window and one or more past time windows;

calculating a first plurality of weights, each of the first plurality of weights corresponding to a different one of the first plurality of time windows;

identifying a first plurality of values of a cache metric, wherein each of the first plurality of values of the cache metric corresponds to a different one of the first plurality of time windows;

calculating a prefetch score for a first type of data based on the first plurality of weights and the first plurality of caching metric values, the prefetch score being calculated by weighing each of the cache metric values based on a respective one of the first plurality of weights that corresponds to a same time window as the cache metric value; and

when the prefetch score fails to meet a threshold, stopping prefetching of the first type of data, while continuing to prefetch a second type of data.

16. The non-transitory computer-readable medium of claim 15 , wherein the prefetching of the first type of data is stopped by modifying a data structure to indicate that the prefetching of the first type of data is disabled.

17. The non-transitory computer-readable medium of claim 15 , wherein the first type of data includes a first type of metadata that is used by a storage system for storing user data, and the second type of data includes a second type of metadata that is used by the storage system for storing user data.

18. The non-transitory computer-readable medium of claim 15 , wherein the first type of data includes user data that is stored in a first logic unit (LU) of a storage system and the second type of data includes user data that is stored in a second LU of the storage system.

19. The non-transitory computer-readable medium of claim 15 , wherein the first plurality of weights is generated by using an online machine learning engine that is configured to balance: (i) reductions in prefetching that is performed by a storage system with (ii) an increase in cache misses that occur in the storage system as a result of the reductions in prefetching.

20. The non-transitory computer-readable medium of claim 15 , wherein the processor-executable instructions, when executed by the one or more processors, further cause the one or more processors to prefetch score for the first type of data and resuming the prefetching of the first type of data when the recalculated prefetch score for the first type of data meets the threshold, the prefetch score being recalculated at runtime of a storage system.

Assignments (9)
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 (050724/0571) 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 060436/0088 →
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 AT REEL 050406 FRAME 421 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058213/0825 →
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 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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2019
From: KACHMAR, MAHER; ARMANGAU, PHILIPPE
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049920/0425 →
Cited By (1)
US 12,282,429