掌桥专利:专业的专利平台
掌桥专利
首页

数据渲染方法及系统

文献发布时间:2023-06-19 11:05:16


数据渲染方法及系统

技术领域

本公开涉及数据处理技术领域,尤其涉及数据渲染方法及系统。

背景技术

随着云计算中3D设计,云游戏等应用场景越来越多,以及图形渲染计算量的增加,在云服务器中对图形加速器的能力要求也随之增加,一台服务器中的图形加速器的计算能力已经成为瓶颈,因此出现了图像渲染指令拉远的方案,将应用服务器的图形渲染任务拉远到一台或者多台专门做图形渲染的服务器。

相关技术中,应用服务器与渲染服务器之间采用万兆光纤以太网通讯,使用TCP(Transmission Control Protocol,传输控制协议)/IP(Internet Protocol,网络之间互连的协议)协议进行数据传输,这样,虽然指令可以在高速网络上传输,但是在软件层面,数据需要多次拷贝,再加上TCP协议的窗口机制、等待确认报文等因素,会导致数据传输的延时加大。

发明内容

本公开实施例提供一种数据渲染方法及系统,能够解决现有技术中导致数据传输的延时加大的问题。所述技术方案如下:

根据本公开实施例的第一方面,提供一种数据渲染方法,应用于应用服务器,所述方法包括:

获取渲染指令;所述渲染指令中携带待渲染数据;

通过远程直接数据存取RDMA(Remote Direct Memory Access,远程直接数据存取)链路将所述渲染指令发送至渲染服务器,使得所述渲染服务器对所述待渲染数据进行渲染;所述渲染服务器与所述应用服务器之间建立有所述RDMA链路。

本公开实施例提供一种数据渲染方法,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,本公开的渲染指令的传输是通过RDMA链路传输,RDMA为远程直接数据存取,由RDMA硬件直接读取内存数据进行传输,无需处理器的参与,从而大大减小了数据传输的延迟。

在一个实施例中,所述获取渲染指令包括:

接收目标应用程序发送的渲染请求;所述渲染请求中携带所述待渲染数据;

根据所述待渲染数据生成所述渲染指令。

在一个实施例中,所述通过RDMA链路将所述渲染指令发送至渲染服务器包括:

根据所述渲染指令的内容,通过虚拟机地址映射模块确定第一长度的目标物理机地址;所述目标物理机地址中保存所述渲染指令;

申请第一目标工作请求单元和所述渲染服务器的第一目标接收地址;所述第一目标接收地址的长度为所述第一长度;

将所述目标物理机地址、所述第一目标接收地址和所述第一长度写入所述第一目标工作请求单元;

从第一目标工作请求单元中读取所述目标物理机地址中的所述渲染指令和所述第一目标接收地址;

将所述渲染指令通过所述RDMA链路写入所述第一目标接收地址,并向所述渲染服务器发送第一接收触发事件,使得所述渲染服务器在接收到所述第一接收触发事件时,从所述第一目标接收地址中读取所述渲染指令。

在一个实施例中,还包括:

在接收到渲染任务发送完成消息时,释放所述第一目标工作请求单元和所述第一目标接收地址。

在一个实施例中,还包括:

在接收到第二接收触发事件时,从第二目标接收地址中读取渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

根据本公开实施例的第二方面,提供一种数据渲染方法,应用于渲染服务器,所述方法包括:

通过RDMA链路接收应用服务器发送的渲染指令;所述渲染指令中携带待渲染数据;所述渲染服务器与所述应用服务器之间建立有所述RDMA链路;

对所述待渲染数据进行渲染,得到渲染结果数据。

本公开实施例提供一种数据渲染方法,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,本公开的渲染指令的传输是通过RDMA链路传输,RDMA为远程直接数据存取,由RDMA硬件直接读取内存数据进行传输,无需处理器的参与,从而大大减小了数据传输的延迟。

在一个实施例中,所述通过RDMA链路接收应用服务器发送的渲染指令包括:

在接收到第一接收触发事件时,从第一目标接收地址中读取所述渲染指令;所述第一目标接收地址中保存目标物理机地址,所述目标物理机地址中保存所述渲染指令。

在一个实施例中,在所述对所述待渲染数据进行渲染之后,还包括:

申请第二长度的目标写入地址,将渲染结果数据拷贝至所述目标写入地址;

申请第二目标工作请求单元和所述应用服务器的第二目标接收地址;所述第二目标接收地址的长度为第二长度;

将所述目标写入地址、所述第二目标接收地址和所述第二长度写入所述第二目标工作请求单元;

从所述第二目标工作请求单元中读取所述目标写入地址中的所述渲染结果数据和所述第二目标接收地址;

将所述渲染结果数据通过所述RDMA链路写入所述第二目标接收地址,并向所述应用服务器发送第二接收触发事件,使得所述应用服务器在接收到所述第二接收触发事件时,从所述第二目标接收地址中读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

在一个实施例中,还包括:

