一种内存写入优化方法、装置、设备及介质制造方法及图纸

技术编号:32569444 阅读:15 留言:0更新日期:2022-03-09 16:56
本发明专利技术提出了一种内存写入优化方法,应用于分布式文件系统服务中,包括:接收网络流中待写入内存的数据包,获取数据包中的消息头信息;根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列,本发明专利技术还提出了一种内存写入优化装置、设备及介质,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。提高了C库中内存写入效率。提高了C库中内存写入效率。

【技术实现步骤摘要】
一种内存写入优化方法、装置、设备及介质


[0001]本专利技术涉及内存优化领域,尤其是涉及一种内存写入优化方法、装置、设备及介质。

技术介绍

[0002]对于分布式文件系统(对象存储)在使用HDFS(Hadoop Distributed File System,分布式文件系统存储)服务读取、写入过程中,HDFS服务由Java代码与c++代码构成,Java代码通过jna接口(Java Native Access,一种接口,可以通过Java接口到本地库的映射,实现系统本地库的动态访问)实现接口调用c++代码,实现Java代码与c++代码之间的信息交互通信。
[0003]现有技术中,Java代码获取的网络流数据首先要写入c++模块中(即C库),然后c++模块再把写入数据的拷贝到c++模块自身申请的内存中,需要涉及网络流数据写入、内存空间申请、数据拷贝等过程,使得内存写入耗费时间长,而且增加c++模块等待时间,降低了c++模块性能。

技术实现思路

[0004]本专利技术为了解决现有技术中存在的问题,创新提出了一种内存写入优化方法、装置、设备及介质,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
[0005]本专利技术第一方面提供了一种内存写入优化方法,应用于分布式文件系统服务中,包括:
[0006]接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
[0007]根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
[0008]将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
[0009]根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
[0010]可选地,将数据包中的数据依次写入已申请的内存空间中具体是:依次读取数据包中的相同大小的数据,并将依次读取的数据包中的相同大小的数据分别写入已申请的内存空间中。
[0011]可选地,当前写入参数包括但不限于内存地址、当前写入的内存数据偏移量和当前已写入数据的写入长度。
[0012]进一步地,内存数据偏移量为内存数据块中当前已写入数据的写入长度与数据包初始写入数据的偏移位置的差值。
[0013]可选地,通过设置内存引用计数参数用于动态管理C库中已申请的内存空间。
[0014]进一步地,还包括:
[0015]将待下刷的缓存队列中的内存空间中数据进行下刷;
[0016]根据未下刷时的内存引用计数计算当前内存引用计数;
[0017]根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
[0018]进一步地,如果当前内存引用计数为预设数值,则从待下刷的缓存队列中移除内存空间中数据,释放内存空间;如果当前内存引用计数不为预设数值,则等待从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
[0019]本专利技术第二方面提供了一种内存写入优化装置,应用于分布式文件系统服务中,包括:
[0020]接收模块,接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
[0021]申请模块,根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
[0022]写入模块,将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
[0023]封装插入模块,根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
[0024]本专利技术第三方面提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如本专利技术第一方面所述的一种内存写入优化方法的步骤。
[0025]本专利技术第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如本专利技术第一方面所述的一种内存写入优化方法的步骤。
[0026]本专利技术采用的技术方案包括以下技术效果:
[0027]1、本专利技术针对HDFS服务写入过程,由C库申请内存,Java代码直接将网络流中的数据写入到C库,从而减少一次内存拷贝,同时降低C库运行压力,提升C库性能,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
[0028]2、本专利技术技术方案C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,使得C库能够根据封装的内存空间中数据结构自动识别已写入的内存空间中数据,保证了C库中内存写入准确性以及可靠性。
[0029]3、本专利技术技术方案中通过设置内存引用计数参数用于动态管理C库中已申请的内存空间,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间,实现内存释放自动管理,方便高效。
[0030]应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本专利技术。
附图说明
[0031]为了更清楚说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1为本专利技术方案中实施例一中一种内存写入优化方法的一流程示意图;
[0033]图2为本专利技术方案中实施例一中一种内存写入优化方法的另一流程示意图;
[0034]图3为本专利技术方案中实施例二中一种内存写入优化装置的一结构示意图;
[0035]图4为本专利技术方案中实施例二中一种内存写入优化装置的另一结构示意图;
[0036]图5为本专利技术方案中实施例三中一种内存写入优化设备的结构示意图。
具体实施方式
[0037]为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本专利技术的不同结构。为了简化本专利技术的公开,下文中对特定例子的部件和设置进行描述。此外,本专利技术可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本专利技术省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本专利技术。
[0038]实施例一
[0039]如图1所示,本专利技术提供了一种内存写入优化方法,应用于分布式文件系统服务中,包括:
[0040]S1,接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存写入优化方法,其特征是,应用于分布式文件系统服务中,包括:接收网络流中待写入内存的数据包,获取数据包中的消息头信息;根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。2.根据权利要求1所述的一种内存写入优化方法,其特征是,将数据包中的数据依次写入已申请的内存空间中具体是:依次读取数据包中的相同大小的数据,并将依次读取的数据包中的相同大小的数据分别写入已申请的内存空间中。3.根据权利要求1所述的一种内存写入优化方法,其特征是,当前写入参数包括但不限于内存地址、当前写入的内存数据偏移量和当前已写入数据的写入长度。4.根据权利要求3所述的一种内存写入优化方法,其特征是,内存数据偏移量为内存数据块中当前已写入数据的写入长度与数据包初始写入数据的偏移位置的差值。5.根据权利要求1所述的一种内存写入优化方法,其特征是,通过设置内存引用计数参数用于动态管理C库中已申请的内存空间。6.根据权利要求5所述的一种内存写入优化方法,其特征是,还包括:将待下刷的缓存队列中的内存空间中数据进行下刷;根据未下刷时的...

【专利技术属性】
技术研发人员:王帅阳李文鹏李旭东
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1