# US 11,029,853 B2 · Dynamic segment allocation for write requests by 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,029,853 B2
- Document ID: US11029853B2
- Status: Granted
- Kind: B2
- Application number: 16/222,863
- Filed: 2018-12-17
- Published: 2019-04-25
- Granted: 2021-06-08
- Earliest claimed: 2016-10-04
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Timothy W. Brennan; Nidhi Pankaj Doshi; Xiaohui Wang
- Web page: https://patentgrep.com/patent/US11029853B2

## CPC

- G06F 3/061: {Improving I/O performance}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Apparatus and methods of operating solid-state drives in a storage system are described. A method includes adjusting, by a host controller of a storage system during run-time, storage bandwidth for a storage system process responsive to an input output (I/O) write request to write data to the storage system that includes multiple solid-state storage drives by determining an allocation share for the storage system process requesting to write the data, and responsive to determining an open segment usage by the storage system process is under the allocation share for the storage system process, opening a new segment for the storage system process.

## Claims

### Claim 1

A method comprising:
adjusting, by a host controller of a storage system during run-time, storage bandwidth for a storage system process responsive to an input output (I/O) write request to write data to the storage system:
calculating an allocation share for the storage system process requesting to write the data, the allocation share for the storage system process is calculated using at least one of a target ratio of open segments assigned to the storage system process, a target ratio of open segments assigned to other storage system processes having open segments, or a target number of open segments for the storage system; and
opening a new segment for the storage system process upon determining that an open segment usage by the storage system process is under the allocation share for the storage system process.

### Claim 2 (depends on 1)

The method of claim 1, wherein calculating the allocation share for the storage system process comprises:
calculating the allocation share for the storage system process using a ratio between the target ratio of open segments assigned to the storage system process and an aggregate of target ratios of open segments assigned to a plurality of storage system processes having open segments and the target number of open segments.

### Claim 3 (depends on 1)

The method of claim 1, wherein adjusting the storage bandwidth for the storage system process further comprises:
identifying a pool of open segments unused by the other storage system processes by determining a difference between other allocation shares and open segment usage for other storage system processes upon determining the open segment usage by the storage system process is not under the allocation share for the storage system process.

### Claim 4 (depends on 1)

The method of claim 1, wherein adjusting the storage bandwidth for the storage system process further comprises:
opening a new segment for the storage system process upon determining an open segment usage of the storage system is under a target number of open segments for the storage system, opening a new segment for the storage system process.

### Claim 5 (depends on 4)

The method of claim 4, wherein determining the allocation share for the storage system process is responsive to determining the open segment usage of the storage system is not under the target number of open segments for the storage system.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
opening a new segment for the storage system process upon determining the storage system process does not have an open segment—and adjusting the storage bandwidth for the storage system process upon determining the storage system process does have an open segment.

### Claim 7 (depends on 1)

The method of claim 1, wherein the plurality of solid-state storage drives are flash-based storage drives.

### Claim 8 (depends on 1)

The method of claim 1, wherein the host controller is communicatively coupled to the storage drives and resides outside of the storage drive.

### Claim 9

A storage system comprising:
a memory; and
a host controller, operatively coupled to the memory, to:
adjust, during run-time, storage bandwidth for a storage system process responsive to an input output (I/O) write request to write data to the storage system that comprises a plurality of solid-state storage drives, the host controller to:
determine an allocation share for the storage system process requesting to write the data, the allocation share for the storage system process using at least one of a ratio between a target ratio of open segments assigned to the storage system process and an aggregate of target ratios of open segments assigned to a plurality of storage system processes having open segments or a target number of open segments; and
open a new segment for the storage system process upon determining an open segment usage by the storage system process is under the allocation share for the storage system process.

### Claim 10 (depends on 9)

The storage system of claim 9, wherein to adjust the storage bandwidth for the storage system process, the host controller further to:
open a new segment for the storage system process upon determining an open segment usage of the storage system is under the target number of open segments for the storage system.

### Claim 11 (depends on 10)

The storage system of claim 10, wherein to determine the allocation share for the storage system process is responsive to determining the open segment usage of the storage system is not under the target number of open segments for the storage system.

### Claim 12 (depends on 9)

The storage system of claim 9, the host controller further to:
open a new segment for the storage system process upon determining the storage system process does not have an open segment.

### Claim 13 (depends on 9)

The storage system of claim 9, the host controller further to:
adjust the storage bandwidth for the storage system process upon determining the storage system process does have an open segment.

### Claim 14

A non-transitory computer-readable medium that, when executed by a processing device, causes the processing device to:
adjust, by the processing device during run-time, storage bandwidth for a storage system process responsive to an input output (I/O) write request to write data to the storage system that comprises a plurality of solid-state storage drives having erase blocks that are directly mapped, the processing device to:
determine an allocation share for the storage system process requesting to write the data, the allocation share for the storage system process using at least one of a ratio between a target ratio of open segments assigned to the storage system process and an aggregate of target ratios of open segments assigned to a plurality of storage system processes having open segments or a target number of open segments; and
open a new segment for the storage system process upon determining an open segment usage by the storage system process is under the allocation share for the storage system process.

### Claim 15 (depends on 14)

The non-transitory computer-readable medium of claim 14, wherein to adjust the storage bandwidth for the storage system process, the processing device further to:
open a new segment for the storage system process upon determining an open segment usage of the storage system is under a target number of open segments for the storage system.

### Claim 16 (depends on 14)

The non-transitory computer-readable medium of claim 14, the processing device further to:
open a new segment for the storage system process upon determining the storage system process does not have an open segment.

### Claim 17 (depends on 14)

The non-transitory computer-readable medium of claim 14, the processing device further to:
adjust the storage bandwidth for the storage system process upon determining the storage system process does have an open segment.
