内存池中内存块的处理方法、装置、电子设备和存储介质制造方法及图纸

技术编号:29988132 阅读:19 留言:0更新日期:2021-09-11 04:24
本发明专利技术实施例提供了一种内存池中内存块的处理方法、装置、电子设备和存储介质,对内存池中每一内存块中设置数据开头结构和数据结尾结构。其中,数据开头结构中包括内存块的占用信息和标识内存块的数据存储结构起始位置的开头标记;数据结尾结构中包括标识数据存储结构终止位置的结尾标记。通过占用信息能够确定当前占用内存块的任务或应用程序和/或当前的任务或应用程序占用内存块的占用时长,从而根据占用信息能够定位可能存在泄漏问题的内存块。根据开头标记和/或结尾标记是否被覆盖能够对内存块是否存在写越界进行判断。能够对内存块是否存在写越界进行判断。能够对内存块是否存在写越界进行判断。

【技术实现步骤摘要】
内存池中内存块的处理方法、装置、电子设备和存储介质


[0001]本专利技术涉及通信
,尤其是涉及一种内存池中内存块的处理方法、装置、电子设备和存储介质。

技术介绍

[0002]在系统底层,可以采用“内存池和内存块”的方式处理内存使用问题。例如,在5G(5th Generation Mobile Communication System,第五代移动通信系统)NR(New Radio,新空口)基站系统中,系统底层基本采用DPDK(Data Plane Development Kit数据面开发套件)实现以太报文的收发功能。其中,DPDK是使用内存池作为固定大小mbuf(存储器缓存,即内存块)的分配器的,其在数据平面应用中为快速的数据包处理提供了一个简单的完善的软件架构。
[0003]然而,现有的采用“内存池和内存块”处理内存使用问题的过程中,缺少对应的保护和问题定位的手段,当使用内存块的过程中出现写越界,或者内存池中的内存块存在泄漏等问题时很难定位。

技术实现思路

