首页 / 专利库 / 电脑编程 / 计算机虚拟化 / 一种基于云端与终端GPU融合的GPU服务重定向系统及方法

一种基于端与终端GPU融合的GPU服务重定向系统及方法

阅读:202发布:2020-05-11

专利汇可以提供一种基于端与终端GPU融合的GPU服务重定向系统及方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及计算机技术领域,为基于 云 端与终端GPU融合的GPU服务重定向系统及方法,通过在云端计算 服务器 上的 虚拟机 中部署重定向模 块 ,在云端调度服务器上部署调度模块,在配置有GPU的云端计算服务器上部署服务模块,以及在终端计算机上部署服务模块和窗口管理模块,并按照融合调度规则,将虚拟机上调用的图形库API重定向到配置有GPU的云端计算服务器或终端计算机,为虚拟机中运行的图形密集型应用提供GPU 加速 支持。本发明利用云端和终端GPU统一与共享的理念、GPU重定向技术、GPU资源调度策略以及应用窗口与云桌面融合方法,为云桌面解决方案提供有效、低成本的图形加速支持,减轻了云端服务器的计算负载,并提高了终端计算机显卡的资源利用率。,下面是一种基于端与终端GPU融合的GPU服务重定向系统及方法专利的具体信息内容。

1.一种基于端与终端GPU融合的GPU服务重定向系统,其特征在于,包括:带GPU的云端计算服务器、无GPU的云端计算服务器、云端调度服务器,以及带GPU的终端计算机;其中带GPU的云端计算服务器和无GPU的云端计算服务器均采用虚拟化技术,虚拟出多台虚拟机,形成虚拟机资源池;带GPU的云端计算服务器和终端计算机的GPU会集中在一起,形成GPU资源池;
云端计算服务器的虚拟机上部署有多个重定向模,每个图形密集型应用程序对应一个重定向模块,重定向模块用于:(1)在图形密集型应用程序启动时向调度模块发起GPU重定向请求,拦截图形密集型应用程序对图形库API的调用,并将多个图形库API调用封装,与服务模块建立可靠网络连接,将封装后的图形库API发送到服务模块;(2)与关联的窗口管理模块通信并同步用户的键鼠交互操作;(3)在图形密集型应用程序结束时向调度模块发起GPU资源释放消息;
云端调度服务器上部署调度模块,调度模块用于:(1)监听服务模块的注册请求;(2)按一定的周期从已注册的服务模块拉取最新的GPU信息;(3)监听重定向模块的GPU重定向请求,按照融合调度规则,为重定向模块分配最佳计算设备,通知重定向模块向该最佳计算设备的服务模块重定向图形库API;(4)监听重定向模块的GPU资源释放请求,解除重定向模块与关联的服务模块的连接;
带GPU的云端计算服务器以及终端计算机上部署服务模块,服务模块用于:(1)向调度模块注册设备信息,维护图形密集型应用程序的GPU上下文;(2)监听重定向模块发送的图形库API数据包,解析图形库API数据包并调用设备上真实的图形库,将渲染后的数据编码后发送到关联的窗口管理模块;
终端计算机上部署窗口管理模块,窗口管理模块用于:(1)监听重定向模块的启动消息,为图形密集型应用程序创建窗口;(2)解码由服务模块发送的数据,以窗口方式将应用程序显示在终端计算机的桌面上;(3)与重定向模块同步用户的键鼠交互操作,使得图形密集型应用程序窗口与虚拟机桌面融合为一体。
2.根据权利要求1所述的GPU服务重定向系统,其特征在于,所述融合调度规则综合评估云端计算服务器和终端计算机的GPU计算、当前负载以及网络延迟,采用终端计算机的本地GPU优先,与终端计算机同局域网的其他终端计算机的GPU其次,虚拟机桌面所在的云端计算服务器的GPU再次,其他云端计算服务器的GPU最后的原则进行选择。
3.根据权利要求1所述的GPU服务重定向系统,其特征在于,调度模块定期收集与维护服务模块所在设备的GPU信息,GPU信息包括显卡的GPU频率、各种分辨率下的速、过去一段时间平均剩余物理显存大小及百分比;调度模块还维护每个服务模块正在服务的重定向模块列表,以及每个服务模块当前剩余逻辑显存大小。
4.根据权利要求1所述的GPU服务重定向系统,其特征在于,终端计算机通过远程桌面协议连接到虚拟机。
5.一种基于云端与终端GPU融合的GPU服务重定向方法,其特征在于,包括以下步骤:
(1)服务模块注册GPU;
(a)带GPU的云端计算服务器的服务模块向云端调度服务器的调度模块注册自身信息,调度模块维护已注册服务器的系统状态信息;
(b)终端计算机的服务模块向调度模块注册自身信息,调度模块维护终端计算机的系统状态信息;
(2)图形密集型应用程序启动,重定向模块申请GPU;
(a)通过终端计算机远程连接到云端计算服务器上的某个虚拟机桌面;
(b)点击虚拟机桌面上的图形密集型应用程序图标,与该图形密集型应用程序关联的重定向模块拦截操作系统创建进程的图形库API,评估图形密集型应用程序对GPU资源的需求,向调度模块发起GPU重定向请求;
(c)调度模块收到虚拟机上的重定向模块发送的请求,按照融合调度规则,为重定向模块分配最佳计算设备,作为重定向目标设备;然后将重定向模块加入到重定向目标设备的GPU调度队列,并通知重定向模块将图形库API重定向到该重定向目标设备的服务模块;
(d)重定向模块连接到重定向目标设备的服务模块,拦截图形密集型应用程序对图形库API的调用,将多个图形库API调用的名称、参数及数据一同封装,并将封装后的图形库API数据包发送到服务模块;
(e)服务模块接收到重定向模块发送的图形库API数据包,维护其所属图形密集型应用程序的GPU上下文,解析图形库API数据包并调用真实的图形库执行命令,将渲染后的数据编码后发送到关联的终端计算机上的窗口管理模块;
(f)窗口管理模块解码由服务模块发送的数据,以窗口方式将图形密集型应用程序显示在终端计算机的桌面上,并与关联的重定向模块同步键鼠交互操作,将该窗口与虚拟机桌面融合为一体;
(3)关闭图形密集型应用程序,重定向模块向调度模块发起释放GPU的请求,调度模块将重定向模块从关联的服务模块所在设备的GPU调度队列中移除,解除两者的关联。
6.根据权利要求5所述的GPU服务重定向方法,其特征在于,步骤(2)的子步骤(c)中,按照融合调度规则确定重定向目标设备的过程为:
优先查询连接该虚拟机桌面的终端计算机,若该终端计算机的GPU满足虚拟机任务的需求,且两者网络延迟小于某个阈值,则将该终端计算机作为重定向目标设备;否则,查询与该终端计算机同属一个局域网的其他终端计算机,综合评估这些终端计算机的GPU剩余计算力、当前负载以及网络延迟,从中选择最佳的设备作为重定向目标设备;若无可用的重定向目标设备,则查询当前虚拟机所在云端计算服务器,若该云端计算服务器配置有GPU,剩余GPU满足虚拟机任务的需求,且两者网络延迟小于某个阈值,则将该云端计算服务器作为重定向目标设备;若仍无可用的重定向目标设备,则查询其余带GPU的云端计算服务器,综合评估这些云端计算服务器的GPU剩余计算力、当前负载以及网络延迟,从中选择最佳的设备作为重定向目标设备。
7.根据权利要求5所述的GPU服务重定向方法,其特征在于,步骤(2)的子步骤(f)中,键鼠交互操作包括窗口缩放、预览、关闭操作。
8.根据权利要求5所述的GPU服务重定向方法,其特征在于,步骤(2)的子步骤(d)中,图形库API调用的封装方式为将多个连续API调用封装在一起,并采用压缩算法进行压缩。
9.根据权利要求5所述的GPU服务重定向方法,其特征在于,若重定向模块申请GPU的请求成功,重定向模块从调度模块获取到可用的重定向目标设备,并启动图形密集型应用程序,将图形密集型应用程序的窗口大小设置为0;重定向模块在向重定向目标设备的服务模块发送GPU释放请求后,关闭图形密集型应用程序。

