IP Library Granted Patent US 9,934,172
Granted Patent B1
US 9,934,172 · App. 14/972,418 · Granted Apr 3, 2018

Data storage system with dynamic throttling of parallel sub-I/O request for individual host I/O requests

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 9,934,172
App. No.
14/972,418
Granted
Apr 3, 2018
Kind
B1
Abstract

A method in a data storage system includes receiving a host I/O request from a host-side interface specifying a range of logical block addresses (LBAs) of a mapped logical storage unit (MLU) mapped through a device-side interface to underlying units of storage. Mapping information is obtained for extents of the underlying logical storage units mapped to sub-ranges of the range of LBAs. Sub-I/O requests for the extents are concurrently issued to the device-side interface based on the mapping information, subject to a throttling mechanism to manage performance. The device-side interface provides transfer initiation responses to initiate transfer of the extents, the responses being forwarded to the host-side interface to cause the host-side interface to transfer the extents in a transfer phase. The transfer initiation responses may be re-ordered as necessary to enable the host-side interface to transfer the extents in address order in satisfaction of the host I/O request.

Claims (77)

1. A method of operating a data storage system, comprising:

receiving a host I/O request from a host-side interface of the data storage system, the host I/O request specifying a range of logical block addresses (LBAs) of a mapped logical unit (MLU) of storage presented to an external host computer by the host-side interface, the MLU being mapped through a device-side interface to a plurality of underlying logical units of storage;

obtaining, in response to receiving the host I/O request, mapping information for a plurality of extents of the underlying logical units of storage, the extents being mapped to respective sub-ranges of the range of LBAs, the host-side interface being configured to transfer the extents during a subsequent transfer phase;

concurrently issuing to the device-side interface, using the mapping information, a plurality of sub-I/O requests for the extents of the underlying logical units of storage, the device-side interface providing respective transfer initiation responses for the sub-I/O requests to initiate transfer of the respective extents;

dynamically throttling a number of concurrently issued sub-I/O requests according to a limit set either by configuration or by automatic calculation from performance monitoring over one or more intervals; and

receiving the transfer initiation responses from the device-side interface and forwarding the transfer initiation responses to the host-side interface to cause the respective extents to be transferred by the host-side interface in the transfer phase,

wherein:

the extents have a logical order according to an address order of the respective sub-ranges of the range of LBAs, and the host-side interface is configured to transfer the extents in the logical order during the transfer phase;

the transfer initiation responses are returned in an initial order independent of the logical order of the respective extents; and

forwarding the transfer initiation responses includes selectively re-ordering the transfer initiation responses as necessary to provide the transfer initiation responses to the host-side interface in the logical order of the respective extents,

and wherein selectively re-ordering the transfer initiation responses includes:

detecting an out-of-order transfer initiation response for one of the extents, the one extent being preceded in the logical order by a preceding extent for which a transfer initiation response has not yet been received;

refraining from forwarding the out-of-order transfer initiation response to the host-side interface;

at a later time when the transfer initiation response for the preceding extent has been received and forwarded to the host-side interface, re-issuing the sub-I/O request for the one extent to the device-side interface, the device-side interface subsequently providing a second transfer initiation response for the re-issued sub-I/O request; and

receiving the second transfer initiation response from the device-side interface and forwarding the second transfer initiation response to the host-side interface to cause the one extent to be transferred by the host-side interface in the transfer phase.

2. The method of claim 1 , further including, as part of refraining from forwarding the out-of-order transfer initiation response, issuing a sub-I/O request completion message to the device-side interface to abort transfer of the one extent, the sub-I/O request completion message including a retry indicator indicating that the sub-I/O request for the one extent will be reissued at a later time as part of the selective re-ordering.

3. The method of claim 1 , wherein:

the device-side interface includes a memory-based storage cache for caching the underlying units of logical storage of the MLU;

the data transfer phase includes transfer of the extents between the host-side interface and the storage cache; and

the initial order of the transfer initiation responses is based on a pattern of cache hits and misses for the respective extents in the storage cache, a cache hit for a given extent causing immediate return of a corresponding transfer initiation response which is out of order when not preceded by a transfer initiation response for a preceding extent in the logical order due to a cache miss for the preceding extent.

4. The method of claim 1 , wherein obtaining the mapping information includes (1) issuing a request for the mapping information to a mapping library, and (2) receiving a mapping information response including identifications of the plurality of extents, and wherein the plurality of sub-I/O requests are issued concurrently after receiving the mapping information response.

5. The method of claim 4 , wherein the mapping library includes separate fast and slow lookup paths for efficient lookup of mapping information for different mapped device types including a direct-mapped logical unit (DLU) and a thin logical unit (TLU), a lookup for the DLU being performed on the fast path and generally returning a single mapping value for an extent spanning an LBA range of a DLU host I/O request, a lookup for the TLU generally returning a plurality of mapping values for a set of respective distinct extents for an LBA range of a TLU host I/O request, and wherein the MLU is a TLU and the mapping information is obtained using the slow path.

