  In many datacenters, server racks are highly underutilized. Rack slots are
left empty to keep the sum of the server nameplate maximum power below the
power provisioned to the rack. And the servers that are placed in the rack
cannot make full use of available rack power. The root cause of this rack
underutilization is that the server nameplate power is often much higher than
can be reached in practice. To address rack underutilization, server vendors
are shipping support for per-host power caps, which provide a server-enforced
limit on the amount of power that the server can draw. Using this feature,
datacenter operators can set power caps on the hosts in the rack to ensure that
the sum of those caps does not exceed the rack's provisioned power. While this
approach improves rack utilization, it burdens the operator with managing the
rack power budget across the hosts and does not lend itself to flexible
allocation of power to handle workload usage spikes or to respond to changes in
the amount of powered-on server capacity in the rack. In this paper we present
CloudPowerCap, a practical and scalable solution for power budget management in
a virtualized environment. CloudPowerCap manages the power budget for a cluster
of virtualized servers, dynamically adjusting the per-host power caps for hosts
in the cluster. We show how CloudPowerCap can provide better use of power than
per-host static settings, while respecting virtual machine resource
entitlements and constraints.
