基于图形集群的远程实时渲染平台构建方法与流程

文档序号:15143803发布日期:2018-08-10 20:12阅读:356来源:国知局

本发明属于计算机图形渲染技术领域,尤其涉及一种基于图形集群的远程实时渲染平台构建方法,用于给多用户提供一种远程实时高效的图形渲染环境,有助于军事仿真、教育训练、移动办公以及自主可控系统推广等方面的工作。



背景技术:

图形渲染系统是视景仿真、虚拟现实和增强现实等技术的实现基础。图形渲染解决方案从最初的基于sgi(silicongraphics,美国硅图公司)的专用图形工作站,发展到多机并联的图形集群系统,再到采用nvidia(美国英伟达公司)的sli(scaleablelinkinterface,可升级连接界面)或amd(advancedmicrodevices,美国超微半导体公司)的cf(crossfire,显卡交火)技术的多显卡图形工作站,硬件技术发展使得图形渲染应用模式呈现出螺旋上升的态势。为了解决大规模、远程、实时渲染的问题,同时也为了有效整合图形资源,提高资源使用效率,基于图形集群的渲染模式再次成为业界研究的焦点。

一般情况下,与图形集群配套使用的集群渲染系统也称作分布式渲染环境或渲染农场,它是指由许多运行渲染软件的计算机组成,在集群渲染管理软件的统一调配下,协调工作以并行方式完成所分配的渲染任务。从实时性的角度大致可分为两类:一类是非实时渲染系统,即管理端向图形集群下发渲染指令,图形集群在一定的时间内完成渲染任务后将渲染场景发送至管理端或存储系统,再由用户检验调用渲染成果。这种渲染系统多用于影视、动漫制作等领域;另一类是实时渲染系统,即管理端向图形集群下发渲染指令,图形集群完成渲染任务后将渲染结果实时反馈给用户,同时响应用户的交互与控制指令。这种渲染系统多用于视景仿真和虚拟现实系统。

通过对当前远程实时渲染平台相关的厂家与技术进行调研,发现其涵盖的核心技术主要包括vdi(virtualdesktopinfrastructure,虚拟桌面架构)、vmm(virtualmachinemonitor,虚拟机监视器)、dcv(desktopcloudvisualization,桌面云可视化)、vgpu(virtualgraphicsprocessingunit,虚拟图形处理器)等,其面向的应用情况主要体现在以下三个方面。

1、单机访问单站获取虚拟桌面服务

用户在本地安装客户端软件,远端的图形工作站节点安装服务软件,利用rdp(remotedesktopprotocol,远程桌面协议)将图形工作站桌面虚拟到本地,实现对图形软件的远程访问与显示。

事实上,基于windows的rdp协议可以有效支持远程桌面的文件操作以及简单的文档处理等,但并不适合对视频以及动态图像的处理。在此基础上,惠普公司提出了rgs(remotegraphicssoftware,远程图像软件)解决方案,该方案在rdp协议的基础上做了很多优化,包括使用具有自主专利的图像压缩/解压缩技术(可达到170:1的压缩率),大大减小了网络传输负载,另外通过对rdp的扩展,能够实现远程多用户共享桌面服务的功能(windows的远程桌面连接同一时间只允许一个用户访问,且访问后服务端变成锁屏状态;惠普的rgs允许多个用户同时访问服务端的桌面,而服务端的桌面还可以正常显示)。这种方案支持windows、linux和unix操作系统,基本上能够满足远程渲染任务的需求,但是该服务端软件要求必须安装在惠普的图形工作站上,并且在图形渲染资源的分配上并没有做其他的优化处理工作。

2、多机访问单站获取虚拟桌面服务

前面提到的方案比较适合于多人协同开展同一工作,不能满足多人通过共享图形资源来开展不同工作的需求,如果要实现每个用户都能够获取独立的虚拟桌面而又能共享图形资源,则需要在图形工作站节点上为每个用户都能开辟出独立的桌面系统,即vdi架构的部署与运行。目前,主流的vdi技术主要包括hyper-v+rgs、xenserver+hdx和nicedcv三种解决方案,对比分析如下:

(1)hyper-v+rgs

