# US 11,442,629 B2 · I/O performance in a storage system

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

- Number: US 11,442,629 B2
- Document ID: US11442629B2
- Status: Granted
- Kind: B2
- Application number: 16/929,227
- Filed: 2020-07-15
- Published: 2022-01-20
- Granted: 2022-09-13
- Earliest claimed: 2020-07-15
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Sanjay Tripathi; Kushal S. Patel; Rohan Mohan Salvi; Sarvesh S. Patel
- Web page: https://patentgrep.com/patent/US11442629B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 3/0607: {by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer-implemented method to reduce Input/Output (I/O) command latency. The method includes receiving, by a first storage pool, a plurality of I/O commands, wherein the first storage pool includes a first throttling limit, and the first throttling limit. The method further includes determining a first processing rate of the first storage pool is at the first throttling limit. The method also includes determining a second processing rate of a second storage pool is below a second throttling limit, wherein the second storage pool is communicatively coupled to the first storage pool. The method includes sending, by the first storage pool to the second storage pool, one or more of the plurality of I/O commands. The method further includes processing, by the second storage pool, the one or more I/O commands of the plurality of I/O commands. The method includes returning processed I/O commands to the host.

## Claims

### Claim 1

A computer-implemented method to reduce Input/Output (I/O) command latency comprising:
receiving, by a first storage pool from a first host, a plurality of I/O commands, wherein:
the first storage pool includes a first throttling limit;
the first throttling limit represents an amount of processing capacity of the first storage pool allotted to the first host and the first throttling limit is configured to ensure a minimum processing capacity allotted to the second host is available to the second host; and
the first throttling limit is less than the total processing capacity of the first storage pool;
determining a first processing rate of the first storage pool is at the first throttling limit, wherein the first throttling limit is configured to either limit resources used by the first host;
determining a second processing rate of a second storage pool is below a second throttling limit, wherein the second storage pool is communicatively coupled to the first storage pool;
sending, in response to the first storage pool being at the first throttling limit, by the first storage pool to the second storage pool, one or more of the plurality of I/O commands;
processing, by the second storage pool, the one or more I/O commands of the plurality of I/O commands; and
returning, in response to the processing, processed I/O commands to the first host.

### Claim 2 (depends on 1)

The method of claim 1 further comprising:
storing, in response determining the first storage pool is at the first throttling limit, the plurality of I/O commands in an I/O queue.

### Claim 3 (depends on 2)

The method of claim 2 further comprising:
calculating a first latency, wherein the first latency represents a processing time to process the plurality of I/O commands at the first storage pool;
calculating a second latency, wherein the second latency represents the latency to process the plurality of I/O commands at the second storage pool; and
determining, the second latency is less than the first latency; and
wherein the sending is in response to determining the second latency is less than the first latency.

### Claim 4 (depends on 3)

The method of claim 3, wherein the first latency includes a predicted time the plurality of I/O commands will spend waiting in the I/O queue.

### Claim 5 (depends on 1)

The method of claim 1 wherein:
the plurality of I/O commands is received by a first storage controller for the first storage pool via a first network path, wherein the first network path starts at the first host and ends at the first storage pool;
the sending of the one or more I/O commands of the plurality of I/O commands to a second storage controller for the second storage pool is via a second network path, wherein the second network path starts at the first storage pool and ends at the second storage pool; and
the returning of the processed I/O commands to the first host is via a third network path, wherein the third network path starts at the second storage pool and ends at the first host.

### Claim 6 (depends on 5)

The method of claim 5, wherein the first network path does not pass through the second storage controller of the second storage pool, the third network path does not pass through the first storage controller of the first storage pool, and the second network path passes through the first storage controller and the second storage controller.

### Claim 7 (depends on 1)

The method of claim 1, wherein the first throttling limit is greater than the second throttling limit.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first storage pool and the second pool are part of a multi-site storage system.

### Claim 9 (depends on 1)

The method of claim 1 wherein the first throttling is based on a number of I/Os per second (IOPS).

### Claim 10 (depends on 1)

The method of claim 1, wherein the first throttling limit is based on a number of megabytes per second (MBPS).

### Claim 11

