# US 10,482,023 B1 · I/O path optimization based on cache slot location

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,482,023 B1
- Document ID: US10482023B1
- Status: Granted
- Kind: B1
- Application number: 15/279,787
- Filed: 2016-09-29
- Granted: 2019-11-19
- Earliest claimed: 2016-09-29
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Douglas E. LeCrone; Paul A. Linstead
- Web page: https://patentgrep.com/patent/US10482023B1

## CPC

- G06F 12/0888: using selective caching, e.g. bypass
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 12/0813: with a network or matrix configuration
- G06F 12/0873: Mapping of cache memory to specific storage devices or parts thereof
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 2212/1016: Performance improvement
- G06F 2212/152: Virtualized environment, e.g. logically partitioned system
- G06F 2212/154: Networked environment
- G06F 2212/261: Storage comprising a plurality of storage devices
- G06F 2212/263: Network storage, e.g. SAN or NAS
- G06F 2212/313: In storage device
- G06F 2212/507: using speculative control
- G06F 2212/604: Details relating to cache allocation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Processing an I/O operation may include the host selecting one of the available paths over which to send each I/O operation to the data storage system. The selected path may be to a particular director that has responsibility for cache slot allocation and locally accessing the cache slot predicted to include the data of the I/O operation. The host may understand the cache slot allocation algorithm used on the data storage system and how cache slots are allocated for particular logical devices and tracks or locations on the logical devices. The host may direct I/Os down a path to a particular director that has, or will allocate, the cache slot used for the I/Os. There may be multiple directors in a data storage system including a distributed global memory. Each director may locally access a group of cache slots and communicate over a fabric to access the distributed global memory.

## Claims

### Claim 1

A method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein said predicting, said determining and said sending are performed responsive to the I/O operation being a request that reads or writes a first amount of data that does not exceed a maximum size, and wherein responsive to determining the I/O operation exceeds a maximum size, sending the I/O operation to any one of a plurality of directors of the data storage system selected independent of which particular director of the plurality of directors is predicted by the cache slot allocation algorithm to locally access the first cache slot.

### Claim 2 (depends on 1)

The method of claim 1, wherein said predicting and said determining are performed by an I/O driver of the host.

### Claim 3 (depends on 1)

The method of claim 1, wherein the target address denotes a logical address or location on the logical device.

### Claim 4 (depends on 3)

The method of claim 3, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director.

### Claim 5 (depends on 4)

The method of claim 4, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions.

### Claim 6 (depends on 5)

The method of claim 5, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory.

### Claim 7

A method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory, and wherein each of the plurality of directors is configured to send all requests to access the distributed global memory over the fabric if processor utilization of said each director exceeds a maximum threshold utilization level.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
determining, by a first of the plurality of directors, that processor utilization of said first director exceeds the maximum threshold utilization level; and
responsive to determining that processor utilization of the first director exceeds the maximum threshold utilization level, issuing a request by said first director over the fabric to access first data stored in a first location of one of the plurality of global memory portions that is locally accessible to the first director.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
returning, over the fabric to said first director, first data stored in the first location of the one global memory portion that is locally accessible to the first director.

### Claim 10 (depends on 6)

The method of claim 6, wherein each of the plurality of directors is configured to send, over the fabric, requests that transfer an amount of data exceeding a defined maximum amount, wherein the requests access locations in the distributed global memory.

### Claim 11

A method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory wherein each of the plurality of directors is configured to send, over the fabric, requests that transfer an amount of data exceeding a defined maximum amount, wherein the requests access locations in the distributed global memory, and wherein the method further comprises:
determining, by a first of the plurality of directors, that a first request to access a first location in the distributed global memory transfers a first amount of data exceeding the defined maximum amount, wherein the first location denotes a global memory location of the distributed global memory and the global memory location is locally accessible to the first director; and
responsive to determining that the first amount exceeds the defined maximum amount, issuing the first request by the first director over the fabric.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
returning, over the fabric to the first director, first data stored in the first location denoting the global memory location.

### Claim 13

A method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory, and wherein the method further comprises:
determining whether the I/O operation accesses data spanning multiple cache slots of the cache of the data storage system, wherein each of the multiple cache slots is locally accessible to a different one of the plurality of directors;
responsive to determining the I/O operation accesses data spanning multiple cache slots each locally accessible to a different one of the plurality of directors, partitioning the I/O operation into multiple I/O operations wherein each of the multiple I/O operations accesses data of a different one of the multiple cache slots; and
issuing each of the multiple I/O operations accessing said different one of the multiple cache slots over a particular path to one of the plurality of directors that locally accesses said different one of the multiple cache slots.

### Claim 14

A non-transitory computer readable medium comprising code stored thereon that, when executed, performs method of processing an I/O operation comprising:
receiving, on a host, the I/O operation that reads or writes first metadata of a logical device having storage provisioned on a data storage system;
predicting, in accordance with an algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store the first metadata for the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein said predicting, said determining and said sending are performed responsive to the I/O operation being a request that reads or writes a first amount of data that does not exceed a maximum size, and wherein responsive to determining the I/O operation exceeds a maximum size, sending the I/O operation to any one of a plurality of directors of the data storage system selected independent of which particular director of the plurality of directors is predicted by the cache slot allocation algorithm to locally access the first cache slot.

