Check out the new USENIX Web site.

False Sharing and its Effect on Shared Memory Performance


William J. Bolosky		Michael L. Scott
bolosky@microsoft.com		scott@cs.rochester.edu
Microsoft Research Laboratory	Computer Science Department
One Microsoft Way, 9S/1049	University of Rochester
Redmond, WA 98052-6399		Rochester, NY 14627-0226

Abstract

False sharing occurs when processors in a shared-memory parallel system make references to different data objects within the same coherence block (cache line or page), thereby inducing "unnecessary" coherence operations. False sharing is widely believed to be a serious problem for parallel program performance, but a precise definition and quantification of the problem has proven to be elusive. We explain why. In the process, we present a variety of possible definitions for false sharing, and discuss the merits and drawbacks of each. Our discussion is based on experience gained during a four-year study of multiprocessor memory architecture and its effect on the behavior of applications in a sixteen-program suite. Using trace-based simulation, we present experimental evidence to support the claim that false sharing is a serious problem. Unfortunately, we find that the various computationally tractable approaches to quantifying the problem are either heuristic in nature, or fail to agree with intuition.


Download the full text of this paper in ASCII form (41,351 bytes).

To Become a USENIX Member, please see our Membership Information.