An Asynchronous Striping-Aware Readahead Framework for Disk Arrays in Linux

Sung Hoon BAEK  

IEICE TRANSACTIONS on Information and Systems   Vol.E96-D   No.1   pp.19-27
Publication Date: 2013/01/01
Online ISSN: 1745-1361
DOI: 10.1587/transinf.E96.D.19
Print ISSN: 0916-8532
Type of Manuscript: PAPER
Category: Software System
storage,  parallel I/O,  prefetching,  disk array,  

Full Text: PDF(1.9MB)>>
Buy this Article

Disk arrays and prefetching schemes are used to mitigate the performance gap between main memory and disks. This paper presents a new problem that arises if prefetching schemes that are widely used in operation systems are applied to disk arrays. The key point of the problem is that block address space from the viewpoint of the host is contiguous but from that of the disk array it is discontiguous and thus more disk accesses than expected are required. This paper presents two ways to resolve the problem that arises from the Linux readahead framework. The proposed scheme prevents a readahead window from being split into multiple requests from the viewpoint of the disk array but not from the viewpoint of the host thereby reducing disk head movements. In addition, it outperforms the prior work by adopting an asynchronous solution, improving performance for fragmented files, eliminating readahead size restriction, and improving disk parallelism. We implemented the proposed scheme and integrated it with Linux. Our experiment shows that the solution significantly improved the original Linux readahead framework when a storage server processes multiple concurrent requests.