酷栈科技:《VDI相关英文技术干货翻译系列之二》

前言:

通过本系列译文希望能够为广大读者提供云桌面相关的科普知识,能够帮助读者在一定程度上了解云桌面背后的知识体系和国外一流厂商的技术和产品发展方向。由于中英文文化差异,翻译不当之处在所难免,请多谅解!

上海酷栈科技有限公司(简称“CStack”或“酷栈科技”),作为一家专注的高性能、智能化云桌面产品及方案提供商,从产品孵化阶段就不断学习和总结国外一流厂商优秀的产品设计理念和演进之路,而思杰(Citrix)是所有国内云桌面厂商必将面对的竞争对手,我们认为只有更好地了解对手,学习对手,做到知己知彼,方可百战不殆。通过本系列译文,您可以看到一流厂商优秀的技术点都已经在CStack xView产品中有所体现并超越。随着光纤网络和5G的普及,视频、3D和云游戏成为互联网流量消费大户,所以CStack成立之初就将其云桌面产品xView定位于中高端市场,可以很好地适用于2D/3D设计、视频播放、视频监控、云游戏和Win10等新兴云桌面使用场景,在技术路线上坚定不移地选择视频编解码技术(Video Codecs)作为核心桌面协议技术栈,引入H.264和H.265编码技术并配合专业GPU显卡加速桌面会话(session),提升用户使用体验;同时广泛支持多种GPU虚拟化和直通技术,提升产品核心竞争力;在产品不断落地商用和打磨的同时,近期我们又增加了智能混合编码技术,用于应对普通办公场景下的Office,OA,ERP等静态内容以及对于图像和画面有着极高要求的一些特殊使用场景。后续,我们会继续以匠心精神将CStack xView云桌面产品进行不断技术优化和产品升级,为用户提供焕然一新的云桌面使用体验!

H.264 YUV420和YUV444对比

今天,我们将会进一步的分析一下YUV420和YUV444的区别。

根据我的经验来看,很多用户会抱怨在他们GPU加速的项目中桌面会话会模糊不清。如我之前的博客文章所阐述的,这是因为色彩二次采样效应所导致的结果。一旦我们将Citrix的策略设置为 “Optimize for 3D workloads” ,我们将会把整个屏幕内容进行H.264 YUV420硬件编码,这就是为什么很多用户报告屏幕模糊的原因所在。

GPU渲染与协议选择其实是两回事情,这个问题很多情况下并不是很清楚,我看到很多场景下,客户简单地在他们的Office VDI使用场景下启用H.264,原因是他们认为只有这样才可以将GPU利用起来。其实H.264的使用仅仅与支持硬件编码有关联(NVENC)。

[译者]:如果读者阅读了前一篇文章《VDI相关英文技术干货翻译系列之一》,便可以知道早期的VDI解决方案,基本采用的是静态无损压缩方式,优势是云桌面显示的色彩基本和原有图像完全一致,劣势是不太适应高帧率的视频播放、云游戏、3D设计等。随着视频应用的爆发式增多以及Win10的大量普及,云桌面引入了编解码Video Codec技术来实现桌面的传输,最为常见的便是H.264 YUV420,其保证了原有图像的亮度,但是损失了部分色彩空间,所以在针对Office等静态应用或者对色彩有着极高敏感的设计类场景中,用户会抱怨云桌面色彩有所差异,这很正常。目前CStack xView默认和Citrix采用同样的H.264 YUV420P,所以我们的合作伙伴或者客户会在某些特定的场景下,特别抱怨红色色差,通常我们会建议他们调整显示器对比度,色彩度,以及优化xView协议属性或者强制采用H.265来部分改善色彩影响。但是如果这些调整仍然无法满足客户的需求,那么可以启用我们CSDP即将支持的智能混合编码模式,实现部分图像的无损压缩和传输。

但是YUV420和YUV444的区别是什么呢?这个为什么又和我们协议选择有关系呢?

