CN114153599A - 一种内存写入优化方法、装置、设备及介质 - Google Patents

一种内存写入优化方法、装置、设备及介质 Download PDF

Info

Publication number
CN114153599A
CN114153599A CN202111362594.7A CN202111362594A CN114153599A CN 114153599 A CN114153599 A CN 114153599A CN 202111362594 A CN202111362594 A CN 202111362594A CN 114153599 A CN114153599 A CN 114153599A
Authority
CN
China
Prior art keywords
data
memory
memory space
write
data packet
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.)
Withdrawn
Application number
CN202111362594.7A
Other languages
English (en)
Inventor
王帅阳
李文鹏
李旭东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202111362594.7A priority Critical patent/CN114153599A/zh
Publication of CN114153599A publication Critical patent/CN114153599A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

一种内存写入优化方法、装置、设备及介质
技术领域
本发明涉及内存优化领域,尤其是涉及一种内存写入优化方法、装置、设备及介质。
背景技术
对于分布式文件系统(对象存储)在使用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库中已申请的内存空间。
进一步地,还包括:
将待下刷的缓存队列中的内存空间中数据进行下刷;
根据未下刷时的内存引用计数计算当前内存引用计数;
根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
进一步地,如果当前内存引用计数为预设数值,则从待下刷的缓存队列中移除内存空间中数据,释放内存空间;如果当前内存引用计数不为预设数值,则等待从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
本发明第二方面提供了一种内存写入优化装置,应用于分布式文件系统服务中,包括:
接收模块,接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
申请模块,根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
写入模块,将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
封装插入模块,根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
本发明第三方面提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如本发明第一方面所述的一种内存写入优化方法的步骤。
本发明第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的一种内存写入优化方法的步骤。
本发明采用的技术方案包括以下技术效果:
1、本发明针对HDFS服务写入过程,由C库申请内存,Java代码直接将网络流中的数据写入到C库,从而减少一次内存拷贝,同时降低C库运行压力,提升C库性能,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
2、本发明技术方案C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,使得C库能够根据封装的内存空间中数据结构自动识别已写入的内存空间中数据,保证了C库中内存写入准确性以及可靠性。
3、本发明技术方案中通过设置内存引用计数参数用于动态管理C库中已申请的内存空间,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间,实现内存释放自动管理,方便高效。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方案中实施例一中一种内存写入优化方法的一流程示意图;
图2为本发明方案中实施例一中一种内存写入优化方法的另一流程示意图;
图3为本发明方案中实施例二中一种内存写入优化装置的一结构示意图;
图4为本发明方案中实施例二中一种内存写入优化装置的另一结构示意图;
图5为本发明方案中实施例三中一种内存写入优化设备的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
如图1所示,本发明提供了一种内存写入优化方法,应用于分布式文件系统服务中,包括:
S1,接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
S2,根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
S3,将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
S4,根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
其中,在步骤S1中,HDFS服务接收Java网络流中待写入数据包,HDFS服务按照协议顺序,解析获取网络流中数据包的消息头信息(header),数据包一般包括消息头、数据(data)、校验数据等,优选地,还可以获取checksum数据(数据包中包含的校验数据信息),可以用于校验待写入数据包是否符合预设要求(数据安全性、数据格式、数据完整性等),以提高数据包写入的可靠性。
在步骤S2中,HDFS服务根据消息头信息获取数据包中数据的长度。通过封装第一jna接口,用于在c++模块(C库)中申请数据的长度len对应的内存空间。
在步骤S3中,将数据包中的数据依次写入已申请的内存空间中具体是:依次读取数据包中的相同大小的数据,并将依次读取的数据包中的相同大小的数据分别写入已申请的内存空间中。其中,每次读取的数据包中的数据可以是4096字节单位,即HDFS服务每次以4096字节为单位,读取Java网络流中数据,并通过预先封装的第二jna接口,将依次读取的数据写入到C库申请的内存空间中。
HDFS服务根据写入记录,获取当前写入参数,并将获取的当前写入参数传入到C库中。其中,当前写入参数包括但不限于内存地址、当前写入的内存数据偏移量和当前已写入数据的写入长度。其中,内存数据偏移量(指数据包写入内存数据的偏移量,内存数据写入时候的起始索引,相当于内存写入指针)为内存数据块中当前已写入数据的写入长度与数据包初始写入数据的偏移位置的差值。需要说明的是,此处当前已写入数据的写入长度可能与数据包已写入的数据长度不同,因为读取的数据包中的数据可能有重复数据,需要去掉。因此,HDFS服务需要将当前吸入的文件ino号(文件系统的索引号,在文件系统中唯一,用于标识文件系统中的不同文件),当前写入内存的初始位置,内存地址,当前写入的内存数据偏移量(offset)和当前已写入数据的写入长度len传入调用C库。
在步骤S4中,C库根据接收的写请求以及当前写入参数将内存空间中数据进行封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列后,c++模块调用结束,Java写过程调用结束。
进一步地,本发明技术方案中可以通过设置内存引用计数参数用于动态管理C库中已申请的内存空间。
如图2所示,本发明技术方案提供的一种内存写入优化方法,还包括:
S5,将待下刷的缓存队列中的内存空间中数据进行下刷;
S6,根据未下刷时的内存引用计数计算当前内存引用计数;
S7,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
其中,在步骤S5中,在将封装后的内存空间中数据插入至待下刷的缓存队列之前,将内存引用计数初始值设置为1,当将封装后的内存空间中数据插入至待下刷的缓存队列后,内存引用计数自增1,相应变为2。当数据包中的数据全部插入至待下刷的缓存队列后,内存引用计数自减1,对应变为1。即未下刷时的内存引用计数为1。然后将待下刷的缓存队列中的内存空间中数据进行下刷。
在步骤S6中,根据未下刷时的内存引用计数计算当前内存引用计数具体是:当将待下刷的缓存队列中的内存空间中数据全部进行下刷完成后,内存引用计数减1,即当前内存引用计数为未下刷时的内存引用计数-1=0。
其中,在步骤S7中,如果当前内存引用计数为预设数值(即为0),则从待下刷的缓存队列中移除内存空间中数据,释放内存空间;如果当前内存引用计数不为预设数值(不为0),则等待从待下刷的缓存队列中移除内存空间中数据,释放内存空间,通过引入内存引用计数参数,实现对内存空间释放的管理,提高了管理效率。
需要说明的是,本发明技术方案中步骤S1-S7均可以通过硬件或软件语言编程实现,实现的思路与本方案中的步骤相对应,也可以通过其他方式实现,本发明在此不做限制。
本发明针对HDFS服务写入过程,由C库申请内存,Java代码直接将网络流中的数据写入到C库,从而减少一次内存拷贝,同时降低C库运行压力,提升C库性能,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
本发明技术方案C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,使得C库能够根据封装的内存空间中数据结构自动识别已写入的内存空间中数据,保证了C库中内存写入准确性以及可靠性。
本发明技术方案中通过设置内存引用计数参数用于动态管理C库中已申请的内存空间,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间,实现内存释放自动管理,方便高效。
实施例二
如图3所示,本发明技术方案还提供了一种内存写入优化装置,应用于分布式文件系统服务中,包括:
接收模块101,接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
申请模块102,根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
写入模块103,将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
封装插入模块104,根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
其中,在接收模块101中,HDFS服务接收Java网络流中待写入数据包,HDFS服务按照协议顺序,解析获取网络流中数据包的消息头信息(header),数据包一般包括消息头、数据(data)、校验数据等,优选地,还可以获取checksum数据(数据包中包含的校验数据信息),可以用于校验待写入数据包是否符合预设要求(数据安全性、数据格式、数据完整性等),以提高数据包写入的可靠性。
在申请模块102中,HDFS服务根据消息头信息获取数据包中数据的长度。通过封装第一jna接口,用于在c++模块(C库)中申请数据的长度len对应的内存空间。
在写入模块103中,将数据包中的数据依次写入已申请的内存空间中具体是:依次读取数据包中的相同大小的数据,并将依次读取的数据包中的相同大小的数据分别写入已申请的内存空间中。其中,每次读取的数据包中的数据可以是4096字节单位,即HDFS服务每次以4096字节为单位,读取Java网络流中数据,并通过预先封装的第二jna接口,将依次读取的数据写入到C库申请的内存空间中。
HDFS服务根据写入记录,获取当前写入参数,并将获取的当前写入参数传入到C库中。其中,当前写入参数包括但不限于内存地址、当前写入的内存数据偏移量和当前已写入数据的写入长度。其中,内存数据偏移量(指数据包写入内存数据的偏移量,内存数据写入时候的起始索引,相当于内存写入指针)为内存数据块中当前已写入数据的写入长度与数据包初始写入数据的偏移位置的差值。需要说明的是,此处当前已写入数据的写入长度可能与数据包已写入的数据长度不同,因为读取的数据包中的数据可能有重复数据,需要去掉。因此,HDFS服务需要将当前吸入的文件ino号(文件系统的索引号,在文件系统中唯一,用于标识文件系统中的不同文件),当前写入内存的初始位置,内存地址,当前写入的内存数据偏移量(offset)和当前已写入数据的写入长度len传入调用C库。
在封装插入模块104中,C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列后,c++模块调用结束,Java写过程调用结束。
进一步地,本发明技术方案中可以通过设置内存引用计数参数用于动态管理C库中已申请的内存空间。
如图4所示,本发明技术方案提供的一种内存写入优化方法,还包括:
下刷模块105,将待下刷的缓存队列中的内存空间中数据进行下刷;
计算模块106,根据未下刷时的内存引用计数计算当前内存引用计数;
确定模块107,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
其中,在下刷模块105中,在将封装后的内存空间中数据插入至待下刷的缓存队列之前,将内存引用计数初始值设置为1,当将封装后的内存空间中数据插入至待下刷的缓存队列后,内存引用计数自增1,相应变为2。当数据包中的数据全部插入至待下刷的缓存队列后,内存引用计数自减1,对应变为1。即未下刷时的内存引用计数为1。然后将待下刷的缓存队列中的内存空间中数据进行下刷。
在计算模块106中,根据未下刷时的内存引用计数计算当前内存引用计数具体是:当将待下刷的缓存队列中的内存空间中数据全部进行下刷完成后,内存引用计数减1,即当前内存引用计数为未下刷时的内存引用计数-1=0。
其中,在确定模块107中,如果当前内存引用计数为预设数值(即为0),则从待下刷的缓存队列中移除内存空间中数据,释放内存空间;如果当前内存引用计数不为预设数值(不为0),则等待从待下刷的缓存队列中移除内存空间中数据,释放内存空间,通过引入内存引用计数参数,实现对内存空间释放的管理,提高了管理效率。
本发明针对HDFS服务写入过程,由C库申请内存,Java代码直接将网络流中的数据写入到C库,从而减少一次内存拷贝,同时降低C库运行压力,提升C库性能,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
本发明技术方案C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,使得C库能够根据封装的内存空间中数据结构自动识别已写入的内存空间中数据,保证了C库中内存写入准确性以及可靠性。
本发明技术方案中通过设置内存引用计数参数用于动态管理C库中已申请的内存空间,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间,实现内存释放自动管理,方便高效。
实施例三
如图5所示,本发明技术方案还提供了一种电子设备,包括:存储器201,用于存储计算机程序;处理器202,用于执行所述计算机程序时实现实施例一中的一种内存写入优化方法的步骤。
本申请实施例中的存储器201用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。可以理解,存储器201可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagneticrandom access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous StaticRandom Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous DynamicRandom Access Memory)、增强型同步动态随机存取存储器(ESDRAM,EnhancedSynchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器201旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器202中,或者由处理器202实现。处理器202可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器202可以是通用处理器、DSP(Digital Signal Processing,即指能够实现数字信号处理技术的芯片),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器202可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器201,处理器202读取存储器201中的程序,结合其硬件完成前述方法的步骤。处理器202执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
本发明针对HDFS服务写入过程,由C库申请内存,Java代码直接将网络流中的数据写入到C库,从而减少一次内存拷贝,同时降低C库运行压力,提升C库性能,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
本发明技术方案C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,使得C库能够根据封装的内存空间中数据结构自动识别已写入的内存空间中数据,保证了C库中内存写入准确性以及可靠性。
本发明技术方案中通过设置内存引用计数参数用于动态管理C库中已申请的内存空间,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间,实现内存释放自动管理,方便高效。
实施例四
本发明技术方案还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一中的一种内存写入优化方法的步骤。
例如包括存储计算机程序的存储器201,上述计算机程序可由处理器202执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、FlashMemory、磁表面存储器、光盘、或CD-ROM等存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本发明针对HDFS服务写入过程,由C库申请内存,Java代码直接将网络流中的数据写入到C库,从而减少一次内存拷贝,同时降低C库运行压力,提升C库性能,有效解决由于现有技术造成C库中内存写入耗时长、效率低的问题,有效地降低了C库中内存写入耗时长,提高了C库中内存写入效率。
本发明技术方案C库根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,使得C库能够根据封装的内存空间中数据结构自动识别已写入的内存空间中数据,保证了C库中内存写入准确性以及可靠性。
本发明技术方案中通过设置内存引用计数参数用于动态管理C库中已申请的内存空间,根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间,实现内存释放自动管理,方便高效。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (10)

1.一种内存写入优化方法,其特征是,应用于分布式文件系统服务中,包括:
接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
2.根据权利要求1所述的一种内存写入优化方法,其特征是,将数据包中的数据依次写入已申请的内存空间中具体是:依次读取数据包中的相同大小的数据,并将依次读取的数据包中的相同大小的数据分别写入已申请的内存空间中。
3.根据权利要求1所述的一种内存写入优化方法,其特征是,当前写入参数包括但不限于内存地址、当前写入的内存数据偏移量和当前已写入数据的写入长度。
4.根据权利要求3所述的一种内存写入优化方法,其特征是,内存数据偏移量为内存数据块中当前已写入数据的写入长度与数据包初始写入数据的偏移位置的差值。
5.根据权利要求1所述的一种内存写入优化方法,其特征是,通过设置内存引用计数参数用于动态管理C库中已申请的内存空间。
6.根据权利要求5所述的一种内存写入优化方法,其特征是,还包括:
将待下刷的缓存队列中的内存空间中数据进行下刷;
根据未下刷时的内存引用计数计算当前内存引用计数;
根据当前内存引用计数确定是否从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
7.根据权利要求6所述的一种内存写入优化方法,其特征是,如果当前内存引用计数为预设数值,则从待下刷的缓存队列中移除内存空间中数据,释放内存空间;如果当前内存引用计数不为预设数值,则等待从待下刷的缓存队列中移除内存空间中数据,释放内存空间。
8.一种内存写入优化装置,其特征是,应用于分布式文件系统服务中,包括:
接收模块,接收网络流中待写入内存的数据包,获取数据包中的消息头信息;
申请模块,根据消息头信息获取数据包中数据的长度,在C库中申请与数据包中数据的长度对应的内存空间;
写入模块,将数据包中的数据依次写入已申请的内存空间中,并将当前写入参数传入C库;
封装插入模块,根据接收的写请求以及当前写入参数将内存空间中数据封装,并将封装后的内存空间中数据插入至待下刷的缓存队列,直至数据包中的数据全部插入至待下刷的缓存队列。
9.一种电子设备,其特征是,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的一种内存写入优化方法的步骤。
10.一种计算机可读存储介质,其特征是,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的一种内存写入优化方法的步骤。
CN202111362594.7A 2021-11-17 2021-11-17 一种内存写入优化方法、装置、设备及介质 Withdrawn CN114153599A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111362594.7A CN114153599A (zh) 2021-11-17 2021-11-17 一种内存写入优化方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111362594.7A CN114153599A (zh) 2021-11-17 2021-11-17 一种内存写入优化方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN114153599A true CN114153599A (zh) 2022-03-08

Family

ID=80456532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111362594.7A Withdrawn CN114153599A (zh) 2021-11-17 2021-11-17 一种内存写入优化方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN114153599A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115587070A (zh) * 2022-11-30 2023-01-10 摩尔线程智能科技(北京)有限责任公司 用于管理数值存储的装置、方法、计算设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115587070A (zh) * 2022-11-30 2023-01-10 摩尔线程智能科技(北京)有限责任公司 用于管理数值存储的装置、方法、计算设备及存储介质

Similar Documents

Publication Publication Date Title
CN108564463B (zh) 一种银行异常交易冲正方法及系统
WO2022062833A1 (zh) 内存分配方法及相关设备
US20240106668A1 (en) Proof-of-work operation method, proof-of-work chip, and upper computer
CN108062235B (zh) 数据处理方法及装置
CN111427859A (zh) 一种消息处理方法、装置、电子设备及存储介质
CN114153599A (zh) 一种内存写入优化方法、装置、设备及介质
CN114217738A (zh) 一种动态队列式循环存储方法、装置、设备及介质
CN112286454B (zh) 一种位图同步方法、装置及电子设备和存储介质
CN115827506A (zh) 数据写入方法、数据读取方法、装置、处理核和处理器
US20240045763A1 (en) A data reconstruction method based on erasure coding, an apparatus, a device and a storage medium
CN110955639A (zh) 一种数据处理方法及装置
US20120246264A1 (en) Data Exchange Between Communicating Computing Equipment Using Differential Information
US20230106217A1 (en) Web-end video playing method and apparatus, and computer device
CN111339056B (zh) 一种提高Samba处理大文件写性能的方法及系统
CN111435323B (zh) 信息的传输方法、装置、终端、服务器及存储介质
CN111984591A (zh) 文件存储、读取方法、装置、设备及计算机可读存储介质
CN115599299A (zh) 一种存储桶管理方法、装置及电子设备和存储介质
CN114205115A (zh) 一种数据包处理优化方法、装置、设备及介质
CN113808711A (zh) Dicom文件处理方法、装置、计算机设备和存储介质
CN109947978B (zh) 一种音频存储、播放方法及装置
CN113641512B (zh) 一种Ajax请求的合并处理方法、系统、设备和存储介质
CN111600943A (zh) 一种用于获取目标数据的方法与设备
CN112131193B (zh) 一种应用程序压缩的方法及设备
CN115878351B (zh) 消息的传输方法及装置、存储介质及电子装置
CN111367462B (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
WW01 Invention patent application withdrawn after publication

Application publication date: 20220308

WW01 Invention patent application withdrawn after publication