A system to reduce Input/Output (I/O) latency comprising:
a processor;
a multi pool storage system including a first storage pool and a second storage pool; and
a computer-readable storage medium communicatively coupled to the processor and storing program instructions which, when executed by the processor, are configured to cause the processor to:
receive, by a first storage pool from a first host, a plurality of I/O commands, wherein:
the first storage pool includes a first throttling limit; the first throttling limit represents an amount of processing capacity of the first storage pool allotted to the first host and the first throttling limit is configured to ensure a minimum processing capacity allotted to the second host is available to the second host; and
the first throttling limit is less than the total processing capacity of the first storage pool;
determine a first processing rate of the first storage pool is at the first throttling limit, wherein the first throttling limit is configured to either limit resources used by the first host;
determine a second processing rate of the second storage pool is below a second throttling limit, wherein the second storage pool is communicatively coupled to the first storage pool;
send, in response to the first storage pool being at the first throttling limit, by the first storage pool to the second storage pool, one or more of the plurality of I/O commands;
process, by the second storage pool, the one or more I/O commands of the plurality of I/O commands; and
return, in response to the processing, processed I/O commands to the first host.

### Claim 12 (depends on 11)

The system of claim 11, wherein the program instructions are further configured to cause the processor to:
store, in response determining the first storage pool is at the first throttling limit, the plurality of I/O commands in an I/O queue.

### Claim 13 (depends on 12)

The system of claim 12, wherein the program instructions are further configured to cause the processor to:
calculate a first latency, wherein the first latency represents a processing time to process the plurality of I/O commands at the first storage pool;
calculate a second latency, wherein the second latency represents the latency to process the plurality of I/O commands at the second storage pool; and
determine, the second latency is less than the first latency, wherein the sending is in response to determining the second latency is less than the first latency.

### Claim 14 (depends on 13)

The system of claim 13, wherein the first latency includes a predicted time the plurality of I/O commands will spend waiting in the I/O queue.

### Claim 15 (depends on 11)

The system of claim 11, wherein:
the plurality of I/O commands are received by a first storage controller for the first storage pool via a first network path, wherein the first network path starts at the first host and ends at the first storage pool;
the one or more I/O commands of the plurality of I/O commands are sent to a second storage controller for the second storage pool is via a second network path, wherein the second network path starts at the first storage pool and ends at the second storage pool; and
the processed I/O commands are returned to the first host is via a third network path wherein the third network path starts at the second storage pool and ends at the first host.

### Claim 16

A computer program product to reduce Input/Output (I/O) latency, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processing unit to cause the processing unit to:
receive, by a first storage pool from a first host, a plurality of I/O commands, wherein: the first storage pool includes a first throttling limit; the first throttling limit represents an amount of processing capacity of the first storage pool allotted to the first host and the first throttling limit is configured to ensure a minimum processing capacity allotted to the second host is available to the second host; and
the first throttling limit is less than the total processing capacity of the first storage pool;
determine a first processing rate of the first storage pool is at the first throttling limit, wherein the first throttling limit is configured to either limit resources used by the first host;
determine a second processing rate of the second storage pool is below a second throttling limit, wherein the second storage pool is communicatively coupled to the first storage pool;
send, in response to the first storage pool being at the first throttling limit, by the first storage pool to the second storage pool, one or more of the plurality of I/O commands;
process, by the second storage pool, the one or more I/O commands of the plurality of I/O commands; and
return, in response to the processing, processed I/O commands to the first host.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the program instructions are further configured to cause the processing unit to:
store, in response determining the first storage pool is at the first throttling limit, the plurality of I/O commands in an I/O queue.

### Claim 18 (depends on 17)

The computer program product of claim 17, wherein the program instructions are further configured to cause the processing unit to:
calculate a first latency, wherein the first latency represents a processing time to process the plurality of I/O commands at the first storage pool;
calculate a second latency, wherein the second latency represents the latency to process the plurality of I/O commands at the second storage pool; and
determine, the second latency is less than the first latency, wherein the sending is in response to determining the second latency is less than the first latency.

### Claim 19 (depends on 16)

The computer program product of claim of claim 16, wherein:
the plurality of I/O commands are received by a first storage controller for the first storage pool via a first network path, wherein the first network path starts at the first host and ends at the first storage pool;
the one or more I/O commands of the plurality of I/O commands are sent to a second storage controller for the second storage pool is via a second network path, wherein the second network path starts at the first storage pool and ends at the second storage pool; and
the processed I/O commands are returned to the first host is via a third network path, wherein the third network path starts at the second storage pool and ends at the first host.
