Systems and methods for coordinating interdependent asynchronous reads
AssigneeOracle International Corporation
InventorsPeter Dunlap, Mark Maybee
Life of this patent
Estimating the term…
Loading patent…
AssigneeOracle International Corporation
InventorsPeter Dunlap, Mark Maybee
Estimating the term…
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.
A method for coordination of interdependent asynchronous reads, the method comprising:
One or more tangible non-transitory computer-readable storage media storing computer-executable instructions for performing a computer process on a computing system, the computer process comprising:
A system for coordination of interdependent asynchronous reads, the system comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches: cache…
Address translation: for multiple virtual address spaces, e.g. segmentation
Providing a specific technical effect: correctness of operation, e.g. memory ordering
Performance improvement: latency reduction
About 10 years 3 months of term left · ends 7 Feb 2037 (estimated)
Aspects of the present disclosure relate to data storage systems, and in particular, to systems and methods for coordinating interdependent asynchronous reads in a data storage device.
The continuous expansion of the Internet, the expansion and sophistication of enterprise computing networks and systems, the proliferation of content stored and accessible over the Internet, and numerous other factors continue to drive the need for large sophisticated data storage systems. Consequently, as the demand for data storage continues to increase, larger and more sophisticated storage systems are being designed and deployed. Many large scale data storage systems utilize storage appliances that include arrays of storage media. Typically, these storage systems include a file system for storing and accessing files. In addition to storing system files (e.g., operating system files, device driver files, etc.), the file system provides storage and access of user data files. For a user to access a file, one or more input/output (I/O) requests are generated to retrieve data blocks associated with the file. Any time an I/O operation is performed, a processing speed of the storage system is impacted as the requested data is retrieved from the storage media. Depending on a type of storage media storing the requested data, there is an increased latency in fulfilling an I/O request. For example, retrieving data from cache memory is faster than retrieving data from random access memory (RAM), which is faster than retrieving data from persistent storage media, such as spinning disks.
Reading data asynchronously from the persistent storage media generally decreases latency. However, some storage devices utilize virtual storage with a hierarchical system for storing data blocks with one or more levels of indirect blocks (metadata) pointing to direct blocks of data stored on persistent storage media. The indirect blocks of data are stored on the persistent storage media separate from the direct blocks. Thus, conventional storage devices require all relevant indirect blocks to be read prior to issuing an asynchronous request, thereby requiring a synchronous read of the indirect blocks during the asynchronous operation and incurring an overhead. Stated differently, to read a block of data, the location of the data must first be ascertained using the indirect block. If the block location is not already read into cache memory, it must first be read into cache memory from the persistent storage media, which incurs synchronous read overhead. Where data is stored with multiple levels of indirect blocks, for example, in a sorted tree structure, there may be multiple synchronous reads of the indirect blocks as the sorted tree is traversed to reach the data block that is the target of the asynchronous read request. Waiting for all the metadata to be accumulated synchronously prior to issuing an asynchronous read impacts performance and increases latency, as the read request is locked until the metadata is accumulated.
FIG. 1 is an example storage system configured to access data from one or more storage devices by coordinating interdependent asynchronous reads.
FIG. 2 is an example network file system implementing coordinated interdependent asynchronous reads systems and methods.
FIG. 3 shows an example hierarchical data structure for a data object such as a file.
Aspects of the presently disclosed technology relate to systems and methods for coordinating interdependent asynchronous reads. Generally, a user accesses a file stored in a storage device by retrieving target data blocks associated with the file from the storage device. The target data blocks are retrieved using one or more input/output (I/O) requests. To decrease latency in such I/O requests, the storage device may read the target data blocks asynchronously. For example, data blocks may be prefetched from slower storage media into faster storage media in anticipation of the data blocks being requested later as part of an access pattern. Stated differently, if a storage device can predict which data blocks will be requested by identifying an access pattern, the data blocks may be retrieved from slower storage media into faster storage media, so that they are available in the faster storage media when requested.
A prefetch triggered from a read request is intended to be an asynchronous read and thus expected to add no overhead. However, depending on the layout of the data in the storage device, unintended overhead and increased latency may occur. For example, the storage device may provide virtual storage with a hierarchical layout for storing data blocks with one or more levels of indirect blocks (metadata) pointing to data blocks stored on the slower storage media. The indirect blocks are typically stored on the slower storage media separate from the data blocks. To read a target data block pursuant to an I/O request, a location of the target data block on the storage media is obtained using the indirect blocks, which are often read synchronously in response to the I/O request. If synchronous reads are triggered by an asynchronous request, the I/O request incurs unintended overhead and latency. Accordingly, the systems and methods described herein eliminate such synchronous side effects from an asynchronous read request by coordinating dependencies between the indirect block reads and the target data block.
In one aspect, rather than waiting for the necessary metadata to be accumulated synchronously prior to issuing an asynchronous read for a target data block, a consistent internal state of all in-progress asynchronous I/O requests is maintained. New asynchronous read requests, along with the associated metadata, are added to the consistent internal state, such that they are issued when the metadata is available. As such, multiple reads and their dependent metadata reads are coordinated and issued efficiently while maintaining their interdependence. Latency is thus decreased during various I/O requests, such as prefetch I/O operations, spacemap I/O operations, and the like.