在接收到返回数据传输完成消息时,释放所述第二目标工作请求单元和所述第二目标接收地址。

根据本公开实施例的第三方面,提供一种数据渲染系统,包括应用服务器和渲染服务器;所述渲染服务器与所述应用服务器之间建立有RDMA链路;

所述应用服务器,用于获取渲染指令,并通过所述RDMA链路将所述渲染指令发送至所述渲染服务器;所述渲染指令中携带待渲染数据;

所述渲染服务器,用于对所述待渲染数据进行渲染。

在一个实施例中,所述应用服务器包括虚拟显卡、虚拟机模拟器、第一RDMA传输模块和至少一个应用程序;

所述虚拟显卡,用于接收目标应用程序发送的渲染请求,所述渲染请求中携带所述待渲染数据,并根据所述待渲染数据生成所述渲染指令,将所述渲染指令通过所述虚拟机模拟器提交至发送队列;

所述第一RDMA传输模块,用于从所述发送队列获取所述渲染指令,并通过RDMA链路将所述渲染指令发送至所述渲染服务器。

在一个实施例中,所述第一RDMA传输模块包括第一发送任务模块、第一对端地址管理模块、第一发送任务请求管理模块和第一事件处理模块;

所述第一发送任务模块,用于根据所述渲染指令的内容,通过虚拟机地址映射模块确定第一长度的目标物理机地址;所述目标物理机地址中保存所述渲染指令;

所述第一发送任务模块,还用于向所述第一发送任务请求管理模块申请第一目标工作请求单元,并向所述第一对端地址管理模块申请所述渲染服务器的第一目标接收地址;所述第一目标接收地址的长度为所述第一长度;

所述第一发送任务模块,还用于将所述目标物理机地址、所述第一目标接收地址和所述第一长度写入所述第一目标工作请求单元,并将所述第一目标工作请求单元发送至所述第一RDMA传输模块的硬件;

所述第一RDMA传输模块的硬件,用于从第一目标工作请求单元中读取所述目标物理机地址中的所述渲染指令和所述第一目标接收地址,将所述渲染指令通过所述RDMA链路写入所述第一目标接收地址,并向所述渲染服务器发送第一接收触发事件,使得所述渲染服务器在接收到所述第一接收触发事件时,从所述第一目标接收地址中读取所述渲染指令;

所述第一事件处理模块,用于在接收到第一RDMA传输模块的硬件发送的渲染任务发送完成消息时,释放所述第一目标工作请求单元和所述第一目标接收地址。

在一个实施例中,所述第一RDMA传输模块还包括第一接收任务模块;

所述第一事件处理模块,还用于在接收到第二接收触发事件时,从第二目标接收地址中读取渲染结果数据,并将所述渲染结果数据写入第一接收队列;所述第二目标接收地址中保存所述渲染结果数据;

所述第一接收任务模块,用于从所述第一接收队列读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

在一个实施例中,所述渲染服务器包括第二RDMA传输模块和渲染模块;

所述第二RDMA传输模块,用于接收所述渲染指令,并将所述渲染指令发送至所述渲染模块;

所述渲染模块,用于对所述待渲染数据进行渲染,得到渲染结果数据。

在一个实施例中,所述第二RDMA传输模块包括第二接收任务模块和第二事件处理模块;

所述第二事件处理模块,用于在接收到第一接收触发事件时,从第一目标接收地址中读取所述渲染指令,并将所述渲染指令提交至第二接收队列;

所述第二接收任务模块,用于从所述第二接收队列中读取所述渲染指令,并将所述渲染指令发送至所述渲染模块。

在一个实施例中,所述第二RDMA传输模块还包括第二发送任务模块、发送缓冲管理模块、第二对端地址管理模块和第二发送任务请求管理模块;

所述第二发送任务模块,用于向所述发送缓冲管理模块申请第二长度的目标写入地址,将渲染结果数据拷贝至所述目标写入地址;

所述第二发送任务模块,还用于向所述第二发送任务请求管理模块申请第二目标工作请求单元,并向所述第二对端地址管理模块申请所述应用服务器的第二目标接收地址;所述第二目标接收地址的长度为第二长度;

所述第二发送任务模块,还用于将所述目标写入地址、所述第二目标接收地址和所述第二长度写入所述第二目标工作请求单元,并将所述第二目标工作请求单元发送至所述第二RDMA传输模块的硬件;

所述第二RDMA传输模块的硬件,用于从所述第二目标工作请求单元中读取所述目标写入地址中的所述渲染结果数据和所述第二目标接收地址,并所述渲染结果数据通过所述RDMA链路写入所述第二目标接收地址,并向所述应用服务器发送第二接收触发事件,使得所述应用服务器在接收到所述第二接收触发事件时,从所述第二目标接收地址中读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序;

所述第二事件处理模块,用于在接收到所述第二RDMA传输模块的硬件发送的返回数据传输完成消息时,释放所述第二目标工作请求单元和所述第二目标接收地址。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种数据渲染方法的流程图;