说明书全文

一种基于端与终端GPU融合的GPU服务重定向系统及方法

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种基于云端与终端GPU融合的GPU服务重定向系统及方法。

背景技术

[0002] 云桌面是一种比较成功的云服务模式。它充分利用云端服务器资源,为终端用户提供远程访问云桌面功能,方便运维人员统一集中管理,利用多样化的客户终端,提供标准化的一致服务,从而可广泛应用于教育、政务及企业运营中心。然而传统云桌面解决方案往往只考虑CPU和内存的计算效率和性能,忽视图形渲染的性能,只能流畅支持非图形密集型桌面应用。一些厂家虽然采用了一些专有技术,如GPU虚拟化技术,提升图形密集型桌面应用的使用体验,但这些技术存在成本高、带宽要求高等问题,难以大规模推广。
[0003] GPU虚拟化技术主要包括GPU直通、全虚拟化、半虚拟化以及API重定向这四种具体实现方式。其中,采用GPU直通、全虚拟化和半虚拟化可以取得接近物理GPU的性能,但有以下缺点:(1)无法跨主机共享GPU,即一台服务器上的云桌面无法使用另一台服务器的GPU资源;(2)需要为每一台服务器配备物理GPU,否则该服务器无法提供支持GPU加速的云桌面;(3)运维困难,一旦服务器的GPU故障,则该服务器上的云桌面将无法正常运行。采用API重定向方式,虽然会因为网络传输而带来部分性能损耗,但可以解决上述三个问题。结合以上四种技术,有研究者提出了云端GPU池的方案,即将配备有GPU服务器的GPU资源集中起来,形成GPU资源池,云桌面通过API重定向方式使用GPU资源。但是,这种GPU资源池仍然完全依靠云端的GPU资源,购置成本较高,单位云桌面的带宽要求高。这在公共用计算机场景下,由于一些业务需要大量用户同时使用云桌面,而相关云桌面需要使用图形密集型应用,问题会变得更加严重。另外,只采用云端GPU池的方案还会浪费终端计算机GPU资源。
[0004] 因此,需要一套支持GPU加速的云桌面解决方案,使得:(1)融合终端的本地GPU资源、云端服务器的GPU资源,构建出一个可按需调度的GPU资源池;(2)按优化服务的原则,按需为云桌面调配GPU资源池中的最佳GPU资源,以降低服务云桌面的带宽需求、降低网络传输延迟,提升用户的云桌面体验,降低云端GPU负载。

