# US 12,112,040 B2 · Data movement intimation using input/output (I/O) queue management

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

- Number: US 12,112,040 B2
- Document ID: US12112040B2
- Status: Granted
- Kind: B2
- Application number: 17/403,673
- Filed: 2021-08-16
- Published: 2023-02-16
- Granted: 2024-10-08
- Earliest claimed: 2021-08-16
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Kushal S. Patel; Subhojit Roy; Ankur Srivastava; Sarvesh S. Patel
- Web page: https://patentgrep.com/patent/US12112040B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0649: {Lifecycle management}
- 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: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A computer-implemented method according to one embodiment includes causing a plurality of I/O queues to be created between an initiator and a storage target device. The created I/O queues are reserved for I/O requests for which adjustments of current priorities of extents of data associated with the I/O requests are to be performed. The method further includes determining identifying information of an I/O request sent from the initiator to the storage target device and determining whether the I/O request was sent from the initiator to the storage target device using one of the created I/O queues. In response to a determination that the I/O request was sent using a first of the created I/O queues having one of the adjustments associated therewith, a tiering manager of the storage target device is instructed to perform the adjustment on the current priority of the extent of data associated with the I/O request.

## Claims

### Claim 1

A computer-implemented method, comprising:
causing a plurality of nonvolatile memory express (NVMe) I/O queues to be created between an initiator and a storage target device,
wherein a first subset of the created I/O queues are priority adjustment I/O queues that are reserved for I/O requests for which adjustments of current priorities of extents of data associated with the I/O requests are to be performed,
wherein the adjustments are based on anticipated demand(s) and/or anticipated lack of demand(s), in a predetermined future period of time, for the extents of data associated with the I/O requests,
wherein a second subset of the created I/O queues are used for I/O requests for regular I/O operations, the I/O queues in the second subset being different than the I/O queues in the first subset;
determining identifying information of an I/O request sent from the initiator to the storage target device,
wherein the I/O request is sent from the initiator to the storage target device using an in-band protocol command in which direct communication occurs between the initiator and the storage target device;
determining, using the identifying information, whether the I/O request was sent from the initiator to the storage target device using only one of the created priority adjustment I/O queues and none of the other created I/O queues; and
in response to a determination that the I/O request was sent from the initiator to the storage target device using only a first of the created priority adjustment I/O queues and none of the other created I/O queues, having one of the adjustments associated therewith, instructing a tiering manager of the storage target device to perform the adjustment on the current priority of the extent of data associated with the I/O request,
wherein the instruction to the tiering manager specifies a numerical multiplier to apply to a current heat extent of the current priority of the extent of data.

### Claim 2 (depends on 1)

The computer-implemented method as recited in claim 1, comprising: causing a logical map to be created, wherein the logical map identifies the created priority adjustment I/O queues and a plurality of characteristics, wherein the characteristics indicate how to adjust the current priorities of extents of data associated with the I/O requests.

### Claim 3 (depends on 2)

The computer-implemented method as recited in claim 2,
wherein determining, using the identifying information, whether the I/O request was sent from the initiator to the storage target device using only one of the created priority adjustment I/O queues and none of the other created I/O queues includes:
accessing the logical map, and
determining whether the identifying information of the I/O request maps to one of the created priority adjustment I/O queues,
wherein a determination is made that the I/O request was sent from the initiator to the storage target device using only the first of the created priority adjustment I/O queues and none of the other created I/O queues in response to a determination that the identifying information of the I/O request maps to the first of the created priority adjustment I/O queues.

### Claim 4 (depends on 3)

The computer-implemented method as recited in claim 3, wherein the adjustment includes promoting the extent of data to a higher storage tier of a tiered data storage pool of the storage target device.

### Claim 5 (depends on 4)

The computer-implemented method as recited in claim 4, wherein the extent of data is promoted multiple storage tiers of the tiered data storage pool during the promotion to the higher storage tier.

### Claim 6 (depends on 3)

The computer-implemented method as recited in claim 3, wherein the adjustment includes updating a current tiering weightage of a heat map of a tiered data storage pool of the storage target device.

