Abstract
Making multithreaded execution less non-deterministic is a promising solution to address the difficulty of concurrent programming plagued by the non-deterministic thread scheduling. In fact, a vast category of concurrent programs are scheduler-oblivious: their execution is deterministic, regardless of the scheduling behavior. We present and formally prove a fundamental observation of the privatizability property for scheduler-oblivious programs, that paves the theoretical foundation for privatizing shared data accesses on a path segment. With privatization, the non-deterministic thread interleavings on the privatized accesses are isolated and as the consequence many concurrency problems are alleviated. We further present a path and context sensitive privatization algorithm that safely privatizes the program without introducing any additional program behavior. Our evaluation results show that the privatization opportunity pervasively exists in real world large complex concurrent systems. Through privatization, several real concurrency bugs are fixed and notable performance improvements are also achieved on benchmarks.
- Ali-Reza Adl-Tabatabai, Brian T. Lewis, Vijay Menon, Brian R. Murphy, Bratin Saha, and Tatiana Shpeisman. Compiler and runtime support for efficient software transactional memory. In PLDI, 2006. Google Scholar
Digital Library
- Sarita V. Adve and Mark D. Hill. Weak ordering--a new definition. SIGARCH Comput. Archit. News, 1990. Google Scholar
Digital Library
- Hagit Attiya, Rachid Guerraoui, Danny Hendler, Petr Kuznetsov, Maged M. Michael, and Martin Vechev. Laws of order: expensive synchronization in concurrent algorithms cannot be eliminated. In POPL, 2011. Google Scholar
Digital Library
- Amittai Aviram, Shu-Chun Weng, Sen Hu, and Bryan Ford. Efficient system-enforced deterministic parallelism. In OSDI, 2010. Google Scholar
Digital Library
- Tom Bergan, Owen Anderson, Joseph Devietti, Luis Ceze, and Dan Grossman. Coredet: a compiler and runtime system for deterministic multithreaded execution. In ASPLOS, 2010. Google Scholar
Digital Library
- Tom Bergan, Nicholas Hunt, Luis Ceze, and Steven D. Gribble. Deterministic process groups in dos. In OSDI, 2010. Google Scholar
Digital Library
- Emery D. Berger, Ting Yang, Tongping Liu, and Gene Novark. Grace: safe multithreaded programming for c/cGoogle Scholar
- . In OOPSLA, 2009.Google Scholar
- Philip A. Bernstein and Nathan Goodman. Concurrency control in distributed database systems. ACM Comput. Surv., 1981. Google Scholar
Digital Library
- Robert L. Bocchino, Jr., Vikram S. Adve, Sarita V. Adve, and Marc Snir. Parallel programming must be deterministic by default. In HotPar, 2009. Google Scholar
Digital Library
- Robert L. Bocchino, Jr., Vikram S. Adve, Danny Dig, Sarita V. Adve, Stephen Heumann, Rakesh Komuravelli, Jeffrey Overbey, Patrick Simmons, Hyojin Sung, and Mohsen Vakilian. A type and effect system for deterministic parallel java. In OOPSLA, 2009. Google Scholar
Digital Library
- Michael D. Bond, Graham Z. Baker, and Samuel Z. Guyer. Breadcrumbs: efficient context sensitivity for dynamic bug detection analyses. In PLDI, 2010. Google Scholar
Digital Library
- Jacob Burnim and Koushik Sen. Asserting and checking determinism for multithreaded programs. In ESEC/FSE, 2009. Google Scholar
Digital Library
- Heming Cui, Jingyue Wu, John Gallagher, Huayang Guo, and Junfeng Yang. Efficient deterministic multithreading through schedule relaxation. In SOSP, 2011. Google Scholar
Digital Library
- Joseph Devietti, Brandon Lucia, Luis Ceze, and Mark Oskin. Dmp: deterministic shared memory multi-processing. In ASPLOS, 2009. Google Scholar
Digital Library
- Joseph Devietti, Jacob Nelson, Tom Bergan, Luis Ceze, and Dan Grossman. Rcdc: a relaxed consistency deterministic computer. In ASPLOS, 2011. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In POPL, 2004. Google Scholar
Digital Library
- Manish Gupta. On privatization of variables for data-parallel execution. In IPPS, 1997. Google Scholar
Digital Library
- Maurice Herlihy and J. Eliot B. Moss. Transactional memory: Architectural support for lock-free data structures. In ISCA, 1993. Google Scholar
Digital Library
- Derek R. Hower and Mark D. Hill. Rerun: Exploiting episodes for lightweight memory race recording. In ISCA, 2008. Google Scholar
Digital Library
- Jeff Huang, Peng Liu, and Charles Zhang. LEAP: Lightweight deterministic multi-processor replay of concurrent Java programs. In FSE, 2010. Google Scholar
Digital Library
- Jeff Huang and Charles Zhang. An efficient static trace simplification technique for debugging concurrent programs. In SAS, 2011. Google Scholar
Digital Library
- Nicholas Jalbert and Koushik Sen. A trace simplification technique for effective debugging of concurrent programs. In FSE, 2010. Google Scholar
Digital Library
- Guoliang Jin, Linhai Song, Wei Zhang, Shan Lu, and Ben Liblit. Automated atomicity-violation fixing. In PLDI, 2011. Google Scholar
Digital Library
- L. Lamport. How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Comput., 1979. Google Scholar
Digital Library
- Zhiyuan Li, Jenn-Yuan Tsai, Xin Wang, Pen-Chung Yew, and Bess Zheng. Compiler techniques for concurrent multithreading with hardware speculation support. In LCPC, 1997. Google Scholar
Digital Library
- Shan Lu, Joseph Tucek, Feng Qin, and Yuanyuan Zhou. Avio: detecting atomicity violations via access interleaving invariants. In ASPLOS, 2006. Google Scholar
Digital Library
- Brandon Lucia, Joseph Devietti, Karin Strauss, and Luis Ceze. Atom-aid: Detecting and surviving atomicity violations. In ISCA, 2008. Google Scholar
Digital Library
- Jeremy Manson, William Pugh, and Sarita V. Adve. The java memory model. In POPL, 2005. Google Scholar
Digital Library
- Dan Marino, Abhayendra Singh, Todd Millstein, Madan Musuvathi, and Satish Narayanasamy. Drfx: A simple and efficient memory model for concurrent programming languages. In PLDI, 2009. Google Scholar
Digital Library
- Pablo Montesinos, Luis Ceze, and Josep Torrellas. Delorean: Recording and deterministically replaying shared-memory multi-processor execution efficiently. In ISCA, 2008. Google Scholar
Digital Library
- Soyeon Park, Shan Lu, and Yuanyuan Zhou. Ctrigger: exposing atomicity violation bugs from their hiding places. In ASPLOS, 2009. Google Scholar
Digital Library
- Sriram Rajamani, G. Ramalingam, Venkatesh Prasad Ranganath, and Kapil Vaswani. Isolator: dynamically ensuring isolation in comcurrent programs. In ASPLOS, 2009. Google Scholar
Digital Library
- Paruj Ratanaworabhan, Martin Burtscher, Darko Kirovski, Benjamin Zorn, Rahul Nagpal, and Karthik Pattabiraman. Detecting and tolerating asymmetric races. In PPoPP, 2009. Google Scholar
Digital Library
- Nir Shavit and Dan Touitou. Software transactional memory. In PODC, 1995. Google Scholar
Digital Library
- CORPORATE SPARC International, Inc. The SPARC architecture manual (version 9). 1994. Google Scholar
Digital Library
- William N. Sumner, Yunhui Zheng, Dasarath Weeratunge, and Xiangyu Zhang. Precise calling context encoding. In ICSE, 2010. Google Scholar
Digital Library
- Jenn-Yuan Tsai, Zhenzhen Jiang, and Pen-Chung Yew. Program optimization for concurrent multithreaded architectures. In LCPC, 1998. Google Scholar
Digital Library
- Mandana Vaziri, Frank Tip, and Julian Dolby. Associating synchronization constraints with data in an object-oriented language. In POPL, 2006. Google Scholar
Digital Library
- Kaushik Veeraraghavan, Peter M. Chen, Jason Flinn, and Satish Narayanasamy. Detecting and surviving data races using complementary schedules. In SOSP, 2011. Google Scholar
Digital Library
- Jaroslavv Sevcık and David Aspinall. On validity of program transformations in the java memory model. In ECOOP, 2008. Google Scholar
Digital Library
- Liqiang Wang and Scott D. Stoller. Runtime analysis of atomicity for multithreaded programs. TSE, 2006. Google Scholar
Digital Library
- Dasarath Weeratunge, Xiangyu Zhang, and Suresh Jaganathan. Accentuating the positive: Atomicity inference and enforcement using correct executions. In OOPSLA, 2011. Google Scholar
Digital Library
- Peng Wu, Maged M. Michael, Christoph von Praun, Takuya Nakaike, Rajesh Bordawekar, Harold W. Cain, Calin Cascaval, Siddhartha Chatterjee, Stefanie Chiras, Rui Hou, Mark Mergen, Xiaowei Shen, Michael F. Spear, Hua Yong Wang, and Kun Wang. Compiler and runtime techniques for software transactional memory optimization. Concurr. Comput. : Pract. Exper., 21, 2009. Google Scholar
Digital Library
- Min Xu, Rastislav Bodık, and Mark D. Hill. A serializability violation detector for shared-memory server programs. In PLDI, 2005. Google Scholar
Digital Library
- Jie Yu and Satish Narayanasamy. Tolerating concurrency bugs using transactions as lifeguards. In MICRO, 2010. Google Scholar
Digital Library
Index Terms
Execution privatization for scheduler-oblivious concurrent programs
Recommendations
Execution privatization for scheduler-oblivious concurrent programs
OOPSLA '12: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsMaking multithreaded execution less non-deterministic is a promising solution to address the difficulty of concurrent programming plagued by the non-deterministic thread scheduling. In fact, a vast category of concurrent programs are scheduler-oblivious:...
Safe privatization in transactional memory
PPoPP '18Transactional memory (TM) facilitates the development of concurrent applications by letting the programmer designate certain code blocks as atomic. Programmers using a TM often would like to access the same data both inside and outside transactions, ...
Safe privatization in transactional memory
PPoPP '18: Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingTransactional memory (TM) facilitates the development of concurrent applications by letting the programmer designate certain code blocks as atomic. Programmers using a TM often would like to access the same data both inside and outside transactions, ...







Comments