最近有机会通过微信群(感谢桌面云 | 云潮涌动 微信群)分享了一下桌面虚拟化中的3D虚拟化这个子类的一些经验。正好也把过去近3年参与3D桌面虚拟化的一些项目经验做了一个梳理,特整理如下。


相较于普通的桌面虚拟化,3D桌面虚拟化是一个普通桌面虚拟化中研发桌面的衍生场景。过去多年,3D用户的桌面虚拟化需求一直都存在,但受限于技术很难完成交付。3D用户主要分布在包括工程制造、能源、科研、医疗等几个行业及相关的研究机构,在国外还有金融、政府这些行业。而在国内,近两年受到制造2025的大环境的影响,特别是在工程制造行业及对口的研究机构,3D桌面虚拟化需求呈现一种井喷式的发展趋势。

Citrix 3D虚拟化解决方案之小结_第1张图片

但3D虚拟化技术发展并不是一蹴而就的。整个技术发展都是有一个漫长的过程,当然还会不断发展下去。大约在10年之前,当时的飞机制造巨头波音公司找到做远程交付最厉害的Citrix和做显卡最牛NVIDIA,希望双方能做做一个解决方案,使得其设计的图纸都保存在其数据中心,但是其分布在全球的生产、制造工厂都能读取到这些图纸。

但以当时的技术来说,无论这些很难做到,但为后来的合作埋下了伏笔。

大约在2007年的时候,Citrix通过无盘工作站的方式,即通过一台服务器推送操作系统到远端的工作站上运行,达到所谓的虚拟化以及远程接入物理工作站的方式来解决这个问题,这也无奈之举。

到了2008年左右,Citrix开始将物理工作站通过Citrix的HDX协议进行远程交付,这个就和HP RGS非常类似的一种方式。但他开启了Citrix HDX 3D PRO的先河,为后续Citrix在3D虚拟化的领域的领导者地位打下了坚实的基础。

到了2009年,Citrix第一次实现了在服务器上安装一块Quadro 专业显卡,安装在虚拟化服务器XenServer上,然后将这块显卡透传给其中一台虚拟机,使得这台虚拟机获得了相应的GPU性能。这在业界是第一次真正实现了虚拟化与GPU物理显卡技术的结合。

到了2012年,Citrix将GPU虚拟化技术应用到了其当家应用虚拟化XenApp上,使得3D 应用可以直接进行交付,而跳出了桌面这个框架。

时间来到了2013年,跨时代的vGPU解决方案在孕育了几乎10年以后,时任Citrix CEO Mark Templeton和NVIDIA CEO Jensen Huang携手发布了全球首个GPU虚拟化解决方案。


Citrix 3D虚拟化解决方案之小结_第2张图片


2016年Citix又完成了Linux 的3D交付,应该说发展步伐还是非常清楚的。


那么说了这么多Citrix在3D虚拟化发展史上的里程碑,回到客户的实际场景中,看看最终到底是否需要一个什么样的方案。

回到3D项目本身(不一定是虚拟化场景),其实需要解决用户的3个问题,

  1. 如何保证3D使用的体验

  2. 如何合理使用包括GPU在内的所有资源

  3. 如何合理控制成本

其实Citrix做桌面虚拟化,首先会做的是分析用户的场景及用户类型。其实这个也是为了在项目中、后期合理的规划来应对前面3个问题。所以一般3D项目中,我们会把用户分成大概4个类别:

  1. 重度3D用户

  2. 中度3D用户

  3. 轻度3D用户

  4. 2D用户


对其最终的不同的类型的定义,就成为了后续我们在资源投入的依据。

既然有了用户的分类,其实在资源投入上就不可能是完全一致的,这个肯定是不合理。即使非专业人士相信也能理解,不同的需求配置不同的技术手段。

从目前的GPU虚拟化来说,一共有4种基本形态:

  1. 软件虚拟GPU

  2. GPU穿透

  3. GPU-APP共享

  4. vGPU,GPU虚拟

