paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Watching for Software Inefficiencies with Witch

用 Witch 监视软件低效行为
ASPLOS Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems2018匹配度 1/10 · 该论文关注基于 PMU 与调试寄存器的免插桩动态采样,用于检测内存操作相关的软件低效,属于运行时性能分析;与用户画像中的静态分析、LLM/Agent、浮点程序分析和贝叶斯程序分析均无直接关联。引用 30 inbox
Shasha Wen, Xu Liu, John Byrne, Milind Chabbi
crossref: 2026-09-12

AI 速览

一句话:提出免插桩的轻量采样框架 Witch,利用 PMU 与调试寄存器检测软件低效。

复杂分层软件中普遍存在低效问题,许多表现为浪费的内存操作。现有工具通常插桩每条 load/store 来监控内存,导致严重减速和巨大内存开销。Witch 不进行插桩,而是利用性能监控单元(PMU)和调试寄存器,对同一内存位置的连续访问进行采样。基于 Witch 构建的工具能以可忽略的减速和内存消耗,达到与穷举插桩工具相当的准确性。作者借此将分析扩展到大量代码库,并在重要代码库中发现若干性能问题,修复后获得显著加速。

问题
复杂软件中的低效常表现为浪费的内存访问;现有逐指令插桩监控方法带来巨大运行时与内存开销。
方法
Witch 不插桩,利用 PMU 和调试寄存器采样对同一内存位置的连续访问,并支持在其上构建低开销分析工具。
评估
在大量代码库上扩展分析,证明其开销可忽略、内存消耗小且精度接近穷举插桩,并发现实际性能问题及修复后的加速。
原文摘要(Abstract)

Inefficiencies abound in complex, layered software. A variety of inefficiencies show up as wasteful memory operations. Many existing tools instrument every load and store instruction to monitor memory, which significantly slows execution and consumes enormously extra memory. Our lightweight framework, Witch, samples consecutive accesses to the same memory location by exploiting two ubiquitous hardware features: the performance monitoring units (PMU) and debug registers. Witch performs no instrumentation. Hence, witchcraft---tools built atop Witch---can detect a variety of software inefficiencies while introducing negligible slowdown and insignificant memory consumption and yet maintaining accuracy comparable to exhaustive instrumentation tools. Witch allowed us to scale our analysis to a large number of code bases. Guided by witchcraft, we detected several performance problems in important code bases; eliminating these inefficiencies resulted in significant speedups.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot4280,
  title = {Watching for Software Inefficiencies with Witch},
  author = {Shasha Wen and Xu Liu and John Byrne and Milind Chabbi},
  booktitle = {ASPLOS},
  year = {2018},
  doi = {10.1145/3173162.3177159}
}