  Clouds inherit CPU scheduling policies of operating systems. These policies
enforce fairness while leveraging best-effort mechanisms to enhance
responsiveness of all schedulable entities, irrespective of their service level
objectives (SLOs). This leads to unpredictable performance that forces cloud
providers to enforce strict reservation and isolation policies to prevent
high-criticality services (e.g., Memcached) from being impacted by
low-criticality ones (e.g., logging), which results in low utilization.
  In this paper, we present Akita, a hypervisor CPU scheduler that delivers
predictable performance at high utilization. Akita allows virtual machines
(VMs) to be categorized into high- and low-criticality VMs. Akita provides
strong guarantees on the ability of cloud providers to meet SLOs of
high-criticality VMs, by temporarily slowing down low-criticality VMs if
necessary. Akita, therefore, allows the co-existence of high and
low-criticality VMs on the same physical machine, leading to higher
utilization. The effectiveness of Akita is demonstrated by a prototype
implementation in the Xen hypervisor. We present experimental results that show
the many advantages of adopting Akita as the hypervisor CPU scheduler. In
particular, we show that high-criticality Memcached VMs are able to deliver
predictable performance despite being co-located with low-criticality CPU-bound
VMs.