[0004]本专利技术实施例提供一种内存池中内存块的处理方法、装置、电子设备和存储介质,用以解决现有技术中当使用内存块的过程中出现写越界,或者内存池中的内存块存在泄漏等问题时很难定位的问题。
[0005]针对以上技术问题,第一方面,本专利技术实施例提供一种内存池中内存块的处理方法,包括:
[0006]获取创建内存池时,分配到所述内存池的内存块;
[0007]在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
[0008]其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
[0009]第二方面,本专利技术实施例提供一种内存池中内存块的处理装置,包括:
[0010]获取模块,用于获取创建内存池时,分配到所述内存池的内存块;
[0011]处理模块,用于在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;
[0012]其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置
的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。
[0013]第三方面,本专利技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以上所述的内存池中内存块的处理方法的步骤。
[0014]第四方面,本专利技术实施例提供一种非暂态可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以上任一项所述的内存池中内存块的处理方法的步骤。
[0015]本专利技术的实施例提供一种内存池中内存块的处理方法、装置、电子设备和存储介质,对内存池中每一内存块中设置数据开头结构和数据结尾结构。其中,数据开头结构中包括内存块的占用信息和标识内存块的数据存储结构起始位置的开头标记;数据结尾结构中包括标识数据存储结构终止位置的结尾标记。通过占用信息能够确定当前占用内存块的任务或应用程序和/或当前的任务或应用程序占用内存块的占用时长,从而根据占用信息能够定位可能存在泄漏问题的内存块。根据开头标记和/或结尾标记是否被覆盖能够对内存块是否存在写越界进行判断。
附图说明
[0016]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0017]图1是本专利技术实施例提供的作为对比的内存池和内存块结构示意图;
[0018]图2是本专利技术一实施例提供的内存池中内存块的处理方法的流程示意图;
[0019]图3是本专利技术一实施例提供的内存池和内存块结构示意图;
[0020]图4是本专利技术一实施例提供的内存块数据发送的流程示意图;
[0021]图5是本专利技术一实施例提供的内存块分配的流程示意图;
[0022]图6是本专利技术一实施例提供的内存块接收的流程示意图;
[0023]图7是本专利技术一实施例提供的内存块释放的流程示意图;
[0024]图8是本专利技术一实施例提供的内存池中内存块的处理装置的结构框图;
[0025]图9是本专利技术一实施例提供的电子设备的实体结构图。
具体实施方式
[0026]为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0027]现以DPDK为例,对DPDK、内存池的结构,以及内存池中内存块的结构进行介绍。DPDK使用标准大页作为其内存分配的基础,DPDK有着复杂的机制用于管理DPDK获取的大页内存。DPDK使用内存池作为固定大小内存块的分配器,使用固定大小内存块来存放网卡中收到的数据,发送数据时将数据写到固定大小的内存块中交由网卡发送出去。
[0028]图1是本实施例提供的作为对比的内存池和内存块结构示意图,参见图1,图1上方由mbuf(即内存块)组成的结构表示内存池,内存池是由指定数量的内存块组成的。内存池中拥有内存块的个数是在创建内存池时指定的。具体来说,创建内存池时根据需要创建的内存池大小,确定内存池中内存块的数量。每一个mbuf的结构如图1下方显示,包括mbuf的头部结构、数据存储结构data和尾部结构tail。头部结构包括begin、structrte_mbuf和head room。其中,数据存储结构data是存放数据的空间。尾部结构tail用于内存块cache line对齐。在头部结构中,begin中存放内存池所需链表结构;struct rte_mbuf是每一个内存块的记录和管理结构;headroom是内存块在数据存储结构data前的预留空间。
[0029]在DPDK中,在对创建了内存池,对内存池初始化后,使用到内存块的操作有内存块分配、内存块释放、内存块中数据的发送和内存块中数据的接收。然而,基于图1所示的内存块的结构,在使用内存块的过程中无法定位可能存在泄漏问题的内存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存池中内存块的处理方法,其特征在于,包括:获取创建内存池时,分配到所述内存池的内存块;在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的数据存储结构之间,所述数据结尾结构设置在所述数据存储结构和内存块的尾部结构之间;其中,所述数据开头结构中包括占用内存块存储资源的占用信息和标识所述数据存储结构起始位置的开头标记;所述数据结尾结构中包括标识所述数据存储结构终止位置的结尾标记;占用信息包括占用内存块的占用者的标识信息、占用者在内存块中存储的数据所占用的存储容量和/或占用者占用内存块的占用时间。2.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:根据各内存块的占用信息确定当前占用各内存块的占用者,根据当前占用各内存块的占用者确定每一占用者所占用内存块的数量,对所占用内存块的数量大于预设数量的占用者添加第一标记,显示当前占用各内存块的占用者和添加了所述第一标记的占用者;和/或,根据各内存块的占用信息确定各内存块被当前的占用者占用的占用时长,获取占用时长大于预设时长的内存块,作为目标内存块,对占用各目标内存块的占用者添加第二标记,显示各内存块被当前的占用者占用的占用时长和添加了所述第二标记的占用者;和/或,对各内存块的开头标记和/或结尾标记是否被覆盖进行检测,对检测的开头标记和/或结尾标记被覆盖的内存块添加第三标记,显示添加了第三标记的内存块;其中,占用者为占用内存块的任务和/或应用程序。3.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:若需执行对第一数据进行发送的第一任务,则根据所述第一任务确定存储所述第一数据的第一内存块和对所述第一数据进行发送的发送者,在第一内存块的数据开头结构中的占用信息中添加所述发送者的标识信息;若检测到所述第一内存块中的开头标记和/或结尾标记否被覆盖,则向所述发送者返回提示信息,否则,发送所述第一数据;所述提示信息用于提示所述第一数据的存储位置越界,所述第一数据发送失败;其中,发送者为所述第一任务和/或发起所述第一任务的应用程序。4.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:若需执行对第二数据进行缓存的第二任务,则从所述内存池中未被占用的内存块中,确定用于缓存所述第二数据的第二内存块;将所述第二任务和/或发起所述第二任务的应用程序作为占用所述第二内存块的目标占用者,在各所述第二内存块的数据开头结构中的占用信息中添加所述目标占用者的标识信息,并在各所述第二内存块中写入所述第二数据。5.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,还包括:对所述内存池中任一第三内存块,在对所述第三内存块中缓存的第三数据进行发送后和/或在调用了所述第三数据后,释放所述第三内存块并清除所述第三内存块的数据开头结构中存储的占用信息。6.根据权利要求1所述的内存池中内存块的处理方法,其特征在于,所述数据开头结构中还包括内存块的属性信息;
其中,属性信息包括内存块在内存池中的序号和内存块的最大存储容量。7.一种内存池中内存块的处理装置,其特征在于,包括:获取模块,用于获取创建内存池时,分配到所述内存池的内存块;处理模块,用于在每一内存块中设置数据开头结构和数据结尾结构,所述数据开头结构设置在内存块的头部结构和内存块的...

【专利技术属性】
技术研发人员:赵木华韩森林坤
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:

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

1