我并不打算在这里介绍过于细节的内容,但是你需要至少了解针对给定图像的压缩是有不同的采样系统可供选择。YUV中的Y指的是亮度,而U和V指的是色彩度。每个部分用8位或者1个字节来标识。由于YUV444没有色彩二次采样的问题,也就是说我们不会从原图像中去除任何色彩信息,这样YUV444就会有完整的24bits。但是对于YUV420来说,由于我们移除了一半的水平和垂直色彩信息,以便降低带宽的使用,这最终导致了我们只用了12bits来代表YUV420,仍然是8bits的亮度,但是只有4bits而不是16bits的色彩度。

你可以查看此网站(https://en.wikipedia.org/wiki/Chroma_subsampling#4:4:4) 了解更多的采样系统。

对于我来说,更重要的是让你能够从用户的角度来理解这个影响,所以我们还是从“肉眼“来进行对比。

[译者]:人类肉眼通常对于光线或者亮度比较敏感,所以无论YUV420还是YUV444都保证了亮度,但是色彩因人而异,不同的人对于不同的色彩的理解有一定的差异,同时在高帧率(high frame per second)的场景下,您往往无法很快察觉到颜色的差异,但是亮度差异会更加明显。所以,YUV420是采用了一种折中的方式来平衡显示效果和资源占用。

图像质量(Image Quality)

我们还是从我们的参考图像和捕获图像的对比开始了解YUV420和YUV444的差异。

你可以通过观察上图中红底蓝字或者蓝底红字的区域来察觉色彩二次采样效应,对于大部分Office用户来说,比如MS Excel应用中,这种背景颜色在表单中是非常常见的。那么如果我们使用SSIM来对比,又会是怎么样?我们之前的文章中提到过,YUV420的色彩准确度大约是83%,这里我会特别展示一下YUV444的具体数字:

参考图像

捕获的图像 H.264 YUV444

SSIM热图结果H.264 YUV444

如果我们关注在SSIM热图的比较,却别会更加明显:

SSIM 热图结果 H.264 YUV420

SSIM 热图结果 H.264 YUV444

[译者]:CStack的项目中,包括我们自身使用中,由于二次采样效应引起的色彩,尤其是红色最为明显,实际情况就是您会感觉红色相对平常使用的本地计算机偏暗,当然不同的云桌面终端,这里包括软终端、X86终端、ARM终端会有一定差异,根据我们的实际经验,软终端和X86终端这种影响相对小一点。所以,对于红色比较敏感的用户格外需要进行实际调整和优化。

我们可以看出对于色彩准确度上,YUV444相比YUV420 有很大的改善。但是在你认为YUV420没有用武之地之前,我们需要知道上面的参考图像对于YUV420来说是最为糟糕的场景了,我会用另外一个具有灰色线条框模型来进行对比,下面是这个参考图像:

在这种情况下,我会跳过“人眼”比较,因为你不得不相信人眼看不出区别。

所以我直接跳转到SSIM号码:

SSIM热图结果H.264 YUV420

SSIM热图结果H.264 YUV444

因此,如果我们看一下这里的数据,我们会看到YUV420的颜色准确度还不错,达到99%,并且YUV444会稍微好一点是99.7%。如上所述,图像的亮度部分也在YUV420上不变,因此与我们的测试案例相比,基于灰度的图像结果要更好。

[译者]:上图很好的说明了YUV420并不是那么糟糕,在很多场景下还是可以很好的处理图像质量和画面的,如同现实生活中一样,并没有完美的事情,您需要在平衡中进行选择(英文有个非常好的词语叫做:trade off)。

带宽(Bandwidth)

你可能已经预料到使用YUV444的缺点是会增加带宽消耗。是的,这是真的。如上所述,YUV444每像素24比特,YUV420每像素仅12比特,所以我确实预料到了YUV444的带宽消耗比YUV420高出两倍左右。我在窗口模式下进行了视频播放测试(下一篇博客内的图片会显示详细信息)以显示多媒体场景,结果如下:

我在窗口模式下进行了视频播放测试(下一篇博客内的图片会显示详细信息)以显示多媒体场景,结果如下:

那么,正如你所看到的,在此次使用Citrix7.18的测试中,YUV444所需的带宽几乎是YUV420的3倍。这对于低带宽远程连接尤其重要,因为它可能限制了使用场景。

[译者]:带宽依旧是云桌面中不可回避的一个话题,尤其是在广域网中部署,所以在实际案例中,我们需要充分分析用户的实际需求和实际环境,以便选择最为合适的解决方案,而不能一味的强调画面质量。

时延(Latency)

YUV420以及YUV444都使用硬件编码(NVENC)。因此,我们看到非常好的终端用户延迟,由于必要的编码能力增加,YUV444略有增加。

[译者]:CStack同样采用了硬件编码技术,所以在启用YUV444(后续计划版本中),并不会增加太多的延时,当然对于延时敏感的客户这依旧是致命的,所以您依旧需要trade off。

终端(Endpoint)

基于Linux的瘦客户机不支持YUV444,因为Citrix Linux接收器中没有实施。请注意此限制,因为它可能会限制已具有基于Linux的瘦客户机的客户使用场景。

【译注】由于Citrix本身并不产生或者ODM瘦客户端,导致了客户端的种类和支持程度更加不收控制,CStack通过ODM方式和多家瘦终端硬件工厂达成了合作协议,可以高性价比的支持多种瘦客户端机,以便满足不同图像质量要求的客户,降低客户的TCO。

Citrix策略设置(Citrix Policy Set)

我已经解释了YUV420的策略设置,所以我这里只关注YUV444。多年来Citrix已经提供了YUV444实现,但是如何正确配置并不是很清楚,因为我看到很多客户都没有做到这一点。

·Optimize for 3D graphics workload ->Enabled
启用此策略以使用NVFBC(Nvidia Direct FB access)和NVENC(NVIDIA Encoding)

·Allow Visually Lossless ->Enabled

·Use hardware encoding ->Enabled

·Use video codec for compression -> For the entire screen
为使NVENC能够在较旧的XenDesktop版本(7.12-7.16)上工作,必须使用整个屏幕策略

·Visual Quality ->Build to LosslessorAlways Lossless
这个配置非常有陷阱,因为需要将视觉质量设置为BTL或AL才能“激活”YUV444,很多人由于缺少这一步的配置,导致(系统)并没有按照其预期的方式工作
使用场景(Use Case)

我建议在用户对颜色准确性敏感的3D VDI使用场景中使用YUV444。例如用户在使用有单像素线图的特定应用程序时,使用YUV420几乎是不可能的。但是你需要控制带宽需求,因为我们在使用YUV444时看到带宽大幅增加。另外,Citrix没有Linux接收器支持,这也减少了YUV444可能的使用场景。我们随后会讨论其他协议选项,例如混合编解码器,但很多客户目前仍然使用XenDesktop7.15LTSR,如果我们不仅需要精确的色彩而且还需要良好的动态图像性能,别无选择。

如果你想了解如何选择正确的VDI协议,可以观看我们在GTC大会上的视频录像。

[译者]:总结一下,如果您对色彩非常敏感,那么建议采用YUV444或者无损压缩,但是这里需要考虑到大量带宽的增加和少量时延(硬件编码方式,例如CStack CSDP)。CStack针对此类问题,提出了智能混合编码方式,能够根据当前焦点图像采用合适的编码方式进行硬件编码,最大限度的在性能和资源之间进行trade off。

关于作者

Simon Schaber: NVIDIA GRID 解决方案架构师

译文出处

上海酷栈科技有限公司(简称:“CStack”)是一家提供行业领先的云桌面产品及解决方案的高科技公司,其前身是上海思华科技股份有限公司云计算事业部,自2012年从事云计算及云桌面技术研究和标准化产品交付以来,已完成众多云桌面项目集成与实施。其产品和解决方案已广泛应用于运营商、公安、制造、教育、金融、医疗、保险等多个行业及领域。

公司愿景:成为全球领先的云桌面提供商

公司使命:以安全、极简的云桌面,实现人、设备和数据的智慧互联