Citrix 3D虚拟化解决方案之小结_第3张图片

这四种形态很好理解:

  1. 软件虚拟GPU:就是由虚拟机自带的虚拟显卡来提供显示性能

  2. GPU穿透:将一块显卡透传给一个虚拟机

  3. GPU-APP共享:将一块显卡透传给一台基于Windows Server的XenApp虚拟机,交付一个个带有GPU效能的应用

  4. vGPU,GPU虚拟化:利用NVidia K1/K2,M60为代表的GPU完全虚拟化


其实这4种形态,很多时候也就正好对应前面用户的4种类型

而在这些模式中,目前最受用户关注的就是vGPU这种,的确他在很多地方有其独到的优势。目前在Citrix 3D解决方案中,他也是最重要解决方案组成之一。用户喜欢他,在我看来有几个原因:

  1. 性能值得期待。K1/K2,M60本身性能都不俗,即使切割之后仍然有很强的GPU性能,能够满足绝大部分的用户需求。

  2. 由于显卡是切分的,在一定程度上可以给用户调整GPU规格的可能。这比给每个用户买工作站,硬件配置固化来的更为灵活。至少不用等3年甚至5年才能调整这些参数。

  3. 虽然现在vGPU还不能实现VM的在线热迁移,但是多用户使用的模式、数据中心统一标准机架或者刀片服务器,还是比较受到IT管理人员的喜欢,毕竟不用维护那么多工作站,那是超级占用机房空间的。


目前市面上最主流的vGPU显卡型号为K1/K2,NVIDIA正在逐渐推广其新一代产品M6/M60。以K1/K2为例他们的性能罗列如下:

Citrix 3D虚拟化解决方案之小结_第4张图片

NVidia也有官方的对应表,非常容易让我们选择合适的配置。

Citrix 3D虚拟化解决方案之小结_第5张图片


那么有了一块K1/K2显卡就能解决3D用户的问题了吗?

答案是否定的。


原因很简单,任何系统都不是靠一个组件来实现的。3D虚拟化也不仅仅只靠GPU就能完成所有的工作来支撑用户访问。

既然是Windows+虚拟化+3D,我们就需要从这三个层面去看待这个问题。

  1. 为了实现3D虚拟化,GPU是一定需要。这个是肯定的,而且根据重、中、轻度用户,我们需要分配合适的GPU、vGPU,否则效果肯定不好。

  2. 除了GPU,最容易在项目用户忽视的重要资源是CPU,特别是CPU主频。由于虚拟化经验的惯性思维,很多技术人员在配置CPU的时候总是更关注CPU核数。觉得CPU性能不够,分几个vCPU就好了。但事实上,在3D或者一些高应用负载场景中,CPU主频直接决定使用的效果。由于3D场景一般VM密度都不高,这个时候物理CPU核数关注度相对的低。

  3. 再接下来比较容易出问题的就是存储。主要原因在于图纸方面,由于虚拟桌面场景中一般会用NAS,Windows Server做用户数据盘。而用户的图纸一般都比较大,少者几十MB,大的几个GB的也并不稀奇。这个时候由于CIFS协议的影响,很多用户会觉得这图纸读取、编译效率不如原来PC上,如果再遇到领配件数多的情况,反馈的结果可能就是操作非常卡顿。这个时候合理的规划用户图纸访问模式就变得特别重要。我曾经有客户直接使用VM+HBA卡透传直连企业图库存储的方式来解决这个问题。当然这种方式比较极端,但在实际场景中还是要与用户沟通选择合适的存储方案进行支撑。

  4. 网络在3D项目中也是一个要考虑的重点。相比普通桌面,3D虚拟化桌面、应用对于网络带宽压力要大的多。如果是局域网内要保证最优的质量,优质的100M网到终端,汇聚1000M起始必须保证的。如果网络带宽能整体提升一个档次当然就更好。如果是互联网场景,网络时延、丢包以及合理带宽动态调整就非常重要。Citrix通过新的Framehawk协议+策略,来帮助用户得到很好的体验。

  5. 操作系统、应用程序优化。这点在很多时候是很容易被忽略的,其实现有的所有操作系统、3D类应用程序都并不是原生为虚拟化而设计,那么操作系统不做优化,本身就会导致在虚拟化环境中效能不高。而应用程序特定的优化则有可能提升明显的使用体验。例如,Catia V5软件,如果你不增加一个特定的系统参数,再好的配置都会跑着很卡。

  6. 外设,在很多时候仅仅交付桌面、应用可能还是不够的,因为和普通虚拟桌面场景一样,3D虚拟化场景中,也是一样,只是外设类型可能有所不同。比如:3D鼠标,绘图板这些高精度的设备,以及双屏、四屏的多显示器需求,则是用户需要的。而Citrix HDX协议对于这些功能的都有很好的支持,保证在用户最终使用时尽可能的保持与本地工作站的使用一致性。

  7. 合理的终端选型。一般来说,如果用户使用PC/MAC类的设备作为终端,效果都会理想,很多时候MAC设备由于其架构特殊性,效果会极为惊艳。但是不是每个用户都能接受使用MAC设备来作为终端,而很多时候会使用瘦客户机。

    过去很长一段时间都有个经验是,即使老旧的PC也会比大部分的瘦客户机的显示效果好。所以在选择瘦客户机的时候,一要注意CPU主频,二要确保自带GPU解码芯片。因为随着Citrix Receiver支持终端GPU解码,这样会对显示的效果带来不小的提升。这块的内容可以参考此blog,http://kaiqian.blog.51cto.com/236001/1739138 。

