# US 11,442,658 B1 · System and method for selecting a write unit size for a block storage device

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

- Number: US 11,442,658 B1
- Document ID: US11442658B1
- Status: Granted
- Kind: B1
- Application number: 17/333,208
- Filed: 2021-05-28
- Granted: 2022-09-13
- Earliest claimed: 2020-07-12
- Assignees: Lightbits Labs Ltd.
- Applicants: Lightbits Labs Ltd.
- Inventors: Shmuel Ben-Yehuda; Ofir Efrati; Abel Alkon Gordon; Ofer Hayut; Eran Kirzner; Alexander Shpiner; Roy Shterman; Maor Vanmak
- Web page: https://patentgrep.com/patent/US11442658B1

## CPC

- 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/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/064: {Management of blocks}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

computer-based system and method for selecting a write unit size for a block storage device, includes performing a plurality of sequences of I/O operations to the block storage device, each sequence having a write unit size from a plurality of write unit sizes; collecting performance metrics of the sequences of I/O operations; and selecting the write unit size for the block storage device from the plurality of write unit sizes based on the performance metrics. In some cases, preconditioning is performed prior to performing the plurality of sequences of I/O operations by emptying the block storage device; and writing data to the block storage device to fill the block storage device above a predetermined level.

## Claims

### Claim 1

A method for selecting a write unit size for a block storage device, the method comprising:
preconditioning the block storage device by:
emptying the block storage device; and
writing data to the block storage device to fill the block storage device above a predetermined level;
performing a plurality of sequences of I/O operations to the block storage device, each sequence having a write unit size from a plurality of write unit sizes;
collecting performance metrics of the sequences of I/O operations; and
selecting the write unit size for the block storage device from the plurality of write unit sizes based on the performance metrics.

### Claim 2 (depends on 1)

The method of claim 1, wherein writing the data to the block storage device comprises writing the data sequentially and/or randomly.

### Claim 3 (depends on 1)

The method of claim 1, wherein the plurality of sequences of I/O operations comprise a mixture of sequential write operations and random read operations.

### Claim 4 (depends on 1)

The method of claim 1, wherein the plurality of sequences of I/O operations comprise a mixture of random write operations and random read operations.

### Claim 5 (depends on 1)

The method of claim 1, comprising determining the plurality of sequences of I/O operations based on parameters of the block storage device.

### Claim 6 (depends on 1)

The method of claim 1, comprising applying a criterion for selecting the write unit size for the block storage device from the plurality of write unit sizes based on the performance metrics, wherein the criterion comprises any combination of:
a write amplification factor,
maximum write bandwidth before the block storage device is saturated,
maximum write bandwidth with average read latency below a predetermined latency, and
maximum write bandwidth with a percentile of read operations below a predetermined latency.

### Claim 7 (depends on 1)

The method of claim 1, wherein performing the plurality of sequences of I/O operations to the block storage device comprises one of:
performing a binary search for a maximal write unit size; and
performing a linear search for a maximal write unit size.

### Claim 8 (depends on 1)

The method of claim 1, comprising writing to the block storage device using the selected write unit size.

### Claim 9

A method for selecting a data unit size for accessing a storage media, the method comprising:
preconditioning the block storage device by:
emptying the block storage device; and
writing data to the block storage device to fill the block storage device above a predetermined level;
performing a plurality of series of write and read operations to the storage media, each series having a single data unit size over time that is different from the other series of write and read operations;
measuring performance metrics of the series of write and read operations; and
accessing the storage media using the data unit size having the best performance metrics.

### Claim 10

A system for monitoring of movement of data in a computer network, the system comprising:
a memory; and
a processor configured to:
perform preconditioning the block storage device by:
emptying the block storage device; and
writing data to the block storage device to fill the block storage device above a predetermined level;
perform a plurality of sequences of I/O operations to the block storage device, each sequence having a write unit size from a plurality of write unit sizes;
collect performance metrics of the sequences of I/O operations; and
select the write unit size for the block storage device from the plurality of write unit sizes based on the performance metrics.

### Claim 11 (depends on 10)

The system of claim 10, wherein the processor is configured to write the data to the block storage device by writing the data sequentially and/or randomly.

### Claim 12 (depends on 10)

The system of claim 10, wherein the plurality of sequences of I/O operations comprise a mixture of sequential write operations and random read operations.

### Claim 13 (depends on 10)

The system of claim 10, wherein the plurality of sequences of I/O operations comprise a mixture of random write operations and random read operations.

### Claim 14 (depends on 10)

The system of claim 10, wherein the processor is configured to determine the plurality of sequences of I/O operations based on parameters of the block storage device.

### Claim 15 (depends on 10)

The system of claim 10, wherein the processor is configured to apply a criterion for selecting the write unit size for the block storage device from the plurality of write unit sizes based on the performance metrics, wherein the criterion comprises any combination of:
a write amplification factor,
maximum write bandwidth before the block storage device is saturated,
maximum write bandwidth with average read latency below a predetermined latency, and
maximum write bandwidth with a percentile of read operations below a predetermined latency.

### Claim 16 (depends on 10)

The system of claim 10, wherein the processor is configured to perform the plurality of sequences of I/O operations to the block storage device by performing one of:
performing a binary search for a maximal write unit size; and
performing a linear search for a maximal write unit size.

### Claim 17 (depends on 10)

The system of claim 10, wherein the processor is configured to write to the block storage device using the selected write unit size.