hyper-v(美国微软公司推出的基于windows的虚拟化产品)内置于windowsserver2008及以后的操作系统产品中,相对于微软过去的虚拟化技术多了一层操作系统,兼容性好,但速度较慢。hyper-v让虚拟机可以较直接的使用实体主机的硬件资源,以提高虚拟系统之效能。hyper-v借用微软平台优势切入到服务器虚拟化领域,但在对于linux系统支持上,hyper-v还有所不足。rgs软件的功能与不足如前所述。

(2)xenserver+hdx

xenserver(美国思杰公司推出的虚拟化软件产品)是一种全面而易于管理的服务器虚拟化平台,能高效地管理windows和linux虚拟服务器,可提供经济高效的服务器整合和业务连续性,xenserver具备了操作系统的功能,能直接安装在服务器上引导启动并运行。美国思杰公司的hdx(highdefinitionexperience,高清使用体验)则是针对桌面虚拟化和应用虚拟化市场推出的远程高清交互式产品,能实现对多媒体、语音、视频和3d图形交互。但在工程设计领域,该产品只能实现基于windows平台的桌面虚拟化交互,而且无法实现对gpu资源的共享。

(3)kvm+nicedcv

nicedcv(美国亚马逊公司旗下的nice公司推出的dcv产品)是一种能在标准网络上远程访问2d或3d应用的交互式产品,使用户可利用远端的3d高端图形卡、快速的i/o性能,以及大量的内存节点。值得强调的是,通过在kvm(kernel-basedvirtualmachine,基于内核的虚拟机)虚拟化平台上部署nicedcv,能充分发挥该软件的性能。该方案能支持linux操作系统,而且在硬件层面上nicedcv支持各种gpu虚拟化技术,利用nvidia公司的专用图形卡配合vgpu驱程,给每个虚拟机分配vgpu,可在一定程度上实现了gpu资源的共享。

3、多机访问图形集群获取虚拟桌面服务

前面两种方案中提到的虚拟桌面服务,都是建立在单台图形工作站基础上实现虚拟桌面服务的,如果用户数量过多,则在单台图形工作站上创建虚拟机的形式就无法满足应用需求,因此就需要以多台图形工作站的形式来代替单台图形工作站,这就是图形集群的概念。第三种方案主要是建立在前两种方案的基础上,重点解决图形集群的聚合问题,即怎样组织管理当前的多台图形工作站,使他们能够像一台机器一样方便高效的实现对多用户的图形服务。

如果要把独立的多台图形工作站聚合成为统一的图形集群系统,首先需要有渲染任务管理软件进行资源分配与调度,典型的如vcm(visualizationclustermanager,可视化集群管理器)和techviz(法国techviz公司的可视化软件产品)等。

(1)vcm

以色列orad公司推出的vcm是在图形集群管理节点上安装的集群管理软件,它是通过规划图形节点的连接方式来分配渲染任务,再利用专用集成接口实现图像的集成与同步。这种集群管理方式较好的实现了渲染任务的分配与管理,但其理念主要是为多通道显示系统提供服务,比较适合多路同步输出的大屏显示,在应用方面明显不够灵活与智能。

(2)techviz

techviz在集群管理方面采用了另外一种思路,在集群的管理节点上安装完整的图形应用软件,当图形应用软件运行后本来是要直接调用本地的图形卡进行渲染显示,但是techviz软件将高分辨率的图形渲染任务以opengl(opengraphicslibrary,开放图形库)指令流的形式通过网络分配到渲染节点上,再利用渲染节点的图形卡进行渲染输出,各渲染节点之间通过同步卡进行输出同步。这种集群管理方案不需要在渲染节点上安装图形应用软件,而且在渲染任务的分配上也要灵活很多。

(3)其他的软件

除了上述两种软件外,国内外还有一些针对图形渲染的集群管理软件,比如muster(美国virtualvertex公司的集群渲染软件)、platformlsf(美国ibm公司的集群管理调度软件)和enfuzion(中国拓林思公司的集群渲染软件)等,它们能实时管理和监视渲染节点的工作情况,避免渲染节点的空闲,使用户在最短的时间得到最终渲染产品。

