Analysis of software performance typically takes into account clock cycles and memory consumption at each sampling point in time. Although this is a valid strategy, we argue that it is also worth investigating data and control flow structures, as observed using memory traces and call stacks, because of their importance for performance engineering. In this work, we present a visual approach to memory profiling that supports analysis of memory layout, access patterns, and aliasing in correlation to program execution. Our method leverages language-agnostic dynamic code instrumentation to minimize the impact of tracing on performance, i.e., the application remains usable on commodity hardware. The profiled data is then clustered and visualized using a density-based scatter plot. If debug symbols are available, the scatter plot is augmented by a flame graph to ease linking to the high-level source code. Our visualization helps software engineers to identify runtime behavior by relating memory addresses to instruction execution. We demonstrate our approach using a set of examples revealing different memory access patterns and discuss their influence on software performance.
%0 Conference Paper
%1 Gralka2017Visual
%A Gralka, Patrick
%A Schulz, Christoph
%A Reina, Guido
%A Weiskopf, Daniel
%A Ertl, Thomas
%B Proceedings of the IEEE Working Conference on Software Visualization (VISSOFT)
%D 2017
%I IEEE
%K A01 from:leonkokkoliadis sfbtrr161 visus visus:ertl visus:gralkapk visus:reina visus:schulzch visus:weiskopf
%P 54-63
%R 10.1109/VISSOFT.2017.15
%T Visual Exploration of Memory Traces and Call Stacks
%U https://dx.doi.org/10.1109/VISSOFT.2017.15
%X Analysis of software performance typically takes into account clock cycles and memory consumption at each sampling point in time. Although this is a valid strategy, we argue that it is also worth investigating data and control flow structures, as observed using memory traces and call stacks, because of their importance for performance engineering. In this work, we present a visual approach to memory profiling that supports analysis of memory layout, access patterns, and aliasing in correlation to program execution. Our method leverages language-agnostic dynamic code instrumentation to minimize the impact of tracing on performance, i.e., the application remains usable on commodity hardware. The profiled data is then clustered and visualized using a density-based scatter plot. If debug symbols are available, the scatter plot is augmented by a flame graph to ease linking to the high-level source code. Our visualization helps software engineers to identify runtime behavior by relating memory addresses to instruction execution. We demonstrate our approach using a set of examples revealing different memory access patterns and discuss their influence on software performance.
@inproceedings{Gralka2017Visual,
abstract = {Analysis of software performance typically takes into account clock cycles and memory consumption at each sampling point in time. Although this is a valid strategy, we argue that it is also worth investigating data and control flow structures, as observed using memory traces and call stacks, because of their importance for performance engineering. In this work, we present a visual approach to memory profiling that supports analysis of memory layout, access patterns, and aliasing in correlation to program execution. Our method leverages language-agnostic dynamic code instrumentation to minimize the impact of tracing on performance, i.e., the application remains usable on commodity hardware. The profiled data is then clustered and visualized using a density-based scatter plot. If debug symbols are available, the scatter plot is augmented by a flame graph to ease linking to the high-level source code. Our visualization helps software engineers to identify runtime behavior by relating memory addresses to instruction execution. We demonstrate our approach using a set of examples revealing different memory access patterns and discuss their influence on software performance.},
added-at = {2020-01-10T13:07:58.000+0100},
author = {Gralka, Patrick and Schulz, Christoph and Reina, Guido and Weiskopf, Daniel and Ertl, Thomas},
biburl = {https://puma.ub.uni-stuttgart.de/bibtex/2d6d67bec225587873fe137bc7f2289cb/sfbtrr161},
booktitle = {Proceedings of the IEEE Working Conference on Software Visualization (VISSOFT)},
description = {Best Paper Award},
doi = {10.1109/VISSOFT.2017.15},
interhash = {b781f276b4d09fde3a04b4e48bb6bc0d},
intrahash = {d6d67bec225587873fe137bc7f2289cb},
keywords = {A01 from:leonkokkoliadis sfbtrr161 visus visus:ertl visus:gralkapk visus:reina visus:schulzch visus:weiskopf},
pages = {54-63},
publisher = {IEEE},
timestamp = {2020-10-05T11:57:52.000+0200},
title = {Visual Exploration of Memory Traces and Call Stacks},
url = {https://dx.doi.org/10.1109/VISSOFT.2017.15},
year = 2017
}