Inspection of I/O Operations from System Call Traces using Directly-Follows-Graph
Aravind Sankaran, Ilya Zhukov, Wolfgang Frings, Paolo Bientinesi
TL;DR
The paper tackles identifying I/O bottlenecks in HPC programs by turning system-call traces into a Directly-Follows Graph, enabling cross-program comparisons. A mapping function $\hat{f}$ converts raw events to file-access activities, producing activity-logs that feed the DFG $G[L_f(\mathcal{C})]$. Contributions include a formal DFG synthesis framework with activity statistics (relative duration $rd_f$, total bytes $b_f$, average rate $\bar{dr}_f$, max-concurrency $mc_f$, and derived load $DR = mc_f \times \bar{dr}_f$) and two graph-coloring methods for comparing traces. Applied to the IOR benchmark, the method reveals contention patterns across SSF vs FPP and MPI-IO usage, offering a practical tool for HPC I/O tuning.
Abstract
We aim to identify the differences in Input/Output(I/O) behavior between multiple user programs through the inspection of system calls (i.e., requests made to the operating system). A typical program issues a large number of I/O requests to the operating system, thereby making the process of inspection challenging. In this paper, we address this challenge by presenting a methodology to synthesize I/O system call traces into a specific type of directed graph, known as the Directly-Follows-Graph (DFG). Based on the DFG, we present a technique to compare the traces from multiple programs or different configurations of the same program, such that it is possible to identify the differences in the I/O behavior. We apply our methodology to the IOR benchmark, and compare the contentions for file accesses when the benchmark is run with different options for file output and software interface.
