Cloud computing offers users the ability to access large pools of
computational resources on demand. Commercial clouds allow businesses to replace,
or supplement, privately owned IT assets, alleviating them from the burden of
managing and maintaining these facilities. However, there are issues that must
be addressed before this vision of utility computing can be fully realized. In
existing systems, customers are charged based upon the amount of resources used
or reserved, but no guarantees are made regarding the application level
performance or quality-of-service (QoS) that the given resources will provide.
In particular, the consolidation of multiple customer applications onto multicore
servers introduces performance interference between collocated workloads,
significantly impacting application QoS. Therefore, we advocate that the cloud
should transparently provision additional resources as necessary to achieve the
performance that customers would have realized if they were running in isolation.
To meet this goal, we have developed Q-Clouds, a QoS-aware control framework that
tunes resource allocations to mitigate performance interference effects.
Q-Clouds uses online feedback to build a multi-input multi-output (MIMO) model
that captures performance interference interactions, and uses it to perform
closed loop resource management. In addition, we utilize this functionality to
allow applications to specify multiple levels of QoS as application Q-states. For
such applications, Q-Clouds dynamically provisions underutilized resources to
enable elevated QoS levels, thereby improving system efficiency. Experimental
evaluations of our solution using benchmark applications illustrate the benefits:
performance interference is mitigated completely when feasible, and system
utilization is improved by up to 35{\%} using Q-states.