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