The RAPID-Transit Project (1987-1991)

David Kotz and Carla Ellis, Duke University

RAPID-Transitwas a testbed for experimenting with caching and
prefetching algorithms in parallel file systems (RAPID means
"Read-Ahead for Parallel Independent Disks"), and was part of the
larger NUMAtic project at Duke University.  The testbed ran on Duke's
64-processor Butterfly GP1000.  The model we used had a disk attached
to every processor, and that each file was striped across all disks.
Of course, Duke's GP1000 had only one real disk, so our testbed
simulated its disks.  The implementation and some of the policies were
dependent on the shared-memory nature of the machine; for example,
there was a single shared file cache accessible to all processors.  We
found several policies that were successful at prefetching in a
variety of parallel file-access patterns.

This directory contains source code, configuration scripts, scripts to
run tests, etc.  I supply it AS-IS, and can't offer much support for
anyone trying to use it.  

David Kotz
dfk@cs.dartmouth.edu
December 1994

http://www.cs.dartmouth.edu/research/rapid-transit.html


There are several papers describing this research:

@InProceedings{ellis:prefetch,
  author = {Carla Schlatter Ellis and David Kotz},
  title = {Prefetching in File Systems for {MIMD} Multiprocessors},
  booktitle = {Proceedings of the 1989 International Conference on Parallel
  Processing},
  year = {1989},
  month = {August},
  pages = {I:306--314},
  URL = {http://www.cs.dartmouth.edu/papers/Kotz/ellis_prefetch.html},
  keyword = {dfk, parallel file system, prefetching, disk caching, MIMD,
  parallel I/O, pario bib},
  abstract = {The problem of providing file I/O to parallel programs has been
  largely neglected in the development of multiprocessor systems. There are two
  essential elements of any file system design intended for a highly parallel
  environment: parallel I/O and effective caching schemes. This paper
  concentrates on the second aspect of file system design and specifically, on
  the question of whether prefetching blocks of the file into the block cache
  can effectively reduce overall execution time of a parallel computation, even
  under favorable assumptions. Experiments have been conducted with an
  interleaved file system testbed on the Butterfly Plus multiprocessor. Results
  of these experiments suggest that 1) the hit ratio, the accepted measure in
  traditional caching studies, may not be an adequate measure of performance
  when the workload consists of parallel computations and parallel file access
  patterns, 2) caching with prefetching can significantly improve the hit ratio
  and the average time to perform an I/O operation, and 3) an improvement in
  overall execution time has been observed in most cases. In spite of these
  gains, prefetching sometimes results in increased execution times (a negative
  result, given the optimistic nature of the study). We explore why is it not
  trivial to translate savings on individual I/O requests into consistently
  better overall performance and identify the key problems that need to be
  addressed in order to improve the potential of prefetching techniques in this
  environment.},
  comment = {Superseded by kotz:prefetch.}
}

