I/O Layer Read Request Joining for Storage Bandwidth Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In storage systems, particularly those using ZFS storage appliances, there is a wastage of I/O bandwidth due to duplicate read requests for the same data blocks, as traditional systems only combine requests if they are for data residing on the same physical device, leading to unnecessary reads from memory.

Innovation Solution

A system and method that joins read requests for the same data block at the I/O layer of the storage appliance, allowing multiple requests for the same data block to be combined into a single read request, thereby reducing duplicate reads and dynamically adjusting the priority of read requests to optimize I/O operations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If traditional storage systems process read requests individually without joining, then each request is handled independently ensuring request accuracy, but I/O bandwidth is wasted due to duplicate reads from persistent storage

Engineering Contradiction:
ImproveI/O bandwidth utilizationVSAvoidI/O layer processing complexity
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

The patent merges multiple read requests for the same data block into a single I/O operation at the I/O layer. When duplicate read requests are detected for identical data blocks, the system combines them and executes only one read operation from persistent storage, then distributes the retrieved data to all requesting processes. This eliminates redundant I/O operations and optimizes bandwidth utilization.

Inventive Principle:
Principle #5Merging (Combining)

2Productivity

If read requests are joined at the I/O layer, then the number of reads from persistent storage is reduced improving efficiency, but the complexity of request management increases

Engineering Contradiction:
ImproveI/O operation efficiencyVSAvoidrequest management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent creates a copy of the data block in memory after a single read operation from persistent storage. This copied data is then distributed to multiple requesting processes without requiring additional reads from the storage device. The system maintains a cache of recently read data blocks to serve subsequent requests, reducing the need for repeated I/O operations.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The I/O layer acts as an intermediary between the file system layer and persistent storage. It intercepts read requests, identifies duplicates, and manages the joining process centrally. This intermediary layer absorbs the complexity of request management, shielding higher layers from the intricacies of I/O optimization while providing efficient access to stored data.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If multiple read requests for the same data block are processed separately, then each request receives dedicated handling ensuring data integrity, but unnecessary duplicate reads from memory occur reducing performance

Engineering Contradiction:
Improvedata integrityVSAvoidI/O operation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent performs preliminary verification of read requests at the I/O layer before executing I/O operations. By checking whether identical read requests already exist in the request queue or have been recently fulfilled, the system prevents duplicate reads in advance. This preliminary action ensures that data integrity is maintained while avoiding redundant operations that would waste time.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9424314B2Method and apparatus for joining read requests
Publication Date: 2016.08.23 ORACLE INT CORP
  • US9424314B2 patent drawing
  • US9424314B2 patent drawing
  • US9424314B2 patent drawing

AI summary

Implementations of the present disclosure involve a system and/or method for joining read requests for the same data block sent to a storage appliance. The system and method is configured to receive the first read request for the data block at an I/O layer of the storage appliance. The I/O layer is configured to manage obtaining data blocks from one or more storage devices on the storage appliance. The system and method may then receive a second read request for the data block at the I/O layer of the storage appliance. The first and second read request may then be joined at I/O layer and only a single copy of the data block is returned to a cache in response to the first and second read requests.