# US 12,001,679 B2 · Storage system configured to collaborate with host device to provide fine-grained throttling of input-output operations

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

- Number: US 12,001,679 B2
- Document ID: US12001679B2
- Status: Granted
- Kind: B2
- Application number: 17/709,557
- Filed: 2022-03-31
- Published: 2023-10-05
- Granted: 2024-06-04
- Earliest claimed: 2022-03-31
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Sanjib Mallick; Vinay G. Rao; Arieh Don
- Web page: https://patentgrep.com/patent/US12001679B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- 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: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An apparatus comprises a processing device configured to detect an input-output (IO) pressure condition relating to at least one logical storage volume of a storage system, to receive IO operations directed to the at least one logical storage volume, to extract processing entity identifiers from respective ones of the received IO operations, and to perform IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers. For example, a first group of one or more of the IO operations each having a first processing entity identifier may be subject to the IO throttling, while a second group of one or more of the IO operations each having a second processing entity identifier different than the first processing entity identifier is not subject to the IO throttling. Other differences in IO throttling can be implemented using the extracted processing entity identifiers.

## Claims

### Claim 1

An apparatus comprising:
at least one processing device comprising a processor coupled to a memory;
the at least one processing device being configured:
to detect in a storage system an input-output (IO) pressure condition relating to at least one logical storage volume of the storage system, the storage system comprising one or more storage nodes;
to receive in the storage system, from at least one host device over a network, IO operations directed to the at least one logical storage volume, the at least one host device being implemented on one or more compute nodes each of which is separate and distinct from the one or more storage nodes of the storage system, the at least one host device being configured to generate the IO operations and to send the IO operations to the storage system over the network, the storage system being configured to receive the IO operations generated and sent by the at least one host device over the network and to process the received IO operations including performing IO throttling for the received IO operations;
to extract in the storage system processing entity identifiers from respective ones of the received IO operations, the processing entity identifiers identifying respective different ones of a plurality of distinct components of the at least one host device that were utilized in generating respective corresponding ones of the IO operations; and
to perform in the storage system IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers;
wherein performing IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers comprises performing the IO throttling in the storage system for a first IO operation directed to a given one of the one or more logical storage volumes from one processing entity of the at least one host device, while at least in part concurrently not performing the IO throttling in the storage system for a second IO operation directed to the same given logical storage volume from another processing entity of the at least one host device.

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein a first group of one or more of the IO operations each having a first processing entity identifier is subject to the IO throttling, and a second group of one or more of the IO operations each having a second processing entity identifier different than the first processing entity identifier is not subject to the IO throttling.

### Claim 3 (depends on 2)

The apparatus of claim 2 wherein the at least one processing device is further configured to identify the first group of one or more of the IO operations as being generated by a first processing entity on a first host device having a first host device identifier and to identify the second group of one or more of the IO operations as being generated by a second processing entity on a second host device having a second host device identifier different than the first host device identifier.

### Claim 4 (depends on 1)

The apparatus of claim 1 wherein the processing entity identifier of a given one of the IO operations comprises an identifier of a particular host device that generated the IO operation from a plurality of host devices that share the storage system.

### Claim 5 (depends on 1)

The apparatus of claim 1 wherein the processing entity identifier of a given one of the IO operations comprises an identifier of a particular host device processor that generated the IO operation on a host device that includes a plurality of host device processors.

### Claim 6 (depends on 1)

The apparatus of claim 1 wherein the processing entity identifier of a given one of the IO operations comprises an identifier of a particular virtual machine that generated the IO operation on a host device that includes a plurality of virtual machines.

### Claim 7 (depends on 1)

The apparatus of claim 1 wherein the processing entity identifier of a given one of the IO operations comprises an identifier of a particular processor virtualization container that generated the IO operation on a host device that includes a plurality of processor virtualization containers.

### Claim 8 (depends on 1)

The apparatus of claim 1 wherein the at least one processing device is further configured to interact with each of one or more host devices to execute a host device registration process that provides the storage system with identifiers of each of the one or more host devices.

### Claim 9 (depends on 8)

The apparatus of claim 8 wherein the at least one processing device is further configured in conjunction with execution of the host device registration process to determine identifiers of respective ones of a plurality of initiators of each of the one or more host devices.

### Claim 10 (depends on 8)

The apparatus of claim 8 wherein the at least one processing device is further configured to carry out the host device registration process with respective multi-path IO drivers of respective ones of a plurality of host devices to determine identifiers of the plurality of host devices.

### Claim 11 (depends on 8)

The apparatus of claim 8 wherein performing IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers comprises utilizing the identifiers of the one or more host devices in combination with the extracted processing entity identifiers to perform the IO throttling.

### Claim 12 (depends on 1)

