CN113127228A - 图形渲染方法、服务器和计算机可读存储介质 - Google Patents
图形渲染方法、服务器和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113127228A CN113127228A CN202110309240.XA CN202110309240A CN113127228A CN 113127228 A CN113127228 A CN 113127228A CN 202110309240 A CN202110309240 A CN 202110309240A CN 113127228 A CN113127228 A CN 113127228A
- Authority
- CN
- China
- Prior art keywords
- rendering
- shared memory
- eventfd
- container
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 319
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012545 processing Methods 0.000 abstract description 4
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 230000006854 communication Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种图形渲染方法、服务器和计算机可读存储介质,涉及图像处理技术领域,能够解决图形渲染效率低的问题。具体技术方案为:容器基于宿主机运行,容器与宿主机的系统之间创建有共享内存;容器与宿主机的系统之间建立eventfd通道;将产生的图形渲染指令写入共享内存;通过eventfd通道向宿主机的系统发送第一eventfd事件消息,该第一eventfd事件消息用于触发宿主机的系统从共享内存中读取图形渲染指令并根据该图形渲染指令进行图形渲染。本发明用于图形渲染。
Description
技术领域
本申请涉及图像处理技术领域,尤其涉及图形渲染方法、服务器和计算机可读存储介质。
背景技术
近年来,随着云计算技术的发展,云手机获得了广泛的应用,可以在云端服务器部署虚拟的手机系统,比如目前大多数云手机采用的Android系统,用户可以通过互联网接入云端服务器来使用预先设定的手机系统。在云端服务器部署虚拟手机系统可以通过两种技术方案实现,一种是虚拟机技术,另一种是容器技术。
对于手机系统而言,其UI(User Interface,用户界面)至关重要,所以在采用容器技术部署虚拟手机系统时,需要容器处理图形数据。一般情况下,容器处理简单的图形数据会使用CPU(Central Processing Unit,中央处理器)进行计算,如果有复杂的3D图像需要处理,CPU能力显然不够,如果需要用物理GPU(Graphics Processing Unit,图形处理器)资源进行计算,那么容器就需要独占GPU资源,GPU无法分享给其他容器或者宿主机使用,这样成本太高。还有一种方法是将容器空间的渲染指令通过本地socket发送到宿主机系统空间,然后使用宿主机的GPU资源进行图形计算,但是这种方式在进程通讯过程中会进行多次的内存拷贝动作,图形的渲染效率比较低。
发明内容
本申请实施例提供一种图形渲染方法、服务器和计算机可读存储介质,能够解决图形渲染效率低的问题。所述技术方案如下:
根据本申请实施例的第一方面,提供一种图形渲染方法,应用于容器,所述容器基于宿主机运行,所述容器与所述宿主机的系统之间创建有共享内存,该方法包括:
与所述宿主机的系统之间建立eventfd通道;
将产生的图形渲染指令写入所述共享内存;
通过所述eventfd通道向所述宿主机的系统发送第一eventfd事件消息,所述第一eventfd事件消息用于触发所述宿主机的系统从所述共享内存中读取所述图形渲染指令并根据所述图形渲染指令进行图形渲染。
通过在容器和宿主机的系统之间建立eventfd通道以及共享内存,将容器产生的图形渲染指令通过共享内存发送给宿主机进行图形渲染,能够在数据传输过程中仅传递eventfd事件消息,避免了内存的多次拷贝,提高了图形渲染的效率。
在一个实施例中,所述将产生的图形渲染指令写入所述共享内存包括:
向所述共享内存申请渲染指令存储空间,所述渲染指令存储空间包括渲染指令索引空间和渲染指令数据空间,所述渲染指令索引空间用于存储第一索引信息,所述第一索引信息用于指示数据的存储地址和长度;
向所述渲染指令索引空间写入第一索引信息;
根据所述第一索引信息向所述渲染指令数据空间写入所述图形渲染指令。
在一个实施例中,该方法还包括:
通过所述eventfd通道接收所述宿主机的系统发送的第二eventfd事件消息;
在接收到所述第二eventfd事件消息时,从所述共享内存中读取渲染结果信息,所述渲染结果信息由所述宿主机的系统生成并写入所述共享内存中。
宿主机的系统在进行图形渲染得到渲染结果信息之后,可以将该渲染结果信息写入共享内存并通过eventfd通道向容器发送eventfd事件消息通知容器,使容器获知渲染结果。
在一个实施例中,所述从所述共享内存中读取渲染结果信息包括:
从所述共享内存中读取第二索引信息,所述第二索引信息由所述宿主机的系统根据渲染结果信息的长度和所述第一索引信息生成,所述第二索引信息用于指示渲染结果信息的存储地址和长度;
根据所述第二索引信息从所述共享内存中读取渲染结果信息。
在一个实施例中,在从所述共享内存中读取渲染结果信息之后,所述方法还包括:
释放所述第一索引信息和所述第二索引信息中的地址信息。
根据本申请实施例的第二方面,提供一种图形渲染方法,该方法应用于宿主机,所述宿主机上运行至少一个容器,所述容器与所述宿主机的系统之间创建有共享内存,所述方法包括:
与所述容器之间建立eventfd通道;
当通过所述eventfd通道接收到所述容器发送的第一eventfd事件消息时,从所述共享内存中读取图形渲染指令,所述图像渲染指令由所述容器产生并写入所述共享内存;
根据所述图形渲染指令进行图形渲染。
通过在容器和宿主机的系统之间建立eventfd通道以及共享内存,将容器产生的图形渲染指令通过共享内存发送给宿主机的系统进行图形渲染,能够在数据传输过程中仅传递eventfd事件消息,避免了内存的多次拷贝,提高了图形渲染的效率。
在一个实施例中,在根据所述图形渲染指令进行图形渲染之后,所述方法还包括:
生成渲染结果信息,并将所述渲染结果信息写入所述共享内存;
通过所述eventfd通道向所述容器发送第二eventfd事件消息,所述第二eventfd事件消息用于触发所述容器从所述共享内存中读取所述渲染结果信息。
在一个实施例中,所述将所述渲染结果信息写入所述共享内存包括:
获取所述共享内存中的第一索引信息,所述第一索引信息由所述容器生成并写入所述共享内存中,所述第一索引信息用于指示数据的存储地址和长度;
根据所述第一索引信息向所述共享内存写入所述渲染结果信息;
获取所述渲染结果信息的长度;
根据所述渲染结果信息的长度和所述第一索引信息生成第二索引信息,所述第二索引信息用于指示所述渲染结果信息的存储地址和长度;
将所述第二索引信息写入所述共享内存。
根据本申请的第三方面,提供一种服务器,所述服务器上运行至少一个容器,所述服务器中包括渲染服务模块,所述渲染服务模块与所述至少一个容器之间建立有eventfd通道和共享内存;
所述容器用于产生图形渲染指令,将所述图形渲染指令写入所述共享内存,并通过所述eventfd通道向所述渲染服务模块发送第一eventfd事件消息;
所述渲染服务模块用于在接收到所述第一eventfd事件消息时,从所述共享内存中读取所述图形渲染指令,并根据所述图形渲染指令进行图形渲染。
通过在容器和服务器中的渲染服务模块之间建立eventfd消息机制及共享内存,将容器产生的图形渲染指令通过共享内存发送给服务器的渲染服务模块进行图形渲染,容器和服务器在传输数据的过程中仅传递eventfd事件消息,避免了内存的多次拷贝,从而提高了图形渲染的效率;在服务器上可以启动多个容器,每个容器都可以在共享内存中申请到各自的数据存储空间,使得多个容器能够共享宿主机的显卡资源。
在一个实施例中,所述渲染服务模块还用于在根据所述图形渲染指令进行图形渲染之后生成渲染结果信息,将所述渲染结果信息写入所述共享内存,并通过所述eventfd通道向所述容器发送第二eventfd事件消息;
所述容器还用于在接收到所述第二eventfd事件消息时,从所述共享内存中读取所述渲染结果信息。
根据本申请的第四方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述计算机指令由处理器加载并执行以实现如上所述的图形渲染方法中所执行的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例提供的一种图形渲染方法的流程图;
图2是本申请实施例提供的另一种图形渲染方法的流程图;
图3是本申请实施例提供的一种服务器的结构示意图;
图4是本申请实施例提供的又一种图形渲染方法的流程图;
图5是本申请实施例提供的一种服务器的具体的结构示意图;
图6是本申请实施例提供的一种共享内存的数据存储结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本文中为部件或对象所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。
在本申请实施例中,采用eventfd机制结合共享内存实现容器(比如Android容器)和宿主机(比如服务器)之间的图形渲染指令传递。在宿主机和容器之间建立eventfd通道以及共享内存空间,容器产生图形渲染指令后,将该图形渲染指令写入共享内存,并通过eventfd事件消息通知宿主机读取该图形渲染指令,宿主机根据该图形渲染指令进行图形渲染。
本申请实施例提供一种图形渲染方法,该方法可以应用于容器,该容器基于宿主机运行,容器与宿主机的系统之间创建有共享内存。如图1所示,该图形渲染方法包括以下步骤:
步骤101:与宿主机的系统之间建立eventfd通道。
容器和宿主机有独立的文件系统,但是操作系统是同一个,在宿主机上可以运行至少一个容器,在容器和宿主机的系统之间建立eventfd通道,使用eventfd通道在容器和宿主机的系统之间传递消息。
步骤102:将产生的图形渲染指令写入共享内存。
容器内部的应用程序需要进行图形渲染时,可以产生图形渲染指令,容器将该图形渲染指令写入共享内存。
具体的,容器向共享内存申请渲染指令存储空间,该渲染指令存储空间包括渲染指令索引空间和渲染指令数据空间,其中的渲染指令索引空间用于存储第一索引信息,该第一索引信息用于指示数据的存储地址和长度,比如可以包括图形渲染指令长度、图形渲染指令偏移地址、回写偏移地址和预设回写数据长度等信息。
然后,容器向渲染指令索引空间写入第一索引信息;根据该第一索引信息向渲染指令数据空间写入图形渲染指令。
步骤103:通过eventfd通道向宿主机的系统发送第一eventfd事件消息,以触发宿主机的系统从共享内存中读取图形渲染指令并根据该图形渲染指令进行图形渲染。
容器将产生的图形渲染指令写入共享内存后,通过eventfd通道向宿主机的系统发送第一eventfd事件消息,该第一eventfd事件消息用于触发宿主机的系统从共享内存中读取图形渲染指令并根据该图形渲染指令进行图形渲染。
具体的,宿主机的系统接收到第一eventfd事件消息后,从共享内存中读取第一索引信息,以获知图形渲染指令的存储位置和长度,然后根据该第一索引信息从共享内存中读取图形渲染指令,进而根据该图形渲染指令进行图形渲染。
宿主机的系统在完成图形渲染任务后生成渲染结果信息,可以将该渲染结果信息写入共享内存中,并通过eventfd通道向容器发送第二eventfd事件消息。具体的,本实施例的方法还可以包括如下步骤:通过eventfd通道接收宿主机的系统发送的第二eventfd事件消息;在接收到该第二eventfd事件消息时,从共享内存中读取渲染结果信息。
具体的,容器可以通过如下方法从共享内存中读取渲染结果信息:
从共享内存中读取第二索引信息,该第二索引信息由宿主机的系统根据渲染结果信息的长度和第一索引信息生成,其中的第二索引信息用于指示渲染结果信息的存储地址和长度;根据该第二索引信息从共享内存中读取渲染结果信息。
比如,第一索引信息可以包括图形渲染指令长度、图形渲染指令偏移地址、回写偏移地址和预设回写数据长度等信息,宿主机的系统将图形渲染指令长度、图形渲染指令偏移地址、回写偏移地址和通过图形渲染任务生成的渲染结果信息的长度作为第一索引,形成第二索引信息,通过该第二索引信息可以指示渲染结果信息的存储地址和长度,容器可以根据该第二索引信息从共享内存中读取渲染结果。
在从共享内存中读取渲染结果信息之后,该方法还包括:释放第一索引信息和第二索引信息中的地址信息。
本申请实施例提供的图形渲染方法,应用于容器,该容器基于宿主机运行且与宿主机的系统之间创建有共享内存,容器与宿主机的系统之间建立eventfd通道,将产生的图形渲染指令写入共享内存,然后通过eventfd通道向宿主机的系统发送第一eventfd事件消息,通过第一eventfd事件消息触发宿主机的系统从共享内存中读取图形渲染指令并根据该图形渲染指令进行图形渲染。能够在数据传输过程中仅传递eventfd事件消息,避免了内存的多次拷贝,从而提高了图形渲染的效率。
参见图2,是本申请实施例提供的另一种图形渲染方法的流程图,该图形渲染方法应用于宿主机,该宿主机上可以运行至少一个容器,该容器与宿主机的系统之间创建有共享内存,该图形渲染方法可以包括如下步骤:
步骤201:与容器之间建立eventfd通道。
步骤202:通过eventfd通道接收容器发送的第一eventfd事件消息。
容器在将图形渲染指令写入共享内存之后,会向宿主机的系统发送第一eventfd事件消息,以触发宿主机的系统的图形渲染服务。宿主机的系统通过eventfd通道接收容器发送的第一eventfd事件消息。
步骤203:从共享内存中读取图形渲染指令。
当通过eventfd通道接收到容器发送的第一eventfd事件消息时,从共享内存中读取图形渲染指令,该图像渲染指令由容器产生并写入共享内存中。
具体的,可以通过如下的方法从共享内存中读取图形渲染指令:从共享内存中读取第一索引信息,以获知图形渲染指令的存储位置和长度;根据该第一索引信息从共享内存中读取图形渲染指令。
步骤204:根据图形渲染指令进行图形渲染。
从共享内存中读取图形渲染指令之后,根据该图形渲染指令进行图形渲染。
在执行完图形渲染任务之后,还可以包括如下方法步骤:生成渲染结果信息并将该渲染结果信息写入共享内存;通过eventfd通道向容器发送第二eventfd事件消息,该第二eventfd事件消息用于触发容器从共享内存中读取渲染结果信息。
具体的,可以通过如下方法将渲染结果信息写入共享内存中:获取共享内存中的第一索引信息,该第一索引信息由容器生成并写入共享内存中,该第一索引信息用于指示数据的存储地址和长度;根据第一索引信息向共享内存写入渲染结果信息;获取渲染结果信息的长度;根据渲染结果信息的长度和第一索引信息生成第二索引信息,该第二索引信息用于指示渲染结果信息的存储地址和长度;将第二索引信息写入共享内存。
本申请实施例提供的图形渲染方法,应用于宿主机,宿主机上运行至少一个容器,该容器与宿主机的系统之间创建有共享内存;通过与容器之间建立eventfd通道,当通过eventfd通道接收到容器发送的第一eventfd事件消息时,从共享内存中读取图形渲染指令,根据图形渲染指令进行图形渲染。能够在数据传输过程中仅传递eventfd事件消息,避免了内存的多次拷贝,从而提高了图形渲染的效率。
基于上述图1和图2对应的实施例提供的图形渲染方法,本申请实施例提供又一种图形渲染方法,该方法可以应用于服务器,例如装有图形加速卡的服务器,该服务器为宿主机,宿主机的系统可以是Linux系统,该服务器上可以运行至少一个容器,该容器比如可以是Android容器。在本实施例中,服务器的结构示意图可参照图3,服务器30中可以创建渲染服务模块301,该渲染服务模块301与至少一个容器302(图3以3个容器来举例说明)之间建立有eventfd通道和共享内存303,能够完成图形的渲染任务。结合图3,如图4所示,本实施例提供的图形渲染方法可以包括以下步骤:
步骤401:系统初始化。
宿主机的系统启动并进行系统初始化,初始化完成之后启动容器和宿主机系统中的渲染服务模块301。
步骤402:容器与宿主机之间建立eventfd通道,并创建共享内存。
在容器与宿主机系统中的渲染服务模块301之间建立eventfd通道,同时,容器与渲染服务模块301之间创建共享内存303。当宿主机上运行有多个容器时,可以创建一个共享内存,该多个容器和渲染服务模块共同使用该共享内存。其中,创建的共享内存303的首地址可以记为SHARE_MEM_START。
步骤403:容器产生图形渲染指令,并将该图形渲染指令写入共享内存。
容器内部的应用程序需要进行图形渲染时,产生图像渲染指令,容器将该图形渲染指令写入共享内存303。
具体的,如图5所示,是本实施例提供的服务器的一种具体的结构示意图,以包含一个容器为例进行说明。其中,容器302包括应用程序模块3021、渲染任务模块3022和地址管理模块3023,地址管理模块3023可以对共享内存303的地址空间进行管理,负责地址空间的申请和释放等操作。
在本步骤中,应用程序模块3021产生图形渲染指令后,将该图形渲染指令发送给渲染任务模块3022,其中的图形渲染指令记为MSG_DATA,图形渲染指令的长度记为MSG_LEN;接着,渲染任务模块3022控制地址管理模块3023申请长度为MSG_LEN的共享内存空间,申请到的图形渲染指令偏移地址为MSG_OFFSET,同时申请预设回写数据长度为RSP_LEN的回写地址空间,申请到的回写偏移地址为RSP_OFFSET,其中的RSP_LEN是回写的数据可能的最大长度,宿主机的系统实际回写的数据的长度可能会小于RSP_LEN;地址管理模块3023申请到这些地址空间和数据存储空间后,渲染任务模块3022将图形渲染指令偏移地址MSG_OFFSET、图形渲染指令的长度MSG_LEN、回写偏移地址RSP_OFFSET以及预设回写数据长度RSP_LEN作为第一索引消息写入共享内存,同时将图形渲染指令MSG_DATA写入共享内存303中SHARE_MEM_START+MSG_OFFSET的地址所指示的位置。
具体的,参见图6,是共享内存303的数据存储结构示意图,共享内存303可以分为两部分:消息索引和消息内容。在一种实施例中,共享内存303开始的16个字节为消息索引1,紧随其后的16个字节为消息索引2,消息索引1用于存储第一索引信息,即存储本次容器向宿主机的系统发送的图形渲染指令的图形渲染指令偏移地址(4字节)、图形渲染指令长度(4字节)、回写偏移地址(4字节)、预设回写数据长度(4个字节);消息索引2用于存储第二索引信息,即存储宿主机的系统向容器返回的渲染结果信息,包括完成本次图形渲染相关的图形渲染指令偏移地址(4字节)、图形渲染指令长度(4字节)、回写偏移地址(4字节)和实际回写长度(4字节),其余地址空间保存消息内容,比如保存图形渲染指令MSG_DATA和渲染结果信息RSP_DATA。其中,回写偏移地址保存的是宿主机返回给容器的渲染结果信息的存储位置,实际回写长度指示的是渲染结果信息的长度。
步骤404:容器通过eventfd通道向宿主机的系统发送第一eventfd事件消息。
容器中的渲染任务模块3022将产生的图形渲染指令写入共享内存303之后,渲染任务模块3022通过eventfd通道向宿主机的系统中的渲染服务模块301发送第一eventfd事件消息,。
步骤405:宿主机的系统从共享内存中读取图形渲染指令。
宿主机的系统中的渲染服务模块301接收到第一eventfd事件消息时,从共享内存303中读取图形渲染指令。
具体的,渲染服务模块301接收到第一eventfd事件消息时,首先从共享内存303的首地址读取索引地址MSG_OFFSET以及消息长度MSG_LEN,然后从SHARE_MEM_START+MSG_OFFSET的地址读取长度为MSG_LEN的消息内容MSG_DATA,该MSG_DATA即为读取到的图形渲染指令。
步骤406:根据图形渲染指令进行图形渲染。
渲染服务模块301读取到图形渲染指令后,根据该图形渲染指令进行图形渲染。
步骤407:生成渲染结果信息。
渲染服务模块301根据图形渲染指令完成图形渲染之后,生成渲染结果信息RSP_DATA。
步骤408:将渲染结果信息写入共享内存。
渲染服务模块301生成渲染结果信息RSP_DATA之后,将渲染结果信息RSP_DATA写入共享内存303。
具体的,渲染服务模块301将渲染结果信息RSP_DATA拷贝到共享内存303中地址SHARE_MEM_START+RSP_OFFSET所指示的位置,该渲染结果信息RSP_DATA的实际长度为RSP_LEN_R,然后将图形渲染指令偏移地址MSG_OFFSET、图形渲染指令的长度MSG_LEN、回写偏移地址RSP_OFFSET及渲染结果信息的实际长度RSP_LEN_R写入消息索引2中。
步骤409:宿主机通过eventfd通道向容器发送第二eventfd事件消息。
宿主机的系统中的渲染服务模块301将渲染结果信息写入共享内存303之后,通过eventfd通道向容器中的渲染任务模块3022发送第二eventfd事件消息。
步骤410:容器从共享内存中读取渲染结果信息。
容器中的渲染任务模块3022接收到第二eventfd事件消息时,从共享内存303中读取渲染结果信息。
具体的,容器中的渲染任务模块3022在接收到第二eventfd事件消息时,从共享内存303中的消息索引2中读取MSG_OFFSET、MSG_LEN、RSP_OFFSET以及RSP_LEN_R等数据,然后从地址
SHARE_MEM_START+RSP_OFFSET所指示的位置读取长度为RSP_LEN_R的数据,得到渲染结果信息RSP_DATA。
步骤411:释放地址信息。
容器中的渲染任务模块3022从共享内存303中读取到渲染结果信息之后,通过地址管理模块3023释放MSG_OFFSET和RSP_OFFSET的地址空间。
在本实施例中,当宿主机上运行有多个容器时,各容器所对应的图形渲染指令和渲染结果信息的相关数据可以采用不同的共享内存地址空间进行区分,使多个容器共享宿主机的显卡资源。
本申请实施例提供的图形渲染方法,采用eventfd机制结合共享内存实现容器与宿主机的系统之间的图形渲染指令的传递。在宿主机的系统中部署渲染服务模块,并在渲染服务模块和容器之间建立共享内存;容器产生图形渲染指令后,将该图形渲染指令写入共享内存,并通过eventfd通道通知渲染服务模块从共享内存中读取图形渲染指令,渲染服务模块读取该图形渲染指令后进行图形渲染;图形渲染任务完成后,渲染服务模块将渲染结果信息写入共享内存并通过eventfd通道通知容器。能够在数据传输过程中仅传递eventfd事件消息,避免了内存的多次拷贝,从而提高了图形渲染的效率。同时,宿主机上可以启动多个容器,多个容器的数据采用不同的共享内存地址空间进行区分,在提高图形渲染效率的同时,还可以使多个容器共享宿主机的显卡资源,满足多个容器同时进行大量图形计算的要求,特别是对大量3D图形的计算。
基于上述各实施例中所描述的图形渲染方法,本申请实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read OnlyMemory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述各实施例中所描述的图形渲染方法,此处不再赘述。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (11)
1.一种图形渲染方法,其特征在于,应用于容器,所述容器基于宿主机运行,所述容器与所述宿主机的系统之间创建有共享内存,所述方法包括:
与所述宿主机的系统之间建立eventfd通道;
将产生的图形渲染指令写入所述共享内存;
通过所述eventfd通道向所述宿主机的系统发送第一eventfd事件消息,所述第一eventfd事件消息用于触发所述宿主机的系统从所述共享内存中读取所述图形渲染指令并根据所述图形渲染指令进行图形渲染。
2.根据权利要求1所述的方法,其特征在于,所述将产生的图形渲染指令写入所述共享内存包括:
向所述共享内存申请渲染指令存储空间,所述渲染指令存储空间包括渲染指令索引空间和渲染指令数据空间,所述渲染指令索引空间用于存储第一索引信息,所述第一索引信息用于指示数据的存储地址和长度;
向所述渲染指令索引空间写入第一索引信息;
根据所述第一索引信息向所述渲染指令数据空间写入所述图形渲染指令。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述eventfd通道接收所述宿主机的系统发送的第二eventfd事件消息;
在接收到所述第二eventfd事件消息时,从所述共享内存中读取渲染结果信息,所述渲染结果信息由所述宿主机的系统生成并写入所述共享内存中。
4.根据权利要求3所述的方法,其特征在于,所述从所述共享内存中读取渲染结果信息包括:
从所述共享内存中读取第二索引信息,所述第二索引信息由所述宿主机的系统根据渲染结果信息的长度和所述第一索引信息生成,所述第二索引信息用于指示渲染结果信息的存储地址和长度;
根据所述第二索引信息从所述共享内存中读取渲染结果信息。
5.根据权利要求4所述的方法,其特征在于,在从所述共享内存中读取渲染结果信息之后,所述方法还包括:
释放所述第一索引信息和所述第二索引信息中的地址信息。
6.一种图形渲染方法,其特征在于,应用于宿主机,所述宿主机上运行至少一个容器,所述容器与所述宿主机的系统之间创建有共享内存,所述方法包括:
与所述容器之间建立eventfd通道;
当通过所述eventfd通道接收到所述容器发送的第一eventfd事件消息时,从所述共享内存中读取图形渲染指令,所述图像渲染指令由所述容器产生并写入所述共享内存;
根据所述图形渲染指令进行图形渲染。
7.根据权利要求6所述的方法,其特征在于,在根据所述图形渲染指令进行图形渲染之后,所述方法还包括:
生成渲染结果信息,并将所述渲染结果信息写入所述共享内存;
通过所述eventfd通道向所述容器发送第二eventfd事件消息,所述第二eventfd事件消息用于触发所述容器从所述共享内存中读取所述渲染结果信息。
8.根据权利要求7所述的方法,其特征在于,所述将所述渲染结果信息写入所述共享内存包括:
获取所述共享内存中的第一索引信息,所述第一索引信息由所述容器生成并写入所述共享内存中,所述第一索引信息用于指示数据的存储地址和长度;
根据所述第一索引信息向所述共享内存写入所述渲染结果信息;
获取所述渲染结果信息的长度;
根据所述渲染结果信息的长度和所述第一索引信息生成第二索引信息,所述第二索引信息用于指示所述渲染结果信息的存储地址和长度;
将所述第二索引信息写入所述共享内存。
9.一种服务器,其特征在于,所述服务器上运行至少一个容器,所述服务器中包括渲染服务模块,所述渲染服务模块与所述至少一个容器之间建立有eventfd通道和共享内存;
所述容器用于产生图形渲染指令,将所述图形渲染指令写入所述共享内存,并通过所述eventfd通道向所述渲染服务模块发送第一eventfd事件消息;
所述渲染服务模块用于在接收到所述第一eventfd事件消息时,从所述共享内存中读取所述图形渲染指令,并根据所述图形渲染指令进行图形渲染。
10.根据权利要求9所述的服务器,其特征在于,所述渲染服务模块还用于在根据所述图形渲染指令进行图形渲染之后生成渲染结果信息,将所述渲染结果信息写入所述共享内存,并通过所述eventfd通道向所述容器发送第二eventfd事件消息;
所述容器还用于在接收到所述第二eventfd事件消息时,从所述共享内存中读取所述渲染结果信息。
11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条计算机指令,所述计算机指令由处理器加载并执行以实现权利要求1至权利要求8中任一项所述的图形渲染方法中所执行的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309240.XA CN113127228A (zh) | 2021-03-23 | 2021-03-23 | 图形渲染方法、服务器和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110309240.XA CN113127228A (zh) | 2021-03-23 | 2021-03-23 | 图形渲染方法、服务器和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113127228A true CN113127228A (zh) | 2021-07-16 |
Family
ID=76773836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110309240.XA Pending CN113127228A (zh) | 2021-03-23 | 2021-03-23 | 图形渲染方法、服务器和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127228A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114022344A (zh) * | 2022-01-10 | 2022-02-08 | 北京蔚领时代科技有限公司 | 基于Linux服务器的Android容器渲染资源共享方法和装置 |
CN114035967A (zh) * | 2022-01-10 | 2022-02-11 | 北京蔚领时代科技有限公司 | 一种基于服务器的资源共享渲染方法和装置 |
CN114827186A (zh) * | 2022-02-25 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 云应用处理方法和系统 |
-
2021
- 2021-03-23 CN CN202110309240.XA patent/CN113127228A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114022344A (zh) * | 2022-01-10 | 2022-02-08 | 北京蔚领时代科技有限公司 | 基于Linux服务器的Android容器渲染资源共享方法和装置 |
CN114035967A (zh) * | 2022-01-10 | 2022-02-11 | 北京蔚领时代科技有限公司 | 一种基于服务器的资源共享渲染方法和装置 |
CN114827186A (zh) * | 2022-02-25 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 云应用处理方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113127228A (zh) | 图形渲染方法、服务器和计算机可读存储介质 | |
US8402200B2 (en) | Method and apparatus for storing and restoring state of virtual machine | |
US10116746B2 (en) | Data storage method and network interface card | |
CN111450528A (zh) | 一种云游戏的渲染服务系统、方法及装置 | |
CN108287708B (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
US11853767B2 (en) | Inter-core data processing method, system on chip and electronic device | |
CN114244790B (zh) | PCIe设备与主机设备的通信方法、系统及设备 | |
CN114281484B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN114020406A (zh) | 一种云平台加速虚拟机i/o的方法、装置及系统 | |
CN112835843A (zh) | 数据渲染方法及系统 | |
EP3279795A1 (en) | Method and apparatus for deleting cloud host in cloud computing environment, server and storage medium | |
CN109509139B (zh) | 顶点数据处理方法、装置及设备 | |
US10733687B2 (en) | Method and apparatus for data communication in virtualized environment, and processor | |
CN116860391A (zh) | Gpu算力资源调度方法、装置、设备和介质 | |
CN114820272A (zh) | 数据交互的方法、装置、存储介质及电子设备 | |
CN113312182A (zh) | 一种云计算节点、文件处理方法及装置 | |
CN110489356B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN112596852A (zh) | 一种图形显示方法、装置、系统、电子设备及存储介质 | |
CN111310638A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN105988871B (zh) | 一种远端内存分配方法、装置和系统 | |
CN110245027A (zh) | 一种进程间通信的方法和设备 | |
CN111274176B (zh) | 一种信息处理方法、电子设备、系统及存储介质 | |
CN107203339A (zh) | 一种数据存储方法及装置 | |
CN111866065A (zh) | 渲染图像回传的方法及装置 | |
CN111208947A (zh) | 数据迁移方法、装置、物理机、云平台和计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |