DescriptionMemory accesses limit the performance and scalability of countless applications. Many design and optimization efforts would benefit from an in-depth understanding of memory access behavior, which existing access tracing and profiling methods do not offer.
In this paper, we adopt a holistic memory access profiling approach to enable a better understanding of program-system memory interactions. We developed a two-pass tool adopting fast online and slow offline profiling, with which we profiled at the variable/object level a collection of 38 representative applications spanning major domains (HPC, personal computing, data analytics, AI, graph processing, and datacenter workloads), at varying problem sizes. We performed detailed result analysis and code examination. Our findings provide new insights into application memory behavior, including insights on per-object access patterns, adoption of data structures, and memory-access changes at different problem-sizes. We find that scientific computation applications exhibit distinct behaviors compared to datacenter workloads, motivating separate memory system design/optimizations.