Live VM migration is one of the major primitive operations to manage virtualized cloud platforms. However, with the increasing amount of resources configured to a single VM, this process may be extremely time-consuming, causing notable disruption to the running services. In this project, we investigate how this process could be parallelized on commodity multicore platforms.
By leveraging abundant resources like CPU cores and NICs in contemporary server platforms, we design and implement a system called PMigrate that leverages data parallelism and pipeline parallelism to parallelize the operation.
As the parallelization framework requires intensive mmap/munmap operations that tax the address space management system in an operating system, we further propose an abstraction called range lock, which improves scalability of concurrent mutation to the address space of an operating system (i.e., Linux) by selectively replacing the perprocess address space lock inside kernel with dynamic and fine grained range locks that exclude costly operations on the requesting address range from using the per-process lock.
Evaluation with our working prototype on Xen and KVM shows that PMigrate accelerates the live VM migration ranging from 2.49X to 9.88X, and decreases the downtime ranging from 1.9X to 279.89X.
The source code of this project includes three parts (each source code includes a README file to show how to play with PMigrate):
This research was funded by NetApp Faculty Fellowship.