IP Library Granted Patent US 11,520,715
Granted Patent B2
US 11,520,715 · App. 17/182,816 · Granted Dec 6, 2022

Dynamic allocation of storage resources based on connection type

Inventors: Senthil Kumar Veluswamy (Bangalore, IN); Rahul Gandhi Dhatchinamoorthy (Bangalore, IN); Kumar Ranjan (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F13/1668G06F9/5016G06F13/28
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,520,715
App. No.
17/182,816
Granted
Dec 6, 2022
Kind
B2
Abstract

Systems and methods for capped allocation of storage resources based on connection type are described. A new storage connection request from a host system to a group of data storage devices includes a connection type, such as a remote direct memory access connection or transmission control protocol connection. Based on the connection type, a subset of a pool of allocated storage resources for that connection type is determined. If the new connection request does not exceed the maximum number of connections allocated to the subset, a new storage connection is established. If the new connection request exceeds the maximum number of connections allocated to the subset, the new storage connection request fails.

Claims (111)

1. A system, comprising:

a processor comprising a plurality of processor cores;

a memory;

a storage interface configured to:

communicate with a plurality of data storage devices; and

support a first connection type and a second connection type; and

a resource allocation engine configured to:

determine, for a new storage connection request, a connection type selected from the first connection type and the second connection type;

determine, based on the connection type, an allocated number for a first connection type subset of a first pool of allocated storage resources, wherein:

the first pool of allocated storage resources includes assignments to the plurality of processor cores; and

the first connection type subset of the first pool of allocated resources corresponds to a processor core ratio allocated to a first connection type; and

establish, responsive to the new storage connection request, a new storage connection with the first connection type subset of the first pool of allocated storage resources.

2. The system of claim 1 , wherein the resource allocation engine is further configured to:

determine a maximum number of connections for the first connection type subset of the first pool of allocated storage resources;

determine whether the new storage connection request exceeds the maximum number of connections for the first connection type subset of the first pool of allocated storage resources; and

fail, responsive to the new storage connection request exceeding the maximum number of connections for the first connection type subset of the first pool of allocated storage resources, the new storage connection request.

3. The system of claim 2 , wherein the resource allocation engine is further configured to:

determine, based on the connection type, an allocated number for a second connection type subset of the first pool of allocated storage resources;

determine a maximum number of connections for the second connection type subset of the first pool of allocated storage resources;

determine whether the new storage connection request exceeds the maximum number of connections for the second connection type subset of the first pool of allocated storage resources; and

establish, responsive to the new storage connection request not exceeding the maximum number of connections for the second connection type subset of the first pool of allocated storage resources, the new storage connection with the first pool of allocated storage resources.

4. The system of claim 3 , wherein:

the first connection type subset corresponds to the first connection type using a first connection protocol;

the second connection type subset corresponds to the second connection type using a second connection protocol;

the resource allocation engine is further configured to determine an allocation ratio between a first connection type and a second connection type for the first pool of allocated resources; and

the maximum number of connections of the first connection type subset and the maximum number of connections of the second connection type subset correspond to the allocation ratio applied to the first pool of allocated resources.

5. The system of claim 4 , wherein:

the first connection type is a remote direct memory access connection for accessing the plurality of data storage devices; and

the second connection type is a transmission control protocol connection for accessing the plurality of data storage devices.

6. The system of claim 2 , wherein the resource allocation engine is further configured to:

monitor read/write operations executed through the storage interface;

determine a read/write ratio based on the monitored read/write operations;

adjust, based on the read/write ratio, a resource ratio; and

recalculate, based on the resource ratio, the maximum number of connections for the first connection type subset of the first pool of allocated storage resources.

7. The system of claim 1 , wherein the resource allocation engine is further configured to:

determine, based on the connection type, an allocated number for a first connection type subset of a second pool of allocated storage resources;

determine a maximum number of connections for the first connection type subset of the second pool of allocated storage resources;

determine whether the new storage connection request exceeds the maximum number of connections for the first connection type subset of the second pool of allocated storage resources; and

establish, responsive to the new storage connection request not exceeding the maximum number of connections for the first connection type subset of the second pool of allocated storage resources, a new storage connection with the second pool of allocated storage resources.

8. The system of claim 7 , wherein:

the memory supports a plurality of queue pairs for managing command queues and storage queues for the plurality of data storage devices;

the second pool of allocated resources includes assignments to the plurality of queue pairs; and

the first connection type subset of the second pool of allocated resources corresponds to a queue pair ratio allocated to the first connection type.

9. The system of claim 8 , wherein:

the resource allocation engine is further configured to:

determine the processor core ratio from a set of configuration parameters stored in the memory; and

determine the queue pair ratio from the set of configuration parameters stored in the memory; and

the processor core ratio is different from the queue pair ratio.

10. A computer-implemented method, comprising:

configuring a storage node for communication with a plurality of data storage devices, wherein the storage node controls at least one pool of storage resources for allocation to host storage connections;

determining, for a new storage connection request, a connection type selected from a first connection type and a second connection type;

determining, based on the connection type, a first connection type subset of a first pool of allocated storage resources;

determining, based on the connection type, a second connection type subset of the first pool of allocated storage resources;

determining an allocation ratio between the first connection type and the second connection type for the first pool of allocated resources, wherein:

the first connection type subset corresponds to the first connection type using a first connection protocol;

the second connection type subset corresponds to the second connection type using a second connection protocol; and

a maximum number of connections of the first connection type subset and a maximum number of connections of the second connection type subset correspond to the allocation ratio applied to the first pool of allocated resources; and

establishing, responsive to the new storage connection request, a new storage connection with the first connection type subset of the first pool of allocated storage resources.

11. The computer-implemented method of claim 10 , further comprising:

determining the maximum number of connections for the first connection type subset of the first pool of allocated storage resources;

determining whether the new storage connection request exceeds the maximum number of connections for the first connection type subset of the first pool of allocated storage resources; and

failing, responsive to the new storage connection request exceeding the maximum number of connections for the first connection type subset of the first pool of allocated storage resources, the new storage connection request.

12. The computer-implemented method of claim 10 , further comprising:

determining the maximum number of connections for the second connection type subset of the first pool of allocated storage resources;

determining whether the new storage connection request exceeds the maximum number of connections for the second connection type subset of the first pool of allocated storage resources; and

establishing, responsive to the new storage connection request not exceeding the maximum number of connections for the second connection type subset of the first pool of allocated storage resources, the new storage connection with the first pool of allocated storage resources.

13. The computer-implemented method of claim 10 , wherein:

the first connection type is a remote direct memory access connection for accessing the plurality of data storage devices; and

the second connection type is a transmission control protocol connection for accessing the plurality of data storage devices.

14. The computer-implemented method of claim 10 , further comprising:

assigning each host storage connection to a processor core of a plurality of processor cores, wherein:

the first pool of allocated resources includes assignments to the plurality of processor cores; and

the first connection type subset of the first pool of allocated resources corresponds to a processor core ratio allocated to the first connection type.

15. The computer-implemented method of claim 14 , further comprising:

determining, based on the connection type, a first connection type subset of a second pool of allocated storage resources;

determining a maximum number of connections for the first connection type subset of the second pool of allocated storage resources;

determining whether the new storage connection request exceeds the maximum number of connections for the first connection type subset of the second pool of allocated storage resources; and

establishing, responsive to the new storage connection request not exceeding the maximum number of connections for the first connection type subset of the second pool of allocated storage resources, the new storage connection with the second pool of allocated storage resources.

16. The computer-implemented method of claim 15 , further comprising:

assigning at least one queue pair from a plurality of queue pairs to each host connection, wherein:

the second pool of allocated resources includes assignments of the plurality of queue pairs;

the plurality of queue pairs manages command queues and storage queues for the plurality of data storage devices; and

the first connection type subset of the second pool of allocated resources corresponds to a queue pair ratio allocated to the first connection type.

17. The computer-implemented method of claim 16 , further comprising:

monitoring read/write operations executed through a storage interface of the storage node;

determining a read/write ratio based on the monitored read/write operations;

adjusting, based on the read/write ratio, a resource ratio; and

recalculating, based on the resource ratio, the maximum number of connections for the first connection type subset of the first pool of allocated storage resources.

18. A storage system comprising:

a processor;

a memory;

a plurality of storage devices;

means for determining, for a new storage connection request, a connection type selected from a first connection type and a second connection type;

means for determining, based on the connection type, a first connection type subset of a first pool of allocated storage resources;

means for determining a maximum number of connections for the first connection type subset of the first pool of allocated storage resources, wherein the means for determining the maximum number of connections is configured to

monitor read/write operations executed through a storage interface to the plurality of storage devices;

determine a read/write ratio based on the monitored read/write operations;

adjust, based on the read/write ratio, a resource ratio; and

recalculate, based on the resource ratio, the maximum number of connections for the first connection type subset of the first pool of allocated storage resources;

means for determining whether the new storage connection request exceeds the maximum number of connections for the first connection type subset of the first pool of allocated storage resources; and

means for establishing, responsive to the new storage connection request not exceeding the maximum number of connections for the first connection type subset of the first pool of allocated storage resources, a new storage connection with the first pool of allocated storage resources.

19. The storage system of claim 18 , further comprising:

means for assigning each host storage connection to a processor core of a plurality of processor cores, wherein:

the first pool of allocated resources includes assignments to the plurality of processor cores; and

the first connection type subset of the first pool of allocated resources corresponds to a processor core ratio allocated to the first connection type.

20. The storage system of claim 18 , further comprising:

means for determining, based on the connection type, a second connection type subset of the first pool of allocated storage resources; and

means for determining an allocation ratio between the first connection type and the second connection type for the first pool of allocated resources, wherein:

the first connection type subset corresponds to the first connection type using a first connection protocol;

the second connection type subset corresponds to the second connection type using a second connection protocol; and

the maximum number of connections of the first connection type subset and a maximum number of connections of the second connection type subset correspond to the allocation ratio applied to the first pool of allocated resources.

Assignments (5)
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 056285 FRAME 0292 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 056285/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2021
From: VELUSWAMY, SENTHIL KUMAR; DHATCHINAMOORTHY, RAHUL GANDHI; RANJAN, KUMAR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 055378/0251 →