GPU,也即图形处理单元。不论在手机中,还是在电脑、笔记本上,GPU都发挥着不可替代的作用。往期文章中,小编对加速原理、GPU服务器选择、GPU存储性能提升等均有所介绍。为增进大家对GPU的认识,本文将对GPU的5种虚拟化技术的略予以介绍。如果你对GPU具有兴趣,不妨继续往下阅读哦。


一、设备模拟(Device Emulation)设备模拟是指通过软件的方法来为虚拟机模拟GPU设备,这种方法的好处是虚拟机内部都可以调用GPU命令,可以完全记GPU设备的状态,保证虚拟化技术的全部特性,满足四个标准中的资源复用和支持虚拟化特性的标准。

QEMU 通过软件模拟实传统的VGA设备,但是该设备的性能很低,只能支持基础的功能。软件模拟设备的方法几乎不会使用硬件加速,因此其实现的性能已经无法满足现在虚拟机的图形图像处理和高性能计算的需求。而且正如前文提到的,现代GPU架构具有很高的复杂性缺少文档,因此很难实现对一个真实的物理GPU进行软件模拟。这意味着设备模拟方法只能模拟少量的API,只能保证少量的特性提供给虚拟机。

由于设备模拟的方法在性能和支持的GPU特性上和真实的GPU相差过大,设备模拟的技术已经不再应用到虚拟化技术中。

二、API转发(API Forwarding)API转发是指通过实现包裹图形API的库,这些库在虚拟机调用相关的API时,将这些图形API通过远程过程调用的方法转机上,然后调用主机上的图形驱动提供的API支持完成调用。通过给高层的API实现包裹库,客户机就能支持高层的API如CUDvCUDA、vGRIS等虚拟化方案都是利用API转发的方法。这种方法的优点是利于实现,而且一定程度上利用了GPU硬件实现加同时可以使多个虚拟机调用的GPU相关指令与API在物理GPU上执行。但是API转发的主要问题在于这种方法失去了语言和库的性选择,包裹库和支持的API的不匹配会造成GPU虚拟化不成功。而如果在迁移的过程中,目标主机与源主机的包裹库版本不致,可能会造成迁移之后GPU虚拟化不成功,因此API转发会影响虚拟化提供的特性。

三、中介传递(Mediated Pass-through)GPU已经可以支持多个独立的上下文,中介传递的方法使虚拟机只占用这些上下文的一个或者子集。高带宽操作(指令缓交、帧缓存提交)需要使用映射到物理GPU的内存或者MMIO资源,低带宽操作(资源分配、传统的特性)可能会通过使用全虚拟资源来实现。四、直接传递(Direct Pass-through)直接传递是指给一台虚拟机使用一个物理GPU的全部访问权限。Intel提供了Intel VT-d硬件辅助技术,使研究者不需要去GPU的编程接口就可以直接实现一台虚拟机占用物理GPU的全部访问权限。

这种方法的好处在于可以提供与真实机器相近的性及保真度,亚马逊的Amazon EC2提供的GPU资源就是使用这种虚拟化策略。但是这种方法问题在于一个物理GPU只能被一台机使用,牺牲了GPU资源在多台机器之间共享的条件。而且虚拟化的迁移功能也会受到影响,因为不同体系架构的GPU之间可在不兼容。


五、全虚拟化与半虚拟化GPU虚拟化实现策略按照是否需要修改客户机操作系统内部的驱动代码分为GPU全虚拟化和GPU半虚拟化。GPU全虚拟化实现在多个虚拟机之间共享GPu资源的同时不需要修改虚拟机内部的图形驱动。GPU半虚拟化是指向虚拟机提供软件实现的理备模型,对客户机的图形驱动进行底层的控制。

使用GPU半虚拟化的方法,比API转发的性能消耗更小,但是客户机的设备驱须要改写。主流的GPU虚拟化方案GPUvm使用半虚拟化的实现策略对虚拟机GPU的性能有明显的改善。