Performance clearly matters to users. The most common software update on the AppStore by far is “Bug fixes and performance enhancements.” Now that Moore’s Law Free Lunch has ended, programmers have to work hard to get high performance for their applications. But why is performance so hard to deliver?
I will first explain why our current approaches to evaluating and optimizing performance don’t work, especially on modern hardware and for modern applications. I will then present two systems that address these challenges. Stabilizer is a tool that enables statistically sound performance evaluation, making it possible to understand the impact of optimizations and conclude things like the fact that the -O2 and -O3 optimization levels are indistinguishable from noise (unfortunately true).
Since compiler optimizations have largely run out of steam, we need better profiling support, especially for modern concurrent, multi-threaded applications. Coz is a novel “causal profiler” that lets programmers optimize for throughput or latency, and which pinpoints and accurately predicts the impact of optimizations. Coz’s approach unlocks numerous previously unknown optimization opportunities. Guided by Coz, we improved the performance of Memcached by 9%, SQLite by 25%, and accelerated six Parsec applications by as much as 68%; in most cases, these optimizations involved modifying under 10 lines of code.
Emery Berger is a Professor in the School of Computer Science at the University of Massachusetts Amherst, the flagship campus of the UMass system. See his home page for more information.