IP Library › Granted Patent US 11,093,404
Granted Patent B2
US 11,093,404 · App. 16/601,422 · Granted Aug 17, 2021

Efficient pre-fetching on a storage system

Inventors: Vinicius Gottin (Rio de Janeiro, BR); Jonas F. Dias (Rio de Janeiro, BR); Hugo de Oliveira Barbalho (Rio de Janeiro, BR); Romulo D. Pinho (Niterói, BR); Tiago Calmon (Rio de Janeiro, BR)
Assignee: EMC IP Holding Company LLC
G06F12/0871G06F12/0862G06F12/0882
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,093,404
App. No.
16/601,422
Filed
Oct 14, 2019
Granted
Aug 17, 2021
Kind
B2
Art Unit
2184
USPC
711/113
Abstract

Managing a cache memory in a storage system includes maintaining a first queue that stores data indictive of the read requests for a particular logical storage unit of the storage system in an order that the read requests are received by the storage system and maintaining a second queue that stores data indictive of the read requests for the particular logical storage unit in a sort order corresponding to page numbers of the read requests, the second queue persisting for a plurality of iterations of read requests. A read request is received and data indicative of the read request is placed in the first queue and in the second queue while maintaining the sort order of the second queue. The second queue is used to determine a prefetch metric that varies according to a number of adjacent elements in the second queue.

Claims (39)

1. A method of managing a cache memory in a storage system, comprising:

maintaining a first queue that stores data indictive of the read requests for pages of a particular logical storage unit of the storage system in an order that the read requests are received by the storage system;

maintaining a second queue that stores data indictive of the read requests for the pages of the particular logical storage unit in a sort order corresponding to page numbers of the read requests, the second queue persisting for a plurality of iterations of read requests, wherein the page numbers correspond to a position of the pages within an ordered sequence of pages of the logical storage unit;

receiving a read request for a particular one of the pages of the particular logical storage unit;

placing data indicative of the read request in the first queue;

placing the data indicative of the read request in the second queue while maintaining the sort order of the second queue;

determining a plurality of difference values according to a difference of page numbers between each pair of adjacent elements in the second queue;

determining a prefetch metric value that varies according to a count of a number of times each of the difference values is less than a predetermined value and greater than zero; and

prefetching a plurality of pages having page numbers that come after the particular one of the pages sequentially in response to the prefetch metric value being greater than a predefined value.

2. A method, according to claim 1 , wherein the first queue and the second queue have a fixed size.

3. A method, according to claim 1 , wherein the pre-defined value is based on a look-ahead window.

4. A method, according to claim 1 , wherein the pre-fetch metric value is determined by dividing the count of the number of times each of the difference values is less than a predetermined value and greater than zero by a number of the difference values that are greater than zero.

5. A method, according to claim 1 , wherein a number of elements are discarded from the first queue and the second queue in response to the read request occurring when the queues are full.

6. A method, according to claim 5 , wherein the number of elements that are discarded is 50% of the elements.

7. A method, according to claim 1 , wherein there is a relationship between elements of the first queue and elements of the second queue that facilitates accessing corresponding elements of the second queue by initially accessing elements of the first queue.

8. A non-transitory computer readable medium containing software that manages a cache memory in a storage system that also contains a first queue that stores data indictive of the read requests for pages of a particular logical storage unit of the storage system in an order that the read requests are received by the storage system and a second queue that stores data indictive of the read requests for the pages of the particular logical storage unit in a sort order corresponding to page numbers of the read requests, the second queue persisting for a plurality of iterations of read requests and the page numbers correspond to a position of the pages within an ordered sequence of pages of the logical storage unit, the software comprising:

executable code that receives a read request for a particular one of the pages of the particular logical storage unit;

executable code that places data indicative of the read request in the first queue;

executable code that places the data indicative of the read request in the second queue while maintaining the sort order of the second queue;

executable code that determines a plurality of difference values according to a difference of page numbers between each pair of adjacent elements in the second queue;

executable code that determines a prefetch metric value that varies according to a count of a number of times each of the difference values is less than a predetermined value and greater than zero; and

executable code that prefetches a plurality of pages having page numbers that come after the particular one of the pages sequentially in response to the prefetch metric value being greater than a predefined value.

9. A non-transitory computer readable medium, according to claim 8 , wherein the first queue and the second queue have a fixed size.

10. A non-transitory computer readable medium, according to claim 8 , wherein the pre-defined value is based on a look-ahead window.

11. A non-transitory computer readable medium, according to claim 8 , wherein the pre-fetch metric value is determined by dividing the count of the number of times each of the difference values is less than a predetermined value and greater than zero by a number of the difference values that are greater than zero.

12. A non-transitory computer readable medium, according to claim 8 , wherein a number of elements are discarded from the first queue and the second queue in response to the read request occurring when the queues are full.

13. A non-transitory computer readable medium, according to claim 12 , wherein the number of elements that are discarded is 50% of the elements.

14. A non-transitory computer readable medium, according to claim 8 , wherein there is a relationship between elements of the first queue and elements of the second queue that facilitates accessing corresponding elements of the second queue by initially accessing elements of the first queue.

15. A storage system, comprising:

a plurality of storage units that store data written to the storage system;

a first subset of directors coupled to the storage units;

a second subset of directors that provide data access to the storage system, including data access to write data to the storage system and data access to read data that was previously written to the storage system;

a memory coupled to at least some of the directors, the memory providing a cache memory, and providing a first queue that stores data indictive of read requests for pages of a particular logical storage unit of the storage system in an order that the read requests are received by the storage system and a second queue that stores data indictive of the read requests for the pages of the particular logical storage unit in a sort order corresponding to page numbers of the read requests, the second queue persisting for a plurality of iterations of read requests and the page numbers correspond to a position of the pages within an ordered sequence of pages of the logical storage unit; and

a non-transitory computer readable medium containing software that manages the cache memory, the software having executable code that receives a read request for a particular one of the pages of the particular logical storage unit, executable code that places data indicative of the read request in the first queue, executable code that places the data indicative of the read request in the second queue while maintaining the sort order of the second queue, executable code that determines a plurality of difference values according to a difference of page numbers between each pair of adjacent elements in the second queue, executable code that determines a prefetch metric value that varies according to a count of a number of times each of the difference values is less than a predetermined value and greater than zero, and executable code that prefetches a plurality of pages having page numbers that come after the particular one of the pages sequentially in response to the prefetch metric value being greater than a predefined value.

16. A storage system, according to claim 15 , wherein the first queue and the second queue have a fixed size.

17. A storage system, according to claim 15 , wherein the pre-defined value is based on a look-ahead window.

18. A storage system, according to claim 15 , wherein the pre-fetch metric value is determined by dividing the count of the number of times each of the difference values is less than a predetermined value and greater than zero by a number of the difference values that are greater than zero.

19. A storage system, according to claim 15 , wherein a number of elements are discarded from the first queue and the second queue in response to the read request occurring when the queues are full.

20. A storage system, according to claim 15 , wherein there is a relationship between elements of the first queue and elements of the second queue that facilitates accessing corresponding elements of the second queue by initially accessing elements of the first queue.

Assignments (9)
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 (051302/0528) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
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 AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
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 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2019
From: GOTTIN, VINICIUS; DIAS, JONAS F.; BARBALHO, HUGO DE OLIVEIRA; PINHO, ROMULO D.; CALMON, TIAGO
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050709/0087 →
Continuity (1)
Related Publication 20210109860A1 · Apr 15, 2021
Cited By (1)
US 12,210,765