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.