Coz

Coz
复制标题

科兹

DOI:
--
复制
发表时间:
2018
影响因子:
22.7
通讯作者:
E. Berger
E. Berger
中科院分区:
计算机科学3区
文献类型:
--
作者:
Charlie Curtsinger;E. Berger

文献摘要

被引文献

相似文献

提高性能是软件开发人员关注的中心问题。为了定位优化机会,开发人员依赖于软件分析器。然而,这些分析器只报告程序花费时间的地方:优化代码可能对性能没有影响。因此,过去的分析器既浪费了开发人员的时间,又使他们难以发现重要的优化机会。本文介绍了因果分析。与过去的分析方法不同,因果分析准确地指出了程序员应该把他们的优化工作集中在哪里,并量化了他们的潜在影响。因果分析通过在程序执行期间运行性能实验来工作。每个实验都通过实际上加速代码来计算任何潜在优化的影响:插入暂停来减慢所有其他并发运行的代码。关键的见解是,这种放缓与更快地运行这条线具有相同的相对效果,因此“实际上”加速了它。我们提出了Coz,一个因果分析器,我们评估了一系列高度调优的应用程序,如Memcached,SQLite和PARSEC基准套件。Coz确定了以前未知的优化机会,这些机会既重要又有针对性。在Coz的指导下,我们将Memcached的性能提高了9%,SQLite提高了25%,并将六个PARSEC应用程序的速度提高了68%;在大多数情况下,这些优化涉及修改不到10行代码。
Improving performance is a central concern for software developers. To locate optimization opportunities, developers rely on software profilers. However, these profilers only report where programs spend their time: optimizing that code may have no impact on performance. Past profilers thus both waste developer time and make it difficult for them to uncover significant optimization opportunities. This paper introduces causal profiling. Unlike past profiling approaches, causal profiling indicates exactly where programmers should focus their optimization efforts, and quantifies their potential impact. Causal profiling works by running performance experiments during program execution. Each experiment calculates the impact of any potential optimization by virtually speeding up code: inserting pauses that slow down all other code running concurrently. The key insight is that this slowdown has the same relative effect as running that line faster, thus "virtually" speeding it up. We present Coz, a causal profiler, which we evaluate on a range of highly-tuned applications such as Memcached, SQLite, and the PARSEC benchmark suite. Coz identifies previously unknown optimization opportunities that are both significant and targeted. Guided by Coz, we improve the performance of Memcached by 9%, SQLite by 25%, and accelerate six PARSEC applications by as much as 68%; in most cases, these optimizations involve modifying under 10 lines of code.