# US 8,788,712 B2 · Compression block input/output reduction

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

- Number: US 8,788,712 B2
- Document ID: US8788712B2
- Status: Granted
- Kind: B2
- Application number: 13/345,301
- Filed: 2012-01-06
- Published: 2013-07-11
- Granted: 2014-07-22
- Earliest claimed: 2012-01-06
- Assignees: International Business Machines Corporation
- Applicants: Jonathan Amit; Chaim Koifman; Sergey Marenkov; Ori Shalev
- Inventors: Jonathan Amit; Chaim Koifman; Sergey Marenkov; Ori Shalev
- Web page: https://patentgrep.com/patent/US8788712B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0641: {De-duplication techniques}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Exemplary system and computer program product embodiments compression blocks input/output (I/O) reduction are provided. In one embodiment, by way of example only, data blocks are arranged into groups to provide a single I/O. Lists indicating the available block space for the data blocks are organized in advance according to space size. The data blocks required for a single command are allocated as the single I/O. The data blocks are sequentially ordered. Additional system and computer program product embodiments are disclosed and provide related advantages.

## Claims

### Claim 1

A system for compression blocks input/output (I/O) reduction in a computing environment, comprising:
a processor device operable in the computing environment, wherein processor device is adapted for:
organizing a plurality of lists, indicating available block space for those of a plurality of compressed data blocks, in advance according to space size,
arranging the plurality of compressed data blocks into a plurality of groups to provide a single I/O having the contents of the each of the plurality of compressed data blocks included in the single I/O,
providing a new compression dictionary for each of the plurality of compressed data blocks, and
sequentially ordering and allocating the plurality of compressed data blocks as the single I/O.

### Claim 2 (depends on 1)

The system of claim 1, wherein the plurality of compressed data blocks are independently compressed.

### Claim 3 (depends on 1)

The system of claim 1, wherein the processor device is further adapted for, in conjunction with the allocating, sequentially allocating the plurality of compressed data blocks for a write command, wherein the single I/O for the write command is issued to a storage device with the contents of the plurality of compressed data blocks.

### Claim 4 (depends on 1)

The system of claim 1, wherein the processor device is further adapted for, upon receipt of a read command, retrieving each of the plurality of compressed data blocks required for the single command to include as the single I/O.

### Claim 5 (depends on 1)

The system of claim 1, wherein the processor device is further adapted for pursuant to the initializing, upon a request for the allocating, allocating a required number of the plurality of sequentially ordered compressed data blocks that are sequential from a corresponding one of the plurality of lists.

### Claim 6 (depends on 5)

The system of claim 5, wherein the processor device is further adapted for, if at least one of the plurality of groups is not found in a corresponding one of the plurality of lists, allocating a larger group from the plurality of groups in a subsequent one of the plurality of lists.

### Claim 7 (depends on 5)

The system of claim 5, wherein the processor device is further adapted for performing at least one of:
updating the plurality of lists upon release of at least one of the plurality of compressed data blocks, and
reusing the plurality of compressed data blocks to enable the plurality of data blocks to be stored on a plurality of locations on a logical unit.

### Claim 8

A computer program product for compression blocks input/output (I/O) reduction in a computing environment by a processor device, the computer program product comprising a non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising:
a first executable portion for organizing a plurality of lists, indicating available block space for those of a plurality of compressed data blocks, in advance according to space size;
a second executable for arranging the plurality of compressed data blocks into a plurality of groups to provide a single I/O having the contents of the each of the plurality of compressed data blocks included in the single I/O; and
a third executable portion for providing a new compression dictionary for each of the plurality of compressed data blocks;
a fourth executable portion for sequentially ordering and allocating the plurality of compressed data blocks as the single I/O.

### Claim 9 (depends on 8)

The computer program product of claim 8, wherein the plurality of compressed data blocks are independently compressed.

### Claim 10 (depends on 8)

The computer program product of claim 8, further including a fifth executable portion for, in conjunction with the allocating, sequentially allocating the plurality of compressed data blocks for a write command, wherein the single I/O for the write command is issued to a storage device with the contents of the plurality of compressed data blocks.

### Claim 11 (depends on 8)

The computer program product of claim 8, further including a fifth executable portion for, upon receipt of a read command, retrieving each of the plurality of compressed data blocks required for the single command to include as the single I/O.

### Claim 12 (depends on 8)

The computer program product of claim 8, further including a fifth executable portion for performing at least one of:
upon a request for the allocating, allocating a required number of the plurality of sequentially ordered compressed data blocks that are sequential from a corresponding one of the plurality of lists, and
if at least one of the plurality of groups is not found in a corresponding one of the plurality of lists, allocating a larger group from the plurality of groups in a subsequent one of the plurality of lists.

### Claim 13 (depends on 8)

The computer program product of claim 8, further including a fifth executable portion for performing at least one of:
updating the plurality of lists upon release of at least one of the plurality of compressed data blocks, and
reusing the plurality of compressed data blocks to enable the plurality of data blocks to be stored on a plurality of locations on a logical unit.