6. The method of claim 5 , wherein the DLU has a base and associated snapshots maintained as TLU types with respect to the base, and wherein a lookup for the DLU on the fast path is responded to with an indication that a lookup should be performed on the slow path due to the presence of the associated snapshots for which the mapping information includes a plurality of mapping values.

7. The method of claim 1 , wherein:

the host I/O request is a file I/O request for a portion of a file, the portion of the file being stored in a buffer for transfer during the transfer phase;

the extents have a logical order according to an address order of the respective sub-ranges of the range of LBAs, and the host-side interface is configured to transfer the extents to or from the buffer;

the transfer initiation responses are returned in a response order independent of the logical order of the respective extents; and

the transfer initiation responses are forwarded irrespective of the logical order of the respective extents.

8. The method of claim 1 , wherein the data storage system gathers response times for sub-I/O requests over set of intervals and dynamically switches concurrency so an optimum number of concurrent sub-I/O requests are permitted to be processed at a time, the optimum number being calculated as providing a desired response time profile for the sub-I/O requests over the intervals.

9. The method of claim 1 , wherein the data storage system monitors for out-of-offset conditions for sub-I/O requests and dynamically switches concurrency to reduce the number of out-of-offset conditions to below a predetermined threshold representing an acceptable upper limit of out-of-offset count.

10. A method of operating a data storage system, comprising:

receiving a host I/O request from a host-side interface of the data storage system, the host I/O request specifying a range of logical block addresses (LBAs) of a mapped logical unit (MLU) of storage presented to an external host computer by the host-side interface, the MLU being mapped through a device-side interface to a plurality of underlying logical units of storage;

obtaining, in response to receiving the host I/O request, mapping information for a plurality of extents of the underlying logical units of storage, the extents being mapped to respective sub-ranges of the range of LBAs, the host-side interface being configured to transfer the extents during a subsequent transfer phase, the mapping information being obtained by (1) issuing a request for the mapping information to a mapping library, and (2) receiving a mapping information response including identifications of the plurality of extents;

concurrently issuing, to the device-side interface and using the mapping information including in the mapping information response, a plurality of sub-I/O requests for the extents of the underlying logical units of storage, the device-side interface providing respective transfer initiation responses for the sub-I/O requests to initiate transfer of the respective extents;

dynamically throttling a number of concurrently issued sub-I/O requests according to a limit set either by configuration or by automatic calculation from performance monitoring over one or more intervals; and

receiving the transfer initiation responses from the device-side interface and forwarding the transfer initiation responses to the host-side interface to cause the respective extents to be transferred by the host-side interface in the transfer phase,

wherein:

the extents have a logical order according to an address order of the respective sub-ranges of the range of LBAs, and the host-side interface is configured to transfer the extents in the logical order during the transfer phase;

the transfer initiation responses are returned in an initial order independent of the logical order of the respective extents; and

forwarding the transfer initiation responses includes selectively re-ordering the transfer initiation responses as necessary to provide the transfer initiation responses to the host-side interface in the logical order of the respective extents,

and wherein selectively re-ordering the transfer initiation responses includes:

detecting an out-of-order transfer initiation response for one of the extents, the one extent being preceded in the logical order by a preceding extent for which a transfer initiation response has not yet been received;

refraining from forwarding the out-of-order transfer initiation response to the host-side interface;

at a later time when the transfer initiation response for the preceding extent has been received and forwarded to the host-side interface, re-issuing the sub-I/O request for the one extent to the device-side interface, the device-side interface subsequently providing a second transfer initiation response for the re-issued sub-I/O request; and

receiving the second transfer initiation response from the device-side interface and forwarding the second transfer initiation response to the host-side interface to cause the one extent to be transferred by the host-side interface in the transfer phase.

11. A data storage system, comprising:

one or more back-end nonvolatile storage devices; and

one or more storage processors coupled to the back-end nonvolatile storage devices, the storage processors being computerized devices including memory, processors and input/output interface circuitry coupled together by one or more data buses, the input/output interface circuitry providing a connection to a network over which the data storage system receives host I/O requests from remote host computers, the memory storing computer program instructions executed by the processors to cause the data storage system to perform a method including:

receiving a host I/O request from a host-side interface of the data storage system, the host I/O request specifying a range of logical block addresses (LBAs) of a mapped logical unit (MLU) of storage presented to an external host computer by the host-side interface, the MLU being mapped through a device-side interface to a plurality of underlying logical units of storage;

obtaining, in response to receiving the host I/O request, mapping information for a plurality of extents of the underlying logical units of storage, the extents being mapped to respective sub-ranges of the range of LBAs, the host-side interface being configured to transfer the extents during a subsequent transfer phase;

concurrently issuing to the device-side interface, using the mapping information, a plurality of sub-I/O requests for the extents of the underlying logical units of storage, the device-side interface providing respective transfer initiation responses for the sub-I/O requests to initiate transfer of the respective extents;

