  Large scale cloud data analytics applications are often CPU bound. Most of
these cycles are wasted: benchmarks written in C++ run 10-51 times faster than
frameworks such as Naiad and Spark. However, calling faster implementations
from those frameworks only sees moderate (3-5x) speedups because their control
planes cannot schedule work fast enough.
  This paper presents execution templates, a control plane abstraction for
CPU-bound cloud applications, such as machine learning. Execution templates
leverage highly repetitive control flow to cache scheduling decisions as {\it
templates}. Rather than reschedule hundreds of thousands of tasks on every loop
execution, nodes instantiate these templates. A controller's template specifies
the execution across all worker nodes, which it partitions into per-worker
templates. To ensure that templates execute correctly, controllers dynamically
patch templates to match program control flow. We have implemented execution
templates in Nimbus, a C++ cloud computing framework. Running in Nimbus,
analytics benchmarks can run 16-43 times faster than in Naiad and Spark.
Nimbus's control plane can scale out to run these faster benchmarks on up to
100 nodes (800 cores).
