Locating Cache Performance Bottlenecks Using Data Profiling

Effective use of CPU data caches is critical to good performance, but poor cache use patterns are often hard to spot using existing execution profiling tools. Typical profilers attribute costs to specific code locations. The costs due to frequent cache misses on a given piece of data, however, may b...

Full description

Bibliographic Details
Main Authors: Pesterev, Aleksey (Contributor), Zeldovich, Nickolai (Contributor), Morris, Robert Tappan (Contributor)
Other Authors: Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory (Contributor), Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science (Contributor)
Format: Article
Language:English
Published: Association for Computing Machinery (ACM), 2012-09-13T16:10:46Z.
Subjects:
Online Access:Get fulltext
LEADER 02389 am a22002653u 4500
001 72691
042 |a dc 
100 1 0 |a Pesterev, Aleksey  |e author 
100 1 0 |a Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory  |e contributor 
100 1 0 |a Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science  |e contributor 
100 1 0 |a Morris, Robert Tappan  |e contributor 
100 1 0 |a Pesterev, Aleksey  |e contributor 
100 1 0 |a Zeldovich, Nickolai  |e contributor 
100 1 0 |a Morris, Robert Tappan  |e contributor 
700 1 0 |a Zeldovich, Nickolai  |e author 
700 1 0 |a Morris, Robert Tappan  |e author 
245 0 0 |a Locating Cache Performance Bottlenecks Using Data Profiling 
260 |b Association for Computing Machinery (ACM),   |c 2012-09-13T16:10:46Z. 
856 |z Get fulltext  |u http://hdl.handle.net/1721.1/72691 
520 |a Effective use of CPU data caches is critical to good performance, but poor cache use patterns are often hard to spot using existing execution profiling tools. Typical profilers attribute costs to specific code locations. The costs due to frequent cache misses on a given piece of data, however, may be spread over instructions throughout the application. The resulting individually small costs at a large number of instructions can easily appear insignificant in a code profiler's output. DProf helps programmers understand cache miss costs by attributing misses to data types instead of code. Associating cache misses with data helps programmers locate data structures that experience misses in many places in the application's code. DProf introduces a number of new views of cache miss data, including a data profile, which reports the data types with the most cache misses, and a data flow graph, which summarizes how objects of a given type are accessed throughout their lifetime, and which accesses incur expensive cross-CPU cache loads. We present two case studies of using DProf to find and fix cache performance bottlenecks in Linux. The improvements provide a 16-57% throughput improvement on a range of memcached and Apache workloads. 
520 |a MathWorks, Inc. Fellowship 
520 |a National Science Foundation (U.S.). (Grant number CNS-0834415) 
546 |a en_US 
655 7 |a Article 
773 |t Proceedings of the 5th European conference on Computer systems (EuroSys '10)