基于VPU加速的虚拟桌面客户端设计∗

2018-08-28 02:50余启家熊庭刚
舰船电子工程 2018年8期
关键词:客户机解码桌面

余启家 熊庭刚 张 宇

(武汉数字工程研究所 武汉 430074)

1 引言

如今,随着云计算需求和云上资源的日益增长,以设备为中心的传统计算服务正慢慢转变为以用户为中心的服务[1]。以用户中心的服务是没有深入专业知识的用户也可以随时随地使用基于云计算资源的服务。由于不受设备和地点的局限,云资源可以让大量用户共享资源同时分担成本,这样一来,云资源提供商可以将基础设施集中在低成本(如房地产,电力等)地区,用户可以以较低成本获得更高的极限负载能力。云资源还具有极大的灵活性,可以根据用户需求自由地重新配置、添加或扩展基础设施资源。

基于桌面虚拟化的VDI(Virtual Desktop Infra⁃structure,虚拟桌面基础架构)是云计算领域的领先服务,也是以桌面为中心的服务,托管通过网络访问的远程服务器上的用户桌面环境[2]。VDI是客户端/服务器计算模型的变体,有时也称为基于服务器的计算。众所周知,VDI将虚拟桌面作为云环境中的服务提供给用户,并使用户能够随时随地通过各种终端访问其虚拟桌面[3]。VDI的通用组件是VDI客户端,VDI服务器和VDI管理器,并且这些组件连接起来形成网络服务[4]。

一般来说,为在VDI中使用虚拟桌面服务的客户端提供丰富的用户体验非常重要。因此,许多提供像 Citrix[5],VMware[6],MS[7]这样的 VDI解决方案的供应商都拥有自己的专有显示协议。他们的协议一直在变得越来越好,所以每年都有很大的用户体验飞跃。近年来,显示协议处理的不仅仅是显示,所以用户可以将音频和视频发送到远程主机中的自己的虚拟桌面,并且几乎可以使用任何基于USB的外围设备[8]。

在传统虚拟桌面应用的场合中,往往更注重经济节能和对虚拟桌面的高效的管理,这种情况下往往会应用到瘦客户机。然而,在一些特殊的场合中,信息安全却被摆在首位,这正是由于虚拟桌面在安全和便利方面较传统PC有着较大的优势。在这种情况下,往往还需要有更高的服务质量(QoS)——加入GPU以改善虚拟桌面客户机的显示性能。

在本文中,我们在虚拟桌面客户机中加入了VPU的支持,它为客户机提供了更好的显示画面。此外,我们还对虚拟桌面显示协议进行了针对性的改进,以提高虚拟桌面服务的质量。

2 相关研究

桌面虚拟化将桌面计算机虚拟化,并将这些虚拟桌面环境提供给网络上的用户。桌面虚拟化基于服务器虚拟化,即将物理服务器划分为更小的虚拟服务器,以帮助最大限度地提高服务器资源利用率,包括服务器中各个物理服务器,处理器和操作系统[9]。

VDI是桌面虚拟化的流行方法。VDI托管在集中或远程服务器上运行的虚拟机(VM)中作为桌面环境的虚拟桌面。而且,用户可以通过各种终端访问分配给用户的虚拟桌面。一般来说,VDI有三个组件:一个是用户连接和用户终端的VDI客户端,一个存在用户虚拟桌面的VDI服务器和一个管理虚拟桌面系统的VDI管理器。VDI服务器中的虚拟桌面通过网络上的显示协议传输到用户终端。这些组件连接起来形成网络上的虚拟桌面服务。

像Citrix,VMware,MS这样的VDI提供商拥有自己的专有显示协议。例如,Citrix的XenDesktop采用了HDX(高清体验)显示协议,通过支持WAN(广域网)上的VoIP,网络摄像头和基于3D的应用等高质量音频和视频来改善用户体验[10]。VM⁃ware View通过采用Teradici的PCoIP(PC-over-IP)协议,其性能大大提高。此外,MS通过RemoteFX协议向用户远程交付虚拟桌面或远程应用程序,该协议是MS的RDP(远程桌面协议)[11]的一组协议。

图1 VDI系统结构

由于这些商用VDI提供商都用的是闭源协议,在使用及研究中有着诸多技术上的限制和交流上的不便,也无法自由地定制一些客制化的功能或优化其性能,最关键的是存在未知的潜在安全隐患,我们最终选择了开源的SPICE(Simple Protocol for Independent Computing Environment,独立计算环境简单协议)协议。它具有开源和可客制化改进的优点,另外在信息安全越来越重要的今天,它也满足了我们对于自主可控的要求。图1显示了基于SPICE协议的VDI系统结构。

在本文中,我们设计并实现了基于VPU的虚拟桌面客户机系统,为客户机提供硬件解码以获得更好的显示画质。并且针对性地对VPU的驱动进行了优化,并分析了系统性能和实验结果。