图2是本公开实施例提供的一种数据渲染方法的流程图;

图3是本公开实施例提供的一种数据渲染方法的流程图;

图4是本公开实施例提供的一种数据渲染方法的流程图;

图5是本公开实施例提供的一种数据渲染系统的结构示意图;

图6是本公开实施例提供的一种数据渲染系统的结构示意图;

图7是本公开实施例提供的一种数据渲染系统的结构示意图;

图8是本公开实施例提供的一种数据渲染系统的结构示意图;

图9是本公开实施例提供的一种数据渲染系统的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供一种数据渲染方法,如图1所示,应用于应用服务器,该方法包括以下步骤:

步骤101、获取渲染指令。

其中,所述渲染指令中携带待渲染数据。

可选的,接收目标应用程序发送的渲染请求;所述渲染请求中携带所述待渲染数据;根据所述待渲染数据生成所述渲染指令。

步骤102、通过RDMA链路将所述渲染指令发送至渲染服务器,使得所述渲染服务器对所述待渲染数据进行渲染;所述渲染服务器与所述应用服务器之间建立有所述RDMA链路。

本公开实施例提供一种数据渲染方法,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,本公开的渲染指令的传输是通过RDMA链路传输,RDMA为远程直接数据存取,由RDMA硬件直接读取内存数据进行传输,无需处理器的参与,从而大大减小了数据传输的延迟。

本公开实施例提供一种数据渲染方法,如图2所示,应用于应用服务器,该方法包括以下步骤:

步骤201、接收目标应用程序发送的渲染请求。

其中,所述渲染请求中携带所述待渲染数据。

示例的,终端设备与应用服务器中的目标虚拟机连接,目标虚拟机上运行目标应用程序,假设用户需要运行目标应用程序,则通过终端设备将目标应用程序的具体操作请求发送至目标虚拟机的目标应用程序,目标应用程序基于接收到的操作请求执行具体操作,若具体操作为渲染操作时,则目标应用程序向虚拟显卡发起携带待渲染数据的渲染请求,使得虚拟显卡接收到目标应用程序的渲染请求。

步骤202、根据所述待渲染数据生成所述渲染指令。

步骤203、根据所述渲染指令的内容,通过虚拟机地址映射模块确定第一长度的目标物理机地址。

其中,所述目标物理机地址中保存所述渲染指令。

示例的,虚拟显卡在接收到渲染请求时,将渲染请求转换为渲染指令,并将渲染指令提交到发送队列,并通知第一RDMA传输模块,第一RDMA传输模块的第一发送任务模块从发送队列中读取渲染指令,并根据渲染指令的内容,通过虚拟机地址映射模块确定第一长度的目标物理机地址,该目标物理机地址中保存渲染指令。

步骤204、申请第一目标工作请求单元和所述渲染服务器的第一目标接收地址。

其中,所述第一目标接收地址的长度为所述第一长度。

示例的,第一发送任务模块通过第一对端地址管理模块在渲染服务器的接收缓冲区地址空间中申请长度为第一长度的地址空间,申请到的地址即为第一目标接收地址,再向第一发送任务请求管理模块申请一个WR,即申请第一目标工作请求单元。

步骤205、将所述目标物理机地址、所述第一目标接收地址和所述第一长度写入所述第一目标工作请求单元。

示例的,第一发送任务模块在申请到第一目标接收地址和第一目标工作请求单元时,将第一目标接收地址、目标物理机地址和第一长度均写入第一目标工作请求单元中,再将第一目标工作请求单元提交到第一RDMA传输模块的硬件。

步骤206、从第一目标工作请求单元中读取所述目标物理机地址中的所述渲染指令和所述第一目标接收地址。

示例的,第一RDMA传输模块的硬件在接收到第一目标工作请求单元时,由硬件直接读取目标物理机地址的内容,即读取到渲染指令和第一目标接收地址。

步骤207、将所述渲染指令通过所述RDMA链路写入所述第一目标接收地址,并向所述渲染服务器发送第一接收触发事件,使得所述渲染服务器在接收到所述第一接收触发事件时,从所述第一目标接收地址中读取所述渲染指令。

示例的,第一RDMA传输模块的硬件通过RDMA链路将读取到的渲染指令写入到渲染服务器的第一目标接收地址,同时触发渲染服务器的第二事件处理模块,即向渲染服务器的第二事件处理模块发送第一接收触发事件,使得第二事件处理模块在接收到第一接收触发事件时,从第一目标接收地址中读取渲染指令,并将渲染指令写入第一接收队列,渲染服务器的渲染模块从第一接收队列读取渲染指令,进而对渲染指令中携带的待渲染数据进行渲染,得到渲染结果数据。

步骤208、在接收到渲染任务发送完成消息时,释放所述第一目标工作请求单元和所述第一目标接收地址。

