GiantVM: A Type-II Hypervisor Implementing Many-to-one Virtualization
In recent years, since scale-up machines are not economical and may not be affordable for small businesses, scale-out has become the standard answer to data analysis, machine learning, and many other fields. However, these frameworks introduce complex programming models that put a burden on developers. Therefore, single system image (SSI), which means a cluster of machines that appears to be one single system, has been proposed to hide the complexity of distributed systems. Unfortunately, due to the mature ecosystem of current mainstream operating systems (OSes), it might be nontrivial and even unaffordable to modify the current OS to implement SSI. With the wide use of virtualization, we believe that it is appealing to support SSI at the hypervisor, without modifying guest OS.
This paper presents GiantVM, a distributed hypervisor that providing the SSI abstraction to aggregate resources from multiple physical machines, as well as providing a uniform hardware abstraction for guest OS. GiantVM aims to combine the benefits of scale-up and scale-out solutions, which means unmodified applications are able to run with a huge amount of physical resources. Furthermore, GiantVM leverages distributed shared memory to achieve aggregation of memory. We also propose techniques to deal with the challenges of CPU and I/O virtualization in distributed environments. We have implemented GiantVM based on a state-of-the-art type-II hypervisor QEMU-KVM, and it can currently host conventional OSes such as Linux. Evaluations identify the performance bottleneck and show that Barrelfish outperforms Linux by 6.4X with a kernel-intensive web server. GiantVM also outperforms Spark by up to 3.4X with 2 text-processing programs.