Sheriff: Detecting and Eliminating False Sharing


September 1, 2010


Emery Berger


University of Massachusetts at Amherst


False sharing is an insidious problem for multi-threaded programs running on multicore processors, where it can silently degrade performance and scalability. Debugging false sharing problems is notoriously difficult. Previous approaches aimed at identifying false sharing are not only prohibitively slow (degrading performance by 200X), but also cannot distinguish false sharing from true sharing, cannot cope with dynamically allocated objects, generate numerous false positives, and fail to pinpoint the sources of false sharing.

We present Sheriff, a software-only system that both withstands and identifies false sharing in C/C++ applications. As a false sharing resistant runtime system, Sheriff replaces the standard pthreads library and eliminates false sharing, dramatically improving performance in the face of catastrophic false sharing (in one case, by almost 10X versus pthreads). As a false sharing detection tool, Sheriff precisely identifies the sources of false sharing with no false positives and low overhead. A case study with the Phoenix and PARSEC benchmark suites shows that Sheriff can quickly identify false sharing and guide programmers to remove it.


Emery Berger

Emery Berger is an Associate Professor in the Department of Computer Science at the University of Massachusetts Amherst. He graduated with a Ph.D. in Computer Science from the University of Texas at Austin in 2002. Professor Berger has been a Visiting Scientist at Microsoft Research and at the Universitat Politecnica de Catalunya (UPC) / Barcelona Supercomputing Center (BSC).

Professor Berger’s research spans programming languages, runtime systems, and operating systems, with a particular focus on systems that transparently improve reliability and performance. He is the creator of various widely-used software systems including Hoard, a fast and scalable memory manager that accelerates multithreaded applications. His honors include a Microsoft Research Fellowship (2001), an NSF CAREER Award (2003), a Lilly Teaching Fellowship (2006), and a Best Paper Award at FAST 2007. Professor Berger served as the General Chair of the Memory Systems Performance and Correctness 2008 workshop, and serves as an Associate Editor of the ACM Transactions on Programming Languages and Systems.