Because the performance gap between memory and disk drives has remained significant, even with the latest advances in technology, optimizing performance in the IO path has been the focus of work for many researchers. In addition to adding resources such as caches [2] in the IO path and managing them more efficiently [14], optimization of the IO activity itself is one of the main tools to enhance IO performance. IO workload optimization consists mostly of request merging and request reordering at various levels of the IO hierarchy, such as the file system, the device driver, and the disk drive.
IO work reordering via scheduling early on aimed at minimizing the linear disk head movement (i.e., seeks) [3,4,7,21] and later evolved to minimizing the overall head position phase [1,10,22] of a disk request service. Because IO request reordering introduces variability in request response time, multiple variations are proposed to mitigate the problem [28]. On the analytic side, there are studies that compare analytically disk scheduling algorithms [26] and derive empirical models of disk access patterns to facilitate such comparison [27].
Recent advances in disk scheduling include speculative waiting to better exploit temporal and spatial locality of IO requests [9], predicting disk service times [16] and disk head position [5] to enhance performance of seek-based schedulers at the device driver, increasing disk head utilization by reading ``for free'' data on the path of the disk head movement [13], and other hierarchical approaches [23], which are mostly used for performance virtualization in large systems [12].
Performance optimization at the disk drive level is mostly related to request scheduling and evaluated in association with it [28]. IO performance improvement is also evaluated in association with workload characterization studies [20]. Performance enhancement related to advancements in disk technology, including areal density and rotational speed is discussed in [15]..
While most request reordering happens either at the device driver or at the disk, file systems also represent a critical component of the IO path capable of effective IO work optimization. The main research efforts when it comes to enhancing file systems, are related with improving data reliability and consistency [17,24]. However considerable work is done to enhance file system performance as well. For example scalability of the XFS file system is discussed in [25] and file system workload characteristics are analyzed in [6,8]. A comparative study between file systems is presented in [19].
Apart from the existing work, our paper analyzes advances in the IO path, and evaluates how effectively they integrally optimize and enhance IO performance. Most works evaluate the components of the IO path individually, while in this paper, we analyze their impact in overall application performance. Our goal is to first identify the reasons why some components in the IO path are more effective than others in optimizing the IO workload and secondly understand if and how such optimization can be as effective in other tiers as well with the goal to further enhance IO subsystem performance.