GiantVM is a distributed hypervisor that aggregates resources from multiple physical machines, providing the guest OS with a uniform hardware abstraction.
DISCOVERGiantVM 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
Run GiantVM on a single machine
ubuntu 16.04.7 linux kernel version: 4.15.0
boot reference documentation - 1
boot reference documentation - 2
sudo apt-get install build-essential openssl libncurses5-dev libssl-dev
sudo apt-get install zlibc minizip libidn11-dev libidn11 bison flex
git clone https://github.com/GiantVM/Linux-DSM.git
cd Linux-DSMSwitch the MACRO definition from USE_KRDMA_NETWORK to USE_KTCP_NETWORK in arch/x86/include/asm/kvm_host.h.
make menuconfig`Virtualization` --> `KVM distributed software memory support` --> `press 'Y' to include the option`
make -jNN is the number of threads you'd like to run parallelly.
sudo make modules_install
sudo make install
sudo update-grub
reboot
sudo apt-get install python pkg-config libglib2.0-dev zlib1g-dev libpixman-1-dev libfdt-dev
git clone https://github.com/GiantVM/QEMU.git
cd QEMU
./configure --target-list=x86_64-softmmu --enable-kvm
make -jN
cd ..
wget http://ftp.sjtu.edu.cn/ubuntu-cd/16.04.6/ubuntu-16.04.7-server-amd64.iso
cd QEMU
./qemu-img create -f qcow2 ubuntu-server.img 10G
We simulate two machines by running two QEMU processes on a single machine.
First we install vncviewer to monitor the guest.
wget https://www.realvnc.com/download/file/viewer.files/VNC-Viewer-6.19.325-Linux-x64.deb
sudo dpkg -i VNC-Viewer-6.19.325-Linux-x64.deb
Terminal 1:
sudo x86_64-softmmu/qemu-system-x86_64 --nographic -hda ubuntu-server.img -cpu host -machine kernel-irqchip=off -smp 4 -m 4096 --enable-kvm -serial mon:stdio -local-cpu 2,start=0,iplist="127.0.0.1 127.0.0.1" -vnc :0
Terminal 2:
sudo x86_64-softmmu/qemu-system-x86_64 --nographic -hda ubuntu-server.img -cpu host -machine kernel-irqchip=off -smp 4 -m 4096 --enable-kvm -serial mon:stdio -local-cpu 2,start=2,iplist="127.0.0.1 127.0.0.1"
Terminal 3:
vncviewer :0
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
There is a video on Youtube about this paper:
Read a paper: GiantVM—a type-II hypervisor implementing many-to-one virtualization
Trusted Cloud Group · Shanghai Key Laboratory of Scalable Computing and Systems, Shanghai Jiao Tong University
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
Weiye Chen
jcma@umich.edu
Chenggang Wu
wuchenggang@sjtu.edu.cn
Yuxin Xiang
xiangyuxin@sjtu.edu.cn
Copyright © 2020 Trusted Cloud Group · Shanghai Key Laboratory of Scalable Computing and Systems, Shanghai Jiao Tong University