图形集群系统在为多用户提供远程实时渲染服务方面提供了良好的硬件基础,而现阶段的集群渲染软件系统研究多侧重于集群架构、集群管理、负载均衡以及并行渲染等方面,虽能够在同步并行模式下为用户提供更快速、更高效的解决方案,但并未解决大量远程用户基于不同需求的渲染应用问题。

不同于传统意义上的集群渲染系统,本发明提出的技术主要采用面向多用户的异步分布式工作模式,依托图形集群硬件环境,利用虚拟化手段来满足不同用户按需使用的需求。其核心思想是用户远程访问图形集群,图形集群为用户提供实时高效的运行环境,同时响应用户在本地的交互操作,使用户获得一种接近图形工作站的工作体验,其数据资源和计算程序都部署在远端,既方便管理又确保了数据安全。



技术实现要素:

为了解决上述技术问题,本发明提供了一种基于图形集群的远程实时渲染平台构建方法,通过基于docker架构的虚拟桌面系统部署,在图形集群上部署和运行vdi,为用户开辟独立的虚拟桌面系统,在docker运行环境下直接调用显示驱动以实现gpu(graphicsprocessingunit,图形处理器)加速渲染,同时采用vnc协议建立远程桌面连接,为用户建立实时的图像传输通道,结合图形集群动态任务调度与管理机制,为多用户提供一种异步分布式的实时渲染服务。

本发明的目的通过以下技术方案来具体实现:

基于图形集群的远程实时渲染平台构建方法,包括:

步骤一、利用docker架构在图形集群内部实现虚拟桌面系统的部署;

步骤二、在所述虚拟桌面系统中嵌入vnc服务端,vnc客户端访问所述vnc服务端后,通过vnc协议建立远程桌面连接;

步骤三、图形集群根据远程桌面连接情况进行动态负载均衡,建立图形集群动态任务调度与管理机制;

步骤四、通过图形集群动态任务调度与管理机制,在平台客户端与图形集群服务端间建立实时图像传输通道,综合集成基于图形集群的远程实时渲染平台。

步骤一,具体包括:

在图形集群渲染节点操作系统上创建docker容器;

将封装后的虚拟桌面系统做成docker镜像存入共享存储系统中;

docker容器通过加载docker镜像,在图形集群内部实现虚拟桌面系统的部署,同时在虚拟桌面系统内实现基于docker架构的gpu渲染加速。

其中,所述在虚拟桌面系统内实现基于docker架构的gpu渲染加速的步骤,包括:

将图形集群渲染节点操作系统的显卡驱程内核文件映射到docker容器的集成环境中,同时调用opengl(opengraphicslibrary,开放图形库)的窗口扩展插件,实现在虚拟桌面系统内的gpu(graphicsprocessingunit,图形处理器)实时渲染加速。

其中,所述虚拟桌面系统的显示采用虚拟外接输出的方式,该方式包括:

为每一个docker容器分配虚拟的显示输出,当用户访问该docker容器时,docker容器中的图形通过虚拟的显示输出,输出至客户端,使得gpu渲染不依赖于实际的图形卡输出接口。

步骤二具体包括:

vnc服务端利用分块匹配的区域变化检测算法对发生变化的图像区域进行筛选,经图像压缩后发送给对应的vnc客户端,通过vnc协议建立基于c/s架构的远程桌面连接;

其中,所述vnc服务端利用分块匹配的区域变化检测算法对发生变化的图像区域进行筛选,包括:

设定需要变化检测的单位区域;

获取截获系统屏幕重绘区域的信息;

若截获的系统屏幕重绘区域小于单位区域,发送该区域位置信息;

若截获的系统屏幕重绘区域大于单位区域,将截获系统屏幕重绘区域进行拆分,将拆分区域的坐标信息存储至链表中,对链表中每个拆分区域的坐标信息进行遍历检测后得到需要重新发送的变化区域位置信息,将需要重新发送的变化区域的位置信息进行存储并发送。

步骤三中,所述图形集群动态任务调度与管理机制包括:

在一定的负载均衡策略下,由集群管理节点合理安排渲染节点为用户提供服务资源;

所述图形集群动态任务管理与调度涉及到包括但不限于单用户对单节点、多用户对单节点、单用户对多节点和/或多用户对多节点四种情况中的一种或多种情况间动态转换。

