Coz: Finding Code that Counts with Causal Profiling

08/12/2016
by   Charlie Curtsinger, et al.
0

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 spent 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: 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 much as 68 lines of code.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/14/2019

Redundant Loads: A Software Inefficiency Indicator

Modern software packages have become increasingly complex with millions ...
research
02/10/2018

Mining Container Image Repositories for Software Configuration and Beyond

This paper introduces the idea of mining container image repositories fo...
research
07/10/2023

Can You Improve My Code? Optimizing Programs with Local Search

This paper introduces a local search method for improving an existing pr...
research
01/04/2021

New Directions in Cloud Programming

Nearly twenty years after the launch of AWS, it remains difficult for mo...
research
09/02/2022

How Developers Extract Functions: An Experiment

Creating functions is at the center of writing computer programs. But th...
research
03/16/2023

Dataflow graphs as complete causal graphs

Component-based development is one of the core principles behind modern ...
research
10/09/2020

Proactive Serverless Function Resource Management

This paper introduces a new primitive to serverless language runtimes ca...

Please sign up or login with your details

Forgot password? Click here to reset