Compiler-based I/O prefetching for out-of-core applications
- 1 May 2001
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computer Systems
- Vol. 19 (2) , 111-170
- https://doi.org/10.1145/377769.377774
Abstract
Current operating systems offer poor performance when a numeric application's working set does not fit in main memory. As a result, programmers who wish to solve “out-of-core” problems efficiently are typically faced with the onerous task of rewriting an application to use explicit I/O operations (e.g., read/write). In this paper, we propose and evaluate a fully automatic technique which liberates the programmer from this task, provides high performance, and requires only minimal changes to current operating systems. In our scheme the compiler provides the crucial information on future access patterns without burdening the programmer; the operating system supports nonbindingprefetchandreleasehints for managing I/O; and the operating systems cooperates with a run-time layer to accelerate performance by adapting to dynamic behavior and minimizing prefetch overhead. This approach maintains the abstraction of unlimited virtual memory for the programmer, gives the compiler the flexibility to aggressively insert prefetches ahead of references, and gives the operating system the flexibility to arbitrate between the competing resource demands of multiple applications. We implemented our compiler analysis within the SUIF compiler, and used it to target implementations of our run-time and OS support on both research and commercial systems (Hurricane and IRIX 6.5, respectively). Our experimental results show large performance gains for out-of-core scientific applications on both systems: more than 50% of the I/O stall time has been eliminated in most cases, thus translating into overall speedups of roughly twofold in many cases.Keywords
This publication has 12 references indexed in Scilit:
- HFSACM Transactions on Computer Systems, 1997
- The SGI OriginPublished by Association for Computing Machinery (ACM) ,1997
- A prefetching prototype for the parallel file systems on the ParagonPublished by Association for Computing Machinery (ACM) ,1995
- A study of integrated prefetching and caching strategiesPublished by Association for Computing Machinery (ACM) ,1995
- Hierarchical clustering: A structure for scalable multiprocessor operating system designThe Journal of Supercomputing, 1995
- RAID: high-performance, reliable secondary storageACM Computing Surveys, 1994
- Practical prefetching techniques for multiprocessor file systemsDistributed and Parallel Databases, 1993
- Hector: a hierarchically structured shared-memory multiprocessorComputer, 1991
- Prefetching in file systems for MIMD multiprocessorsIEEE Transactions on Parallel and Distributed Systems, 1990
- Strategies for cache and local memory management by global program transformationJournal of Parallel and Distributed Computing, 1988