  Control planes of cloud frameworks trade off between scheduling granularity
and performance. Centralized systems schedule at task granularity, but only
schedule a few thousand tasks per second. Distributed systems schedule hundreds
of thousands of tasks per second but changing the schedule is costly.
  We present execution templates, a control plane abstraction that can schedule
hundreds of thousands of tasks per second while supporting fine-grained,
per-task scheduling decisions. Execution templates leverage a program's
repetitive control flow to cache blocks of frequently-executed tasks. Executing
a task in a template requires sending a single message. Large-scale scheduling
changes install new templates, while small changes apply edits to existing
templates.
  Evaluations of execution templates in Nimbus, a data analytics framework,
find that they provide the fine-grained scheduling flexibility of centralized
control planes while matching the strong scaling of distributed ones. Execution
templates support complex, real-world applications, such as a fluid simulation
with a triply nested loop and data dependent branches.
