一种用于硬件加速设备与docker内进程通信的方法与系统技术方案

技术编号:28372912 阅读:12 留言:0更新日期:2021-05-07 23:59
本发明专利技术公开一种用于硬件加速设备与docker内进程通信的方法与系统,其中系统包括主机、docker、虚拟文件、主机共享内存、docker共享内存及外部设备,其中虚拟文件由主机创建,主机共享内存和docker共享内存由虚拟文件映射生成,docker共享内存与主机共享内存数据同步,外部设备对主机共享内存的读写操作通过将主机共享内存首地址传递给外部设备实现,docker内应用程序对docker共享内存的读写操作通过将docker共享内存首地址传递给docker内应用程序实现。本发明专利技术通过使用虚拟文件和共享内存的方式,提高docker内进程与外部设备的通信速度,以解决docker与外部通信速度成为docker处理性能提升瓶颈的问题。

【技术实现步骤摘要】
一种用于硬件加速设备与docker内进程通信的方法与系统
本专利技术涉及数据通信领域,具体而言,涉及一种用于硬件加速设备与docker内进程通信的方法与系统。
技术介绍
随着网络技术的飞速发展,互联网数据成指数级增加,大数据和云计算成为了互联网发展的趋势。使用集群和微服务来完成海量数据的计算,依然成为当前互联网开发的主流,为了高效运行和管理docker技术应运而生,docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化,其中,容器是完全使用沙箱机制,相互之间不会有任何接口。目前,宿主机上的设备与docker内进程通信,通常是通过网路或者数据卷的方式实现的,其处理速度比较低,且占用更多的CPU和内存资源,当处理的数据量比较大时,docker与外部通信速度就会成为瓶颈,严重影响docker处理性能,降低处理速度,因此,需要一种能够解决宿主机或者宿主机的外接设备与docker内进程进行大量数据交换时速度过低的问题的方法。
技术实现思路
为了解决上述问题,本专利技术提供一种用于硬件加速设备与docker内进程通信的方法与系统,通过使用虚拟文件和共享内存的方式,提高docker内进程与外部设备通信的速度,以解决docker与外部通信速度成为docker处理性能提升瓶颈的问题。为达到上述目的,本专利技术提供了一种用于硬件加速设备与docker内进程通信的方法,其包括以下步骤:S1:主机服务端启动,并检测外部设备;S2:主机根据检测到的外部设备创建虚拟文件和共享内存,等待客户端连接;S3:启动docker,将docker的网络模式设置为主机模式,并将虚拟文件所在的目录映射到docker内;S4:启动docker内的应用程序,建立与主机的网络连接并执行处理任务;S5:完成任务后,docker内的应用程序与主机断开连接。在本专利技术一实施例中,若步骤S1中检测到多个外部设备,则在S2中创建虚拟文件时需要根据对应外部设备的设备ID为每个设备创建一个独立的虚拟文件。在本专利技术一实施例中,其中,步骤S2具体为:S21:主机根据检测到的外部设备创建虚拟文件;S22:主机将虚拟文件映射到内存,然后将内存属性设置为共享内存,建立主机共享内存;S23:主机对映射的主机共享内存进行初始化;S24:主机等待客户端连接。在本专利技术一实施例中,其中,步骤S4具体为:S41:启动docker内的应用程序,docker内的应用程序作为客户端建立与主机的网络连接,并获取当前占用的对应外部设备的设备ID和通道ID;S42:根据获取的设备ID和通道ID,docker内的应用程序在docker内将对应的虚拟文件映射到docker内存中,创建docker共享内存;S43:docker内的应用程序读取docker本地数据,并通过docker共享内存与主机共享内存的数据同步将本地数据发送到主机服务端;S44:主机服务端将本地数据存入主机共享内存中与通道对应的输入缓冲区,对应外部设备直接读取输入缓冲区的本地数据并进行处理,然后将处理后的数据返回主机共享内存中的输出缓冲区;S45:docker内的应用程序通过docker共享内存与主机共享内存的数据同步读取处理后的数据,并保存在docker本地;S46:循环执行S44~S45。在本专利技术一实施例中,其中,步骤S44中还包括:主机将主机共享内存的首地址传递给与主机连接的对应外部设备,所述外部设备根据首地址直接读取主机共享内存中的数据。在本专利技术一实施例中,其中,步骤S5具体为:当所有本地数据处理完成后,docker内的应用程序断开与主机的连接并删除docker共享内存。在本专利技术一实施例中,docker内的应用程序与主机建立的网络连接为socket连接。为达到上述目的,本专利技术还提供了一种用于硬件加速设备与docker内进程通信的系统,其包括:一主机,作为宿主机;一docker,设置在主机内,其网络模式设置为主机模式,docker包含docker内的应用程序;一虚拟文件,在主机内由主机创建,并作为主机与docker数据同步的载体通过文件映射的方式映射到docker内;一主机共享内存,在主机内由虚拟文件映射生成;一docker共享内存,在docker内由虚拟文件映射生成,并与主机共享内存数据同步;至少一外部设备,与主机连接并直接读取主机共享内存中的数据。在本专利技术一实施例中,任一外部设备对主机共享内存的读写操作是通过将主机共享内存的首地址传递给所述外部设备实现的,且所述外部设备对主机共享内存的读写操作由主机共享内存中的互斥变量控制。在本专利技术一实施例中,docker内的应用程序对docker共享内存的读写操作是通过将docker共享内存的首地址传递给docker内的应用程序实现的,且docker内的应用程序对docker共享内存的读写操作由docker共享内存中的互斥变量控制。本专利技术使用虚拟文件和共享内存的方式,内存读写速度快,从而提高docker内进程与外部设备通信的速度,以达到解决现有技术中docker与外部设备的通信速度成为docker处理性能提升瓶颈这一问题的目的。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为本专利技术一实施例的通信方法流程图;图2为本专利技术一实施例的系统架构图;图3为本专利技术外接音频解码设备实施例的方案示意图;图4为本专利技术一实施例中一个完整的H.264文件的处理时序图。附图标记说明:S1~S9-步骤;21、31-主机;22、32-docker;23、33-虚拟文件;24、34-主机共享内存;25、35-docker共享内存;26、36-外部设备;27、37-docker内的应用程序。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。图1为本专利技术一实施例的通信方法流程图,如图1所示,本专利技术提供了一种用于硬件加速设备与docker内进程通信的方法,其包括以下步骤:S1:主机服务端(TCP服务端)启动,并检测外部设备;S2:主机根据检测到的外部设备创建虚拟文件和共享内存,等待客户端连接;S3:启动docker,将docker的网络模式设置为主机模式,并将虚拟文件所在的目录映射到docker内;S4:启动docker内的应用程序,建立与主机的网络连接并执行处理任务;S5:完成任务后,docker内的应用程序与主机断开连接。在本专利技术一实施例中,若S1中检测到多个外部设备,则在S2中创建虚拟文件时需要根据对应外部设备的设备ID(I本文档来自技高网...

【技术保护点】
1.一种用于硬件加速设备与docker内进程通信的方法,其特征在于,包括以下步骤:/nS1:主机服务端启动,并检测外部设备;/nS2:所述主机根据检测到的外部设备创建虚拟文件和共享内存,等待客户端连接;/nS3:启动docker,将docker的网络模式设置为主机模式,并将所述虚拟文件所在的目录映射到docker内;/nS4:启动docker内的应用程序,建立与所述主机的网络连接并执行处理任务;/nS5:完成任务后,所述docker内的应用程序与所述主机断开连接。/n

【技术特征摘要】
1.一种用于硬件加速设备与docker内进程通信的方法,其特征在于,包括以下步骤:
S1:主机服务端启动,并检测外部设备;
S2:所述主机根据检测到的外部设备创建虚拟文件和共享内存,等待客户端连接;
S3:启动docker,将docker的网络模式设置为主机模式,并将所述虚拟文件所在的目录映射到docker内;
S4:启动docker内的应用程序,建立与所述主机的网络连接并执行处理任务;
S5:完成任务后,所述docker内的应用程序与所述主机断开连接。


2.根据权利要求1所述的方法,其特征在于,若步骤S1中检测到多个外部设备,则在步骤S2中创建虚拟文件时需要根据对应外部设备的设备ID为每个设备创建一个独立的虚拟文件。


3.根据权利要求2所述的方法,其特征在于,步骤S2具体为:
S21:所述主机根据检测到的外部设备创建虚拟文件;
S22:所述主机将所述虚拟文件映射到内存,然后将内存属性设置为共享内存,建立主机共享内存;
S23:所述主机对映射的所述主机共享内存进行初始化;
S24:所述主机等待客户端连接。


4.根据权利要求3所述的方法,其特征在于,步骤S4具体为:
S41:启动docker内的应用程序,所述docker内的应用程序作为客户端建立与所述主机的网络连接,并获取当前占用的对应外部设备的设备ID和通道ID;
S42:根据获取的所述设备ID和所述通道ID,docker内的应用程序在docker内将对应的虚拟文件映射到docker内存中,创建docker共享内存;
S43:docker内的应用程序读取docker本地数据,并通过所述docker共享内存与所述主机共享内存的数据同步将本地数据发送到主机服务端;
S44:所述主机服务端将本地数据存入所述主机共享内存中与通道对应的输入缓冲区,对应外部设备直接读取输入缓冲区的本地数据并进行处理,然后将处理后的数据返回所述主机共享内存中的输出缓冲区;
S45:docker内的应用程序通过所述docker共享内存与所述主机共享内存...

【专利技术属性】
技术研发人员:吴礼福葛长恩
申请(专利权)人:北京睿芯高通量科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1