
GiantVM:“多虚一”打破单机资源边界
传统而言,一台虚拟机的计算和内存资源主要受限于单台物理服务器的容量。“多虚一”技术 [1,3] 力图打破物理边界,在将多台服务器的计算资源合众为一的同时,保留应用层的单机模型抽象。其根植于分布式共享内存(Distributed Shared Memory, DSM)的思想,最早可追溯到美国国家工程院院士Kai Li教授在1986年的开创性研究工作 [2]。
随着现代AI、大数据、高性能计算(HPC)等工作负载日益繁重,我们观察到,系统设计中的难题周而复始,在新硬件条件、新负载条件下以新的形式出现。一方面,目前单纯提升单机配置进行纵向扩容(Scale-Up),面临日益严重的边际收益递减问题,尤其是受限于“内存墙”瓶颈;另一方面,目前采用集群化方案开展横向扩容(Scale-Out),则往往需要对上层应用程序进行深度改造,并引入可观的分布式通信开销。

什么是 GiantVM?

GiantVM项目由上海交通大学计算机学院可扩展计算研究所团队开发,构建了一种将多台物理主机聚合成一台虚拟机的“多虚一” Type II虚拟化框架。在基于标准Linux QEMU/KVM软件栈,保证客户机操作系统无需修改的同时,在CoreMark基准测试场景达到了接近普通虚拟机的99%的性能表现。结合新型互联总线技术,GiantVM能够支撑上层应用程序获得无感透明的性能提升。

技术优势
1
单机编程模型
GiantVM 提供共享内存抽象和单机编程模型,无需修改应用程序,即可运行在多台物理机上。
2
更高的资源利用率与可扩展内存容量
聚合多台物理主机的资源,按需分配给单台虚拟机,突破单机内存与CPU核心数上限。
3
透明的数据共享与迁移
数据在物理节点之间自动、透明地分布和移动,应用程序无感知,提供进程级跨机迁移。
4
与现代高速互连技术的集成
基于RDMA及多款内存语义互连总线(如CXL和华为灵衢UnifiedBus等)的技术方案正在积极适配中,为未来性能优化铺平道路。

核心技术选型:
共享内存及APIC转发机制
本次开源的patch系列为GiantVM的共享内存启动路径提供了基础的KVM APIC转发支持,修改主要集中在KVM,对内核其他部分修改很少。
它实现了一个简洁的中断转发接口,允许 KVM 将选定的LAPIC中断状态交给用户态的GiantVM运行时,由后者将中断路由并重新注入到目标vCPU。这使得跨节点的 APIC/IPI 协同在启动和运行期间成为可能。
具体增加的功能包括:
新增 CONFIG_KVM_DSM_IRQ_FORWARD 内核编译选项。
拦截 LAPIC 对 APIC_ICR / APIC_ICR2 的 MMIO 写操作。
在需要时将中断处理出口到用户态(KVM_EXIT_DSM_SEND_IRQ)。
提供 VM ioctl 接口,允许 GiantVM 运行时将 DSM IPI、x2APIC ICR 等状态回注到 KVM。
上述相关代码接口设计将根据社区反馈意见进行调整。

性能表现:
最高达普通虚拟机的99%,
集成新型总线获得9.9x提升
我们在4核到128核配置下运行CoreMark基准测试,目前GiantVM的开源方案,整体表现令人印象深刻:
vCPU数 | GiantVM 得分 | 普通VM 得分 | GiantVM / 普通VM |
4 | 98,783 | 101,032 | 97.77% |
8 | 205,642 | 210,817 | 97.55% |
16 | 390,974 | 400,500 | 97.62% |
32 | 744,099 | 800,328 | 92.97% |
64 | 1,477,804 | 1,629,535 | 90.69% |
72 | 1,511,546 | 1,810,068 | 83.51% |
128 | 2,531,447 | 2,556,548 | 99.02% |
可以看到,在128核配置下,GiantVM 达到普通虚拟机性能的 99%,相对自身4核成绩扩展了 25.63倍,而普通虚拟机相应为25.30倍。

在新型CXL总线的硬件支撑下,GiantVM在Spark Word Count和Inverted Index场景下最高可获得9.9x以上的性能提升。
图中,GVM是简单将RDMA替换为新型总线,基于“多虚一”运行原生Spark。xSpark为使用新型总线,基于原生操作系统的定制化Spark方案。XcaleVM为在GVM基础上进行针对总线特性的深度优化结果,基于“多虚一”运行原生Spark。基线(1x)为基于RDMA和原生操作系统的原生Spark方案。

可供体验
目前投递RFC为基于共享内存的GiantVM版本。欢迎体验我们的示例镜像!请移步项目主页,根据GVM-Kernel仓库中的README指引进行安装和下载。我们也为开源开发者提供源代码和内核编译指引文档。
TCP模式的GiantVM尝鲜版本已在开源仓库中提供(GVM-Kernel, GVM-qemu),镜像可在交大网盘下载,提取码qemu。欢迎反馈!
RDMA(已经完成)及CXL(和中国电信云计算研究院合作)和华为UB的方案敬请期待。
ARM适配正在进行中,RISC-V也即将适配。
demo视频请阅:

相关工作
相关文献
[1] Jin Zhang, Zhuocheng Ding, Yubin Chen, Xingguo Jia, Boshi Yu, Zhengwei Qi, Haibing Guan: "GiantVM: a type-II hypervisor implementing many-to-one virtualization." VEE 2020: 30-44.
[2] Kai Li: "Shared virtual memory on loosely coupled multiprocessors." PhD Dissertation, Yale University, 1986.
[3] Xingguo Jia, Jin Zhang, Boshi Yu, Xingyue Qian, Zhengwei Qi, Haibing Guan: "GiantVM: A Novel Distributed Hypervisor for Resource Aggregation with DSM-aware Optimizations." ACM Trans. Archit. Code Optim. 19(2): 20:1-20:27 (2022).
会议材料
- KVM Forum 2025: "GiantVM: A Many-to-one Virtualization System Built Atop the QEMU/KVM Hypervisor"
Link: https://pretalx.com/kvm-forum-2025/talk/MDGYZG/
- KVM Forum 2018: "Distributed QEMU" by Yubin Chen & Zhuocheng Ding (Video)
Link: https://www.youtube.com/watch?v=GprmhYU1M8Q

开源社区
项目主页:https://giantvm.github.io/
GitHub组织:https://github.com/GiantVM
投递至Linux社区的RFC patch链接:https://lore.kernel.org/all/20260605100031.834938-1-muliang.shou@sjtu.edu.cn/T/#t
GVM-Kernel仓库:https://github.com/GiantVM/GVM-kernel
GVM-qemu仓库:https://github.com/GiantVM/GVM-qemu
TCP模式的GiantVM尝鲜版本,交大网盘链接(提取码qemu):https://pan.sjtu.edu.cn/web/share/b78050c85dbd20d2dfbc5bac2f3838df