A Prefetching Scheme Exploiting both Data Layout and Access History on Disk

A Prefetching Scheme Exploiting both Data Layout and Access History on Disk
复制标题

DOI:
10.1145/2508010
复制
发表时间:
2013-08
期刊:
ACM Trans. Storage
影响因子:
--
通讯作者:
Song Jiang;Xiaoning Ding;Yuehai Xu;K. Davis
Song Jiang;Xiaoning Ding;Yuehai Xu;K. Davis
中科院分区:
其他
文献类型:
--
作者:
Song Jiang;Xiaoning Ding;Yuehai Xu;K. Davis

文献摘要

被引文献

相似文献

预取是提高硬盘有效性能的一项重要技术。预取器试图准确地预测哪些数据将被请求,并在相应请求到达之前加载它。主要操作系统中的当前磁盘预取策略在文件抽象级别跟踪访问模式。虽然这对于利用应用程序级访问模式很有用,但由于两个原因,文件级预取无法实现预取可实现的全部性能改进。首先,某些预取机会只能通过了解磁盘上的数据布局来检测,例如文件元数据或来自多个文件的数据的连续布局。其次,磁盘数据的非顺序访问(需要磁盘磁头移动)比顺序访问慢得多,并且相对于顺序块,错误预取随机定位块的性能损失相应地更大。为了克服在逻辑文件级预取的固有局限性,我们提出了直接在磁盘布局级执行预取,并在一个可移植的方式。我们的技术,所谓的预取,是为了补充,并协同工作,任何目前的文件级预取政策。RightSeen跟踪磁盘块的位置和访问时间,并基于对它们的时间和空间关系的分析,寻求改善磁盘访问的顺序性和整体预取性能。它还实现了一种机制,以最大限度地减少每个应用程序的错误预取,以减轻相应的性能损失。我们在Linux 2.6内核中实现的预取方案表明,它可以显着提高预取的有效性,对于微基准测试和真实的应用程序,如grep,CVS和TPC-H,执行时间减少20%-60%。即使是专门设计来暴露其弱点的工作负载,RISK Seen也只会导致轻微的性能损失。
Prefetching is an important technique for improving effective hard disk performance. A prefetcher seeks to accurately predict which data will be requested and load it ahead of the arrival of the corresponding requests. Current disk prefetch policies in major operating systems track access patterns at the level of file abstraction. While this is useful for exploiting application-level access patterns, for two reasons file-level prefetching cannot realize the full performance improvements achievable by prefetching. First, certain prefetch opportunities can only be detected by knowing the data layout on disk, such as the contiguous layout of file metadata or data from multiple files. Second, nonsequential access of disk data (requiring disk head movement) is much slower than sequential access, and the performance penalty for mis-prefetching a randomly located block, relative to that of a sequential block, is correspondingly greater. To overcome the inherent limitations of prefetching at logical file level, we propose to perform prefetching directly at the level of disk layout, and in a portable way. Our technique, called DiskSeen, is intended to be supplementary to, and to work synergistically with, any present file-level prefetch policies. DiskSeen tracks the locations and access times of disk blocks and, based on analysis of their temporal and spatial relationships, seeks to improve the sequentiality of disk accesses and overall prefetching performance. It also implements a mechanism to minimize mis-prefetching, on a per-application basis, to mitigate the corresponding performance penalty. Our implementation of the DiskSeen scheme in the Linux 2.6 kernel shows that it can significantly improve the effectiveness of prefetching, reducing execution times by 20%--60% for microbenchmarks and real applications such as grep, CVS, and TPC-H. Even for workloads specifically designed to expose its weaknesses, DiskSeen incurs only minor performance loss.