Abstract: | While traditional profilers reveal where a program spends its time,
they do not indicate where developers should spend their time. This
paper introduces causal profiling, a novel profiling approach
that not only indicates exactly where programmers should focus their
optimization efforts, but also quantifies their potential impact.
Causal profiling works by performing a series of performance
experiments at runtime. These experiments quantify the impact of any
potential optimization via virtual speedups, which emulate the
effect of real speedups by slowing down concurrently-executing
tasks. Causal profiling further departs from traditional profilers by
identifying optimization opportunities that increase throughput or
reduce latency. We present Coz, a prototype causal profiler, and
empirically demonstrate its efficiency and effectiveness at guiding
optimization efforts. |