  Detecting performance issues and identifying their root causes in the runtime
is a challenging task. Typically, developers use methods such as logging and
tracing to identify bottlenecks. These solutions are, however, not ideal as
they are time-consuming and require manual effort. In this paper, we propose a
method to automate the task of detecting latency outliers using system-level
traces and then comparing them to identify the root cause(s). Our method makes
use of dependency graphs to show internal interactions between threads and
system resources. With these graphs, one can pinpoint where performance issues
occur. However, a single trace can be composed of a large number of requests,
each generating one graph. To automate the task of identifying outliers within
the dataset, we use machine learning density-based models and statistical
calculations such as -score. Our evaluation shows an accuracy greater than 97 %
on outlier detection, making them appropriate for in-production servers and
industry-level use cases.