示例的,第一RDMA传输模块的硬件在将渲染指令发送至渲染服务器之后,向第一RDMA传输模块的第一事件处理模块发送渲染任务发送完成消息,使得第一事件处理模块在接收到渲染任务发送完成消息时,释放第一目标工作请求单元和第一目标接收地址。

步骤209、在接收到第二接收触发事件时,从第二目标接收地址中读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

其中,所述第二目标接收地址中保存所述渲染结果数据,第二接收触发事件用于指示第二目标接收地址中保存所述渲染结果数据。

示例的,第一RDMA传输模块的第一事件处理模块在接收到渲染服务器发送的第二接收触发事件时,从第二目标接收地址中读取渲染结果数据,并将渲染结果数据发送给目标应用程序,由目标应用程序所在的目标虚拟机再将渲染结果数据发送至对应的终端设备。

本公开实施例提供一种数据渲染方法,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,本公开的渲染指令的传输是通过RDMA链路传输,RDMA为远程直接数据存取,由RDMA硬件直接读取内存数据进行传输,无需处理器的参与,从而大大减小了数据传输的延迟。

本公开实施例提供一种数据渲染方法,如图3所示,应用于渲染服务器,该方法包括以下步骤:

步骤301、通过RDMA链路接收应用服务器发送的渲染指令。

其中,所述渲染指令中携带待渲染数据,所述渲染服务器与所述应用服务器之间建立有所述RDMA链路。

步骤302、对所述待渲染数据进行渲染,得到渲染结果数据。

本公开实施例提供一种数据渲染方法,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,本公开的渲染指令的传输是通过RDMA链路传输,RDMA为远程直接数据存取,由RDMA硬件直接读取内存数据进行传输,无需处理器的参与,从而大大减小了数据传输的延迟。

本公开实施例提供一种数据渲染方法,如图4所示,应用于渲染服务器,该方法包括以下步骤:

步骤401、在接收到第一接收触发事件时,从第一目标接收地址中读取所述渲染指令。

其中,第一接收触发事件用于指示第一目标接收地址中保存渲染指令,所述第一目标接收地址中保存目标物理机地址,所述目标物理机地址中保存所述渲染指令。

示例的,渲染服务器的第二事件处理模块在接收到应用服务器发送的第一接收触发事件时,从第一目标接收地址中读取渲染指令。

步骤402、对所述待渲染数据进行渲染,得到渲染结果数据。

步骤403、申请第二长度的目标写入地址,将渲染结果数据拷贝至所述目标写入地址。

示例的,在得到渲染结果数据时,渲染服务器的第二发送任务模块向发送缓冲管理模块申请第二长度的目标写入地址,并将渲染结果数据拷贝到目标写入地址中。

步骤404、申请第二目标工作请求单元和所述应用服务器的第二目标接收地址。

其中,所述第二目标接收地址的长度为第二长度。

示例的,渲染服务器的第二发送任务模块还向第二发送任务请求管理模块申请第二目标工作请求单元,并向第二对端地址管理模块申请应用服务器501的长度为第二长度的第二目标接收地址。

步骤405、将所述目标写入地址、所述第二目标接收地址和所述第二长度写入所述第二目标工作请求单元。

示例的,渲染服务器的第二发送任务模块将目标写入地址、第二目标接收地址和第二长度均写入第二目标工作请求单元中,再将第二目标工作请求单元提交至第二RDMA传输模块的硬件。

步骤406、从所述第二目标工作请求单元中读取所述目标写入地址中的所述渲染结果数据和所述第二目标接收地址。

示例的,第二RDMA传输模块的硬件在接收到第二目标工作请求单元时,直接读取目标写入地址的内容,即读取渲染结果数据。

步骤407、将所述渲染结果数据通过所述RDMA链路写入所述第二目标接收地址,并向所述应用服务器发送第二接收触发事件,使得所述应用服务器在接收到所述第二接收触发事件时,从所述第二目标接收地址中读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

示例的,第二RDMA传输模块的硬件通过RDMA链路将渲染结果数据写入到应用服务器的第二目标接收地址,同时触发应用服务器的第一事件处理模块,第一事件处理模块在接收到数据事件时,从第二目标接收地址中读取渲染结果数据,并将渲染结果数据发送给目标应用程序,由目标应用程序所在的目标虚拟机再将渲染结果数据发送至对应的终端设备。

步骤408、在接收到返回数据传输完成消息时,释放所述第二目标工作请求单元和所述第二目标接收地址。

示例的,第二RDMA传输模块的硬件在将渲染结果数据返回至应用服务器之后,向第二事件处理模块发送返回数据传输完成消息,使得第二事件处理模块在接收到返回数据传输完成消息时,释放第二目标工作请求单元和第二目标接收地址,使得第二目标工作请求单元和第二目标接收地址能够循环充分利用。

本公开实施例提供一种数据渲染方法,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,本公开的渲染指令的传输是通过RDMA链路传输,RDMA为远程直接数据存取,由RDMA硬件直接读取内存数据进行传输,无需处理器的参与,从而大大减小了数据传输的延迟。