所述负载均衡策略包括:

在单用户对单节点情况下,采用轮询策略分配渲染节点;

在多用户对多节点的情况,综合考虑渲染节点的资源利用率、网络带宽以及i/o(input/output,输入/输出)速率等指标,利用动态负载均衡模型求解渲染系统负载方差或标准差为极小值的单目标规划问题,得到优化后的图形集群负载均衡策略。

其中,所述综合集成的基于图形集群的远程实时渲染平台包括平台客户端、图形集群管理节点、图形集群渲染节点和共享存储系统四个部分;

平台客户端部署于用户操作终端,用于向图形集群服务端发起应用请求;

图形集群管理节点和图形集群渲染节点部署于图形集群服务端,用于响应平台客户端发起应用请求;

共享存储系统,用于存储管理用户配置文件、虚拟桌面系统镜像和/或渲染模型数据信息。

步骤四具体包括:

将vnc客户端嵌入到平台客户端,docker容器和vnc服务端嵌入到图形集群渲染节点,docker镜像存储于共享存储系统中,由图形集群管理节点依据动态任务调度与管理机制进行集群负载均衡;

接收到平台客户端发起应用请求时,图形集群管理节点为平台客户端指定渲染节点,渲染节点启动docker容器并加载docker镜像,同时利用vnc协议建立远程实时渲染通道,为用户提供远程实时渲染服务。

其中,所述远程实时渲染平台的应用模式包括:

图形集群服务端在接到平台客户端发起的应用请求后,由图形集群管理节点将渲染任务分配至渲染节点,渲染节点通过创建独立的虚拟桌面系统为用户提供渲染服务。

本发明针对大量远程用户基于不同需求的渲染应用问题,依托图形集群硬件环境,利用基于docker架构的虚拟化手段来为用户提供实时高效的运行环境,同时响应用户在本地的交互操作。该方法不仅适用于不同的硬件环境与操作系统平台,而且能够实现多用户共享gpu渲染资源,使用户获得一种接近图形工作站的工作体验。

附图说明

图1是基于图形集群的远程实时渲染平台构建方法流程图。

图2是虚拟机与docker的技术机制对比图。

图3是基于图形集群的远程实时渲染平台总体框架图。

图4是基于图形集群的远程实时渲染平台功能模块设计图。

图5是用户使用远程实时渲染平台的应用流程示例图。

图6a是主机操作系统渲染效果图;图6b是docker容器渲染效果图。

图7a是单节点支持两用户示意图;图7b是单节点支持四用户示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

参照图1,图1示出了本发明提供的一种基于图形集群的远程实时渲染平台构建方法的一实施例的流程图,该方法包括:步骤一至步骤四。

在步骤一中,利用docker架构在图形集群内部实现虚拟桌面系统的部署。

首先,在图形集群上部署和运行vdi,为用户开辟独立的虚拟桌面系统,可较好的满足不同用户的应用需求。考虑到虚拟机运行模式对gpu渲染能力的制约,系统采用基于docker(应用容器引擎)的vdi解决方案,在docker运行环境下直接调用显示驱动,大大提升了gpu渲染效率。

一般基于虚拟机的虚拟桌面系统都是通过调用基础操作系统的显示驱动实现显示功能,其本身显示资源有限且处理模式多属于串行工作模式,无法充分发挥图形集群高端显卡的gpu渲染能力。基于docker的vdi解决方案利用gpu虚拟化技术穿透基础操作系统的显示驱动,在多个独立的虚拟机内部实现基于gpu的图形加速,从而在一定程度上实现多用户对gpu资源的共享。参考图2,图2为虚拟机与docker的技术机制对比示意图。

该步骤具体包括:在图形集群渲染节点操作系统上创建docker容器;将封装后的虚拟桌面系统做成docker镜像存入共享存储系统中;docker容器通过加载docker镜像,在图形集群内部实现虚拟桌面系统的部署,同时在虚拟桌面系统内实现基于docker架构的gpu渲染加速。

