Coz: Finding Code that Counts with Causal Profiling.

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 wast...

Full description

Bibliographic Details
Published in:Communications of the ACM Vol. 61; no. 6; pp. 91 - 100
Main Authors: Curtsinger, Charlie, Berger, Emery D.
Format: Article
Published: Association for Computing Machinery Jun2018
Subjects:
Online Access:View this record in EBSCOhost
fields @attributes:
  recordID: 1
pdfLink:
plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=129988390&site=ehost-live
header:
  @attributes:
    shortDbName: hlh
    uiTerm: 129988390
    longDbName: Humanities International Complete
    uiTag: AN
  controlInfo:
    bkinfo:
    jinfo:
      jid:
        00010782
        ACM
      jtl: Communications of the ACM
      issn: 00010782
      maglogo: N
    pubinfo:
      dt: Jun2018
      vid: 61
      iid: 6
      pid: 68
      pub: Association for Computing Machinery
    artinfo:
      ui:
        129988390
        10.1145/3205911
      ppf: 91
      ppct: 9
      formats:
      tig:
        atl: Coz: Finding Code that Counts with Causal Profiling.
      aug:
        au:
          Curtsinger, Charlie
          Berger, Emery D.
        affil:
          Department of Computer Science, Grinnell College, USA
          College of Information and Computer Sciences, University of Massachusetts Amherst, USA
      su:
        Software engineering
        Dynamic programming
        Program transformation
        Computer programming software
        Computer programming management
      sug:
        subj:
          Software engineering
          Dynamic programming
          Program transformation
          Computer programming software
          Computer programming management
      ab: 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.
      pubtype: Periodical
      doctype: Article
      src: R
    language: English
    refInfo:
    copyright:
      @attributes:
        flag: Y
      dt:
        @attributes:
          year: 2018
    holdings:
      @attributes:
        islocal: N