Collaborative Research: Automatic Extraction of Parallel I/O Benchmarks from HEC Applications


I/O performance is often an issue for high-end computing (HEC) codes, due to their increasingly data-intensive nature and the ever-growing CPU-I/O performance gap. Portable parallel I/O benchmarks can help
(1) application developers to improve their codes' performance,
(2) HEC storage systems architects to improve their designs, and
(3) future and current owners of HEC platforms to reduce hardware cost and improve application performance through better system provisioning and configuration.

To keep up with the growing scale and complexity of HEC applications, this project develops automated generation of parallel I/O benchmarks, analogous to the SPEC and NAS benchmarks for computation. Our approach will be embedded in BenchMaker, a prototype tool that takes a real-world, large-scale parallel application and automatically distills it into a compact, human-intelligible, I/O-intensive, and parameterized benchmark. Such a benchmark accurately reflects the original application's I/O characteristics and I/O performance, yet with shorter execution time, reduced need for libraries, better portability, and easy scalability.

This research will produce benchmarks and tools that benefit the computational science community at large. Our benchmark prototypes will be used for parallel computing course projects and student research contests.


Publications:

Theses:

Software:

ScalaTrace:

ScalaTrace web site

Trace-Driven Scientific I/O Benchmarks:

Traces of scientific I/O workloads are being made available to enable computing-related research. Examples include traces from Sandia National Laboratories and Los Alamos National Laboratory. Useful statistics can be extracted from such traces. However, it is sometimes desirable to run applications represented by the traces so as to evaluate the performance and other behaviors of I/O and storage systems. For this purpose, we have created a trace player, TracePlay/Control, written in C, to recreate some of the trace conditions in the form of runnable benchmarks. Our trace player uses formatted traces that are derived from original scientific I/O traces. Our player is less of a full-blown utility but more of a benchmark using traces extracted from actual scientific applications. The benchmark itself is largely just a shell or wrapper for a parsed trace.

In order to successfully replay a trace, the file system context must be recreated. Our trace player extracts directory and file names accessed throughout the trace and recreates the hierarchy. Files are created with the maximum estimated size inferred from I/O system calls (read, write, seek). Our trace player is capable of running in two modes:

Download source: traceplayer_v0.9.zip

Traces below originated from those released by Sandia National Laboratories and Los Alamos National Laboratory. We sanitized the original traces and converted them into the format suitable for our trace player.

Installation and usage notes (also in the README file).


"This material is based upon work supported by the National Science Foundation under Grant No. 0937908."

"Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation."