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.