基于上述实施例中所描述的数据渲染方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种应用服务器,包括获取模块和发送模块。

其中,获取模块,用于获取渲染指令;所述渲染指令中携带待渲染数据。

发送模块,用于通过RDMA链路将所述渲染指令发送至渲染服务器,使得所述渲染服务器对所述待渲染数据进行渲染;所述渲染服务器与所述应用服务器之间建立有所述RDMA链路。

在一个实施例中,所述获取模块包括接收子模块和生成子模块。

其中,接收子模块,用于接收目标应用程序发送的渲染请求;所述渲染请求中携带所述待渲染数据。

生成子模块,用于根据所述待渲染数据生成所述渲染指令。

在一个实施例中,所述发送模块包括第一确定模块、第一申请子模块、第一写入子模块、第一读取子模块和第二写入子模块。

其中,第一确定模块,用于根据所述渲染指令的内容,通过虚拟机地址映射模块确定第一长度的目标物理机地址;所述目标物理机地址中保存所述渲染指令。

第一申请子模块,用于申请第一目标工作请求单元和所述渲染服务器的第一目标接收地址;所述第一目标接收地址的长度为所述第一长度。

第一写入子模块,用于将所述目标物理机地址、所述第一目标接收地址和所述第一长度写入所述第一目标工作请求单元。

所述第一读取子模块,用于从第一目标工作请求单元中读取所述目标物理机地址中的所述渲染指令和所述第一目标接收地址。

第二写入子模块,用于将所述渲染指令通过所述RDMA链路写入所述第一目标接收地址,并向所述渲染服务器发送第一接收触发事件,使得所述渲染服务器在接收到所述第一接收触发事件时,从所述第一目标接收地址中读取所述渲染指令。

在一个实施例中,所述装置还包括第一释放模块。

其中,第一释放模块,用于在接收到渲染任务发送完成消息时,释放所述第一目标工作请求单元和所述第一目标接收地址。

在一个实施例中,所述装置还包括第一读取模块。

其中,第一读取模块,用于在接收到第二接收触发事件时,从第二目标接收地址中读取渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

本公开实施例提供一种渲染服务器,包括接收模块和渲染模块。

其中,接收模块,用于通过RDMA链路接收应用服务器发送的渲染指令;所述渲染指令中携带待渲染数据;所述渲染服务器与所述应用服务器之间建立有所述RDMA链路。

渲染模块,用于对所述待渲染数据进行渲染,得到渲染结果数据。

在一个实施例中,所述接收模块包括第二读取子模块。

其中,第二读取子模块,用于在接收到第一接收触发事件时,从第一目标接收地址中读取所述渲染指令;所述第一目标接收地址中保存目标物理机地址,所述目标物理机地址中保存所述渲染指令。

在一个实施例中,所述装置还包括第二申请模块、第三申请模块、第三写入模块、第二读取模块和第四写入模块。

其中,第二申请模块,用于申请第二长度的目标写入地址,将渲染结果数据拷贝至所述目标写入地址。

第三申请模块,用于申请第二目标工作请求单元和所述应用服务器的第二目标接收地址;所述第二目标接收地址的长度为第二长度。

第三写入模块,用于将所述目标写入地址、所述第二目标接收地址和所述第二长度写入所述第二目标工作请求单元。

第二读取模块,用于从所述第二目标工作请求单元中读取所述目标写入地址中的所述渲染结果数据和所述第二目标接收地址。

第四写入模块,用于将所述渲染结果数据通过所述RDMA链路写入所述第二目标接收地址,并向所述应用服务器发送第二接收触发事件,使得所述应用服务器在接收到所述第二接收触发事件时,从所述第二目标接收地址中读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

在一个实施例中,所述装置还包括第二释放模块。

其中,第二释放模块,用于在接收到返回数据传输完成消息时,释放所述第二目标工作请求单元和所述第二目标接收地址。

图5是本公开实施例提供的一种数据渲染系统的框架图,如图5所示的数据渲染系统包括上述任一实施例所述的应用服务器501和上述任一实施例所述的渲染服务器502,所述渲染服务器502与所述应用服务器501之间建立有RDMA链路。

所述应用服务器501,用于获取渲染指令,并通过所述RDMA链路将所述渲染指令发送至所述渲染服务器502;所述渲染指令中携带待渲染数据。

所述渲染服务器502,用于对所述待渲染数据进行渲染,得到渲染结果数据。

进一步的,如图6所示,所述应用服务器501包括虚拟显卡5011、虚拟机模拟器5012、第一RDMA传输模块5013和至少一个应用程序5014。

其中,所述虚拟显卡5011,用于接收目标应用程序发送的渲染请求,所述渲染请求中携带所述待渲染数据,并根据所述待渲染数据生成所述渲染指令,将所述渲染指令通过所述虚拟机模拟器5012提交至发送队列。

