Page 44 - 《软件学报》2020年第10期
P. 44
3020 Journal of Software 软件学报 Vol.31, No.10, October 2020
Abstract: The increasing deployment of artificial intelligence has placed unprecedent requirements on the computing power of cloud
computing. Cloud service providers have integrated accelerators with massive parallel computing units in the data center. These
accelerators need to be combined with existing virtualization platforms to partition the computing resources. The current mainstream
accelerator virtualization solution is through the PCI passthrough approach, which however does not support fine-grained resource
provisioning. Some manufacturers also start to provide time-sliced multiplexing schemes, and use drivers to cooperate with specific
hardware to divide resources and time slices to different virtual machines, which unfortunately suffer from poor portability and flexibility.
One alternative another but promising approach is based on API forwarding, which forwards the virtual machine's request to the back-end
driver for processing through a separate driver model. Yet, the communication due to API forwarding can easily become the performance
bottleneck. This study proposes Wormhole, an accelerator virtualization framework based on the C/S architecture that supports rapid
delegated execution across virtual machines. It aims to provide upper-level users with an efficient and transparent way to accelerate
accelerator virtualization with API forwarding while ensuring strong isolation between multiple users. By leveraging hardware
virtualization feature, the framework minimizes performance degradation through exitless cross-VM control flow switch. Experimental
results show that Wormhole’s prototype system can achieve up to 5 times performance improvement over the classic open-source
virtualization solution such as GVirtuS in the training test of the classic model.
Key words: virtualization; accelerator; artificial intelligence; delegated execution; inter-VM communication
[1]
随着以深度学习 为代表的计算密集型应用的大量兴起,仅仅依靠 CPU 提供的算力已经显得捉襟见肘,开
发者们纷纷将目光转向了 CPU 之外具有更强大计算能力的设备作为加速器.传统的通用加速器主要以 GPGPU
[2]
为主,而工业界也为了特定的目的开发出了以 TPU(tensor processing unit) 为代表的专用加速器.数据中心是云
[3]
计算(cloud computing) 时代的核心基础设施,其中的虚拟化平台是云服务能够高效运行的基础保证.近年来,
越来越多的人工智能服务提供商倾向于将其应用部署在云系统中,使得各类加速器需要被整合进已有的虚拟
[4]
化平台中,因此有关加速器虚拟化的需求也应运而生 .虽然目前市面上已经出现了若干种加速器虚拟化的解
决方案,但是这些方案在现实场景中的应用仍然存在着各类限制和挑战.
[5]
目前主流的加速器虚拟化方式是 PCI 透传(passthrough)的方式,以 Intel VT-d 为代表的 I/O 设备虚拟化方
案会将加速器设备直通到客户虚拟机中.这种虚拟化方式绕开虚拟机监视器(virtual machine monitor,简称
VMM)的干预,把加速器全权交由客户虚拟机管理,虽然获得了与裸金属(bare-metal)环境几乎无异的性能,但是
无法细粒度地虚拟化给多台客户虚拟机共享使用.因此,该类虚拟化方案使虚拟化平台失去了计算资源弹性分
配的能力,较差的可扩展性让虚拟机监视器不能灵活地在多台虚拟机之间动态地调度计算资源.
[7]
[6]
一些加速器制造商也提供了以 Nvidia Grid 和 gVirt 为代表的虚拟化方案,通过让设备驱动程序与加速器
配合以达到硬件资源的划分与时分复用.这些方案在虚拟机监视器协助下对于加速器的特定操作进行干预,其
余操作则与 PCI 透传方式类似,将加速器的运行时间公平地分配给各个客户虚拟机.然而,对于目前的加速器而
言,时分复用方案的可用性并不高:一方面,现在成熟的时分复用方案不仅需要在软件层面配合特定的驱动程
[8]
序,硬件层面上对加速器的型号也有着严格的限制 ,导致大部分普通加速器无法使用此虚拟化功能.另一方面,
该类虚拟化方案可移植性差,在每个新型的加速器出现时都需要重新进行针对性的开发,而资源划分策略无法
自由地进行调整也导致可扩展性差.
[9]
另外,也有以 rCUDA 和 GVirtuS [10] 为代表的基于 API 转发方式的虚拟化方案.该类方案均建立在分离式
驱动模型 [11] 的基础上,在动态链接库层面进行虚拟 vGPU 的抽象.该模型将设备驱动划分为前端驱动(frontend
driver)和后端驱动(backend driver)两部分,其中,后端驱动程序扮演服务器的角色,并将从前端驱动程序接收到
的请求转换为实际与底层硬件设备交互的驱动程序调用.由于需要进行前后端驱动程序间的通信,还涉及到数
据的序列化、内存的额外拷贝等操作,相较于原生的非虚拟化方案,性能会有较大程度的损失,具体的损失程度
主要取决于通信部分的性能以及所传输数据量的大小.
为了解决目前主流加速器虚拟化面临的问题,本文基于硬件虚拟化技术,提出了一种针对加速器的虚拟化
框架,目的是:(1) 针对加速器提供方便、可用的多租户虚拟化方案,提高硬件资源利用率;(2) 保证用户间强隔离
性与安全性;(3) 尽可能地降低虚拟化带来的额外性能开销.为了满足目的 1,本文的虚拟化框架放弃了 PCI 直通