@InProceedings{vilayannur:caching,
  author = {Murali Vilayannur and Anand Sivasubramaniam and Mahmut Kandemir and
  Rajeev Thakur and Robert Ross},
  title = {Discretionary Caching for {I/O} on Clusters},
  booktitle = {Proceedings of the Third IEEE/ACM International Symposium on
  Cluster Computing and the Grid},
  year = {2003},
  month = {May},
  pages = {96--103},
  publisher = {IEEE Computer Society Press},
  address = {Tokyo, Japan},
  URL =
  {http://csdl.computer.org/comp/proceedings/ccgrid/2003/1919/00/19190096abs.htm},
  keywords = {caching, parallel I/O, pario-bib},
  abstract = {I/O bottlenecks are already a problem in many large-scale
  applications that manipulate huge datasets. This problem is expected to get
  worse as applications get larger, and the I/O subsystem performance lags
  behind processor and memory speed improvements. Caching I/O blocks is one
  effective way of alleviating disk latencies, and there can be multiple levels
  of caching on a cluster of workstations. Previous studies have shown the
  benefits of caching - whether it be local to a particular node, or a shared
  global cache across the cluster - for certain applications. However, we show
  that while caching is useful in some situations, it can hurt performance if
  we are not careful about what to cache and when to bypass the cache. This
  paper presents compilation techniques and runtime support to address this
  problem. These techniques are implemented and evaluated on an experimental
  Linux/Pentium cluster running a parallel file system. Our results using a
  diverse set of applications (scientific and commercial) demonstrate the
  benefits of a discretionary approach to caching for I/O subsystems on
  clusters, providing as much as 33% savings over indiscriminately caching
  everything in some applications.}
}

