Comprehensive Synchronization Elimination for Java

Science of Computer Programming, 47(2-3):91-120, May-June 2003
Jonathan Aldrich, Emin Gun Sirer, Craig Chambers, and Susan Eggers
In this paper, we describe three novel analyses for eliminating unnecessary synchronization that remove over 70% of dynamic synchronization operations on the majority of our 15 benchmarks and improve the bottom-line performance of three by 37-53%. Our analyses attack three frequent forms of unnecessary synchronization: thread-local synchronization, reentrant synchronization, and enclosed lock synchronization. We motivate the design of our analyses with a study of the kinds of unnecessary synchronization found in a suite of single- and multithreaded benchmarks of different sizes and drawn from a variety of domains. We analyze the performance of our optimizations in terms of dynamic operations removed and run-time speedup. We also show that our analyses may enable the use of simpler synchronization models than the model found in Java, at little or no additional cost in execution time. The synchronization optimizations we describe enable programmers to design efficient, reusable and maintainable libraries and systems in Java without cumbersome manual code restructuring.
Available as University of Washington Department of Computer Science and Engineering Technical Report UW-CSE-00-10-01.

Available in PDF and gzipped Postcript formats.

Cecil/Vortex Project