
Coz: Causal Profiling - jsnell
https://github.com/plasma-umass/coz
======
emeryberger
Thanks for posting. We have a technical report describing how Coz works in
detail. The current implementation profiles Linux x86-64 binaries.

 _Causal Profiling: Finding Optimizations that Count_

([https://web.cs.umass.edu/publication/docs/2014/UM-
CS-2014-01...](https://web.cs.umass.edu/publication/docs/2014/UM-
CS-2014-018.pdf))

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.

~~~
eli_gottlieb
Out of curiosity, where did you get the idea for the virtual speedups? The
"causal" notion here is fairly unusual to see in systems literature.

~~~
emeryberger
It's not that unusual these days. Jason Flinn (Michigan) has published quite a
few papers that root out causality in various settings. The use of causality
via happens-before relationships has been part of distributed and concurrent
systems since Lamport's classic paper on time. In any event, virtual speedups
were Charlie Curtsinger's idea, so you'd have to ask him :).