Citrix 3D虚拟化解决方案之小结_第6张图片


那么使用vGPU就一定是使用vGPU+Win7这种模式吗?

答案当然也是否定的。


其实Citrix这么多年来,在虚拟化场景一直有一个宗旨就是:应用为王。很多时候用户其实只是希望使用一个个的设计应用,在这个过程中,是否要先获取一个桌面则不一定。所以在很多场景中,我们会通过vGPU+GPU-App(XenApp)共享的方式来交付各种应用。这种方式有几种好处:

  1. 按需交付应用。不再需要把所有应用都整理到一个模板或者按部门整理几个应用为一个模板,完全按照需要需求申请应用。

  2. 很多时候,一上来就将用户的PC替换为虚拟桌面,极大的改变了用户使用习惯,导致最终用户抵触,反而难以让项目推进。而虚拟应用只是把需要的3D应用上收,并直接将快捷方式投递到其任何可以访问的终端上,最大程度降低用户使用习惯的改变。

  3. 更高的资源利用率。虽然vGPU能分摊一块GPU,但由于这种整体成本的高企,很多用户还是会打退堂鼓。所以合理的引导用户使用就变得很重要。

  4. 相比Win7完整的操作系统,App共享的方式则对于各种资源需求要少的多。对于最终用户来说,网络需求能够节约30%以上,而对于后台管理员,则存储、服务器、显卡的需求在会降低不少。

其实这样做也是为了回答用户最容易关心的几个问题。

  1. 如何保证3D使用的体验

  2. 如何合理使用包括GPU在内的所有资源

  3. 如何合理控制成本


从3D虚拟化未来发展来说,个人感觉将会在不久的将来解决如下几个问题:

  1. GPU资源化。GPU将会和CPU/RAM一样完全资源化,这样也就可以实现VM的在线热迁移。

  2. 更多的GPU类型选择,目前AMD/Intel都在发展各自的GPU虚拟化技术,与NVIDIA一起完善整个产业链。

  3. 对于终端的弱化。未来不仅仅是瘦客户机,类似于Android棒,树莓派等都可以来作为终端使用,极大的拓展其使用面和降低接入成本。


说了这么多,如有不正确的地方欢迎大家指正和留言。