此节为第三章上节GPU SRIOV及VDI的一个补充,简短介绍一下。

添加上一节地址:https://yq.aliyun.com/articles/590916

VDI的用户体验问题

无论是AMD的GPU SRIOV还是Nvidia的M60等直通设备虚拟化,亦或者是GVT-g这样的分片虚拟化,在处理图形渲染为主的虚拟化方案都会定位于VDI客户。但都会面临一个问题:图形渲染的远程显示。而这些虚拟机以windows guest为主。如何解决远程显示的问题(既以前提到的remote display的问题),在很大程度上决定着用户体验和用户粘性。

然而即便是现在云计算服务非常成熟的情况下,依然没有一款通用的,适合大多数场景的解决方案。

那么VDI用户体验的问题主要体现在哪里呢?

  1. 支持GPU图形渲染的虚拟机,通过KVM SPICE 你很有可能看到的是黑屏。
  2. 要发挥图形渲染的能力,你将要在虚拟机内部安装额外的软件来支持远程显示的问题

在绝大多数传统客户都已经非常熟悉KVM SPICE VNC这个方式远程连接客户机的情况下,在支持图形渲染的虚拟机,竟然无一例外的提供一个黑屏给客户。这使得客户在虚拟机启动过程中一旦加载SeaBIOS结束后,将无法操作客户机,因为你看不到屏幕显示。

浅谈GPU虚拟化技术5:GPU图形渲染虚拟化的业界难题-VDI的用户体验 - 图1

更让人无语的是问题2的解决,你需要在客户机内部安装一些支持远程连接的协议。由于问题1的存在,你将看不到屏幕。你没办法安装软件!!!是不是开始觉得头疼了?

所以很多时候用户(公用云服务厂商都会有解决方法去避免这种情况的发生),在自己搭建VDI环境的时候,是先把GPU虚拟化功能禁止。然后在虚拟机内部安装自己想要的远程连接工具,并配置成自启动方式。然后才能开启GPU虚拟化功能。

如此用户体验已经被诟病多年,而各方貌似也没有要去解决它的意愿。所以只能使用第三方远程显示协议来弥补了。为什么没有人去解决?因为就算解决了你也未必会为此付费。

选几个用的比较多的方法和Display Remote Protocol远程显示的效果。

远程桌面连接(RDP)

在不带vGPU的虚拟机上,QEMU会自带一个全模拟的VGA设备(cirrus or qxl),这些设备与KVM的SPICE配合默契,可以通过VNC查看虚拟机桌面。但是一旦安装了vGPU的驱动,由于显示被vGPU驱动接管,那么用户往往在这个VNC看到的是黑屏。用户体验相当差。

这个时候用户需要通过windows自带的远程桌面连接(RDP)来连接虚拟机。这在一定程度上解决了客户需求。然而RDP并不能解决所有问题。RDP在对2D的支持上不错,但在需要用到overlay的情况下windows RDP就没有办法显示。另外在全屏模式下的3D显示有会有问题。

当然优点是windows guest自带。但你至少需要登陆一次虚拟机并打开远程协助共享功能。

Tightvnc

为数不多的开源vnc软件,可以远程显示2D,3D渲染结果,体验也不错。但是需要客户在Window guest内部安装一个tightvnc server。不能像RDP一样原生支持。

X11vnc:

X11vnc是用于Linux客户端的一个远程桌面协议。支持3D,2D。目前为止是用于Linux唯一一个还不错的开源免费软件。

更多的远程桌面协议可以参考:https://en.wikipedia.org/wiki/Comparison_of_remote_desktop_software

用户痛点的解决:图形工作站:

阿里云图形工作站

由于上述问题的存在,很多虚拟化大厂都开始研发远程连接协议。商用协议比如Citrix的HDX,HP的RGS等等。这些协议被公有云产品包装起来提供VDI完整显示支持而不需要让客户去考虑如何远程显示的问题,提升了用户体验。

比如最近阿里云提供的云图站的功能就是一个很好的例子。做了用户所有不愿意接触的技术细节,只提供用户最关心的业务。请查看阿里云图形工作站介绍。

阿里云图形工作站采用的是Citrix HDX协议。通过CitrixReceiver远程显示,效果如下:

浅谈GPU虚拟化技术5:GPU图形渲染虚拟化的业界难题-VDI的用户体验 - 图2

XenApp and XenDesktop

在传统VDI的基础上,Citrix很早就开始了远程协助的另类服务:XenApp与XenDesktop。XenApp/XenDesktop不再以虚拟机为服务对象,而是把远程运行链接APP或者Desktop作为服务对象。并把远程APP在Citrix HDX协议的基础上派发给客户端。用户按需使用XenAPP上面部署的App而无须关注背后的虚拟机及其服务器。XenApp等服务在混合云及私有云范围内应用广泛。IT服务部门在对大规模应用程序作集中部署和应用更新。交付的时候只需要在XenAPP服务器端注册添加服务就可以。而同一个公司的成千上万的客户通过瘦客户机或者web页面来访问该更新应用。并且收费模式也以按需收费为主。

XenApp的App部署和交付并非简单的VDI重定向,而是在系统层面做了极大的应用优化:比如memory,CPU,GPU渲染等等。作为一个商用产品Citrix各方面的宣传中对技术细节语焉不详。我们也无从得知更多的信息。

看一个例子:

浅谈GPU虚拟化技术5:GPU图形渲染虚拟化的业界难题-VDI的用户体验 - 图3

AWS AppStream

AppStream是与XenApp/XenDesktop同类型的应用。如果XenApp是在私有云上面应用广泛的化,那么AppStream其在AWS上面部署,提供的是公用云上的服务。

AppStream采用了AWS自己开发的STX协议,STX协议以低延时高压缩比的H264作为基础。其协议针对公用云网络环境,在720p的显示分辨率的情况下带宽可以缩小到500kbps以下。

浅谈GPU虚拟化技术5:GPU图形渲染虚拟化的业界难题-VDI的用户体验 - 图4

容器化的GPU图形渲染

不好意思,目前没有看到这样的产品与技术。只有NGC这样的GPU容器化的计算服务。