  Load balancing is vital for the efficient and long-term operation of cloud
data centers. With virtualization, post (reactive) migration of virtual
machines after allocation is the traditional way for load balancing and
consolidation. However, reactive migration is not easy to obtain predefined
load balance objectives and may interrupt services and bring instability.
Therefore, we provide a new approach, called Prepartition, for load balancing.
It partitions a VM request into a few sub-requests sequentially with start
time, end time and capacity demands, and treats each sub-request as a regular
VM request. In this way, it can proactively set a bound for each VM request on
each physical machine and makes the scheduler get ready before VM migration to
obtain the predefined load balancing goal, which supports the resource
allocation in a fine-grained manner. Simulations with real-world trace and
synthetic data show that Prepartition for offline (PrepartitionOff) scheduling
has 10%-20% better performance than the existing load balancing algorithms
under several metrics, including average utilization, imbalance degree,
makespan and Capacity_makespan. We also extend Prepartition to online load
balancing. Evaluation results show that our proposed approach also outperforms
existing online algorithms.