3 虚拟桌面客户端设计

由于没有VPU加速时客户机解码能力限制,只能在较低分辨率下有较好的帧数表现。为了减少带宽消耗,我们又使用MJPEG压缩算法将视频流数据进行了压缩,这会增加客户机端的图像渲染任务,这对客户机的运算速度有了更高的要求。于是,我们给客户机搭载了高解码性能的VPU来接管图像渲染任务,提高了客户机的服务质量。

3.1 硬件结构

虚拟桌面客户机的硬件总体设计采用异构多核处理构架,组成主要包括控制单元和图形处理单元(Graphic Processing Unit,GPU)。其中图形处理单元又包括视频处理单元(Video Processing Unit,VPU)、外视频模块和后处理模块这三个主要模块。对外接口主要包括网络接口、显示输出接口和控制输入接口。虚拟桌面客户机组成原理框图如图2所示。

图2 虚拟桌面客户机组成框图

控制单元以低功耗嵌入式CPU为处理核心,完成设备系统管理及配置、任务分配、状态监控、后台服务器控制命令接收与处理、双冗余千兆网络协议解析、虚拟桌面传输协议解析和键盘鼠标输入处理等功能。

图形处理单元包括视频处理单元、外视频模块和后处理模块,其中后处理模块由色彩转换模块(CSC),2D模块,硬件图层模块组成。视频处理单元完成视频流数据的接收和解码处理,然后将YUV格式的视频数据放入显存,由后处理模块完成接下来的色彩转换、2D处理和硬件图层渲染。

网络接口提供了服务器和客户机之间的信息交互通道,显示输出接口(如DVI接口、VGA接口和HDMI接口等)将解码后的视频数据输出给显示器,控制输入接口一般是USB接口,接收键盘和鼠标等设备的输入。

由于客户机有了VPU的加速,从服务端发送过来的视频流数据经过硬件解码,显示效果有了很大的改善。VPU的加速过程同时也受到虚拟化协议中控制通道的控制,为了得到更好的显示质量,在本设计中还对VPU驱动进行了针对性的优化。

3.2 虚拟化协议构架

通常,虚拟桌面显示协议是用于接收诸如显示器,键盘和鼠标之类的远程计算设备的输入和控制以及通过网络传输输出的一组消息。该协议有多个通道,根据类型和角色进行分类[12]。

本设计中,SPICE协议根据桌面传输内容来进行数据传输,如图像、视频、音频播放和用户输入等数据,通过不同的抽象的“通道”对这些数据进行传输,使得SPICE协议能够根据网络的条件很容易地对传输的数据进行控制,提供QoS(服务质量)控制。

SPICE协议通过VDI(虚拟设备接口)直接与服务端虚拟设备进行交互,这使得SPICE可以直接、高效地使用服务器的硬件资源,同时也使得SPICE的实现独立于虚拟机Guest OS(客户操作系统)。图3为SPICE协议结构框图。

图3 SPICE协议框图

由于虚拟桌面上的视频播放消耗的网络带宽比任何其他操作都要高,减少虚拟桌面中显示通道的数据量是减小网络带宽消耗最有效的方法。

而有VPU加速支持的客户机解码能力有所提高,为了减小显示通道数据的大小,我们将视频数据进行了压缩。在众多视频压缩算法中,我们选择了MJPEG算法,它有着帧内压缩和压缩速度快的特点,可以显著缩短服务端和客户端的交互时间,很好的满足了虚拟桌面服务的需求。

另外,为了根据用户接入的网络和计算环境提供适应性虚拟桌面服务,需要监视服务器与用户终端之间的网络性能以及终端的计算能力。为了监视这些,服务器和客户端使用虚拟桌面代理来交换关于计算环境和资源的信息。代理的任务是负责传输终端资源的相关信息和虚拟桌面显示的具体配置。

图4 虚拟桌面系统与虚拟化协议的整合

如图4所示,我们改变了虚拟化显示协议的虚拟桌面系统架构,并增加了三个控制模块来改进该系统。这三个模块如下:一个是客户端查看器中的网络状态检测,用于监视网络带宽并将其传输到控制通道,另一个是客户端中的编码设置,用于设置视频流的参数。另一种是在服务器中进行控制编码,即选择视频编码算法和基于网络带宽的视频压缩比。

4 测试

实验是侧重于客户机的围绕显示性能的测试,客户机使用的是由中船709研究所微电子中心所研制的第一代显卡,表1给出了用于显示性能分析的测试服务器和客户机的硬件参数。

表1 测试中服务器与客户机的硬件参数

由于桌面屏幕信号的数据大小大于任何其他接口信号,因此显示通道使用的网络带宽要比为用户提供虚拟桌面所需的其他通道多,同时客户机主要的运算量也在于视频解码。