所述第一RDMA传输模块5013,用于从所述发送队列获取所述渲染指令,并通过RDMA链路将所述渲染指令发送至所述渲染服务器502。

其中,应用服务器501中部署有至少一个虚拟机,虚拟显卡5011和至少一个虚拟机构成虚拟机系统,每个虚拟机是独立的软件环境,有自身的操作系统,每个虚拟机基于虚拟机模拟器5012在物理机上运行,运行用户的应用程序,其图形渲染任务通过虚拟机的虚拟显卡5011发送到虚拟机模拟器5012,再由虚拟机模拟器5012将渲染任务交给第一RDMA传输模块5013,渲染任务传输通过RDMA实现。

进一步的,如图6所示,所述渲染服务器502包括第二RDMA传输模块5021和渲染模块5022。

其中,所述第二RDMA传输模块5021,用于接收所述渲染指令,并将所述渲染指令发送至所述渲染模块5022。

所述渲染模块5022,用于对所述待渲染数据进行渲染,得到渲染结果数据。

具体的,如图7所示,应用服务器501还包括虚拟机地址映射模块5015和发送队列5016,渲染服务器502还包括第二接收队列5023,为了减少内存拷贝,第一RDMA传输模块5013需要把虚拟机的内存空间作为发送缓冲队列进行发送操作,所以虚拟机地址映射模块5015需要将虚拟机系统所有的内存空间注册至第一RDMA传输模块5013,目标应用程序发送的渲染请求由虚拟显卡驱动转换为渲染指令,并将渲染指令通过虚拟机模拟器5012提交给发送队列5016,该发送队列5016的消息提交给第一RDMA传输模块5013,由第一RDMA传输模块5013发送至渲染服务器502的第二RDMA传输模块5021,第二RDMA传输模块5021接收到渲染指令后交给第二接收队列5023,渲染模块5022从第二接收队列5023读取渲染指令,从中获取待渲染数据,并对待渲染数据进行图像渲染。

需要说明的是,在使用应用服务器501和渲染服务器502之前,需要启动应用服务器501和渲染服务器502,在启动应用服务器501时,初始化应用服务器501中的虚拟系统(包括虚拟显卡5013、至少一个应用程序5014),初始化第一RDMA传输模块5013,虚拟机地址映射模块5015将虚拟机系统的所有内存空间向第一RDMA传输模块5013进行注册,具体地址可以设定为VM_ADDR_START,并申请另一段内存作为接收缓冲区,并向第一RDMA传输模块5013注册为接收缓冲区地址空间,具体地址可以设定为AP_RECV_ADDR;在启动渲染服务器502时,初始化渲染模块5022和第二RDMA传输模块5021,申请一段内存作为发送缓冲区,并向第二RDMA传输模块5021注册为发送缓冲区地址空间,具体地址可以设定为RD_SEND_ADDR,申请另一段内存作为接收缓冲区,并向第二RDMA传输模块5021注册为接收缓冲区地址空间,具体地址可以设定为RD_RECV_ADDR。另外,第一RDMA传输模块5013和第二RDMA传输模块5021的初始化流程相同,初始化第一RDMA传输模块5013的硬件,启动第一事件处理模块,申请WR(工作请求单元),将外部软件的缓冲区地址空间提交给第一RDMA传输模块5013的硬件,第一RDMA传输模块5013的硬件由硬件厂家提供。

需要说明的是,应用服务器501与渲染服务器502在初始化完成后,需要建立TCP连接,然后应用服务器501与渲染服务器502交换各自的参数,即首先应用服务器501将第一RDMA传输模块5013的地址和接收缓冲区地址空间AP_RECV_ADDR发送给渲染服务器502,渲染服务器502将第二RDMA传输模块5021的地址和接收缓冲区地址空间RD_RECV_ADDR发送给应用服务器501,然后应用服务器501根据第二RDMA传输模块5021的地址、渲染服务器502根据第一RDMA传输模块5013的地址建立RDMA链路。

进一步的,如图8所示,所述第一RDMA传输模块5013包括第一发送任务模块50131、第一对端地址管理模块50132、第一发送任务请求管理模块50133和第一事件处理模块50134。

其中,所述第一发送任务模块50131,用于根据所述渲染指令的内容,通过虚拟机地址映射模块5015确定第一长度的目标物理机地址;所述目标物理机地址中保存所述渲染指令。

所述第一发送任务模块50131,还用于向所述第一发送任务请求管理模块50133申请第一目标工作请求单元,并向所述第一对端地址管理模块50132申请所述渲染服务器502的第一目标接收地址;所述第一目标接收地址的长度为所述第一长度。

所述第一发送任务模块50131,还用于将所述目标物理机地址、所述第一目标接收地址和所述第一长度写入所述第一目标工作请求单元,并将所述第一目标工作请求单元发送至所述第一RDMA传输模块5013的硬件。

