Parallel and Concurrent I/O Management for High-End Computing

High-end parallel applications that store and analyze large datasets demand significant I/O capacity. Clusters of storage servers, managed by parallel file systems and integrated with I/O middleware (such as MPI-IO) and operating systems, promise to provide scalable I/O performance for high-end applications. These systems are complex in the interaction between multiple levels of application/system software and hardware components, and in the wide ranges of system features and configuration settings. This project investigates system-level techniques to better manage parallel and concurrent I/O for high-end computing. To characterize I/O performance behaviors and pinpoint anomalies, we devised a model-driven performance debugging approach (FAST'05), studied multi-level I/O tracing (ICPP'07), and explored the use of references in I/O performance characterization (SIGMETRICS'09). To address the disk seek/rotation during concurrent I/O, we proposed a new I/O prefetching approach that achieves 2-competitive performance (EuroSys'07). This project also studies the benchmarking of I/O-intensive high-end workloads for their easy uses in practice. We produced easy-to-run benchmarks from raw high-end parallel I/O traces (details later in this page). We used such benchmarks to evaluate the performance effects of scientific I/O workloads on the emerging flash-based solid state storage (IASDS'09). Furthermore, we devised new I/O scheduling techniques for flash-based solid state storage to achieve efficiency, fairness, and responsiveness (FAST'12 and USENIX ATC'13).

Project Participants:

Chuanpeng Li, Ph.D., now at Bloomberg
Pin Lu, M.S., now at Microsoft
Stan Park, Ph.D., now at HP Labs
Jonathan Pearson, M.S.
Kai Shen, Principal Investigator, University of Rochester

Contact:

Kai Shen (kshen@cs.rochester.edu)

Most Relevant Publications:

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).

Support:

This project is supported by the National Science Foundation under Grants No. 0937571 (link to the award abstract) and No. 0621472 (link to the award abstract).

Note:

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.