@TechReport{kotz:fsint,
  author = {David Kotz},
  title = {Multiprocessor File System Interfaces},
  year = {1992},
  month = {March},
  number = {PCS-TR92-179},
  institution = {Dept. of Math and Computer Science, Dartmouth College},
  note = {Revised version appeared in PDIS'93.},
  URL = {file://cs.dartmouth.edu/pub/CS-techreports/TR92-179.ps.Z},
  keyword = {dfk, parallel I/O, multiprocessor file system, file system
  interface, pario bib},
  abstract = {Increasingly, file systems for multiprocessors are designed with
  parallel access to multiple disks, to keep I/O from becoming a serious
  bottleneck for parallel applications. Although file system software can
  transparently provide high-performance access to parallel disks, a new file
  system interface is needed to facilitate parallel access to a file from a
  parallel application. We describe the difficulties faced when using the
  conventional (Unix-like) interface in parallel applications, and then outline
  ways to extend the conventional interface to provide convenient access to the
  file for parallel programs, while retaining the traditional interface for
  programs that have no need for explicitly parallel file access. Our interface
  includes a single naming scheme, a {\em multiopen\/} operation, local and
  global file pointers, mapped file pointers, logical records, {\em
  multifiles}, and logical coercion for backward compatibility.},
  comment = {Cite kotz:fsint2. See also lake:pario for implementation of some
  of the ideas.}
}

@InProceedings{kotz:fsint2,
  author = {David Kotz},
  title = {Multiprocessor File System Interfaces},
  booktitle = {Proceedings of the Second International Conference on Parallel
  and Distributed Information Systems},
  year = {1993},
  pages = {194--201},
  URL = {file://cs.dartmouth.edu/pub/CS-papers/Kotz/kotz:fsint2.ps.Z},
  keyword = {dfk, parallel I/O, multiprocessor file system, file system
  interface, pario bib},
  abstract = {Increasingly, file systems for multiprocessors are designed with
  parallel access to multiple disks, to keep I/O from becoming a serious
  bottleneck for parallel applications. Although file system software can
  transparently provide high-performance access to parallel disks, a new file
  system interface is needed to facilitate parallel access to a file from a
  parallel application. We describe the difficulties faced when using the
  conventional (Unix-like) interface in parallel applications, and then outline
  ways to extend the conventional interface to provide convenient access to the
  file for parallel programs, while retaining the traditional interface for
  programs that have no need for explicitly parallel file access. Our interface
  includes a single naming scheme, a {\em multiopen\/} operation, local and
  global file pointers, mapped file pointers, logical records, {\em
  multifiles}, and logical coercion for backward compatibility.},
  comment = {See also lake:pario for implementation of some of the ideas.}
}

@InProceedings{kotz:fsint2p,
  author = {David Kotz},
  title = {Multiprocessor File System Interfaces},
  booktitle = {Proceedings of the USENIX File Systems Workshop},
  year = {1992},
  month = {May},
  pages = {149--150},
  keyword = {dfk, parallel I/O, multiprocessor file system, file system
  interface, pario bib},
  comment = {Short paper (2 pages). See kotz:fsint2.}
}

@Article{kotz:jpractical,
  author = {David Kotz and Carla Schlatter Ellis},
  title = {Practical Prefetching Techniques for Multiprocessor File Systems},
  journal = {Journal of Distributed and Parallel Databases},
  year = {1993},
  month = {January},
  volume = {1},
  number = {1},
  pages = {33--51},
  URL = {http://www.cs.dartmouth.edu/papers/Kotz/jpractical.html},
  keyword = {dfk, parallel file system, prefetching, disk caching, parallel
  I/O, MIMD, pario bib},
  abstract = {Improvements in the processing speed of multiprocessors are
  outpacing improvements in the speed of disk hardware. Parallel disk I/O
  subsystems have been proposed as one way to close the gap between processor
  and disk speeds. In a previous paper we showed that prefetching and caching
  have the potential to deliver the performance benefits of parallel file
  systems to parallel applications. In this paper we describe experiments with
  practical prefetching policies that base decisions only on on-line reference
  history, and that can be implemented efficiently. We also test the ability of
  these policies across a range of architectural parameters.},
  comment = {Journal version of kotz:practical. See also kotz:jwriteback,
  kotz:fsint2, cormen:integrate.}
}

@Article{kotz:jwriteback,
  author = {David Kotz and Carla Schlatter Ellis},
  title = {Caching and Writeback Policies in Parallel File Systems},
  journal = {Journal of Parallel and Distributed Computing},
  year = {1993},
  month = {January and February},
  volume = {17},
  number = {1--2},
  pages = {140--145},
  URL = {file://cs.dartmouth.edu/pub/CS-papers/Kotz/kotz:jwriteback.ps.Z},
  keyword = {dfk, parallel file system, disk caching, parallel I/O, MIMD, pario
  bib},
  abstract = {Improvements in the processing speed of multiprocessors are
  outpacing improvements in the speed of disk hardware. Parallel disk I/O
  subsystems have been proposed as one way to close the gap between processor
  and disk speeds. Such parallel disk systems require parallel file system
  software to avoid performance-limiting bottlenecks. We discuss cache
  management techniques that can be used in a parallel file system
  implementation for multiprocessors with scientific workloads. We examine
  several writeback policies, and give results of experiments that test their
  performance.},
  comment = {Journal version of kotz:writeback. See kotz:jpractical,
  kotz:fsint2, cormen:integrate.}
}

@InProceedings{kotz:practical,
  author = {David Kotz and Carla Schlatter Ellis},
  title = {Practical Prefetching Techniques for Parallel File Systems},
  booktitle = {Proceedings of the First International Conference on Parallel
  and Distributed Information Systems},
  year = {1991},
  month = {December},
  pages = {182--189},
  URL = {file://cs.dartmouth.edu/pub/CS-papers/Kotz/kotz:practical.ps.Z},
  keyword = {dfk, parallel file system, prefetching, disk caching, parallel
  I/O, MIMD, OS93W extra, OS92W, pario bib},
  abstract = {Parallel disk subsystems have been proposed as one way to close
  the gap between processor and disk speeds. In a previous paper we showed that
  prefetching and caching have the potential to deliver the performance
  benefits of parallel file systems to parallel applications. In this paper we
  describe experiments with practical prefetching policies, and show that
  prefetching can be implemented efficiently even for the more complex parallel
  file access patterns. We test these policies across a range of architectural
  parameters.},
  comment = {Short form of primary thesis results. Cite kotz:jpractical. See
  kotz:jwriteback, kotz:fsint2, cormen:integrate.}
}

@Article{kotz:prefetch,
  author = {David Kotz and Carla Schlatter Ellis},
  title = {Prefetching in File Systems for {MIMD} Multiprocessors},
  journal = {IEEE Transactions on Parallel and Distributed Systems},
  year = {1990},
  month = {April},
  volume = {1},
  number = {2},
  pages = {218--230},
  URL = {http://www.cs.dartmouth.edu/papers/Kotz/prefetch.html},
  keyword = {dfk, parallel file system, prefetching, MIMD, disk caching,
  parallel I/O, pario bib},
  abstract = {The problem of providing file I/O to parallel programs has been
  largely neglected in the development of multiprocessor systems. There are two
  essential elements of any file system design intended for a highly parallel
  environment: parallel I/O and effective caching schemes. This paper
  concentrates on the second aspect of file system design and specifically, on
  the question of whether prefetching blocks of the file into the block cache
  can effectively reduce overall execution time of a parallel computation, even
  under favorable assumptions. Experiments have been conducted with an
  interleaved file system testbed on the Butterfly Plus multiprocessor. Results
  of these experiments suggest that 1) the hit ratio, the accepted measure in
  traditional caching studies, may not be an adequate measure of performance
  when the workload consists of parallel computations and parallel file access
  patterns, 2) caching with prefetching can significantly improve the hit ratio
  and the average time to perform an I/O operation, and 3) an improvement in
  overall execution time has been observed in most cases. In spite of these
  gains, prefetching sometimes results in increased execution times (a negative
  result, given the optimistic nature of the study). We explore why is it not
  trivial to translate savings on individual I/O requests into consistently
  better overall performance and identify the key problems that need to be
  addressed in order to improve the potential of prefetching techniques in this
  environment.}
}

@PhdThesis{kotz:thesis,
  author = {David Kotz},
  title = {Prefetching and Caching Techniques in File Systems for {MIMD}
  Multiprocessors},
  year = {1991},
  month = {April},
  school = {Duke University},
  note = {Available as technical report CS-1991-016.},
  URL = {file://cs.duke.edu/dist/theses/kotz/kotz.ps.Z},
  keyword = {dfk, parallel file system, prefetching, MIMD, disk caching,
  parallel I/O, pario bib},
  abstract = {The increasing speed of the most powerful computers, especially
  multiprocessors, makes it difficult to provide sufficient I/O bandwidth to
  keep them running at full speed for the largest problems. Trends show that
  the difference in the speed of disk hardware and the speed of processors is
  increasing, with I/O severely limiting the performance of otherwise fast
  machines. This widening access-time gap is known as the ``I/O bottleneck
  crisis.'' One solution to the crisis, suggested by many researchers, is to
  use many disks in parallel to increase the overall bandwidth. This
  dissertation studies some of the file system issues needed to get high
  performance from parallel disk systems, since parallel hardware alone cannot
  guarantee good performance. The target systems are large MIMD multiprocessors
  used for scientific applications, with large files spread over multiple disks
  attached in parallel. The focus is on automatic caching and prefetching
  techniques. We show that caching and prefetching can transparently provide
  the power of parallel disk hardware to both sequential and parallel
  applications using a conventional file system interface. We also propose a
  new file system interface (compatible with the conventional interface) that
  could make it easier to use parallel disks effectively. Our methodology is a
  mixture of implementation and simulation, using a software testbed that we
  built to run on a BBN GP1000 multiprocessor. The testbed simulates the disks
  and fully implements the caching and prefetching policies. Using a synthetic
  workload as input, we use the testbed in an extensive set of experiments. The
  results show that prefetching and caching improved the performance of
  parallel file systems, often dramatically.},
  comment = {Published as kotz:prefetch, kotz:jwriteback, kotz:jpractical,
  kotz:fsint2.}
}

@InProceedings{kotz:writeback,
  author = {David Kotz and Carla Schlatter Ellis},
  title = {Caching and Writeback Policies in Parallel File Systems},
  booktitle = {1991 IEEE Symposium on Parallel and Distributed Processing},
  year = {1991},
  month = {December},
  pages = {60--67},
  URL = {file://cs.dartmouth.edu/pub/CS-papers/Kotz/kotz:writeback.ps.Z},
  keyword = {dfk, parallel file system, disk caching, parallel I/O, MIMD, pario
  bib},
  abstract = {Improvements in the processing speed of multiprocessors are
  outpacing improvements in the speed of disk hardware. Parallel disk I/O
  subsystems have been proposed as one way to close the gap between processor
  and disk speeds. Such parallel disk systems require parallel file system
  software to avoid performance-limiting bottlenecks. We discuss cache
  management techniques that can be used in a parallel file system
  implementation. We examine several writeback policies, and give results of
  experiments that test their performance.},
  comment = {Cite kotz:jwriteback. See also kotz:jpractical, kotz:fsint2,
  cormen:integrate.}
}

