Storage Stack Batching Read Requests to Reduce CPU Overhead

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Legacy storage stacks incur significant CPU overhead when used with modern storage interfaces and protocols, particularly when user mode applications access storage devices through file-based interfaces, limiting the realization of high IOPS capabilities.

Innovation Solution

A storage stack API is exposed to user mode applications for queuing and batching read requests and completion notifications, allowing modern storage interfaces and protocols to reduce CPU cycles per I/O operation by translating file offsets to disk offsets and processing in batches.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If legacy storage stacks are used with modern storage interfaces and protocols, then compatibility and ease of operation are maintained, but CPU overhead per I/O operation increases significantly

Engineering Contradiction:
ImprovecompatibilityVSAvoidCPU overhead
Core Design Contradiction:
Ease of operationVSUse of energy by moving object

Solution Approach 1:

The patent segments the I/O processing workflow into distinct phases: batch collection phase where multiple I/O requests are accumulated in a queue, and processing phase where the legacy storage stack processes the batch. This segmentation allows the system to maintain legacy compatibility while reducing per-I/O CPU overhead by amortizing the overhead across multiple operations through batching.

Inventive Principle:
Principle #1Segmentation

2Ease of operation

If file-based interfaces are used for storage access, then ease of operation is improved, but CPU utilization increases significantly

Engineering Contradiction:
Improvefile-based interface accessVSAvoidCPU utilization
Core Design Contradiction:
Ease of operationVSProductivity

Solution Approach 1:

The patent merges multiple individual file-based I/O requests into batches before submission to the legacy storage stack. By combining multiple operations that would otherwise be processed separately with high CPU overhead, the system maintains the ease of file-based interface access while significantly reducing overall CPU utilization through consolidated processing.

Inventive Principle:
Principle #5Merging (Combining)

3Productivity

If modern storage interfaces and protocols are used, then IOPS performance is improved, but CPU cycles per I/O operation increase

Engineering Contradiction:
ImproveIOPSVSAvoidCPU cycles per operation
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements periodic batch processing where I/O requests are collected over a defined period or until a batch threshold is reached, then processed together. This periodic action allows the system to achieve high IOPS performance through modern storage interfaces while reducing the CPU cycles consumed per individual operation by processing multiple requests in consolidated batches rather than individually.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentEP3912020B1Reducing per-i/o CPU overhead by queueing and batching read requests and read completion notifications
Publication Date: 2023.12.27 MICROSOFT TECHNOLOGY LICENSING LLC
  • EP3912020B1 patent drawingFigure 1
  • EP3912020B1 patent drawingFigure 2
  • EP3912020B1 patent drawingFigure 3

AI summary

A storage stack exposes an API for use by user mode applications. An application calls a function exposed by the API to enqueue requests to read a file on a file submission queue ("FSQ"). Read requests in the FSQ are dequeued in batches, and file offsets in the batches of dequeued read requests are translated to disk offsets. The translated batches of read requests are stored in a storage submission queue ("SSQ"). A storage subsystem retrieves batches of the translated read requests from the SSQ and performs the specified read operations. Completion notifications for the read requests are stored in a storage completion queue ("SCQ"). Batches of completion notifications are dequeued from the SCQ and translated to file completions. Batches of file completions are stored in a file completion queue ("FCQ"). The user mode application that submitted the read requests can dequeue batches of completion notifications from the FCQ.