IP Library › Granted Patent US 10,884,935
Granted Patent B1
US 10,884,935 · App. 16/587,286 · Granted Jan 5, 2021

Cache allocation for controller boards based on prior input-output operations

Inventor: Ramesh Doddaiah (Westborough, MA)
Assignee: EMC IP Holding Company LLC
G06F12/0862G06F2212/602G06F2212/604
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,884,935
App. No.
16/587,286
Filed
Sep 30, 2019
Granted
Jan 5, 2021
Kind
B1
Art Unit
2136
USPC
711/118
Abstract

A metadata structure of a storage array stores metadata associated with a plurality of prior input-output operations. The metadata comprises an indication of which of the controller boards was utilized to service a prior input-output operation and an input-output size for the prior input-output operation. A given input-output operation is obtained and a target controller board and a target portion of the storage array are identified based at least in part on the given input-output operation. A given controller board is determined to have a higher likelihood of receiving a future input-output operation than at least one other controller board based at least in part on the metadata and a portion of the cache is allocated to the given controller board for storing target data associated with the given input-output operation. The target controller board utilizes the portion of the cache allocated to the given controller board to service the input-output operation.

Claims (49)

1. An apparatus comprising:

a storage array comprising a plurality of controller boards and a cache, the cache comprising a metadata structure, the metadata structure storing metadata associated with a plurality of prior input-output operations, each of the prior input-output operations being directed to a corresponding portion of the storage array, the metadata associated with each prior input-output operation comprising an indication of which of the plurality of controller boards was utilized to service that prior input-output operation and an input-output size for that prior input-output operation, at least one processing device of the storage array being configured:

to obtain a given input-output operation from a host device;

to identify a target controller board of the plurality of controller boards and a target portion of the storage array based at least in part on the obtained given input-output operation;

to determine, based at least in part on the metadata stored in the metadata structure, a likelihood that a given controller board of the plurality of controller boards will receive a future input-output operation;

to determine, based at least in part on the likelihood, that the given controller board has a higher likelihood of receiving a future input-output operation than at least one other controller board of the plurality of controller boards;

to allocate a portion of the cache to the given controller board as a buffer for storing target data associated with the given input-output operation; and

to service the given input-output operation by the target controller board, the target controller board utilizing the buffer to service the input-output operation.

2. The apparatus of claim 1 wherein the at least one processing device is further configured to determine, based at least in part on the metadata stored in the metadata structure, a most likely input-output size for the future input-output operation and wherein the at least one processing device is configured to allocate the portion of the cache as the buffer with a size corresponding to the determined most likely input-output size.

3. The apparatus of claim 1 wherein determining, based at least in part on the metadata structure, the likelihood that the given controller board of the plurality of controller boards will receive the future input-output operation comprises performing a principal component analysis on the metadata.

4. The apparatus of claim 1 wherein the metadata structure comprises a plurality of tracks, each track comprising metadata corresponding to one or more of the plurality of prior input-output operations, each track corresponding to a particular portion of the storage array.

5. The apparatus of claim 1 wherein the cache comprises a plurality of banks, each of the banks being designated as a bank for buffers of a corresponding input-output size, the at least one processing device being further configured to dynamically adjust the size of one or more of the banks based at least in part on the metadata stored in the metadata structure.

6. The apparatus of claim 1 wherein the at least one processing device is further configured:

to obtain one or more utilization rates from the host device;

to determine, based at least in part on the obtained one or more utilization rates and the metadata stored in the metadata structure, whether the target controller board should perform a remote read of the target data from the buffer of the given controller board or a remote push should be performed to copy the target data from the buffer of the given controller board to a buffer of the target controller board for servicing the given input-output operation; and

to cause performance of one of the remote read operation and the remote push operation based at least in part on the determination of whether the target controller board should perform the remote read or the remote push should be performed.

7. The apparatus of claim 1 wherein the at least one processing device is further configured to perform asynchronous pre-caching of data on the plurality of controller boards based at least in part on the metadata stored in the metadata structure.

8. A method comprising:

obtaining a given input-output operation from a host device;

identifying a target controller board of a plurality of controller boards of a storage array and a target portion of the storage array based at least in part on the obtained given input-output operation;

determining, based at least in part on metadata stored in a metadata structure of the storage array, a likelihood that a given controller board of the plurality of controller boards will receive a future input-output operation, the metadata being associated with a plurality of prior input-output operations, each of the prior input-output operations being directed to a corresponding portion of the storage array, the metadata associated with each prior input-output operation comprising an indication of which of the plurality of controller boards was utilized to service that prior input-output operation and an input-output size for that prior input-output operation;

determining, based at least in part on the likelihood, that the given controller board has a higher likelihood of receiving a future input-output operation than at least one other controller board of the plurality of controller boards;

allocating a portion of the cache to the given controller board as a buffer for storing target data associated with the given input-output operation; and

