Page 45 - 《软件学报》2020年第10期
P. 45
李鼎基 等:基于跨虚拟机零下陷通信的加速器虚拟化框架 3021
的虚拟化方式,选择了基于 API 转发方法的 C/S 架构,参考了成熟的 I/O 设备虚拟化方案,通过前后端的分离来
支持多租户;为了满足目的 2,本文将虚拟机作为基本保护域以保证多租户场景下的强隔离性 [12] ,而不是直接在
物理主机的操作系统上使用诸如 Kubernetes [13] 的容器编排系统 [14] ;硬件虚拟化技术的 VMFUNC 功能允许应用
在非特权模式下切换扩展页表,为了满足目的 3,本文借助该特性实现了 CPU 控制流在虚拟机间零下陷地快速
切换,重点优化了 API 转发过程中虚拟机间通信流程的性能,尽可能地将性能损失降到最小.实践证明,本文实现
的 Wormhole 原型系统很好地解决了目前加速器虚拟化方案所面临的问题,在模型训练测试中相较于目前开源
的类似方案取得了 1.4~5 倍的性能提升.
本文做出了如下贡献:
(1) 基于 API 转发的方法,提出了一种针对加速器的、基于跨虚拟机代理执行的虚拟化框架.
(2) 提出了一种基于硬件虚拟化技术的无下陷的虚拟机间通信加速机制.
(3) 在 KVM 上,将虚拟化框架应用于常见的 Nvidia GPU,实现并支持了主流深度学习训练框架 Caffe.
(4) 扩展并优化了开源 API 转发框架 GVirtuS,使其同样支持深度学习框架,经过对比测试表明,本文提出的
虚拟化框架相较于优化后的 GVirtuS,在性能上有很大提升.
1 背景知识
1.1 虚拟机系统简介
基于虚拟机的虚拟化方案通过为客户操作系统提供一套完整的虚拟硬件资源来实现虚拟化.这种对于物
理硬件进行虚拟化的方案具有很多优点,例如对于
客户操作系统透明,并且允许运行未经修改的操作
系统,具有很强的兼容性 [13] .由于每一个虚拟机都拥
有其独立的操作系统、函数库、存储资源等,所以从
安全性的角度来看,虚拟机的隔离性相当出色 [15] .
当前数据中心内主流的虚拟化方案是以 KVM
为代表的基于主机操作系统的虚拟化架构.如图 1
所示,对于 CPU 的虚拟化,虚拟机监视器将每个物理
CPU 划分为一个或多个虚拟 vCPU 分配给不同的客
户虚拟机使用,所有的 vCPU 都会由虚拟机监视器统
一管理和调度;在内存的虚拟化方面,现代虚拟机系
统会 为每个虚拟 机分配一个 扩展页表 (extended
page table,简称 EPT),通过限制地址翻译来保证不同
的虚拟机处于不同的地址空间中 [16] ;I/O 的虚拟化通 Fig.1 Architecture of host-based virtualization
图 1 基于主机操作系统的虚拟化架构图
常会复用主机操作系统中的原生驱动程序,当虚拟
机内发起 I/O 请求后会经过虚拟机监视器转发给主机操作系统上的 I/O 代理模块(如 QEMU)进行处理.
1.2 硬件虚拟化技术——VMFUNC
为了提高虚拟化系统的性能,以 Intel 为代表的各大 CPU 制造商纷纷在其 CPU 产品上添加了硬件虚拟化
技术 [17] ,其中,针对内存的硬件虚拟化已经基本替代了原本的影子页表(shadow page table,简称 SPT) [18] 方式,成
为了默认的内存虚拟化方式.在现代虚拟机系统中,客户虚拟机想要访问物理内存,需要经过两级地址翻译:第 1
级是根据虚拟机内的页表(page table,简称 PT)进行客户虚拟地址(guest virtual address,简称 GVA)到客户物理地
址(guest physical address,简称 GPA)的翻译,第 2 级是根据虚拟机监视器配置的扩展页表进行客户物理地址到主
机物理地址(host physical address,简称 HPA)的翻译.
从 Intel 的第 4 代 CPU 开始,CPU 指令集中加入了 VMFUNC [19] 这一硬件指令,允许客户虚拟机能够在非特