发明内容

[0005] 为了解决现有技术中云桌面无GPU加速支持,以及云端和终端GPU资源不能被充分利用的问题,本发明提出了一种基于云端与终端GPU融合的GPU服务重定向系统,通过在云端计算服务器中的虚拟机上部署重定向模,在云端调度服务器上部署调度模块,在带GPU的云端计算服务器上部署服务模块,在终端计算机上部署服务模块以及窗口管理模块,按照融合调度规则,将虚拟机上调用的图形库API重定向到带GPU的云端计算服务器或终端计算机,并将渲染后的应用程序窗口与云桌面融合,为虚拟机中运行的图形密集型应用提供GPU加速支持,给用户提供流畅且一致的云桌面体验。
[0006] 本发明系统采用如下技术方案:一种基于云端与终端GPU融合的GPU服务重定向系统,包括:带GPU的云端计算服务器、无GPU的云端计算服务器、云端调度服务器,以及带GPU的终端计算机;其中带GPU的云端计算服务器和无GPU的云端计算服务器均采用虚拟化技术,虚拟出多台虚拟机,形成虚拟机资源池;带GPU的云端计算服务器和终端计算机的GPU会集中在一起,形成GPU资源池;
[0007] 云端计算服务器的虚拟机上部署有多个重定向模块,每个图形密集型应用程序对应一个重定向模块,重定向模块用于:(1)在图形密集型应用程序启动时向调度模块发起GPU重定向请求,拦截图形密集型应用程序对图形库API的调用,并将多个图形库API调用封装,与服务模块建立可靠网络连接,将封装后的图形库API发送到服务模块;(2)与关联的窗口管理模块通信并同步用户的键鼠交互操作;(3)在图形密集型应用程序结束时向调度模块发起GPU资源释放消息;
[0008] 云端调度服务器上部署调度模块,调度模块用于:(1)监听服务模块的注册请求;(2)按一定的周期从已注册的服务模块拉取最新的GPU信息;(3)监听重定向模块的GPU重定向请求,按照融合调度规则,为重定向模块分配最佳计算设备,通知重定向模块向该最佳计算设备的服务模块重定向图形库API;(4)监听重定向模块的GPU资源释放请求,解除重定向模块与关联的服务模块的连接;
[0009] 带GPU的云端计算服务器以及终端计算机上部署服务模块,服务模块用于:(1)向调度模块注册设备信息,维护图形密集型应用程序的GPU上下文;(2)监听重定向模块发送的图形库API数据包,解析图形库API数据包并调用设备上真实的图形库,将渲染后的数据编码后发送到关联的窗口管理模块;
[0010] 终端计算机上部署窗口管理模块,窗口管理模块用于:(1)监听重定向模块的启动消息,为图形密集型应用程序创建窗口;(2)解码由服务模块发送的数据,以窗口方式将应用程序显示在终端计算机的桌面上;(3)与重定向模块同步用户的键鼠交互操作,使得图形密集型应用程序窗口与虚拟机桌面融合为一体。
[0011] 本发明方法采用如下技术方案来实现:
[0012] 一种基于云端与终端GPU融合的GPU服务重定向方法,包括以下步骤:
[0013] (1)服务模块注册GPU;
[0014] (a)带GPU的云端计算服务器的服务模块向云端调度服务器的调度模块注册自身信息,调度模块维护已注册服务器的系统状态信息;
[0015] (b)终端计算机的服务模块向调度模块注册自身信息,调度模块维护终端计算机的系统状态信息;
[0016] (2)图形密集型应用程序启动,重定向模块申请GPU;
[0017] (a)通过终端计算机远程连接到云端计算服务器上的某个虚拟机桌面;
[0018] (b)点击虚拟机桌面上的图形密集型应用程序图标,与该图形密集型应用程序关联的重定向模块拦截操作系统创建进程的图形库API,评估图形密集型应用程序对GPU资源的需求,向调度模块发起GPU重定向请求;
[0019] (c)调度模块收到虚拟机上的重定向模块发送的请求,按照融合调度规则,为重定向模块分配最佳计算设备,作为重定向目标设备;然后将重定向模块加入到重定向目标设备的GPU调度队列,并通知重定向模块将图形库API重定向到该重定向目标设备的服务模块;
[0020] (d)重定向模块连接到重定向目标设备的服务模块,拦截图形密集型应用程序对图形库API的调用,将多个图形库API调用的名称、参数及数据一同封装,并将封装后的图形库API数据包发送到服务模块;
[0021] (e)服务模块接收到重定向模块发送的图形库API数据包,维护其所属图形密集型应用程序的GPU上下文,解析图形库API数据包并调用真实的图形库执行命令,将渲染后的数据编码后发送到关联的终端计算机上的窗口管理模块;
[0022] (f)窗口管理模块解码由服务模块发送的数据,以窗口方式将图形密集型应用程序显示在终端计算机的桌面上,并与关联的重定向模块同步键鼠交互操作,将该窗口与虚拟机桌面融合为一体;
[0023] (3)关闭图形密集型应用程序,重定向模块向调度模块发起释放GPU的请求,调度模块将重定向模块从关联的服务模块所在设备的GPU调度队列中移除,解除两者的关联。
[0024] 上述键鼠交互操作包括窗口缩放、预览、关闭操作以及用户与图形密集型应用程序交互产生的其他操作。
[0025] 与现有技术相比,本发明取得了如下技术效果:
[0026] 1、本发明采用GPU计算前端与后端分离模式,根据融合调度策略,将云端计算服务器上虚拟机的图形计算命令重定向到带GPU的云端计算服务器或终端计算机上执行,使得无GPU的云端计算服务器上的虚拟机也能共享GPU资源,为虚拟机提供GPU加速支持,且充分利用终端闲置的计算资源。
[0027] 2、重定向后的图形库API的渲染结果由带GPU的云端计算服务器或终端计算机发送给目标终端计算机直接显示,减少了结果回传虚拟机的网络延迟。
[0028] 3、应用程序的窗口在终端计算机上创建,并通过同步用户的键鼠操作的方式将窗口与云桌面融合为一体,用户无需在云桌面和物理桌面之间来回切换,将获得流畅且一致的使用体验。
[0029] 4、本发明利用云端和终端GPU统一共享理念、GPU重定向技术、GPU资源调度策略以及应用窗口与云桌面融合方法,为云桌面解决方案提供了有效、低成本的图形加速支持,减轻了云端服务器的计算负载,提高了终端计算机显卡的资源利用率。附图说明
[0030] 图1是本发明系统框架图。
[0031] 图2是本发明的系统各模块位置和数量关系图。
[0032] 图3是服务模块注册GPU的工作时序图。
[0033] 图4是重定向模块申请GPU的工作时序图。
[0034] 图5是重定向模块释放GPU的工作时序图。
[0035] 图6是本发明中GPU资源调度流程图
[0036] 图7是重定向模块内部流程图。
[0037] 图8是调度模块内部流程图。
[0038] 图9是服务模块内部流程图。
[0039] 图10是窗口管理模块内部流程图。

