Concurrent Sub-I/O Request Processing in Data Storage Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Data storage systems face inefficiencies in processing host I/O requests due to serial handling of sub-I/O requests, which can lead to suboptimal performance and resource management challenges, especially when dealing with 'thin' logical units where underlying storage is allocated on an as-needed basis.
Innovation Solution
The technique involves issuing multiple sub-I/O requests concurrently based on mapping information, with reordering capabilities to maintain address order and efficient use of sub-I/O request tracking structures, allowing for reliable and efficient data transfer across multiple underlying storage units.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If sub-I/O requests are issued serially for extents of underlying storage, then the processing is simple to manage, but the performance is suboptimal due to sequential handling
Solution Approach 1:
The patent segments a single host I/O request into multiple sub-I/O requests corresponding to different extents of underlying storage. Each extent is mapped to specific underlying logical units, and sub-I/O requests are issued concurrently for each extent rather than serially. This segmentation enables parallel processing of storage operations while maintaining the ability to track each sub-request individually through dedicated tracking structures.
Solution Approach 2:
The patent introduces sub-I/O request tracking structures as intermediary components that mediate between the concurrent sub-I/O requests and the host-side interface. These tracking structures monitor the completion status of each sub-request, manage the reordering of responses, and coordinate the aggregation of results. This intermediary layer enables concurrent processing while maintaining the ordering requirements of the host interface.
2Productivity
If multiple sub-I/O requests are issued concurrently for different extents, then processing performance improves, but resource management becomes more challenging due to tracking multiple requests
Solution Approach 1:
The patent implements a pool of sub-I/O request tracking structures that are allocated for concurrent requests and then recovered (freed) upon completion. When sub-I/O requests complete, their associated tracking structures are released back to the pool for reuse by subsequent host I/O requests. This allocation and recovery mechanism enables efficient resource management for concurrent processing without requiring permanent tracking structures for each request.
Solution Approach 2:
The tracking structures serve multiple functions: they track the status of individual sub-I/O requests, manage the reordering of responses to maintain address ordering, coordinate data transfer between device-side and host-side interfaces, and facilitate the pooling and reuse of resources. This multi-functionality reduces the overall system complexity despite handling multiple concurrent requests.
3Ease of operation
If extents are transferred in address order to maintain host-side interface requirements, then interface compatibility is maintained, but transfer speed may be reduced compared to parallel transfer
Solution Approach 1:
The patent performs preliminary actions by issuing all sub-I/O requests for different extents concurrently at the device-side interface before data transfer begins. The tracking structures are pre-configured to handle the reordering of responses. This preliminary concurrent issuance maximizes the parallel processing benefit, while the reordering mechanism ensures that responses are delivered to the host-side interface in the correct address order, thus maintaining compatibility without sacrificing transfer speed.
Data Source
AI summary
In a data storage system a host I/O request is received from a host-side interface, the host I/O request specifying a range of logical block addresses (LBAs) of a mapped logical unit (MLU). Mapping information is obtained for a plurality of extents of the underlying logical units of storage. If there are a sufficient number of free sub-I/O request tracking structures to track completion of a plurality of respective sub-I/O requests for the extents, then the sub-I/O requests are concurrently issued to the device-side interface, using the mapping information. Upon receiving transfer initiation responses for the sub-I/O requests to initiate transfer of the respective extents, they are forwarded to the host-side interface to cause the respective extents to be transferred to/from the host. As the transfer initiation responses are forwarded to the host-side interface, the respective sub-I/O request tracking structures are freed for use in processing subsequent host I/O requests.