### Claim 15

A system comprising:
a processor; and
a memory comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation that reads or writes first data stored on a data storage system;
predicting, in accordance with an algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store the first data;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein said predicting, said determining and said sending are performed responsive to the I/O operation being a request that reads or writes a first amount of data that does not exceed a maximum size, and wherein responsive to determining the I/O operation exceeds a maximum size, sending the I/O operation to any one of a plurality of directors of the data storage system selected independent of which particular director of the plurality of directors is predicted by the cache slot allocation algorithm to locally access the first cache slot.

### Claim 16

A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory, and wherein each of the plurality of directors is configured to send all requests to access the distributed global memory over the fabric if processor utilization of said each director exceeds a maximum threshold utilization level.

### Claim 17

A system comprising:
a processor; and
a memory comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory, and wherein each of the plurality of directors is configured to send all requests to access the distributed global memory over the fabric if processor utilization of said each director exceeds a maximum threshold utilization level.

### Claim 18

A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory wherein each of the plurality of directors is configured to send, over the fabric, requests that transfer an amount of data exceeding a defined maximum amount, wherein the requests access locations in the distributed global memory, and wherein the method further comprises:
determining, by a first of the plurality of directors, that a first request to access a first location in the distributed global memory transfers a first amount of data exceeding the defined maximum amount, wherein the first location denotes a global memory location of the distributed global memory and the global memory location is locally accessible to the first director; and
responsive to determining that the first amount exceeds the defined maximum amount, issuing the first request by the first director over the fabric.

### Claim 19

A system comprising:
a processor; and
a memory comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory wherein each of the plurality of directors is configured to send, over the fabric, requests that transfer an amount of data exceeding a defined maximum amount, wherein the requests access locations in the distributed global memory, and wherein the method further comprises:
determining, by a first of the plurality of directors, that a first request to access a first location in the distributed global memory transfers a first amount of data exceeding the defined maximum amount, wherein the first location denotes a global memory location of the distributed global memory and the global memory location is locally accessible to the first director; and
responsive to determining that the first amount exceeds the defined maximum amount, issuing the first request by the first director over the fabric.

### Claim 20

A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory, and wherein the method further comprises:
determining whether the I/O operation accesses data spanning multiple cache slots of the cache of the data storage system, wherein each of the multiple cache slots is locally accessible to a different one of the plurality of directors;
responsive to determining the I/O operation accesses data spanning multiple cache slots each locally accessible to a different one of the plurality of directors, partitioning the I/O operation into multiple I/O operations wherein each of the multiple I/O operations accesses data of a different one of the multiple cache slots; and
issuing each of the multiple I/O operations accessing said different one of the multiple cache slots over a particular path to one of the plurality of directors that locally accesses said different one of the multiple cache slots.

### Claim 21

A system comprising:
a processor; and
a memory comprising code stored thereon that, when executed, performs a method of processing an I/O operation comprising:
receiving, on a host, the I/O operation directed to a target location of a logical device having storage provisioned on a data storage system;
predicting, in accordance with a cache slot allocation algorithm used by the data storage system, a first cache slot of a cache of the data storage system, wherein the first cache slot is expected to be used to store cached data for the target location of the logical device;
determining, by the host, a director of the data storage system, wherein the director locally accesses the first cache slot of the cache of the data storage system; and
sending the I/O operation from the host to the data storage system over a path, said path being a physical connection from the host to the director of the data storage system, wherein the target address denotes a logical address or location on the logical device, wherein the cache slot allocation algorithm maps the logical device and logical address or location on the logical device to which the I/O operation is directed to the first cache slot, and wherein the first cache slot is included in a first global memory portion that is local with respect to the director, wherein the data storage system includes a plurality of directors comprising the director, the data storage system further including a distributed global memory comprising a plurality of global memory portions including the first global memory portion, each of the plurality of directors locally accessing a different one of the plurality of global memory portions, and wherein the cache of the data storage system comprises groups of multiple cache slots, each of the groups of multiple cache slots being included in a different one of the global memory portions, wherein each of the plurality of directors is configured to communicate over a fabric to access the distributed global memory, and wherein the method further comprises:
determining whether the I/O operation accesses data spanning multiple cache slots of the cache of the data storage system, wherein each of the multiple cache slots is locally accessible to a different one of the plurality of directors;
responsive to determining the I/O operation accesses data spanning multiple cache slots each locally accessible to a different one of the plurality of directors, partitioning the I/O operation into multiple I/O operations wherein each of the multiple I/O operations accesses data of a different one of the multiple cache slots; and
issuing each of the multiple I/O operations accessing said different one of the multiple cache slots over a particular path to one of the plurality of directors that locally accesses said different one of the multiple cache slots.