### Claim 7 (depends on 6)

The computer-implemented method as recited in claim 6, wherein the instruction to the tiering manager specifies that the numerical multiplier be applied out of a current tiering cycle such that the priority is adjusted before a predetermined tiering cycle ends.

### Claim 8 (depends on 1)

The computer-implemented method as recited in claim 1, wherein the identifying information indicates whether an application from which the I/O request originates is associated with a relatively heightened degree of predetermined priority, wherein the application is determined to be associated with the relatively heightened degree of predetermined priority in response to a determination that the application pays relatively more for storage than other applications, wherein the tiering manager is instructed to perform the adjustment by promoting the current priority of the extent of data associated with the I/O request in response to a determination that the application the application is associated with the relatively heightened degree of predetermined priority.

### Claim 9

A computer program product, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions readable and/or executable by a computer to cause the computer to:
cause, by the computer, a plurality of nonvolatile memory express (NVMe) I/O queues to be created between an initiator and a storage target device,
wherein a first subset of the created I/O queues are priority adjustment I/O queues that are reserved for I/O requests for which adjustments of current priorities of extents of data associated with the I/O requests are to be performed,
wherein the adjustments are based on anticipated demand(s) and/or anticipated lack of demand(s), in a predetermined future period of time, for the extents of data associated with the I/O requests,
wherein a second subset of the created I/O queues are used for I/O requests for regular I/O operations, the I/O queues in the second subset being different than the I/O queues in the first subset;
determine, by the computer, identifying information of an I/O request sent from the initiator to the storage target device,
wherein the I/O request is sent from the initiator to the storage target device using an in-band protocol command in which direct communication occurs between the initiator and the storage target device;
determine, by the computer, using the identifying information, whether the I/O request was sent from the initiator to the storage target device using only one of the created priority adjustment I/O queues and none of the other created I/O queues; and
in response to a determination that the I/O request was sent from the initiator to the storage target device using only a first of the created priority adjustment I/O queues and none of the other created I/O queues, having one of the adjustments associated therewith, instruct, by the computer, a tiering manager of the storage target device to perform the adjustment on the current priority of the extent of data associated with the I/O request.

### Claim 10 (depends on 9)

The computer program product as recited in claim 9, the program instructions readable and/or executable by the computer to cause the computer to: cause, by the computer, a logical map to be created, wherein the logical map identifies the created priority adjustment I/O queues and a plurality of characteristics, wherein the characteristics indicate how to adjust the current priorities of extents of data associated with the I/O requests.

### Claim 11 (depends on 10)

The computer program product as recited in claim 10,
wherein determining, using the identifying information, whether the I/O request was sent from the initiator to the storage target device using one of the created priority adjustment I/O queues includes:
accessing the logical map, and
determining whether the identifying information of the I/O request maps to one of the created priority adjustment I/O queues,
wherein a determination is made that the I/O request was sent from the initiator to the storage target device using the first of the created priority adjustment I/O queues in response to a determination that the identifying information of the I/O request maps to the first of the created priority adjustment I/O queues.

### Claim 12 (depends on 11)

The computer program product as recited in claim 11, wherein the adjustment is selected from the group consisting of: promoting the extent of data to a higher storage tier of a tiered data storage pool of the storage target device, and demoting the extent of data to a lower storage tier of the tiered data storage pool.

### Claim 13 (depends on 11)

The computer program product as recited in claim 11, wherein the adjustment includes demoting the extent of data to a lower storage tier of a tiered data storage pool of the storage target device, wherein the extent of data is demoted multiple storage tiers of the tiered data storage pool.

### Claim 14 (depends on 11)

The computer program product as recited in claim 11, wherein the adjustment includes updating a current tiering weightage of a heat map of a tiered data storage pool of the storage target device.

### Claim 15 (depends on 14)

The computer program product as recited in claim 14, wherein the instruction to the tiering manager specifies a numerical multiplier to apply to a current heat extent of the current priority of the extent of data, wherein the instruction to the tiering manager specifies that the numerical multiplier be applied out of a current tiering cycle such that the priority is adjusted before a predetermined tiering cycle ends.