所述第一RDMA传输模块5013的硬件,用于从第一目标工作请求单元中读取所述目标物理机地址中的所述渲染指令和所述第一目标接收地址,将所述渲染指令通过所述RDMA链路写入所述第一目标接收地址,并向所述渲染服务器502发送第一接收触发事件,使得所述渲染服务器502在接收到所述第一接收触发事件时,从所述第一目标接收地址中读取所述渲染指令。

所述第一事件处理模块50134,用于在接收到第一RDMA传输模块5013的硬件发送的渲染任务发送完成消息时,释放所述第一目标工作请求单元和所述第一目标接收地址。

进一步的,如图8所示,所述第一RDMA传输模块5013还包括第一接收任务模块50135。

所述第一事件处理模块50134,还用于在接收到第二接收触发事件时,从第二目标接收地址中读取渲染结果数据,并将所述渲染结果数据写入第一接收队列;所述第二目标接收地址中保存所述渲染结果数据。

所述第一接收任务模块50135,用于从所述第一接收队列读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

示例的,终端设备与应用服务器501中的目标虚拟机连接,目标虚拟机上运行目标应用程序,假设用户需要运行目标应用程序,则通过终端设备将目标应用程序的具体操作请求发送至目标虚拟机的目标应用程序,目标应用程序基于接收到的操作请求执行具体操作,若具体操作为渲染操作时,则目标应用程序向虚拟显卡5011发起携带待渲染数据的渲染请求,虚拟显卡5011在接收到渲染请求时,将渲染请求转换为渲染指令,并将渲染指令通过虚拟机模拟器5012提交到发送队列5016,并通知第一RDMA传输模块5013,第一RDMA传输模块5013的第一发送任务模块50131从发送队列5016获取渲染指令,并根据渲染指令的内容,通过虚拟机地址映射模块5015确定第一长度的目标物理机地址,该目标物理机地址中保存渲染指令;然后第一发送任务模块50131通过第一对端地址管理模块50132在渲染服务器502的接收缓冲区地址空间中申请长度为第一长度的地址空间,申请到的地址即为第一目标接收地址;再向第一发送任务请求管理模块50133申请一个WR,即申请第一目标工作请求单元;最后将第一目标接收地址、目标物理机地址和第一长度均写入第一目标工作请求单元中,再将第一目标工作请求单元提交到第一RDMA传输模块5013的硬件;第一RDMA传输模块5013的硬件在接收到第一目标工作请求单元时,由硬件直接读取目标物理机地址的内容,即读取到渲染指令,然后通过RDMA链路将渲染指令写入到渲染服务器502的第一目标接收地址,同时触发渲染服务器502的第二事件处理模块,即向第二事件处理模块发送第一接收触发事件,第二事件处理模块在接收到第一接收触发事件时,从第一目标接收地址中读取渲染指令,并将渲染指令写入第二接收队列5023,渲染模块5022从第二接收队列5023读取渲染指令,进而对渲染指令中携带的待渲染数据进行渲染,得到渲染结果数据,最终将渲染结果数据发送给目标应用程序,由目标应用程序所在的目标虚拟机再将渲染结果数据发送至对应的终端设备。

进一步的,第一RDMA传输模块5013的硬件在将渲染指令发送至渲染服务器502之后,向第一事件处理模块50134发送渲染任务发送完成消息,使得第一事件处理模块50134在接收到渲染任务发送完成消息时,释放第一目标工作请求单元和第一目标接收地址,实现第一目标工作请求单元和第一目标接收地址的循环利用。

需要说明的是,如图8所示,第一RDMA传输模块5013除了包括第一发送任务模块50131、第一对端地址管理模块50132、第一发送任务请求管理模块50133、第一事件处理模块50134和第一接收任务模块50135,还包括第一发送缓冲管理模块50136、第一接收任务请求管理模块50137和第一接收缓冲管理模块50138,其中,第一发送任务模块50131对其他相关模块进行控制,例如,申请工作请求单元、发送缓冲区等,并向第一RDMA传输模块5013的硬件提交发送任务等;第一发送缓冲管理模块50136用来管理发送数据,包括数据内容和数据头部;第一对端地址管理模块50132负责决定新消息保存在对端的具体地址,WR是具体的发送和接收执行单元;第一发送任务请求管理模块50133和第一接收任务请求管理模块50137负责对发送工作请求单元和接收工作请求单元的申请和释放;第一接收任务模块50135用于向硬件提交接收任务,第一接收任务模块50135还用于向第一接收任务请求管理模块50137申请接收执行单元;第一接收缓冲管理模块50138用于存储接收到的数据;发送任务和接收任务的完成消息或者失败消息交给第一事件处理模块50134,第一事件处理模块50134处理发送任务和接收任务完成或者失败的所有消息,并根据消息类型释放相应的WR或者缓冲队列。

进一步的,如图9所示,所述第二RDMA传输模块5021包括第二接收任务模块50211和第二事件处理模块50212。

