GiantVM is a distributed hypervisor that aggregates resources from multiple physical machines, providing the guest OS with a uniform hardware abstraction. A QEMU-KVM instance runs on each node of a cluster.
This work is supported by the NSFC Key Program (No.61732010), and National Key Research & Development Program of China 2016YFB1000502.
In QEMU-KVM virtualization, QEMU simluates guest or device I/O requests and interrupts by interception. GiantVM is equipped IPI forwarding, interrupt forwarding and I/O forwarding techniques, which overcome the difficulties of sharing CPU and I/O devices across machines.
KVM manages memory virtualization. At the heart of GiantVM is a distributed shared memory (DSM) based on Ivy, which enables the sharing of memory across multiple machines. GiantVM implements various techniques to overcome the challenges of integrating the DSM into virtualization environments.
BASE QEMU branch stable-2.8
https://github.com/GiantVM/QEMU.git (To be uploaded)
BASE Linux Kernel branch 4.8.10
https://github.com/GiantVM/Linux-DSM.git (To be uploaded)
BASE https://github.com/aclements/sv6
https://github.com/GiantVM/sv6.git (To be uploaded)
For example, run sv6 OS in GiantVM on two machines:
-
On machine 1 (ip 10.0.0.2), run:
sudo qemu-system-x86_64 -smp 2 -m 20480 -machine q35,kernel-irqchip=off -serial mon:stdio -nographic -net user -net nic,model=e1000 -device ahci,id=ahci0 -drive if=none,file=o.qemu/fs.img,format=raw,id=drive-sata0-0-0 -device ide-drive,bus=ahci0.0,drive=drive-sata0-0-0,id=sata0-0-0 -kernel o.qemu/kernel.elf --enable-kvm -local-cpu 16,start=0,iplist="10.0.0.1 10.0.0.2"
-
On machine 0 (ip 10.0.0.1), run:
sudo qemu-system-x86_64 -smp 2 -m 20480 -machine q35,kernel-irqchip=off -serial mon:stdio -nographic -net user -net nic,model=e1000 -device ahci,id=ahci0 -drive if=none,file=o.qemu/fs.img,format=raw,id=drive-sata0-0-0 -device ide-drive,bus=ahci0.0,drive=drive-sata0-0-0,id=sata0-0-0 -kernel o.qemu/kernel.elf --enable-kvm -local-cpu 16,start=16,iplist="10.0.0.1 10.0.0.2"
-
Wait for guest OS booting
GiantVM: A Type-II Hypervisor Implementing Many-to-one Virtualization
Jin Zhang, Zhuocheng Ding, Yubin Chen, Xingguo Jia, Boshi Yu, Zhengwei Qi, Haibing Guan
VEE '20: Proceedings of the 16th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments · March 2020 · Pages 30–44
Distributed QEMU - KVM forum 2018
Trusted Cloud Group, Shanghai Jiao Tong University
Zhengwei Qi <qizhwei@sjtu.edu.cn>
Zhuocheng Ding <tcbbd@sjtu.edu.cn>
Yubin Chen <binsschen@sjtu.edu.cn>
Jin Zhang <jzhang3002@sjtu.edu.cn>
Yun Wang <yunwang94@sjtu.edu.cn>
Jiacheng Ma <jcma@umich.edu>
Boshi Yu <201608ybs@sjtu.edu.cn>
Xingguo Jia <jiaxg1998@sjtu.edu.cn>
Yuxin Xiang <xiangyuxin@sjtu.edu.cn>