CoreDet: a compiler and runtime system for deterministic multithreaded execution

作者: Tom Bergan , Owen Anderson , Joseph Devietti , Luis Ceze , Dan Grossman

DOI: 10.1145/1735971.1736029

关键词:

摘要: The behavior of a multithreaded program does not depend only on its inputs. Scheduling, memory reordering, timing, and low-level hardware effects all introduce nondeterminism in the execution programs. This severely complicates many tasks, including debugging, testing, automatic replication. In this work, we avoid these complications by eliminating their root cause: develop compiler runtime system that runs arbitrary C/C++ POSIX Threads programs deterministically. A trivial non-performant approach to providing determinism is simply deterministically serializing execution. Instead, present infrastructure ensures but resorts serialization rarely, for handling interthread communication synchronization. We two basic approaches, both which are largely dynamic with performance improved some static optimizations. First, an ownership-based detects via evolving table tracks ownership regions threads. Second, buffering uses versioned employs deterministic commit protocol make changes visible other While has larger single-threaded overhead than ownership, it tends scale better (serializing less often). hybrid sometimes performs scales either individually. Our implementation based LLVM infrastructure. It needs neither programmer annotations nor special hardware. empirical evaluation PARSEC SPLASH2 benchmarks shows our comparably nondeterministic

参考文章(37)
Christopher Arthur Lattner, Vikram Adve, Macroscopic data structure analysis and optimization University of Illinois at Urbana-Champaign. ,(2005)
Guy E. Blelloch, NESL: A Nested Data-Parallel Language (Version 2.6) Carnegie Mellon University. ,(1993)
William Thies, Michal Karczmarek, Saman Amarasinghe, StreamIt: A Language for Streaming Applications compiler construction. pp. 179- 196 ,(2002) , 10.1007/3-540-45937-5_14
Leblanc, Mellor-Crummey, Debugging Parallel Programs with Instant Replay IEEE Transactions on Computers. ,vol. 36, pp. 471- 482 ,(1987) , 10.1109/TC.1987.1676929
Shaz Qadeer, Iulian Neamtiu, Thomas Ball, Piramanayagam Arumuga Nainar, Madanlal Musuvathi, Gerard Basler, Finding and reproducing Heisenbugs in concurrent programs operating systems design and implementation. pp. 267- 280 ,(2008) , 10.5555/1855741.1855760
John M. Mellor-Crummey, Michael L. Scott, Algorithms for scalable synchronization on shared-memory multiprocessors ACM Transactions on Computer Systems. ,vol. 9, pp. 21- 65 ,(1991) , 10.1145/103727.103729
Steven K. Reinhardt, Mark D. Hill, James R. Larus, Alvin R. Lebeck, James C. Lewis, David A. Wood, The Wisconsin Wind Tunnel: virtual prototyping of parallel computers measurement and modeling of computer systems. ,vol. 21, pp. 48- 60 ,(1993) , 10.1145/166955.166979
Martin C. Rinard, Monica S. Lam, The design, implementation, and evaluation of Jade ACM Transactions on Programming Languages and Systems. ,vol. 20, pp. 483- 545 ,(1998) , 10.1145/291889.291893
Michiel Ronsse, Koen De Bosschere, RecPlay: a fully integrated practical record/replay system ACM Transactions on Computer Systems. ,vol. 17, pp. 133- 152 ,(1999) , 10.1145/312203.312214
Jong-Deok Choi, Harini Srinivasan, Deterministic replay of Java multithreaded applications Proceedings of the SIGMETRICS symposium on Parallel and distributed tools - SPDT '98. pp. 48- 59 ,(1998) , 10.1145/281035.281041