@InProceedings{patterson:informed,
  author = {R. Hugo Patterson and Garth A. Gibson and Eka Ginting and Daniel
  Stodolsky and Jim Zelenka},
  title = {Informed prefetching and caching},
  booktitle = {Proceedings of the Fifteenth ACM Symposium on Operating Systems
  Principles},
  year = {1995},
  month = {December},
  pages = {79--95},
  publisher = {ACM Press},
  address = {Copper Mountain, CO},
  earlier = {patterson:informed-tr},
  later = {patterson:binformed},
  keywords = {caching, prefetching, file system, hints, I/O, resource
  management, parallel I/O, pario-bib},
  abstract = {In this paper, we present aggressive, proactive mechanisms that
  tailor file system resource management to the needs of I/O-intensive
  applications. In particular, we show how to use application-disclosed access
  patterns (hints) to expose and exploit I/O parallelism, and to dynamically
  allocate file buffers among three competing demands: prefetching hinted
  blocks, caching hinted blocks for reuse, and caching recently used data for
  unhinted accesses. Our approach estimates the impact of alternative buffer
  allocations on application execution time and applies cost-benefit analysis
  to allocate buffers where they will have the greatest impact. We have
  implemented informed prefetching and caching in Digitals OSF/1 operating
  system and measured its performance on a 150 MHz Alpha equipped with 15 disks
  running a range of applications. Informed prefetching reduces the execution
  time of text search, scientific visualization, relational database queries,
  speech recognition, and object linking by 20-83\%. Informed caching reduces
  the execution time of computational physics by up to 42\% and contributes to
  the performance improvement of the object linker and the database. Moreover,
  applied to multiprogrammed, I/O-intensive workloads, informed prefetching and
  caching increase overall throughput.},
  comment = {See patterson:informed-tr for an earlier version. Programs may
  give hints to the file system about what they will read in the future, and in
  what order. Hints are used for informed prefetching and informed caching.
  Most interesting thing about this paper over the earlier ones is the buffer
  management. Prefetcher and demand fetcher both want buffers. LRU cache and
  hinted cache both could supply buffers (thru replacement). Each supplies a
  cost for giving up buffers and benefit for getting more buffers. These are
  expressed in a common 'currency', in terms of their expected effect on I/O
  service time, and a manager takes buffers from one and gives buffers to
  another when the benefits outweigh the costs. All is based on a simple model,
  which is further simplified in their implementation within OSF/1. Performance
  looks good, they can keep more disks busy in a parallel file system.
  Furthermore, informed caching helps reduce the number of I/Os. Indeed they
  'discover' MRU replacement policy automatically.}
}

