USENIX 2nd Symposium on
OS Design and Implementation (OSDI '96)
Automatic Compiler-Inserted I/O Prefetching for Out-of-Core
Applications
Best Paper Award
Todd C. Mowry,
Angela K. Demke and
Orran Krieger
University of Toronto
Abstract
Current operating systems offer poor performance when a numeri c
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
non-binding prefetch and release hints for managing
I/O, and the operating sys tem 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 move prefetches back ahead of references,
and gives the operating system the flexibility to arbitrate between
the competing resource demands of multiple applications. We have
implemented our scheme using the SUIF compiler and the Hurricane
operating system. Our experimental results demonstrate that our
fully-automatic scheme effectively hides the I/O latency in
out-of-core versions of the entire NAS Parallel benchmark suite, thus
resulting in speedups of roughly twofold for five of the eight
applications, with two applications speeding up by threefold or more.
|