Submission Queue Accelerator for Storage Controller I/O Bottlenecks
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Storage controllers face performance issues when managing a large number of virtual submission queues, leading to increased resource requirements and potential blocking of larger I/O requests by smaller ones, necessitating arbitration and dependency analysis logic.
Innovation Solution
Implementing multiple virtual submission queues (vSQs) managed by clients and server submission queues (sSQs) managed by the storage controller, with a submission queue accelerator to translate I/O requests from vSQs to sSQs, allowing clients to select vSQs at submission time, thereby reducing the need for arbitration logic and resource management overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If the storage controller manages a large number of virtual submission queues directly, then the number of supported vSQs increases, but the device complexity and resource requirements increase significantly
Solution Approach 1:
The patent introduces server submission queues (sSQs) as an intermediary layer between client vSQs and the storage controller. The submission queue accelerator maps multiple vSQs to fewer sSQs, allowing the storage controller to manage a reduced set of queues while still supporting a large number of client vSQs. This intermediary structure reduces the complexity of arbitration logic at the storage controller without limiting the number of supported vSQs.
Solution Approach 2:
The patent segments the queue management function into two distinct components: client-side vSQ management and controller-side sSQ management. The submission queue accelerator acts as a bridge that translates between these two layers. This segmentation allows each component to be optimized independently - clients can use many vSQs while the controller only needs to manage fewer sSQs, reducing overall system complexity.
2Productivity
If the storage controller processes all I/O requests through a single submission queue, then the device complexity is low, but smaller I/O requests block larger ones, reducing productivity
Solution Approach 1:
The patent divides the single submission queue into multiple separate queues (both vSQs at the client side and sSQs at the controller side). This segmentation allows different I/O requests to be processed in parallel across multiple queues, preventing smaller requests from blocking larger ones. The submission queue accelerator manages the mapping between these segmented queues, maintaining coordination without requiring complex arbitration logic at the storage controller.
3Productivity
If the storage controller implements arbitration logic to prevent blocking, then the productivity improves, but the device complexity and resource utilization increase
Solution Approach 1:
The patent extracts the arbitration and queue management logic from the storage controller and places it in the submission queue accelerator. This extraction removes the need for complex arbitration and dependency analysis logic at the storage controller, while still maintaining the ability to prevent blocking and optimize I/O request processing. The submission queue accelerator handles the complex mapping and queue selection, leaving the storage controller with simpler queue management responsibilities.
Data Source
AI summary
In general, the invention relates to a method for writing data to server submission queues in a storage controller. The method includes receiving an I/O request, where the I/O request includes a command, where the I/O request is associated with a vSQ, and where the vSQ appears to the client as a set of memory locations in memory operatively connected to a storage controller. The method further includes obtaining a vSQ ID associated with the vSQ, identifying a sSQ based on the vSQ and a vSQ-to-sSQ mapping, generating a submission queue entry comprising the command and the vSQ ID, and sending the submission queue entry to the storage controller, where the sSQ is located in the memory and where the storage controller is configured to place the submission queue entry in the sSQ.


