[发明专利]一种内存写入优化方法、装置、设备及介质在审
| 申请号: | 202111362594.7 | 申请日: | 2021-11-17 |
| 公开(公告)号: | CN114153599A | 公开(公告)日: | 2022-03-08 |
| 发明(设计)人: | 王帅阳;李文鹏;李旭东 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 济南诚智商标专利事务所有限公司 37105 | 代理人: | 周杰 |
| 地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 内存 写入 优化 方法 装置 设备 介质 | ||
本发明提出了一种内存写入优化方法,应用于分布式文件系统服务中,包括:接收网络流中待写入内存的数据包,获取数据包中的消息头信息;根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列,本发明还提出了一种内存写入优化装置、设备及介质,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
技术领域
本发明涉及内存优化领域,尤其是涉及一种内存写入优化方法、装置、设备及介质。
背景技术
对于分布式文件系统(对象存储)在使用HDFS(Hadoop Distributed FileSystem,分布式文件系统存储)服务读取、写入过程中,HDFS服务由Java代码与c++代码构成,Java代码通过jna接口(Java Native Access,一种接口,可以通过Java接口到本地库的映射,实现系统本地库的动态访问)实现接口调用c++代码,实现Java代码与c++代码之间的信息交互通信。
现有技术中,Java代码获取的网络流数据首先要写入c++模块中(即C库),然后c++模块再把写入数据的拷贝到c++模块自身申请的内存中,需要涉及网络流数据写入、内存空间申请、数据拷贝等过程,使得内存写入耗费时间长,而且增加c++模块等待时间,降低了c++模块性能。
发明内容
本发明为了解决现有技术中存在的问题,创新提出了一种内存写入优化方法、装置、设备及介质,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
本发明第一方面提供了一种内存写入优化方法,应用于分布式文件系统服务中,包括:
接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
可选地,将数据包中的数据依次写入已申请的内存空间中具体是:依次读取数据包中的相同大小的数据,并将依次读取的数据包中的相同大小的数据分别写入已申请的内存空间中。
可选地,当前写入参数包括但不限于内存地址、当前写入的内存数据偏移量和当前已写入数据的写入长度。
进一步地,内存数据偏移量为内存数据块中当前已写入数据的写入长度与数据包初始写入数据的偏移位置的差值。
可选地,通过设置内存引用计数参数用于动态管理C库中已申请的内存空间。
进一步地,还包括:
将待下刷的缓存队列中的内存空间中数据进行下刷;
根据未下刷时的内存引用计数计算当前内存引用计数;
根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
进一步地,如果当前内存引用计数为预设数值,则从待下刷的缓存队列中移除内存空间中数据,释放内存空间;如果当前内存引用计数不为预设数值,则等待从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
本发明第二方面提供了一种内存写入优化装置,应用于分布式文件系统服务中,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111362594.7/2.html,转载请声明来源钻瓜专利网。





