一句话:提出多线程跟踪压缩方法并实现 NonSequitur,让开发者可大规模可视化分析性能问题。
现代多线程系统行为复杂,开发者常通过程序 trace 手动检查,但现有工具难以扩展到百万级事件。论文提出一种多线程 trace 压缩方法,可将数百万事件压缩到数百事件,并据此设计实现可视化工具 NonSequitur。作者通过 Meta 的 RocksDB 与 MongoDB 的 WiredTiger 三个案例研究分析真实性能问题,并用 42 名参与者在两数据库 trace 上评估。结果显示,在某些性能分析任务中,参与者使用 NonSequitur 的平均得分高出 11 倍;部分任务中其他工具耗时约为 NonSequitur 的 3 倍。
Modern multi-threaded systems are highly complex. This makes their behavior difficult to understand. Developers frequently capture behavior in the form of program traces and then manually inspect these traces. Existing tools, however, fail to scale to traces larger than a million events. In this paper we present an approach to compress multi-threaded traces in order to allow developers to visually explore these traces at scale. Our approach is able to compress traces that contain millions of events down to a few hundred events. We use this approach to design and implement a tool called NonSequitur. We present three case studies which demonstrate how we used NonSequitur to analyze real-world performance issues with Meta’s storage engine RocksDB and MongoDB’s storage engine WiredTiger, two complex database backends. We also evaluate NonSequitur with 42 participants on traces from RocksDB and WiredTiger. We demonstrate that, in some cases, participants on average scored 11 times higher when performing performance analysis tasks on large execution traces. Additionally, for some performance analysis tasks, the participants spent on average three times longer with other tools than with NonSequitur.
@article{WongBBF24,
title = {Making Sense of Multi-threaded Application Performance at Scale with NonSequitur},
author = {Augustine Wong and Paul Bucci and Ivan Beschastnikh and Alexandra Fedorova},
journal = {Proceedings of the ACM on Programming Languages},
volume = {8},
number = {OOPSLA2},
year = {2024},
doi = {10.1145/3689793}
}