Profilers help developers to find and fix performance problems. But do they find performance bugs – performance problems that real users actually notice? In this paper we argue that – especially in the case of interactive applications – traditional profilers find irrelevant problems but fail to find relevant bugs.
We then introduce lag hunting, an approach that identifies perceptible performance bugs by monitoring the behavior of applications deployed in the wild. The approach transparently produces a list of performance issues, and for each issue provides the developer with information that helps in finding the cause of the problem.
We evaluate our approach with an experiment where we monitor an application used by 24 users for 1958 hours over the course of 3-months. We characterize the resulting 881 issues, and we find and fix the causes of a set of representative examples.