具体实施方式

[0040] 下面结合附图及实施例对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0041] 如图1所示,本发明基于云端与终端GPU融合的GPU服务重定向系统,系统的物理框架主要包括带GPU的云端计算服务器、无GPU的云端计算服务器、云端调度服务器以及终端计算机;逻辑架构包括部署在带GPU的云端计算服务器、无GPU的云端计算服务器中虚拟机上的重定向模块,部署在云端调度服务器的调度模块,部署在带GPU的云端计算服务器上的服务模块,以及部署在终端计算机上的服务模块和窗口管理模块。用户在终端计算机上通过远程桌面连接软件连接到虚拟机桌面,并使用虚拟机上的图形密集型应用程序,如CAD、PS、AE、AI、PR等,系统会按照一定的调度规则,将虚拟机上执行的图形库API调用通过重定向模块重定向到带GPU的云端计算服务器或终端计算机,为虚拟机中运行的图形密集型应用提供GPU加速支持。终端计算机通过远程桌面协议连接到虚拟机。云端与终端的GPU计算资源均被纳入GPU资源调度池,供虚拟机使用,形成云端与终端GPU融合的服务体系。
[0042] 云端计算服务器包括教育行业或企业搭建的云环境中的旧式或新型服务器,终端计算机包括学校计算机实验室或企业办公室的瘦终端、笔记本、台式机以及个人工作站等。虚拟机部署采取的虚拟化技术包括属于1型虚拟化的Xen、VMWare ESXi等,以及属于2型虚拟化的KVM、VirtualBox、VMWare Workstation等。远程桌面连接协议包括RDP、VNC、SPICE等。图形库API包括OpenGL、Direct3D、Vulkan、Metal等。
[0043] 重定向模块与应用程序一一对应,负责在图形密集型应用程序启动时向调度模块发起GPU重定向请求;拦截应用程序对图形库API的调用,并将多个API调用封装,与服务模块建立可靠网络连接,将封装后的图形库API发送到服务模块;与关联的窗口管理模块通信并同步用户的键鼠交互操作,尤其是窗口缩放、预览及关闭操作;在应用程序结束时,向调度模块请求释放GPU资源。
[0044] 调度模块负责监听服务模块的注册请求;按一定周期从已注册的服务模块拉取最新GPU信息;接收重定向模块的GPU重定向请求,根据融合调度规则,如综合评估服务器和终端的GPU计算、当前负载以及网络延迟,为重定向模块分配最佳计算设备,通知重定向模块向该计算设备的服务模块重定向图形库API。调度模块依据融合调度规则,将虚拟机上执行的图形库API,优化重定向到所述带GPU的计算服务器或所述终端计算机,为在虚拟机提供GPU加速支持。
[0045] 服务模块负责向调度模块注册设备信息,维护应用程序的GPU上下文,接收重定向模块发送的图形库API数据包,解析图形库API数据包并调用设备上真实的图形库,将渲染后的数据编码后发送到关联的窗口管理模块。
[0046] 窗口管理模块负责解码由服务模块发送的数据,以窗口应用程序的方式将应用显示在终端计算机的桌面上;同步用户的键鼠交互操作,将该窗口与虚拟机桌面融合为一体。
[0047] 图2是本发明的系统各模块位置和数量关系图,阐述了各模块与物理设备的位置和数量关系,以及各模块之间的数量关系。带GPU的云端计算服务器和无GPU的云端计算服务器共同构成了虚拟机池,一台云端计算服务器可以虚拟化出多台虚拟机(云桌面)。一台虚拟机可以安装多个图形密集型应用程序,如CAD、PS、AE、AI、PR等。每个图形密集型应用程序会被注入一个重定向模块,即应用程序与重定向模块一一对应。用户通过终端计算机的物理桌面远程连接到虚拟机池中的一台虚拟机。终端计算机中安装一个窗口管理模块,该窗口管理模块用于创建应用程序窗口,与重定向模块是一对多的关系。当前用户正在使用的终端计算机、与该终端计算机同属一个子网的其他终端计算机,以及带GPU的云端计算服务器共同构成了GPU池;每台终端计算机或云端计算服务器都部署一个服务模块,用于对外提供GPU计算服务。一个服务模块可以管理多个重定向模块的GPU上下文。调度模块部署在云端调度服务器上,可以维护多个服务模块的信息,并处理多个重定向模块的GPU重定向请求。
[0048] 图3-5是本发明所涉及系统的相关工作时序图,也是本发明所涉及方法的具体实施过程。其中图3是服务模块注册GPU的工作时序图,图4是重定向模块申请GPU的工作时序图,图5是重定向模块释放GPU的工作时序图。本发明GPU服务重定向方法的具体步骤如下:
[0049] (1)服务模块注册GPU;
[0050] (a)带GPU的云端计算服务器的服务模块向云端调度服务器的调度模块注册自身信息(图3步骤①),调度模块维护该带GPU的云端计算服务器的系统状态信息(图3步骤②),尤其是GPU基本信息(如显卡的GPU频率、显存大小以及各种分辨率下的速)和状态信息(过去一段时间内平均剩余物理显存大小和百分比,以及剩余逻辑显存大小);
[0051] (b)终端计算机的服务模块向调度模块注册自身信息(图3步骤①),调度模块维护终端计算机的系统状态信息(图3步骤②),尤其是GPU基本信息(如显卡的GPU频率、显存大小以及各种分辨率下的帧速)和状态信息(过去一段时间内平均剩余物理显存大小和百分比,以及剩余逻辑显存大小);
[0052] (2)图形密集型应用程序启动,重定向模块申请GPU;
[0053] (a)用户通过终端计算机远程连接到云端计算服务器上的某个虚拟机桌面,该虚拟机桌面可以是与终端计算机绑定的,也可以是与用户绑定的;
[0054] (b)用户点击虚拟机桌面上的图形密集型应用程序图标,与该应用程序关联的重定向模块拦截操作系统创建进程的图形库API,评估应用程序对GPU资源的需求(如对GPU频率、显存大小以及各分辨率下帧速的需求,图4步骤①),向调度模块发起GPU重定向请求(图4步骤②);
[0055] (c)调度模块收到虚拟机上的重定向模块发送的请求,进行GPU调度(图4步骤③)。优先查询连接该虚拟机桌面的终端计算机,若终端计算机的GPU满足虚拟机任务的需求,且两者网络延迟小于某个阈值,则将该终端计算机作为重定向目标设备;否则,查询与该终端计算机同属一个子网的其他终端计算机,综合评估这些终端计算机的GPU剩余计算力、当前负载以及网络延迟,从中选择最佳的设备作为重定向目标设备;若无可用的重定向目标设备,则查询当前虚拟机所在的云端计算服务器,若该云端计算服务器配置有GPU,剩余GPU满足虚拟机任务的需求,且两者网络延迟小于某个阈值,则将当前虚拟机所在的云端计算服务器作为重定向目标设备;若仍无可用的重定向目标设备,则查询其余带GPU的云端计算服务器,综合评估这些带GPU的云端计算服务器的GPU剩余计算力、当前负载以及网络延迟,从中选择最佳的设备作为重定向目标设备。然后将重定向模块加入到目标设备的GPU调度队列,并通知重定向模块将图形库API重定向到该设备的服务模块(图4步骤④);
[0056] (d)重定向模块连接到目标设备的服务模块,拦截应用程序对图形库API的调用,将多个API调用的名称、参数及数据一同封装(图4步骤⑤),并将封装后的图形库API数据包发送到服务模块(图4步骤⑥);
[0057] (e)服务模块接收到重定向模块发送的图形库API数据包,维护其所属应用程序的GPU上下文,解析图形库API数据包并调用真实的图形库执行命令(图4步骤⑦),将渲染后的数据编码后发送到关联的终端计算机上的窗口管理模块(图4步骤⑧);
[0058] (f)窗口管理模块解码由服务模块发送的数据,以窗口方式将应用程序显示在终端计算机的桌面上,并与关联的重定向模块同步用户的键鼠交互操作,尤其是窗口缩放、预览及关闭操作,将该窗口与虚拟机桌面融合为一体(图4步骤⑨);
[0059] (g)在应用程序运行期间,图4中步骤⑤-⑨会重复执行。
[0060] (3)关闭图形密集型应用程序,重定向模块释放GPU;
[0061] (a)图形密集型应用程序关闭(图5步骤①)时,重定向模块向调度模块发起资源释放请求(图5步骤②);
[0062] (b)调度模块将重定向模块从关联的服务模块所在设备的GPU调度队列中移除,解除两者的关联(图5步骤③)。
[0063] 图6是本发明中GPU资源调度流程图,即融合调度规则流程图,主要是对图4中资源调度步骤进行流程化展示。调度过程中,调度模块主要评估重定向模块的GPU服务需求以及网络延迟这两个因素。其中GPU服务需求包括显卡的GPU频率、各种分辨率下的帧速、过去一段时间平均剩余物理显存大小及百分比,以及当前剩余逻辑显存大小。
[0064] 其中,剩余物理显存大小及百分比为服务模块所在设备的显卡显存的真实使用情况,这里对过去一段时间的物理显存使用情况做统计并取平均值;而逻辑显存大小用于度量显存申请量,重定向模块向服务模块提交的GPU服务需求中,申请的显存大小即为逻辑显存大小,因此,剩余逻辑显存大小就是当前服务模块还可以对外提供的逻辑显存大小。剩余物理显存大小及百分比会在应用程序执行过程中实时变化,其数据由物理显卡自动更新;而剩余逻辑显存大小不会在应用程序执行过程中实时变化,只会在重定向模块申请或释放GPU资源时变更,其数据由本系统更新。在重定向模块向服务模块申请GPU资源时,必须满足申请的显存小于剩余逻辑显存大小,保证应用程序有足够显存缓冲空间;且小于剩余物理显存大小,保证物理显存可用。例如,服务模块所在设备拥有4G显存,服务模块正在服务2个重定向模块(即应用程序)a和b。其中重定向模块a申请了1G(逻辑)显存,重定向模块b申请了1G(逻辑)显存。而在过去5分钟内,重定向模块a运行过程中实际平均占用800M显存,而重定向模块b实际平均占用600M显存。此时,该服务模块所在设备剩余逻辑显存大小为4-1-1=2G,而剩余物理显存大小为4-0.8-0.6=2.6G。对于计算服务器而言,大部分情况下,剩余物理显存大小会大于剩余逻辑显存大小;但对于终端计算机而言,物理显存还会被本地使用,因此,其剩余大小可能会小于逻辑显存大小。若此时,第3个重定向模块c向该服务模块发起GPU资源请求。若请求1.5G显存,由于剩余逻辑显存大小和剩余物理显存大小均满足需求,请求成功;若请求2.5G,由于逻辑显存大小不足,因此无法分配GPU资源。
[0065] 下面是融合调度规则的具体实施流程,在重定向模块提交GPU服务需求后,调度模块会综合评估设备服务模块的以上信息以及重定向模块与服务模块的网络延迟,选择最佳的服务模块所在的设备提供GPU服务。调度模块会优先查询连接到虚拟机桌面的终端计算机,若终端计算机显卡的GPU频率及各种分辨率下的帧速满足服务需求,重定向模块申请的显存同时小于终端计算机剩余逻辑显存大小和剩余物理显存大小,并且重定向模块与服务模块的网络延迟小于一定的阈值,则将该终端计算机作为重定向目标设备;若不满足需求,则继续查询与终端计算机同属一个局域网的其他终端计算机;若还不满足,则查询虚拟机桌面所在的云端计算服务器;若仍不满足,则查询其他带GPU的云端计算服务器。最终选择最优的计算设备作为重定向目标设备,为重定向模块分配逻辑显存,并更新目标设备剩余逻辑显存大小信息。
[0066] 图7-10是本发明的系统各个模块的内部流程图,阐述了重定向模块(图7)、调度模块(图8)、服务模块(图9)以及窗口管理模块(图10)内部的具体工作流程。
[0067] 图7是重定向模块内部的具体工作流程图。在应用程序启动前,重定向模块会拦截操作系统创建进程的图形库API,评估应用程序对GPU的需求(如对GPU频率、显存大小以及各分辨率下帧速的需求),向调度服务器的调度模块发起GPU重定向请求。若请求成功,重定向模块会从调度模块获取到可用的重定向目标设备,并启动应用程序,将应用程序的窗口大小设置为0,即对用户不可见,用户可见的只有任务栏的应用程序图标。此时重定向模块会以并行方式执行以下三个子流程:
[0068] (1)拦截应用程序的图形库API调用,并将多个API调用封装成数据包,发送给目标设备上的服务模块。若数据包发送成功,则继续执行该子流程。若失败,则重试3次,若仍然失败,则向目标设备的服务模块发送GPU释放请求。
[0069] (2)拦截用户对云桌面(虚拟机桌面)任务栏应用程序图标的操作(如查看缩略图、预览图,最大化、最小化、关闭窗口等),并转发给关联的窗口管理模块。如果是关闭操作,则向目标设备的服务模块发送GPU释放请求。否则,继续执行该子流程。
[0070] (3)监听关联的窗口管理模块发送的窗口操作(如最大化、最小化、关闭等操作)。如果是关闭操作,则向目标设备的服务模块发送GPU释放请求。
[0071] 在向目标设备的服务模块发送GPU释放请求后,重定向模块会关闭应用程序。若GPU重定向请求不成功,则向用户显示图形库不可用的信息,结束应用程序。
[0072] 图8是调度模块内部的具体工作流程图。调度模块内部执行开始时,会以并行方式执行以下三个子流程:
[0073] (1)监听服务模块的注册请求消息。如果收到消息,则保存请求注册的服务模块所在设备的信息。
[0074] (2)按照一定周期从已注册服务模块拉取最新的GPU信息。
[0075] (3)监听重定向模块的GPU重定向请求和释放消息。如果收到消息,若为请求消息,则根据GPU调度策略,选择最佳的设备,将重定向模块加入到最佳设备的GPU调度队列,并通知重定向模块重定向的目标设备。若为释放消息,将重定向模块从关联设备的GPU调度队列中删除。
[0076] 图9是服务模块内部的具体工作流程图。服务模块会向调度模块注册本设备的信息,监听重定向模块封装的图形库API数据包。若收到图形库API数据包,则会维护请求方的GPU上下文,解析图形库API数据包并调用真实的图形库,获取渲染结果。最后将渲染结果编码,发送给与重定向模块关联的窗口管理模块。
[0077] 图10是窗口管理模块内部的具体工作流程图。窗口管理模块会监听关联的重定向模块启动消息,若监听到启动消息,则会为应用程序创建窗口。此后,窗口管理模块会以并行方式执行如下三个子流程:
[0078] (1)监听当前窗口关联的服务模块发送的编码后的渲染数据,若收到数据,则会解码数据并显示到应用程序窗口中。
[0079] (2)监听终端用户使用应用程序窗口时的键鼠命令(如移动、最大化、最小化、关闭窗口,点击窗口中某个位置,在窗口中敲击键盘等),并发送给关联的重定向模块,更新窗口的状态。若监听到关闭命令,则销毁应用程序窗口。否则,继续执行该子流程。
[0080] (3)监听当前窗口关联的重定向模块发送的任务图标操作(如查看缩略图、预览图,最大化、最小化、关闭等),更新窗口状态。若监听到关闭操作,则销毁应用程序窗口。否则,继续执行该子流程。
[0081] 上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