其中,docker是基于lxc(linuxcontainer,linux容器)的高级容器开源引擎,主要包括三种部件,即守护进程(dockerdaemon),镜像(image)和容器(container),其中,守护进程作为服务端接收来自客户的请求并进行处理,镜像是容器运行时的只读模板,容器包含用户应用运行所需要的集成环境。

渲染加速的步骤具体包括:将图形集群渲染节点操作系统的显卡驱程内核文件映射到docker容器的集成环境中,同时调用opengl(opengraphicslibrary,开放图形库)的窗口扩展插件,实现在虚拟桌面系统内的gpu(graphicsprocessingunit,图形处理器)实时渲染加速。

由于docker容器与主机操作系统共享操作系统内核,用户应用可直接调用主机操作系统中的硬件资源。但在实际应用过程中,用户在容器直接提供的集成环境中运行应用无法实现有效的gpu渲染。经过大量的测试实验,将主机操作系统的显卡驱程内核文件映射到容器的集成环境中,同时调用opengl的x窗口扩展插件,能够较好的实现gpu的渲染加速。

进一步的,所述虚拟桌面系统的显示采用虚拟外接输出的方式,该方式包括:

为每一个docker容器分配虚拟的显示输出,当用户访问该docker容器时,docker容器中的图形通过虚拟的显示输出,输出至客户端,使得gpu渲染不依赖于实际的图形卡输出接口。

通常情况下,gpu渲染流水线进行屏幕在线式的渲染,而多用户的异步访问无法实现屏幕共享。针对这一问题,采用虚拟外接输出的方式,为每一个容器分配虚拟的显示输出,当用户访问该容器时图形将显示输出至客户端,使得gpu渲染不依赖于实际的图形卡输出接口,较好的解决了多用户异步应用的问题。

在步骤二中,在所述虚拟桌面系统中嵌入vnc(virtualnetworkconsole,虚拟网络控制台)服务端,vnc客户端访问所述vnc服务端后,通过vnc协议建立远程桌面连接。

vnc服务端利用分块匹配的区域变化检测算法对发生变化的图像区域进行筛选,经图像压缩后发送给对应的vnc客户端,通过vnc协议建立基于c/s架构的远程桌面连接。

其中,所述vnc服务端利用分块匹配的区域变化检测算法对发生变化的图像区域进行筛选,包括:

设定需要变化检测的单位区域;

获取截获系统屏幕重绘区域的信息;

若截获的系统屏幕重绘区域小于单位区域,发送该区域位置信息;

若截获的系统屏幕重绘区域大于单位区域,将截获系统屏幕重绘区域进行拆分,将拆分区域的坐标信息存储至链表中,对链表中每个拆分区域的坐标信息进行遍历检测后得到需要重新发送的变化区域位置信息,将需要重新发送的变化区域的位置信息进行存储并发送。

其中,该步骤具体为:vnc机制通过采用消息钩子机制截获系统屏幕重绘区域信息。设定需要变化检测的单位区域,如记单位区域rgn大小为32×32,若截获的系统屏幕重绘区域小于单位区域,则直接发送该区域位置信息;若截获系统屏幕重绘区域大于单位区域,则将截系统屏幕重绘获区域进行拆分,得到一个矩形链表(遍历链表)来存储拆分区域坐标信息,记为array_list,定义一个变化区域记为vnc_rgn,专门保存需要重新发送的区域位置信息,对array_list每个成员矩形调用此检测算法进行变化区域检测。

一优选实施例:

(1)假设其中一个成员矩形为arri,如果arri的长宽都小于32×32,则直接作为需重新发送的变化区域,保存到vnc_rgn中,否则对arri进行分析检测。

(2)首先定义一个新的矩形arrj(arri.left,0,arri.right,0),在arri中找到发生变化的行,记录该行的y坐标,记arrj.top=y,同时y+=16递增找到未发生变化行,暂时记arrj.bottom=y;然后从arrj底部y-=1进行比较,寻找内容发生变化的行,找到后将此行的y坐标设置成arrj.bottom=y。至此确定了变化矩形arrj的最终的top、bottom坐标。同时将arri的值设为arri(arri.left,arrj.bottom,arri.right,arri.bottom)。在对arrj分析完毕后接着对arri遍历分析直至结束。