The apparatus of claim 1 wherein performing IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers comprises:
applying a first type of IO throttling to a first group of one or more of the IO operations each having a first processing entity identifier; and
applying a second type of IO throttling different than the first type of IO throttling to a second group of one or more of the IO operations each having a second processing entity identifier different than the first processing entity identifier.

### Claim 13 (depends on 1)

The apparatus of claim 1 wherein detecting an IO pressure condition comprises one or more of:
detecting the IO pressure condition based at least in part on a determination that the one or more logical storage volumes each have a response time performance metric that exceeds a specified threshold; and
detecting the IO pressure condition based at least in part on at least one of a write count, a write pending count and a bandwidth consumption for each of the one or more logical storage volumes.

### Claim 14 (depends on 1)

The apparatus of claim 1 wherein extracting processing entity identifiers from respective ones of the received IO operations comprises extracting the processing entity identifiers from respective command descriptor blocks of the received IO operations.

### Claim 15

A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by at least one processing device comprising a processor coupled to a memory, causes the at least one processing device:
to detect in a storage system an input-output (IO) pressure condition relating to at least one logical storage volume of the storage system, the storage system comprising one or more storage nodes;
to receive in the storage system, from at least one host device over a network, IO operations directed to the at least one logical storage volume, the at least one host device being implemented on one or more compute nodes each of which is separate and distinct from the one or more storage nodes of the storage system, the at least one host device being configured to generate the IO operations and to send the IO operations to the storage system over the network, the storage system being configured to receive the IO operations generated and sent by the at least one host device over the network and to process the received IO operations including performing IO throttling for the received IO operations;
to extract in the storage system processing entity identifiers from respective ones of the received IO operations, the processing entity identifiers identifying respective different ones of a plurality of distinct components of the at least one host device that were utilized in generating respective corresponding ones of the IO operations; and
to perform in the storage system IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers;
wherein performing IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers comprises performing the IO throttling in the storage system for a first IO operation directed to a given one of the one or more logical storage volumes from one processing entity of the at least one host device, while at least in part concurrently not performing the IO throttling in the storage system for a second IO operation directed to the same given logical storage volume from another processing entity of the at least one host device.

### Claim 16 (depends on 15)

The computer program product of claim 15 wherein a first group of one or more of the IO operations each having a first processing entity identifier is subject to the IO throttling, and a second group of one or more of the IO operations each having a second processing entity identifier different than the first processing entity identifier is not subject to the IO throttling.

### Claim 17 (depends on 16)

The computer program product of claim 16 wherein the first group of one or more of the IO operations is identified as being generated by a first processing entity on a first host device having a first host device identifier and the second group of one or more of the IO operations is identified as being generated by a second processing entity on a second host device having a second host device identifier different than the first host device identifier.

### Claim 18

A method comprising:
detecting in a storage system an input-output (IO) pressure condition relating to at least one logical storage volume of the storage system, the storage system comprising one or more storage nodes;
receiving in the storage system, from at least one host device over a network, IO operations directed to the at least one logical storage volume, the at least one host device being implemented on one or more compute nodes each of which is separate and distinct from the one or more storage nodes of the storage system, the at least one host device being configured to generate the IO operations and to send the IO operations to the storage system over the network, the storage system being configured to receive the IO operations generated and sent by the at least one host device over the network and to process the received IO operations including performing IO throttling for the received IO operations;
extracting in the storage system processing entity identifiers from respective ones of the received IO operations, the processing entity identifiers identifying respective different ones of a plurality of distinct components of the at least one host device that were utilized in generating respective corresponding ones of the IO operations; and
performing in the storage system IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers;
wherein performing IO throttling for the at least one logical storage volume based at least in part on the extracted processing entity identifiers comprises performing the IO throttling in the storage system for a first IO operation directed to a given one of the one or more logical storage volumes from one processing entity of the at least one host device, while at least in part concurrently not performing the IO throttling in the storage system for a second IO operation directed to the same given logical storage volume from another processing entity of the at least one host device.

### Claim 19 (depends on 18)

The method of claim 18 wherein a first group of one or more of the IO operations each having a first processing entity identifier is subject to the IO throttling, and a second group of one or more of the IO operations each having a second processing entity identifier different than the first processing entity identifier is not subject to the IO throttling.

### Claim 20 (depends on 19)

The method of claim 19 wherein the first group of one or more of the IO operations is identified as being generated by a first processing entity on a first host device having a first host device identifier and the second group of one or more of the IO operations is identified as being generated by a second processing entity on a second host device having a second host device identifier different than the first host device identifier.

### Claim 21 (depends on 18)

The method of claim 18 wherein the IO throttling is performed in the storage system by the storage system altering a manner in which it handles one of the first and second IO operations relative to a manner in which it handles the other of the first and second IO operations even though both the first IO operation and the second IO operation are directed to the same given logical storage volume.
