Dynamic I/O Queue Throttling in Storage Arrays
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing storage systems face challenges in optimally allocating non-volatile memory resources among multiple hosts with varying workloads in a multi-tenant system, leading to potential bottlenecks and misallocation of resources.
Innovation Solution
A storage system that includes a processor, memory, storage interface switch, host interface, and a connection manager, which receives host storage commands, forwards them to backend queues, and uses a throttling engine to determine priority among pending commands and insert delays based on priority allocations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If host storage commands are forwarded directly to backend queues without throttling, then processing speed is improved, but resource allocation becomes unbalanced and bottlenecks occur
Solution Approach 1:
The system implements dynamic throttling where the throttling engine adjusts delay parameters in real-time based on priority levels and current system state. Different priority classes receive different throttling intensities, allowing the system to adapt resource allocation dynamically while maintaining high processing speeds for urgent operations.
Solution Approach 2:
The throttling engine modifies processing parameters by inserting variable delays based on priority allocations. High-priority commands receive minimal or no delays, while lower-priority commands experience controlled delays, effectively changing the processing rate parameter to achieve balanced resource allocation without compromising overall productivity.
2Adaptability or versatility
If priority-based throttling is implemented, then resource allocation fairness is improved, but system complexity increases
Solution Approach 1:
The system segments commands into different priority classes and processes them through separate throttling channels. The connection manager divides the command stream into priority groups, and the throttling engine applies distinct delay parameters to each segment, achieving fair resource allocation through structured segmentation rather than complex holistic control.
Solution Approach 2:
The throttling engine acts as an intermediary component between the connection manager and backend queues. It mediates the flow of commands by inserting priority-based delays, simplifying the overall system architecture by isolating the complexity of resource allocation logic in a dedicated intermediate layer rather than distributing it throughout the entire system.
3Speed
If delays are inserted for low-priority commands, then high-priority command processing is improved, but overall throughput may decrease
Solution Approach 1:
The throttling engine applies partial throttling only to low-priority commands while leaving high-priority commands unaffected. This partial action ensures that high-priority processing speed is maintained at maximum levels, while only the non-critical portion of the workload experiences delays, thereby preserving overall system throughput.
Solution Approach 2:
The system uses its own idle processing capacity to handle delayed low-priority commands. When high-priority commands are being processed, the throttled low-priority commands wait in the queue; when processing capacity becomes available, these commands are automatically picked up and processed without requiring external intervention, maintaining overall productivity through self-service queuing.
Data Source
AI summary
Systems and methods for dynamic throttling of input/output queues in data storage device arrays are described. Data storage devices are connected through the slots and corresponding lanes of a storage interface switch. A storage controller uses a delay inserted between host submission queues and backend submission queues to manage the priority of host storage commands using slot groups.


