1 Introduction
Due to the low cost-of-ownership, public clouds have been increasingly adopted by many organizations to serve as their main computing infrastructures. However, this low cost is generally achieved through sharing the hardware resources by multiple virtual machines (VMs) on the same host with multi-tenancy of different users in the clouds. Such sharing of hardware can lead to resource contention, which in turn will negatively affect the performance of the applications running in the VMs [1]. The impacts of such contention on the performance can be application specific depending on their resource requirements. Moreover, as the number of VMs and their running applications on the same host change over time, the impact and severity of such contention can vary significantly, causing the performance of the same application fluctuates in a quite large range at run-time.