所述第二事件处理模块50212,用于在接收到第一接收触发事件时,从第一目标接收地址中读取所述渲染指令,并将所述渲染指令提交至第二接收队列5023。

所述第二接收任务模块50211,用于从所述第二接收队列5023中读取所述渲染指令,并将所述渲染指令发送至所述渲染模块5022。

进一步的,如图9所示,所述第二RDMA传输模块5021还包括第二发送任务模块50213、发送缓冲管理模块50214、第二对端地址管理模块50215和第二发送任务请求管理模块50216。

其中,所述第二发送任务模块50213,用于向所述发送缓冲管理模块50214申请第二长度的目标写入地址,将渲染结果数据拷贝至所述目标写入地址。

所述第二发送任务模块50213,还用于向所述第二发送任务请求管理模块50216申请第二目标工作请求单元,并向所述第二对端地址管理模块50215申请所述应用服务器501的第二目标接收地址;所述第二目标接收地址的长度为第二长度。

所述第二发送任务模块50213,还用于将所述目标写入地址、所述第二目标接收地址和所述第二长度写入所述第二目标工作请求单元,并将所述第二目标工作请求单元发送至所述第二RDMA传输模块5021的硬件。

所述第二RDMA传输模块5021的硬件,用于从所述第二目标工作请求单元中读取所述目标写入地址中的所述渲染结果数据和所述第二目标接收地址,并所述渲染结果数据通过所述RDMA链路写入所述第二目标接收地址,并向所述应用服务器501发送第二接收触发事件,使得所述应用服务器501在接收到所述第二接收触发事件时,从所述第二目标接收地址中读取所述渲染结果数据,并将所述渲染结果数据发送至目标应用程序。

所述第二事件处理模块50212,用于在接收到所述第二RDMA传输模块5021的硬件发送的返回数据传输完成消息时,释放所述第二目标工作请求单元和所述第二目标接收地址。

示例的,渲染模块5022在对待渲染数据完成渲染后,得到渲染结果数据,需要向应用服务器501返回渲染结果数据,此时,第二发送任务模块50213向发送缓冲管理模块50214申请第二长度的目标写入地址,并将渲染结果数据拷贝到目标写入地址中;向第二发送任务请求管理模块50216申请第二目标工作请求单元,并向第二对端地址管理模块50215申请应用服务器501的长度为第二长度的第二目标接收地址,最后将目标写入地址、第二目标接收地址和第二长度均写入第二目标工作请求单元中,再将第二目标工作请求单元提交至第二RDMA传输模块5021的硬件,第二RDMA传输模块5021的硬件在接收到第二目标工作请求单元时,由硬件直接读取目标写入地址的内容,即读取渲染结果数据,然后通过RDMA链路将渲染结果数据写入到应用服务器501的第二目标接收地址,同时触发应用服务器501的第一事件处理模块50134,第一事件处理模块50134在接收到数据事件时,从第二目标接收地址中读取渲染结果数据,并将渲染结果数据发送给目标应用程序,由目标应用程序所在的目标虚拟机再将渲染结果数据发送至对应的终端设备。

进一步的,第二RDMA传输模块5021的硬件在将渲染结果数据返回至应用服务器501之后,向第二事件处理模块50212发送返回数据传输完成消息,使得第二事件处理模块50212在接收到返回数据传输完成消息时,释放第二目标工作请求单元和第二目标接收地址,使得第二目标工作请求单元和第二目标接收地址能够循环充分利用。

需要说明的是,如图9所示,第二RDMA传输模块5021除了包括发送缓冲管理模块50214、第二接收任务模块50211、第二发送任务模块50123、第二对端地址管理模块50215、第二发送任务请求管理模块50216和第二事件处理模块50212,还包括第二接收任务请求管理模块50217和第二接收缓冲管理模块50218,具体第二RDMA传输模块5021中每个模块的作用与第一RDMA传输模块5013中每个模块的作用相同,本公开在此不再赘述。

本公开实施例提供一种数据渲染系统,应用服务器与渲染服务器之间建立有RDMA链路,应用服务器在获取到携带待渲染数据的渲染指令时,通过RDMA链路将渲染指令发送给渲染服务器,使得渲染服务器对待渲染数据进行渲染。可知,应用服务器中的虚拟机渲染指令从应用服务器传输到了渲染服务器,在整个传输过程中数据零拷贝,不但降低了延迟,而且释放了CPU,使得远程渲染达到了低延迟的用户体验。

基于上述图1对应的实施例中所描述的数据渲染方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:ReadOnly Memory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1对应的实施例中所描述的数据渲染方法,此处不再赘述。

基于上述图3对应的实施例中所描述的数据渲染方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器、随机存取存储器、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图3对应的实施例中所描述的数据渲染方法,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

相关技术
  • 一种数据渲染方法及数据渲染系统
  • 用于6DOF音频渲染的方法、设备和系统及用于6DOF音频渲染的数据表示和位流结构
技术分类

06120112793140