Authors: Omar Navarro Leija (University of Pennsylvania); Kelly Shiptoski (University of Pennsylvania); Ryan Scott (Indiana University); Baojun Wang (Indiana University); Nicholas Renner (University of Pennsylvania); Ryan Newton (Indiana University); Joseph Devietti (University of Pennsylvania)
We describe the design and implementation of DetTrace, a reproducible container abstraction for Linux implemented in user space. All computation that occurs inside a DetTrace container is a pure function of the initial filesystem state of the container. Reproducible containers can be used for a variety of purposes, including replication for fault-tolerance, reproducible software builds and reproducible data analytics. We use DetTrace to achieve, in an automatic fashion, reproducibility for 12,130 Debian package builds, containing over 800 million lines of code, as well as bioinformatics and machine learning workflows. We show that, while software in each of these domains is initially irreproducible, DetTrace brings reproducibility without requiring any hardware, OS or application changes. DetTrace’s performance is dictated by the frequency of system calls: IO-intensive software builds have an average overhead of 3.49×, while a compute-bound bioinformatics workflow is under 2%.