Argus: Debugging Performance Issues in Modern Desktop
Argus: Debugging Performance Issues in Modern Desktop Applications with Annotated Causal Tracing Lingmei Weng† Peng Huang‡ Jason Nieh† Junfeng Yang† Columbia University† Johns Hopkins University‡ Abstract span across the many frameworks, libraries, system daemons, Modern desktop applications involve many asynchronous, con- kernel, application processes/threads, and result in the current interactions that make performance issues difficult to performance issue. Traditional tools excel at analyzing system diagnose. Although prior work has used causal tracing for de- state at a specific point in time in an individual component. bugging performance issues in distributed systems, we find They are not amenable to analyzing concurrent execution flows that these techniques suffer from high inaccuracies for desktop over time whose interactions may cause performance issues. applications. We present Argus, a fast, effective causal tracing To debug cross-component performance issues, causal trac- tool for debugging performance anomalies in desktop appli- ing has been proposed [14, 20, 27, 32, 37,38, 40, 41, 43, 44, 46, cations. Argus introduces a novel notion of strong and weak 56], especially for distributed systems. Causal tracing utilizes a edges to explicitly model and annotate trace graph ambiguities, trace graph to help developers understand performance issues a new beam-search-based diagnosis algorithm to select the that involve complex interactions. A trace graph consists of most likely causal paths in the presence of ambiguities, and vertices and edges, where vertices are execution segments, such a new way to compare causal paths across normal and abnor- as an operation, system event, message, etc., and edges indicate mal executions. We have implemented Argus across multiple causal relationships between vertices.
[Show full text]