AutoFDO is a system to simplify real-world deployment of feedback-directed
optimization (FDO). The system works by sampling hardware performance monitors on
production machines and using those profiles in to guide optimization. Profile data
is stale by design, and we have implemented compiler features to deliver stable
speedup across releases. The resulting performance is a geomean of 10.5%
improvement on our benchmarks. AutoFDO achieves 85% of the gains of traditional
FDO, despite imprecision due to sampling and information lost in the compilation
pipeline. The system is deployed to hundreds of binaries at Google, and it is
extremely easy to enable; users need only to add some flags to their release build.
To date, AutoFDO has increased the number of FDO users at Google by 8X and has
doubled the number of cycles spent in FDO-optimized binaries. Over half of CPU
cycles used are now spent in some flavor of FDO-optimized binaries.