为了提高显示质量,通过VPU将软解码转化为硬解码,以加快解码速度。另外,由于解码性能的提高,可以将传输的数据进行压缩,将更多的渲染任务在客户端完成,于是网络带宽和服务端负载得以降低。为了使研究更有针对性,接下来我们对硬解码加速前后的虚拟桌面构架进行了对比测试。

在这个实验中,虚拟桌面服务器与客户端之间的最大网络带宽约为923Mbps,我们根据虚拟桌面窗口分辨率,视频播放器分辨率和视频资源分辨率的变化对客户端显示帧数和消耗的网络带宽进行了分析。

表2显示了将虚拟桌面提供给远程客户端时的帧数和网络带宽测量结果。视频在虚拟桌面中播放,其大小为6Mbytes,分辨率为320×180。播放器分辨率为320×180。

表2 虚拟桌面分辨率对于帧数和网络带宽的影响

从表中可以看出,虚拟桌面操作系统的分辨率大小完全不会影响客户端帧数和网络带宽。

表3显示了虚拟桌面上视频播放器分辨率变化带来的显示质量和网络带宽变化的实验结果。实验中虚拟桌面分辨率是1920×1080,视频资源的分辨率为640×360。

表3 播放器分辨率对于帧数和网络带宽得到影响

从表3可以看出,虚拟桌面中视频播放器分辨率的改变对网络带宽消耗有着直接的影响。加速后网络带宽的平均消耗比加速前约减少40%。当播放器分辨率小于视频分辨率时,加速前后网络带宽都与窗口大小成正比;当视频播放器的分辨率大于或等于视频分辨率时,网络带宽不再增加。

加速前客户端显示帧数随着播放器分辨率增大而减小;加速后播放器分辨率对客户端显示帧数几乎没有影响。

表4给出了虚拟桌面视频资源的分辨率对于帧数和网络带宽影响的实验结果。实验中虚拟桌面分辨率是1920×1080,视频播放器的分辨率为1920×1080。

表4 视频分辨率对于帧数和网络带宽的影响

我们发现网络带宽消耗随着视频分辨率的提升而增多,并且加速后的网络带宽消耗约降低一半。而视频分辨率对加速前的客户端帧数有一定影响,加速后的客户端帧数则稳定在22左右,由于客户机有了VPU的支持,解码性能还没有达到瓶颈。

实际应用中,往往会出现显示图像抖动、撕裂的情况,其原因是多样的。对于本系统来说往往是由于客户机渲染速度不够,客户机CPU经常处于满负荷计算状态,导致部分帧的延迟或丢失。对于要求严苛的使用环境,虚拟桌面系统的帧数必须保持稳定,于是我们对客户机进行了持续1分钟的实时帧数测试。测试中虚拟桌面系统分辨率为1920×1080,视频播放器分辨率为1920×1080,视频分辨率是1280×720,结果如图5。

图5 实时性测试

从图5显示的结果可以看出,有VPU加速的情况下,客户机的帧数非常稳定;没有VPU加速的客户机帧数抖动比较大,偶尔会出现极低的帧率。

根据本文的实验,经过改进的虚拟桌面客户机比改进之前的客户机减少高达44%的网络带宽消耗,这是因为视频流数据被用于减少网络带宽的压缩算法压缩了。这也意味着更多的渲染任务被转移到了客户机端,由于有了VPU的支持,客户机的解码能力得以增强,客户端显示帧数相比没有VPU的客户机提高了高达400%。

5 结论

本文中,我们先改进了虚拟化协议,使用压缩算法将视频流数据进行压缩,降低了单个客户机的带宽消耗,从而使每个服务器能给更多的客户机提供虚拟桌面服务,同时也降低了客户机对CPU的性能要求。然后使用高性能VPU提升客户机的解码能力,使客户端的显示画面能够稳定在较高的帧数,从而提供更好的服务质量。

试验结果表明,与没改进的协议相比带宽减少了高达44%,客户端显示帧数提升了高达400%。

目前,我们正在研究如何合理的将虚拟桌面进行分割,使用更高效的算法,对每一帧画面分块压缩和传输,并在客户机端正确的“组装”起来。这样做带来的好处是,可以有目的性的单独控制每个块的显示质量,比如提高文本区的显示质量、降低非关键区的刷新帧数或画面细腻程度、使具有高刷新率的动态区域变得模糊等等,可以在提高服务质量的同时,进一步降低网络带宽需求。

猜你喜欢
客户机解码桌面
文化解码
解码eUCP2.0
文化 解码
文明 解码
隔山亦能打牛,本本巧变远控利器
桌面装忙
用好Windows 10虚拟桌面
当灰尘厚厚地落满了桌面
升腾瘦客户机借神码翱翔“云端”
基于Web数据提高访问速度的方法