servicing the given input-output operation by the target controller board, the target controller board utilizing the buffer to service the input-output operation;

wherein the method is performed by at least one processing device of the storage array.

9. The method of claim 8 wherein the method further comprises determining, based at least in part on the metadata stored in the metadata structure, a most likely input-output size for the future input-output operation and wherein the at least one processing device is configured to allocate the portion of the cache as the buffer with a size corresponding to the determined most likely input-output size.

10. The method of claim 8 wherein determining, based at least in part on the metadata structure, the likelihood that the given controller board of the plurality of controller boards will receive the future input-output operation comprises performing a principal component analysis on the metadata.

11. The method of claim 8 wherein the metadata structure comprises a plurality of tracks, each track comprising metadata corresponding to one or more of the plurality of prior input-output operations, each track corresponding to a particular portion of the storage array.

12. The method of claim 8 wherein the cache comprises a plurality of banks, each of the banks being designated as a bank for buffers of a corresponding input-output size, the method further comprising dynamically adjusting the size of one or more of the banks based at least in part on the metadata stored in the metadata structure.

13. The method of claim 8 wherein the method further comprises:

obtaining one or more utilization rates from the host device;

determining, based at least in part on the obtained one or more utilization rates and the metadata stored in the metadata structure, whether the target controller board should perform a remote read of the target data from the buffer of the given controller board or a remote push should be performed to copy the target data from the buffer of the given controller board to a buffer of the target controller board for servicing the given input-output operation; and

causing performance of one of the remote read operation and the remote push operation based at least in part on the determination of whether the target controller board should perform the remote read or the remote push should be performed.

14. The method of claim 8 wherein the method further comprises performing asynchronous pre-caching of data on the plurality of controller boards based at least in part on the metadata stored in the metadata structure.

15. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by at least one processing device of a storage array, the storage array comprising a plurality of controller boards and a cache, the cache comprising a metadata structure, the metadata structure storing metadata associated with a plurality of prior input-output operations, each of the prior input-output operations being directed to a corresponding portion of the storage array, the metadata associated with each prior input-output operation comprising an indication of which of the plurality of controller boards was utilized to service that prior input-output operation and an input-output size for that prior input-output operation, causes the at least one processing device:

to obtain a given input-output operation from a host device;

to identify a target controller board of the plurality of controller boards and a target portion of the storage array based at least in part on the obtained given input-output operation;

to determine, based at least in part on the metadata stored in the metadata structure, a likelihood that a given controller board of the plurality of controller boards will receive a future input-output operation;

to determine, based at least in part on the likelihood, that the given controller board has a higher likelihood of receiving a future input-output operation than at least one other controller board of the plurality of controller boards;

to allocate a portion of the cache to the given controller board as the buffer for storing target data associated with the given input-output operation; and

to service the given input-output operation by the target controller board, the target controller board utilizing the buffer allocated to the given controller board to service the input-output operation.

16. The computer program product of claim 15 wherein the program code further causes the at least one processing device to determine, based at least in part on the metadata stored in the metadata structure, a most likely input-output size for the future input-output operation and wherein the at least one processing device is configured to allocate the portion of the cache as the buffer with a size corresponding to the determined most likely input-output size.

17. The computer program product of claim 15 wherein determining, based at least in part on the metadata structure, the likelihood that the given controller board of the plurality of controller boards will receive the future input-output operation comprises performing a principal component analysis on the metadata.

18. The computer program product of claim 15 wherein the metadata structure comprises a plurality of tracks, each track comprising metadata corresponding to one or more of the plurality of prior input-output operations, each track corresponding to a particular portion of the storage array.

19. The computer program product of claim 15 wherein the cache comprises a plurality of banks, each of the banks being designated as a bank for buffers of a corresponding input-output size, the program code further causing the at least one processing device to dynamically adjust the size of one or more of the banks based at least in part on the metadata stored in the metadata structure.

20. The computer program product of claim 15 wherein the program code further causes the at least one processing device:

to obtain one or more utilization rates from the host device;

to determine, based at least in part on the obtained one or more utilization rates and the metadata stored in the metadata structure, whether the target controller board should perform a remote read of the target data from the buffer of the given controller board or a remote push should be performed to copy the target data from the buffer of the given controller board to a buffer of the target controller board for servicing the given input-output operation; and

to cause the performance of one of the remote read operation and the remote push operation based at least in part on the determination of whether the target controller board should perform the remote read or the remote push should be performed.

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 Sep 30, 2019
From: DODDAIAH, RAMESH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050561/0185 →
Cited By (16)
US 12,189,957 US 12,204,762 US 12,216,526 US 12,222,863 US 12,299,118 US 12,299,300 US 12,299,327 US 12,353,711 US 12,405,738 US 12,487,771 US 12,493,409 US 12,498,866 US 12,561,419 US 12,568,040 US 12,619,543 US 12,737,111