dynamically throttling a number of concurrently issued sub-I/O requests according to a limit set either by configuration or by automatic calculation from performance monitoring over one or more intervals; and

receiving the transfer initiation responses from the device-side interface and forwarding the transfer initiation responses to the host-side interface to cause the respective extents to be transferred by the host-side interface in the transfer phase,

wherein:

the extents have a logical order according to an address order of the respective sub-ranges of the range of LBAs, and the host-side interface is configured to transfer the extents in the logical order during the transfer phase;

the transfer initiation responses are returned in an initial order independent of the logical order of the respective extents; and

forwarding the transfer initiation responses includes selectively re-ordering the transfer initiation responses as necessary to provide the transfer initiation responses to the host-side interface in the logical order of the respective extents,

and wherein selectively re-ordering the transfer initiation responses includes:

detecting an out-of-order transfer initiation response for one of the extents, the one extent being preceded in the logical order by a preceding extent for which a transfer initiation response has not yet been received;

refraining from forwarding the out-of-order transfer initiation response to the host-side interface;

at a later time when the transfer initiation response for the preceding extent has been received and forwarded to the host-side interface, re-issuing the sub-I/O request for the one extent to the device-side interface, the device-side interface subsequently providing a second transfer initiation response for the re-issued sub-I/O request; and

receiving the second transfer initiation response from the device-side interface and forwarding the second transfer initiation response to the host-side interface to cause the one extent to be transferred by the host-side interface in the transfer phase.

12. The data storage system of claim 11 , wherein the method performed by the data storage system further includes, as part of refraining from forwarding the out-of-order transfer initiation response, issuing a sub-I/O request completion message to the device-side interface to abort transfer of the one extent, the sub-I/O request completion message including a retry indicator indicating that the sub-I/O request for the one extent will be reissued at a later time as part of the selective re-ordering.

13. The data storage system of claim 11 , wherein:

the device-side interface includes a memory-based storage cache for caching the underlying units of logical storage of the MLU;

the data transfer phase includes transfer of the extents between the host-side interface and the storage cache; and

the initial order of the transfer initiation responses is based on a pattern of cache hits and misses for the respective extents in the storage cache, a cache hit for a given extent causing immediate return of a corresponding transfer initiation response which is out of order when not preceded by a transfer initiation response for a preceding extent in the logical order due to a cache miss for the preceding extent.

14. The data storage system of claim 11 , wherein obtaining the mapping information includes (1) issuing a request for the mapping information to a mapping library, and (2) receiving a mapping information response including identifications of the plurality of extents, and wherein the plurality of sub-I/O requests are issued concurrently after receiving the mapping information response.

15. The data storage system of claim 14 , wherein the mapping library includes separate fast and slow lookup paths for efficient lookup of mapping information for different mapped device types including a direct-mapped logical unit (DLU) and a thin logical unit (TLU), a lookup for the DLU being performed on the fast path and generally returning a single mapping value for an extent spanning an LBA range of a DLU host I/O request, a lookup for the TLU generally returning a plurality of mapping values for a set of respective distinct extents for an LBA range of a TLU host I/O request, and wherein the MLU is a TLU and the mapping information is obtained using the slow path.

16. The data storage system of claim 15 , wherein the DLU has a base and associated snapshots maintained as TLU types with respect to the base, and wherein a lookup for the DLU on the fast path is responded to with an indication that a lookup should be performed on the slow path due to the presence of the associated snapshots for which the mapping information includes a plurality of mapping values.

17. The data storage system of claim 11 , wherein the data storage system gathers response times for sub-I/O requests over set of intervals and dynamically switches concurrency so an optimum number of concurrent sub-I/O requests are permitted to be processed at a time, the optimum number being calculated as providing a desired response time profile for the sub-I/O requests over the intervals.

18. The data storage system of claim 11 , wherein the data storage system monitors for out-of-offset conditions for sub-I/O requests and dynamically switches concurrency to reduce the number of out-of-offset conditions to below a predetermined threshold representing an acceptable upper limit of out-of-offset count.

19. The data storage system of claim 11 , wherein:

the host I/O request is a file I/O request for a portion of a file, the portion of the file being stored in a buffer for transfer during the transfer phase;

the extents have a logical order according to an address order of the respective sub-ranges of the range of LBAs, and the host-side interface is configured to transfer the extents to or from the buffer;

the transfer initiation responses are returned in a response order independent of the logical order of the respective extents; and

the transfer initiation responses are forwarded irrespective of the logical order of the respective extents.

Assignments (7)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (046366/0014) Recorded May 20, 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 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 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 058298/0093 →
SECURITY AGREEMENT Recorded Mar 21, 2019
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 049452/0223 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
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 046366/0014 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: KOLI, MILIND M.; NG, TIMOTHY C.; HOLT, JAMES M.
To: EMC CORPORATION
Reel/Frame 041149/0627 →