### Claim 16 (depends on 9)

The computer program product as recited in claim 9, wherein the identifying information indicates whether an application from which the I/O request originates is associated with a relatively heightened degree of predetermined priority, wherein the application is determined to be associated with the relatively heightened degree of predetermined priority in response to a determination that the application pays relatively more for storage than other applications, wherein the tiering manager is instructed to perform the adjustment by promoting the current priority of the extent of data associated with the I/O request in response to a determination that the application the application is associated with the relatively heightened degree of predetermined priority.

### Claim 17

A system, comprising:
a processor; and
logic integrated with the processor, executable by the processor, or integrated with and executable by the processor, the logic being configured to:
cause a plurality of nonvolatile memory express (NVMe) I/O queues to be created between an initiator and a storage target device,
wherein a first subset of the created I/O queues are priority adjustment I/O queues that are reserved for I/O requests for which adjustments of current priorities of extents of data associated with the I/O requests are to be performed,
wherein the adjustments are based on anticipated demand(s) and/or anticipated lack of demand(s), in a predetermined future period of time, for the extents of data associated with the I/O requests,
wherein a second subset of the created I/O queues are used for sending regular operations from the initiator to the storage target device;
cause a logical map to be created,
wherein the logical map identifies the created priority adjustment I/O queues and a plurality of characteristics,
wherein the characteristics indicate how to adjust the current priorities of extents of data associated with the I/O requests,
determine identifying information of an I/O request sent from the initiator to the storage target device,
wherein the I/O request is sent from the initiator to the storage target device using an in-band protocol command in which direct communication occurs between the initiator and the storage target device;
determine, using the identifying information, whether the I/O request was sent from the initiator to the storage target device using one of the created priority adjustment I/O queues,
wherein determining, using the identifying information, whether the I/O request was sent from the initiator to the storage target device using one of the created priority adjustment I/O queues includes:
accessing the logical map, and
determining whether the identifying information of the I/O request maps to one of the created priority adjustment I/O queues,
wherein a determination is made that the I/O request was sent from the initiator to the storage target device using a first of the created priority adjustment I/O queues in response to a determination that the identifying information of the I/O request maps to the first of the created priority adjustment I/O queues; and
in response to a determination that the I/O request was sent from the initiator to the storage target device using the first of the created priority adjustment I/O queues having one of the adjustments associated therewith, instruct a tiering manager of the storage target device to perform the associated adjustment on the current priority of the extent of data associated with the I/O request.

### Claim 18 (depends on 2)

The computer-implemented method as recited in claim 2, wherein each created priority adjustment I/O queue is associated with only one of the adjustments.

### Claim 19 (depends on 18)

The computer-implemented method as recited in claim 18, wherein the adjustments include promotion and demotion, wherein created priority adjustment I/O queues that are associated with promotion adjustments are not used to send I/O requests associated with demotion adjustments, wherein created priority adjustment I/O queues that are associated with demotion adjustments are not used to send I/O requests associated with promotion adjustments.

### Claim 20 (depends on 19)

The computer-implemented method as recited in claim 19, wherein the regular I/O requests are requests that are not associated with changes to current priorities of extents of data, wherein the instruction to the tiering manager specifies a numerical count to apply to the current heat extent of the current priority of the extent of data to perform the adjustment, wherein applying the numerical count to the current heat extent of the current priority of the extent of data includes averaging the numerical count with an existing value of the current heat extent of the current priority of the extent of data, wherein the tiering manager is only instructed to perform the adjustment in response to a determination that a predetermined tiering threshold of the logical map is met, wherein the predetermined tiering threshold is unique to an application from which the I/O request originates, wherein the predetermined tiering threshold specifies that the extent of data be at least a predetermined size and a predetermined type of data, and comprising: determining the anticipated demand(s) and/or anticipated lack of demand(s) in the predetermined future period of time, wherein the anticipated demand(s) and/or anticipated lack of demand(s) are determined based on past user information that is collected by an NVMe driver of a host site.
