Coordinating Interdependent Asynchronous Reads in Hierarchical Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional data storage systems incur increased latency and overhead due to the need for synchronous reads of indirect blocks before issuing asynchronous read requests, especially in hierarchical data structures with multiple levels of metadata, which impacts performance and delays data access.
Innovation Solution
The system coordinates interdependent asynchronous reads by identifying the highest uncached indirect block in a hierarchical data structure and recording a context item to reissue the I/O request asynchronously once the indirect block is read, allowing for efficient prefetching and reducing latency by bringing all necessary indirect blocks into faster storage media without waiting for synchronous metadata accumulation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If synchronous reads of indirect blocks are performed before issuing asynchronous read requests, then data access correctness is ensured, but latency and overhead increase
Solution Approach 1:
The system performs preliminary actions by issuing asynchronous read requests for indirect blocks in advance, before the actual data read operation. The I/O manager queues these preliminary read requests and coordinates their execution, allowing the indirect blocks to be loaded into cache memory before they are needed for data block address translation. This eliminates the need to wait for synchronous completion of indirect block reads before issuing data read requests.
Solution Approach 2:
The I/O manager acts as an intermediary component that coordinates between the read requests for data blocks and the indirect blocks. It maintains a data structure tracking pending I/O requests and their dependencies, matching indirect block reads with subsequent data reads. This intermediary coordination allows asynchronous operations to proceed without compromising data access correctness.
2Measurement precision
If multiple levels of indirect blocks are read synchronously to traverse the hierarchical data structure, then the target data block location is accurately determined, but performance deteriorates due to multiple synchronous reads
Solution Approach 1:
The system performs preliminary asynchronous read requests for all levels of indirect blocks in the hierarchical data structure before the actual data read operation. The I/O manager queues these preliminary read requests and coordinates their execution, allowing multiple levels of indirect blocks to be loaded into cache memory in advance. This eliminates the need to perform multiple synchronous reads during the actual data access operation.
Solution Approach 2:
The system dynamically manages the I/O request queue and adapts the read coordination based on the hierarchical structure of indirect blocks. The I/O manager tracks the completion status of each indirect block read and dynamically issues subsequent read requests as blocks become available in cache, rather than waiting for a fixed synchronous sequence to complete.
3Stability of the object's composition
If the read request is locked until metadata is accumulated, then data consistency is maintained, but latency increases due to waiting for metadata accumulation
Solution Approach 1:
The system performs preliminary actions by issuing asynchronous read requests for all necessary indirect blocks in advance of the actual data read operation. The I/O manager queues these requests and coordinates their completion, so that when the data read is needed, the metadata is already available in cache memory. This maintains data consistency while eliminating the waiting period.
Solution Approach 2:
The system maintains continuous useful action by keeping the I/O request queue actively processing read requests for indirect blocks in the background, rather than locking and pausing operations. The I/O manager continuously monitors the completion of indirect block reads and immediately issues subsequent data read requests without interruption or locking, maintaining steady workflow.
Data Source
AI summary
Implementations described and claimed herein provide a coordination of interdependent asynchronous reads. In one implementation, an input/output request for a target data block stored on a block device at a virtual address is received. A highest level indirect block from which the target data block depends in a hierarchical data structure pointing to the virtual address of the target data block is identified. The highest level indirect block is uncached. A context item is recorded to an input/output structure for the highest level indirect block. The context item indicates that an ultimate objective of a read request for the highest level indirect block is to retrieve the target data block. The input/output request is asynchronously reissued for the target data block upon receipt of the read request for the highest level indirect block.


