IP Library Granted Patent US 11,513,690
Granted Patent B2
US 11,513,690 · App. 16/925,629 · Granted Nov 29, 2022

Multi-dimensional I/O service levels

Inventors: Jaeyoo Jung (Shrewsbury, MA); Narasimha R. Challa (Hudson, MA); Benjamin A. Randolph (Uxbridge, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0611G06F3/067G06F3/0635G06F3/0644G06F3/0653G06F3/0659
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,513,690
App. No.
16/925,629
Granted
Nov 29, 2022
Kind
B2
Abstract

Techniques for determining service levels may include receiving an I/O operation at a target port of a data storage system, where the I/O operation is sent from an initiator port of a host and directed to a storage object in a first storage group. The initiator port may be included in a first initiator group and the target port may be included in a first port group. The I/O operation may be assigned a service level using a table of a service levels specified for different triples. Each triple may identify an initiator groups, a storage group and a port group. Assigning the service level may include determining a first of the triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the service level.

Claims (91)

1. A method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

responsive to the first target port of the data storage system receiving the I/O operation, the data storage system assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples and denotes a target level of I/O response time performance for said one triple, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein the first service level denotes a target I/O response time for servicing the I/O operation, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level.

2. A method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level; and wherein the method further includes:

determining that service levels are assigned to I/O operations based on initiator group service levels (IGSLs); and

responsive to determining that service levels are assigned to I/O operations based on the IGSLs, performing first processing that creates the table of the plurality of service levels based on IGSLs, the first processing including:

specifying a plurality of IGSLs for the plurality of initiator groups, wherein each of the plurality of IGSLs identifies a target I/O response time range for one of the plurality of initiator groups; and

for each of the plurality of initiator groups having an associated one of the plurality of IGSLs, performing second processing that creates a hierarchy including three levels of nodes, said each initiator group is represented as a root node at a first level of the hierarchy, wherein the hierarchy includes a first plurality of nodes at a second level of the hierarchy that are children of the root node, wherein each node in the second level represents one of the plurality of port groups, wherein each node in the second level that represents one of the plurality of port groups has a plurality of child nodes included in a third level of the hierarchy, wherein each node in the third level represents one of the plurality of storage groups, wherein a path from the root node to a second node in the third level denotes one of the plurality of triples having an associated service level and an associated target I/O response time range corresponding to the second node in the third level.

3. The method of claim 2 , wherein said second processing includes:

partitioning the target I/O response time range of the associated one of the plurality of IGSLs for said each initiator group into a plurality of subranges;

specifying a plurality of port group service levels (PGSLs) for the plurality of port groups, wherein each of the plurality of subranges is assigned to a different one of the PGSLs for one of the plurality of port groups represented by one of the nodes of the second level of the hierarchy;

for each of the plurality of port groups having an associated one of the plurality of PGSLs, partitioning one of the plurality of subranges that is assigned to the associated one of the plurality of PGSLs into a second plurality of subranges; and

specifying a plurality of storage group service levels (SGSLs) for the plurality of storage groups, wherein each of the second plurality of subranges is assigned to a different one of the SGSLs for one of the plurality of storage groups represented by one node of the third level in the hierarchy.

4. The method of claim 3 , wherein the subranges of the plurality do not overlap one another.

5. The method of claim 3 , wherein each of the plurality of subranges is a same size.

6. The method of claim 3 , wherein the subranges of the second plurality do not overlap one another.

7. The method of claim 3 , wherein each of the second plurality of subranges is a same size.

8. The method of claim 1 , wherein each of the plurality of triples represents a path or connection between an initiator port of the one initiator group and a target port of the one port group, and wherein one or more storage objects of the one storage group are accessible for I/O operations over the path or connection.

9. The method of claim 1 , wherein the plurality of initiator groups includes a plurality of initiator ports of a plurality of hosts.

10. A method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level, and wherein the method further comprises:

determining to assign service levels to I/O operations based on storage group service levels (SGSLs); and

responsive to determining to assign service levels based on the SGSLs, performing first processing that creates the table of the plurality of service levels based on SGSLs, the first processing including:

specifying a plurality of SGSLs for the plurality of storage groups, wherein each of the plurality of SGSLs identifies a target I/O response time range for one of the plurality of storage groups; and

for each of the plurality of storage groups having an associated one of the plurality of SGSLs, performing second processing that creates a hierarchy including three levels of nodes, said each storage group is represented as a root node at a first level of the hierarchy, wherein the hierarchy includes a first plurality of nodes at a second level of the hierarchy that are children of the root node, wherein each node in the second level represents one of the plurality of port groups, wherein each node in the second level that represents one of the plurality of port groups has a plurality of child nodes included in a third level of the hierarchy, wherein each node in the third level represents one of the plurality of initiator groups, wherein a path from the root node to a second node in the third level denotes one of the plurality of triples having an associated service level and an associated target I/O response time range corresponding to the second node in the third level.

11. The method of claim 10 , wherein said second processing includes:

partitioning the target I/O response time range of the associated one of the plurality of SGSLs for said each storage group into a plurality of subranges;

specifying a plurality of port group service levels (PGSLs) for the plurality of port groups, wherein each of the plurality of subranges is assigned to a different one of the PGSLs for one of the plurality of port groups represented by one of the nodes of the second level of the hierarchy;

for each of the plurality of port groups having an associated one of the plurality of PGSLs, partitioning one of the plurality of subranges that is assigned to the associated one of the plurality of PGSLs into a second plurality of subranges; and

specifying a plurality of initiator group service levels (IGSLs) for the plurality of initiator groups, wherein each of the second plurality of subranges is assigned to a different one of the IGSLs for one of the plurality of initiator groups represented by a node of the third level in the hierarchy.

12. The method of claim 11 , wherein the subranges of the plurality do not overlap one another.

13. The method of claim 11 , wherein each of the plurality of subranges is a same size.

14. The method of claim 11 , wherein the subranges of the second plurality do not overlap one another.

15. The method of claim 11 , wherein each of the second plurality of subranges is a same size.

16. The method of claim 2 , wherein the target I/O response time ranges of the IGSLs form a contiguous non-overlapping I/O response time range.

17. The method of claim 1 , further comprising:

receiving an input that indicates whether to assign service levels to I/O operations based on initiator group service levels (IGSLs) or based on storage group service levels (SGSLs);

responsive to the input indicating to assign service levels to I/O operations based on IGSLs, using a first table as the table for assigning service levels to I/O operations, wherein the first table is generated using a top down approach in which IGSLs are specified and used to determine port group service levels (PGSLs) for the plurality of port groups within each of the IGSLs, and wherein each of the PGSLs for one of the plurality of port groups is used to determine SGSLs for the plurality of storage groups within each of the PGSLs, and wherein each of the SGSLs denotes one of the plurality of service levels associated with one of the plurality of triples; and

responsive to the input indicating to assign service levels to I/O operations based on SGSLs, using a second table as the table for assigning service levels to I/O operations, wherein the second table is generated using a bottom up approach in which SGSLs are specified and used to determine PGSLs for the plurality of port groups within each of the SGSLs, and wherein each of the PGSLs for one of the plurality of port groups is used to determine IGSLs for the plurality of initiator groups within each of the PGSLs, and wherein each of the IGSLs denotes one of the plurality of service levels associated with one of the plurality of triples.

18. A system comprising:

one or more processors; and

one or more memories comprising code stored thereon that, when executed, performs a method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

responsive to the first target port of the data storage system receiving the I/O operation, the data storage system assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples and denotes a target level of I/O response time performance for said one triple, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein the first service level denotes a target I/O response time for servicing the I/O operation, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level.

19. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

responsive to the first target port of the data storage system receiving the I/O operation, the data storage system assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples and denotes a target level of I/O response time performance for said one triple, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein the first service level denotes a target I/O response time for servicing the I/O operation, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level.

20. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level; and wherein the method further includes:

determining that service levels are assigned to I/O operations based on initiator group service levels (IGSLs); and

responsive to determining that service levels are assigned to I/O operations based on the IGSLs, performing first processing that creates the table of the plurality of service levels based on IGSLs, the first processing including:

specifying a plurality of IGSLs for the plurality of initiator groups, wherein each of the plurality of IGSLs identifies a target I/O response time range for one of the plurality of initiator groups; and

for each of the plurality of initiator groups having an associated one of the plurality of IGSLs, performing second processing that creates a hierarchy including three levels of nodes, said each initiator group is represented as a root node at a first level of the hierarchy, wherein the hierarchy includes a first plurality of nodes at a second level of the hierarchy that are children of the root node, wherein each node in the second level represents one of the plurality of port groups, wherein each node in the second level that represents one of the plurality of port groups has a plurality of child nodes included in a third level of the hierarchy, wherein each node in the third level represents one of the plurality of storage groups, wherein a path from the root node to a second node in the third level denotes one of the plurality of triples having an associated service level and an associated target I/O response time range corresponding to the second node in the third level.

21. A system comprising:

one or more processors; and

one or more memories comprising code stored thereon that, when executed, performs a method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level; and wherein the method further includes:

determining that service levels are assigned to I/O operations based on initiator group service levels (IGSLs); and

responsive to determining that service levels are assigned to I/O operations based on the IGSLs, performing first processing that creates the table of the plurality of service levels based on IGSLs, the first processing including:

specifying a plurality of IGSLs for the plurality of initiator groups, wherein each of the plurality of IGSLs identifies a target I/O response time range for one of the plurality of initiator groups; and

for each of the plurality of initiator groups having an associated one of the plurality of IGSLs, performing second processing that creates a hierarchy including three levels of nodes, said each initiator group is represented as a root node at a first level of the hierarchy, wherein the hierarchy includes a first plurality of nodes at a second level of the hierarchy that are children of the root node, wherein each node in the second level represents one of the plurality of port groups, wherein each node in the second level that represents one of the plurality of port groups has a plurality of child nodes included in a third level of the hierarchy, wherein each node in the third level represents one of the plurality of storage groups, wherein a path from the root node to a second node in the third level denotes one of the plurality of triples having an associated service level and an associated target I/O response time range corresponding to the second node in the third level.

22. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level, and wherein the method further comprises:

determining to assign service levels to I/O operations based on storage group service levels (SGSLs); and

responsive to determining to assign service levels based on the SGSLs, performing first processing that creates the table of the plurality of service levels based on SGSLs, the first processing including:

specifying a plurality of SGSLs for the plurality of storage groups, wherein each of the plurality of SGSLs identifies a target I/O response time range for one of the plurality of storage groups; and

for each of the plurality of storage groups having an associated one of the plurality of SGSLs, performing second processing that creates a hierarchy including three levels of nodes, said each storage group is represented as a root node at a first level of the hierarchy, wherein the hierarchy includes a first plurality of nodes at a second level of the hierarchy that are children of the root node, wherein each node in the second level represents one of the plurality of port groups, wherein each node in the second level that represents one of the plurality of port groups has a plurality of child nodes included in a third level of the hierarchy, wherein each node in the third level represents one of the plurality of initiator groups, wherein a path from the root node to a second node in the third level denotes one of the plurality of triples having an associated service level and an associated target I/O response time range corresponding to the second node in the third level.

23. A system comprising:

one or more processors; and

one or more memories comprising code stored thereon that, when executed, performs a method of determining service levels comprising:

receiving an I/O operation at a first target port of a data storage system, wherein the I/O operation is sent from a first initiator port of a host and wherein the I/O operation is directed to a first storage object in a first storage group of a plurality of storage groups, wherein the first initiator port is included in a first initiator group of a plurality of initiator groups, and wherein the first target port is included in a first port group of a plurality of port groups; and

assigning the I/O operation a first service level using a table of a plurality service levels for a plurality of triples, wherein each of the plurality of service levels is associated with one of the plurality of triples, wherein each of the plurality of triples identifies one of the plurality of initiator groups, one of the plurality of storage groups and one of the plurality of port groups, wherein said assigning includes:

determining a first triple of the plurality of triples that matches the first storage group, the first initiator group and the first port group, wherein the first triple is associated with the first service level, and wherein the method further comprises:

determining to assign service levels to I/O operations based on storage group service levels (SGSLs); and

responsive to determining to assign service levels based on the SGSLs, performing first processing that creates the table of the plurality of service levels based on SGSLs, the first processing including:

specifying a plurality of SGSLs for the plurality of storage groups, wherein each of the plurality of SGSLs identifies a target I/O response time range for one of the plurality of storage groups; and

for each of the plurality of storage groups having an associated one of the plurality of SGSLs, performing second processing that creates a hierarchy including three levels of nodes, said each storage group is represented as a root node at a first level of the hierarchy, wherein the hierarchy includes a first plurality of nodes at a second level of the hierarchy that are children of the root node, wherein each node in the second level represents one of the plurality of port groups, wherein each node in the second level that represents one of the plurality of port groups has a plurality of child nodes included in a third level of the hierarchy, wherein each node in the third level represents one of the plurality of initiator groups, wherein a path from the root node to a second node in the third level denotes one of the plurality of triples having an associated service level and an associated target I/O response time range corresponding to the second node in the third level.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053574/0221) Recorded Jun 10, 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
Reel/Frame 060333/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053578/0183) Recorded Jun 10, 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
Reel/Frame 060332/0864 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053573/0535) Recorded Jun 10, 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
Reel/Frame 060333/0106 →
RELEASE OF SECURITY INTEREST AT REEL 053531 FRAME 0108 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0371 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053578/0183 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053573/0535 →
SECURITY INTEREST Recorded Aug 21, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 053574/0221 →
SECURITY AGREEMENT Recorded Aug 18, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 053531/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2020
From: JUNG, JAEYOO; CHALLA, NARASIMHA R.; RANDOLPH, BENJAMIN A.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053173/0437 →