(3)确定矩形arrj后,对矩形arrj进行分析。首先定义一个矩形arrn(0,0,0,0),在arrj中寻找最先发生改变的列,找到后记录发生变化的区域的left、top坐标,arrn.left=x,arrn.top=y,分别对x、y轴方向循环遍历进行分析(记为x+=32,y+=32),如果此列屏幕像素数据改变,则x+=32继续比较;否则将记录arrn.right=x,对y轴方向进行同样的比较,y+=32,并记录arrn.bottom=y,最终得到需要发送的变化区域矩形坐标,并将此矩形保存到最终发送的矩形链表中,同时记录下arrk(arrn.right,arrn.top,arrj.right,arrn.bottom)、arrm(arrn.left,arrn.bottom,arrj.right,arrj.bottom),分别将arrk、arrm赋值给arrj进行类似分析检测,依次循环遍历整个arrj,直到结束。

通过此屏幕变化区域检测算法,对整个array_list链表的成员矩形进行遍历后得到需要重新发送的变化区域坐标信息。

另外,对于图像的实时传输控制,系统采用c/s(client/server,客户端/服务器)架构在客户端与服务端之间建立图像传输通道,服务端采集、压缩图像后发送给客户端,客户端接收、解压图像后显示给用户。图像实时传输采用vnc协议,服务端利用分块匹配的区域变化检测算法对发生变化的图像区域进行筛选,经图像压缩后发送给客户端,大大减少了网络发送数据量。客户端图像刷新速度由用户自主控制,服务端在接收到客户端的刷新请求后进行图像传输,当客户端较忙或网络延迟较大时,图像刷新速度会相应的降低。

增强图像传输实时性的方法主要包括两方面,一是提升区域变化检测算法的效率,二是使用压缩率更高并且编码时间更短的图像压缩算法。对vnc的区域变化检测算法进行了改进,通过隔行扫描对图像变化区域进行细分,进一步消除了冗余的未变化图像数据。系统对该算法进行了测试,以1280×800的24位屏幕图像为例,客户端屏幕刷新间隔为40ms,在文字处理、网页浏览等应用上数据发送量在200kb/s左右,应用该算法平均可降低约10%的数据量;在高动态图像应用上数据发送量超过4mb/s,应用该算法对数据量影响很小,而cpu使用率有明显提升,所以方法一对高动态图像传输的实时性影响较弱。综合考虑压缩率和编码所花费的时间,系统常采用效率更高的mjpeg(一种图像压缩算法)算法对图像进行压缩编码,实验结果表明,相同条件下采用mjpeg算法数据发送流量可降至zlib(一种vnc协议默认的图像压缩算法)算法的50%以下,能够在一定程度上避免由于数据量过大而造成的网络拥塞问题。

在步骤三中,图形集群根据远程桌面连接情况进行动态负载均衡,建立图形集群动态任务调度与管理机制。

所述图形集群动态任务调度与管理机制包括:

在一定的负载均衡策略下,由集群管理节点合理安排渲染节点为用户提供服务资源;所述图形集群动态任务管理与调度涉及到包括但不限于单用户对单节点、多用户对单节点、单用户对多节点和/或多用户对多节点四种情况中的一种或多种情况间动态转换。

所述负载均衡策略包括:

在单用户对单节点情况下,采用轮询策略分配渲染节点;在多用户对多节点的情况,综合考虑渲染节点的资源利用率、网络带宽以及i/o(input/output,输入/输出)速率等指标,利用动态负载均衡模型求解渲染系统负载方差或标准差为极小值的单目标规划问题,得到优化后的图形集群负载均衡策略。

远程实时渲染系统的任务调度与管理机制为在一定的负载均衡策略下,由集群管理节点合理安排渲染节点为用户提供服务资源。一般情况下,集群管理涉及到单用户对单节点、多用户对单节点、单用户对多节点和多用户对多节点四种情况,而在系统运行过程中可能还会出现多种情况的动态转换问题。

在单用户对单节点情况下,可采用轮询策略分配渲染节点,而在实际应用中更多的是多用户对多节点的情况。在用户数和渲染节点数一定的情况下,综合考虑渲染节点的资源利用率、网络带宽以及i/o速率等指标,负载均衡策略可归纳为在渲染节点的选择中做决策,即求解渲染系统负载方差或标准差为极小值的单目标规划问题;若用户数或渲染节点数发生变化,则在一个时段内求解过程可能演变成为复杂的动态规划问题,但是在当前时刻还是可以作为单目标规划问题来对待。

