ROOT: Replaying Multithreaded Traces with Resource-Oriented Ordering
Andrea C. Arpaci-Dusseau,
Remzi H. Arpaci-Dusseau
Department of Computer Sciences,
University of Wisconsin-Madison
We describe ROOT, a new method for incorporating the nondeterministic
I/O behavior of multithreaded applications into trace replay. ROOT is
the application of Resource-Oriented Ordering to
Trace replay: actions involving a common resource are replayed
in an order similar to that of the original trace. ROOT is based on
the idea that how a program manages resources, as seen in a trace,
provides hints about an application's internal dependencies.
Inferring these dependencies allows us to partially constrain trace
replay in a way that reflects the constraints of the original program.
We make three contributions: (1) we describe the ROOT approach, (2) we
release ARTC, a new ROOT-based tool for replaying I/O traces, and (3)
we create Magritte, a file-system benchmark suite generated by
applying ARTC to 34 Apple desktop application traces. When collecting
traces on one platform and replaying on another, ARTC achieves an
average timing inaccuracy of 10.6% on our benchmark workloads, halving
the 21.3% achieved by the next-best replay method we evaluate.
Source code: ARTC & Magritte