  Most existing studies on performance prediction for virtual machines (VMs) in
multi-tenant clouds are at system level and generally require access to
performance counters in Hypervisors. In this work, we propose uPredict, a
user-level profiler-based performance predictive framework for single-VM
applications in multi-tenant clouds. Here, three micro-benchmarks are specially
devised to assess the contention of CPUs, memory and disks in a VM,
respectively. Based on measured performance of an application and
micro-benchmarks, the application and VM-specific predictive models can be
derived by exploiting various regression and neural network based techniques.
These models can then be used to predict the application's performance using
the in-situ profiled resource contention with the micro-benchmarks. We
evaluated uPredict extensively with representative benchmarks from PARSEC, NAS
Parallel Benchmarks and CloudSuite, on both a private cloud and two public
clouds. The results show that the average prediction errors are between 9.8% to
17% for various predictive models on the private cloud with high resource
contention, while the errors are within 4% on public clouds. A smart
load-balancing scheme powered by uPredict is presented and can effectively
reduce the execution and turnaround times of the considered application by 19%
and 10%, respectively.