设ei为第i台渲染节点的负载值,则:

ei=w1ci+w2mi+w3gi+w4ni+w5ioi(1)

式中,ci、mi、gi分别为第i台渲染节点cpu、内存和gpu的占用率,ni为网络利用率,ioi为i/o速率,wj(j=1,2,…,5)为对应上述5项指标的权重值,各指标项与负载值ei均需做归一化处理。

渲染系统的总负载均值为:

将求解渲染系统负载方差简化为求解各渲染节点负载与总负载均值差值的极小值,即:

经负载均衡后,各渲染节点的负载值总体上会稳定在系统总负载均值上下。为避免由于新增用户过多而影响当前用户的渲染体验,管理节点在监测到渲染节点当前用户的渲染帧频低于设定值(默认为24帧/秒)时,按照规则会优先将用户请求分配至其他渲染节点或拒绝用户的访问请求。

在步骤四中、通过图形集群动态任务调度与管理机制,在平台客户端与图形集群服务端间建立实时图像传输通道,综合集成基于图形集群的远程实时渲染平台。

如图3所示,该步骤具体包括:

接收到平台客户端发起应用请求时,将vnc客户端嵌入到平台客户端(图3中简称客户端n,n≥1),docker容器(图3中简称容器n,n≥1)和vnc服务端嵌入到图形集群渲染节点(图3中简称节点),docker镜像(图3中简称镜像)存储于共享存储系统中,由图形集群管理节点依据动态任务调度与管理机制进行集群负载均衡;

图形集群管理节点为平台客户端指定渲染节点,渲染节点启动docker容器并加载docker镜像,同时利用vnc协议建立远程实时渲染通道,综合集成基于图形集群的远程实时渲染平台。

所述综合集成的基于图形集群的远程实时渲染平台包括平台客户端、图形集群管理节点、图形集群渲染节点和共享存储系统四个部分;平台客户端部署于用户操作终端,用于向图形集群服务端发起应用请求;图形集群管理节点和图形集群渲染节点部署于图形集群服务端,用于响应平台客户端发起应用请求;共享存储系统,用于存储管理用户配置文件、虚拟桌面系统镜像和/或渲染模型数据信息。

所述远程实时渲染平台的应用模式包括:图形集群服务端在接到平台客户端发起的应用请求后,由图形集群管理节点将渲染任务分配至渲染节点,渲染节点通过创建独立的虚拟桌面系统为用户提供渲染服务。

一实施例,远程实时渲染系统利用docker架构实现虚拟桌面系统部署,使用vnc建立远程桌面连接。远程用户向集群服务端发出docker容器管理请求,利用vnc客户端与vnc服务端建立远程桌面连接。在图形集群服务端,集群管理节点通过docker守护进程对容器进行管理调度,docker注册表用于保存用户自定义的镜像文件。当服务端收到客户端发出的容器管理请求后,由docker守护进程搜索注册表中的镜像并创建用户容器,同时在容器中启动vnc服务端。

图形集群在接到用户终端发起的应用请求后,由管理节点将渲染任务分配至渲染节点,渲染节点通过创建独立的虚拟桌面系统为用户提供渲染服务。基于图形集群的远程实时渲染平台主要包括平台客户端、图形集群管理节点、图形集群渲染节点和共享存储系统四部分,其中平台客户端部署于用户操作终端,图形集群管理节点和渲染节点部署于图形集群服务端,共享存储系统主要为用户配置文件、虚拟桌面系统镜像以及渲染模型数据等提供方便可靠的存储管理。平台功能模块如图4所示。

平台客户端通过用户注册/登录模式向图形集群管理节点发送虚拟桌面请求,待管理节点指定渲染节点后负责与提供渲染服务的渲染节点建立远程桌面连接。平台客户端可直接访问共享存储系统,在用户权限范围内上传、下载或修改特定的配置文件。

