Storage Stack Batching Read Requests to Reduce CPU Overhead
Find Innovative SolutionsGenerate 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
Engineering 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
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.
2Ease of operation
If file-based interfaces are used for storage access, then ease of operation is improved, but CPU utilization increases significantly
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.
3Productivity
If modern storage interfaces and protocols are used, then IOPS performance is improved, but CPU cycles per I/O operation increase
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.
Data Source
Figure 1
Figure 2
Figure 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.