Multi-Queue I/O Command Sorting for Storage Optimization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing storage modules face inefficiencies due to their inability to adapt to actual host behavior, leading to suboptimal performance, endurance, and power consumption, particularly in multi-queued environments like NVMe, where Data Set Management (DSM) requires complex bookkeeping and often exceeds its benefits.
Innovation Solution
A system and method for sorting commands into multiple queues based on data characteristics, allowing hosts to optimize I/O operations by designating specific queues for different types of requests, such as synchronous vs. asynchronous, and prioritizing them accordingly, enabling the storage module to process commands more effectively.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If Data Set Management (DSM) commands and parameters are used to allow hosts to hint storage module about LBA ranges, then storage module can optimize for specific access patterns, but the LBA-range centric nature requires additional bookkeeping by both host and storage module, creating complex mappings that may overlap and mix, resulting in overhead greater than benefit
Solution Approach 1:
The patent segments I/O commands into multiple queues based on data characteristics (e.g., sequential vs. random access patterns, read vs. write operations). Each queue is dedicated to a specific type of I/O pattern, eliminating the need for complex LBA-range mapping and bookkeeping. The host sorts commands into appropriate queues before submission, and the storage module processes commands from each queue according to its optimized algorithm for that pattern.
Solution Approach 2:
Instead of having the storage module try to identify and optimize for different access patterns within a single queue (the traditional DSM approach), the patent inverts the approach by having the host pre-sort commands into separate queues based on their access patterns. This reversal simplifies the storage module's task to merely processing commands according to their queue's characteristic, eliminating complex bookkeeping while maintaining optimization benefits.
2Productivity
If multiple independent queues are exposed to allow hosts to send many operations at once, then throughput and parallelism are improved, but each thread may send its own command sequences to different queues that do not match the patterns expected by the storage module, reducing optimization effectiveness
Solution Approach 1:
The patent creates multiple queues that serve universal purposes - each queue type can handle various commands of its characteristic pattern. For example, a sequential write queue can handle any sequential write operation regardless of which thread or application generates it. This multi-functionality within each queue type maintains adaptability while ensuring all commands in a queue share the same optimization characteristics.
Solution Approach 2:
The system implements feedback mechanisms where the host monitors the behavior and performance of different I/O patterns, dynamically adjusting which commands are routed to which queues. This feedback loop ensures that even as workloads change, the queue assignments remain optimized, maintaining pattern matching effectiveness across diverse multi-threaded workloads.
Data Source
AI summary
A system and method for I/O optimization in a multi-queued environment are provided. In one embodiment, a host is provided that sorts commands into a plurality of queues, wherein a command is sorted based on its data characteristic. The host receives a read request from a storage module for commands in the plurality of queues and provides the storage module with the requested commands. In another embodiment, a storage module is provided that processes commands from a host based on the data characteristic of the queue that stored the command on the host. In another embodiment, a storage module sorts command completions into a plurality of queues, wherein a command completion is sorted based on its resulting status code.