图形集群管理节点主要包括初始化、任务管理和节点管理3个模块。系统启动后首先完成集群内部连接与配置文件加载等初始化功能;任务管理模块主要完成任务的存储、调度与查询等功能,在接到平台客户端的虚拟桌面请求后,对集群中各渲染节点的负载情况进行查询,同时利用动态负载均衡算法为平台客户端指定渲染节点,若为新用户注册模式则渲染节点新开辟虚拟桌面系统,若为用户登录模式则渲染节点从共享存储系统中加载虚拟桌面系统文件;节点管理主要完成对渲染节点的增删、配置和状态查询等功能。

图形集群渲染节点在启动虚拟桌面系统后,通过远程桌面管理与平台客户端建立独立的数据连接通道,为用户提供远程渲染服务。渲染节点主要包括虚拟桌面系统管理与远程桌面系统管理两部分,前者负责创建与管理虚拟桌面系统,为用户提供实时渲染服务,后者主要用于远程显示与交互控制。

虚拟桌面系统管理模块主要是在linux操作系统上创建docker容器,将封装后的虚拟桌面系统做成docker镜像存入共享存储系统中,在需要创建虚拟桌面系统时通过加载docker镜像来实现vdi部署,同时利用基于docker的gpu渲染技术解决在虚拟桌面系统内的实时渲染问题。

远程桌面管理模块主要采用vnc解决方案,由于vnc是采用消息钩子机制截获系统屏幕重绘区域信息,所以远程桌面管理模块需要为每一个用户的虚拟桌面系统创建显示输出接口映射,即创建虚拟“屏幕”。在虚拟桌面系统中安装vnc服务端,平台客户端通过调用vnc客户端与虚拟桌面系统建立远程桌面连接,采用基于vnc的图像实时传输控制方法对传输实时性进行了优化处理。用户使用远程实时渲染平台的应用流程示例如图5所示,包括:

平台客户端发起连接请求,图形集群管理节点接收连接请求,图形集群管理节点为用户选择渲染节点,判断是否为新用户连接,是,则启动应用容器引擎,创建虚拟桌面系统;否,则启动应用容器引擎,加载虚拟桌面系统镜像;图形集群渲染节点响应用户连接请求,图形集群渲染节点创建vnc实时渲染通道,平台客户端完成远程桌面连接,用户启动系统应用。

为测试系统应用效果,选择两台图形工作站组成图形集群,两台均为渲染节点,其中一台作为管理节点,平台客户端安装在普通pc上,网络环境为千兆局域网。其中图形集群节点硬件配置为英特尔至强四核处理器,16g内存,nvidiaq7000专业图形卡(显存6g),操作系统为64位ubuntukylin16.04(乌班图麒麟操作系统)。平台客户端登录后与图形集群渲染节点建立远程桌面连接,在1280×800分辨率上分别进行gpu渲染效率和多用户异步应用实验。

gpu渲染效率实验:在主机操作系统和docker容器环境中分别运行相同的图样测试样例,由于受屏幕刷新频率的限制,运行效果如图6a所示主机操作系统上运行帧频不超过60帧/秒,docker容器环境下的运行帧频可达85帧/秒,运行效果如图6b所示。测试结果显示,基于docker的gpu渲染效率已基本接近主机操作系统上的使用效率。

多用户异步应用实验:多平台客户端同时启动后,在系统稳定运行情况下渲染帧频随平台客户端数量的增加而逐步下降,各平台客户端间的渲染帧频差异不大,平台客户端显示无明显卡顿现象。当单渲染节点支持1个用户时平均帧频可达140帧/秒,支持2个用户时约为120帧/秒,平台客户端显示效果如图7a所示,支持4个用户时则将至75帧/秒左右,平台客户端显示效果如图7b所示。

综上,本发明实施例针对大量远程用户基于不同需求的渲染应用问题,根据面向多用户的异步分布式工作模式,依托图形集群硬件环境,利用虚拟化手段来满足不同用户按需使用的需求。其核心思想是用户远程访问图形集群,图形集群为用户提供实时高效的运行环境,同时响应用户在本地的交互操作,使用户获得一种接近图形工作站的工作体验,其数据资源和计算程序都部署在远端,既方便管理又确保了数据安全。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1