# US 2021/0240621 A1 · Cache management for sequential io operations

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

- Number: US 2021/0240621 A1
- Document ID: US20210240621A1
- Status: Published application
- Kind: A1
- Application number: 16/777,129
- Filed: 2020-01-30
- Published: 2021-08-05
- Earliest claimed: 2020-01-30
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company LLC
- Inventors: Jack Fu; Jaeyoo Jung; Arieh Don
- Web page: https://patentgrep.com/patent/US20210240621A1

## CPC

- G06F 12/084: with a shared cache
- G06F 12/0862: with prefetch
- G06F 2212/602: Details relating to cache prefetching
- G06F 2212/6026: Prefetching based on access pattern detection, e.g. stride based prefetch
- G06F 2212/604: Details relating to cache allocation
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A processing node of a storage system may determine that a host system is implementing a cache-slot aware, round-robin IO distribution algorithm (CA-RR). The processing node may be configured to determine when a sufficient number of sequential IOs will be received to consume a cache slot of the a processing node. If the processing node knows that the host system is implementing CA-RR, then, in response to determining the sufficient number, the processing node may send a communication informing the next processing node about the sequential cache slot hit. If the sequential IO operation(s) are read operation(s), the next processing node may prefetch at least a cache-slot worth of next consecutive data portions. If the sequential IO operation(s) are write operation(s), then the next processing node may request allocation of one or more local cache slots for the forthcoming sequential write operations.

## Claims

### Claim 1

For a storage system including a plurality of physical storage devices for storing data and a plurality of physically discrete storage processing nodes, each storage processing node including a compute component for executing logic to process IO operations and a memory, the memory including a cache segment for use as part of a shared cache distributed across the plurality of processing nodes, wherein the shared cache includes a plurality of cache slots, a method comprising:
receiving a first IO operation at a first of the plurality of storage processing nodes;
determining that at least a first quantity of next IO operations that will be received from a host system will be sequential IO operations;
determining a next storage processing node of the plurality of storage processing nodes that will receive IO operations from the host system; and
managing the shared cache to store data for at least a subset of the first quantity of next IO operations in a first cache slot located within the next storage processing node.

### Claim 2 (depends on 1)

The method of claim 1, wherein the next IO operations are write operations, and
wherein managing the shared cache includes allocating the first cache slot as a next cache slot to receive write data.

### Claim 3 (depends on 2)

The method of claim 2, wherein the next processing node requests that the first cache slot be allocated as the next cache slot to receive write data.

### Claim 4 (depends on 1)

The method of claim 1, wherein the next IO operations are read operations, and
wherein managing the shared cache includes prefetching data from one or more of the plurality of physical storage devices into the first cache slot.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining that at least a first quantity of next IO operations that will be received from a host system will be sequential IO operations includes accessing information included in the first IO operation indicative of the at least first quantity of next IO operations that will be received from a host system being sequential IO operations.

### Claim 6 (depends on 1)

The method of claim 1, wherein the host system is configured to distribute IO operations among the plurality of storage processing nodes according to a predefined order, and
wherein the storage system determines the next storage processing node based on the predefined order.

### Claim 7 (depends on 1)

The method of claim 1, wherein the first storage processing node informs the next storage processing node that the at least first quantity of next IO operations that will be received from a host system will be sequential IO operations.

### Claim 8

A storage system comprising:
a plurality of physical storage devices for storing data;
a plurality of physically discrete storage processing nodes, each storage processing node including a compute component for executing logic to process IO operations and a memory, the memory including a cache segment for use as part of a shared cache distributed across the plurality of processing nodes, wherein shared cache includes a plurality of cache slots,
and wherein the memory of one or more of the plurality of physically discrete storage processing nodes collectively has code thereon that, when executed, performs a method including:
receiving a first IO operation at a first of the plurality of storage processing nodes;
determining that at least a first quantity of next IO operations that will be received from a host system will be sequential IO operations from the host system;
determining a next storage processing node of the plurality of storage processing nodes that will receive IO operations from the host system; and
managing the shared cache to store data for at least a subset of the first quantity of next IO operations in a first cache slot located within the next storage processing node.

### Claim 9 (depends on 8)

The storage system of claim 8, wherein the next IO operations are write operations, and
wherein managing the shared cache includes allocating the first cache slot as a next cache slot to receive write data.

### Claim 10 (depends on 9)

The storage system of claim 9, wherein the next processing node requests that the first cache slot be allocated as the next cache slot to receive write data.

### Claim 11 (depends on 8)

The storage system of claim 8, wherein the next IO operations are read operations, and
wherein managing the shared cache includes prefetching data from one or more of the plurality of physical storage devices into the first cache slot.

### Claim 12 (depends on 8)

The storage system of claim 8, wherein determining that at least a first quantity of next IO operations that will be received from a host system will be sequential IO operations includes accessing information included in the first IO operation indicative of the at least first quantity of next IO operations that will be received from a host system being sequential IO operations.

### Claim 13 (depends on 8)

The storage system of claim 8, wherein the host system is configured to distribute IO operations among the plurality of storage processing nodes according to a predefined order, and
wherein the storage system determines the next storage processing node based on the predefined order.

### Claim 14 (depends on 8)

The storage system of claim 8, wherein the first storage processing node informs the next storage processing node that the at least first quantity of next IO operations that will be received from a host system will be sequential IO operations.

### Claim 15

For a storage system including a plurality of physical storage devices for storing data and a plurality of physically discrete storage processing nodes, each storage processing node including a compute component for executing logic to process IO operations and a memory, the memory including a cache segment for use as part of a shared cache distributed across the plurality of processing nodes, wherein the shared cache includes a plurality of cache slots, computer-readable media having software stored thereon, the software comprising:
executable code that controls receiving a first IO operation at a first of the plurality of storage processing nodes;
executable code that determines that at least a first quantity of next IO operations that will be received from a host system will be a sequential IO operation from the host system;
executable code that determines a next storage processing node of the plurality of storage processing nodes that will receive IO operations from the host system; and
executable code that manages the shared cache to store data for at least a subset of the first quantity of next IO operations in a first cache slot located within the next storage processing node.

### Claim 16 (depends on 15)

The computer-readable media of claim 15, wherein the next IO operations are write operations, and
wherein managing the shared cache includes allocating the first cache slot as a next cache slot to receive write data.

### Claim 17 (depends on 15)

The computer-readable media of claim 15, wherein the next IO operations are read operations, and
wherein managing the shared cache includes prefetching data from one or more of the plurality of physical storage devices into the first cache slot.

### Claim 18 (depends on 15)

The computer-readable media of claim 15, wherein determining that at least a first quantity of next IO operations that will be received from a host system will be sequential IO operations includes accessing information included in the first IO operation indicative of the at least first quantity of next IO operations that will be received from a host system being sequential IO operations.

### Claim 19 (depends on 15)

The computer-readable media of claim 15, wherein the host system is configured to distribute IO operations among the plurality of storage processing nodes according to a predefined order, and
wherein the storage system determines the next storage processing node based on the predefined order.

### Claim 20 (depends on 15)

The computer-readable media of claim 15, wherein the first storage processing node informs the next storage processing node that the at least first quantity of next IO operations that will be received from a host system will be sequential IO operations.
