approf: A Non-intrusive Call Hierarchy Profiler for Distributed Systems
Yu Luo · TSpace (University of Toronto) · 2018
Runtime call graph profilers, like gprof [16], are widely used as debugging tools to identify performance bottlenecks. However, the intrusive nature of existing call graph profilers prevents them from being used continuously on production systems. This thesis presents approf , a non-intrusive tool that is capable of reconstructing an approximate runtime call hierarchy of method calls solely from existing application logs. At its core, it determines the call hierarchy by using a model that contains only classto-method invocation relationships extracted from the headers of the application’s compiled bytecode classes, avoiding the expensive static analysis required to extract a more rigorous method-to-method invocation model. The key property of this class-to-method model resembles a Bloom filter [12]. Using a few intuitive heuristics to improve the accuracy, we found approf is over 99% accurate in constructing call hierarchies while processing logs at approximately 50 MB/s per CPU core.