Change point detection has recently gained popularity as a method of detecting performance changes in software due to its ability to cope with noisy data. In this paper we present Hunter, an open source tool that automatically detects performance regressions and improvements in time-series data. Hunter uses a modified E-divisive means algorithm to identify statistically significant changes in normally-distributed performance metrics. We describe the changes we made to the E-divisive means algorithm along with their motivation. The main change we adopted was to replace the significance test using randomized permutations with a Student's t-test, as we discovered that the randomized approach did not produce deterministic results, at least not with a reasonable number of iterations. In addition we've made tweaks that allow us to find change points the original algorithm would not, such as two nearby changes. For evaluation, we developed a method to generate real timeseries, but with artificially injected changes in latency. We used these data sets to compare Hunter against two other well known algorithms, PELT and DYNP. Finally, we conclude with lessons we've learned supporting Hunter across teams with individual responsibility for the performance of their project.
翻译:变化点检测最近作为一种检测软件性能变化的方法越来越受欢迎, 因为它能够应对繁琐的数据。 在本文中, 我们向亨特展示了一个开放源码工具, 自动检测性能回归和时间序列数据的改进。 亨特使用经修改的电子二维算法来识别正常分布性性能指标中具有统计意义的变化。 我们描述了我们对电子二维手段算法及其动机所作的修改。 我们采用的主要变化是用随机调整与学生的测试来取代重要测试, 因为我们发现随机化方法没有产生确定性结果, 至少没有合理数量的迭代。 此外, 我们做了调整, 使我们能找到原始算法不会发生的变化点, 比如两个相近的变化。 关于评估, 我们开发了一种方法来生成真实的时间序列, 但是在延时性方面有人工注射的变化。 我们用这些数据组来比较杭特与其他两个众所周知的算法, PELT 和 DYNP 。 最后, 我们用我们学到的教训来支持杭特 跨个人团队的业绩。