CN108595270B - 一种内存资源的回收方法及装置 - Google Patents
一种内存资源的回收方法及装置 Download PDFInfo
- Publication number
- CN108595270B CN108595270B CN201810395159.6A CN201810395159A CN108595270B CN 108595270 B CN108595270 B CN 108595270B CN 201810395159 A CN201810395159 A CN 201810395159A CN 108595270 B CN108595270 B CN 108595270B
- Authority
- CN
- China
- Prior art keywords
- message
- service
- resource
- instruction
- storage address
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种内存资源的回收方法及装置,涉及互联网技术领域,所述方法应用于网络设备的处理器,所述处理器包括多个内核,所述方法包括:接收待处理的业务报文,通过第一内核对应的内存资源对所述业务报文进行存储;当接收到业务处理完成后的业务处理响应时,通过所述第一内核构造所述业务报文对应的资源回收指令,所述资源回收指令包括所述业务报文在所述内存资源中的存储地址;根据所述资源回收指令,回收所述存储地址对应的内存资源。采用本发明可以提高回收内存资源的及时性。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种内存资源的回收方法及装置。
背景技术
在报文传输过程中,为了保证报文的内容的安全性,网络中通常设置有安全设备,安全设备会对报文进行安全检测,确认报文合法后将其放行。安全检测主要包括三个过程,即接收报文、业务处理和转发处理。
在对报文进行业务处理的过程中,安全设备的内核模块会将接收到的报文缓存到内存(可称为硬件缓冲区buffer)中,然后上层业务应用对该报文进行安全分析,并在安全分析完成后,对该报文进行安全控制处理。例如,如果确认该报文为合法报文,则对该报文进行转发处理,如果确认该报文为非法报文,则对该报文进行丢弃处理。上层业务应用对该报文进行安全控制处理后,会调用该内核中注册的回调函数,以使内核对该内存进行释放回收。
然而,安全设备的处理器通常采用多核系统,由于多核系统之间CPU (CentralProcessing Unit,中央处理器))的任务调度是随机的,因此,对某报文进行安全控制处理后,可能会调度其他内核模块的任务进行执行,此时,上层业务应用将不会调用该报文对应的内核的回调函数,来释放该报文所占内存,导致内存资源回收不及时。
发明内容
本发明实施例的目的在于提供一种内存资源的回收方法及装置,以实现提高内存资源回收的及时性。具体技术方案如下。
第一方面,提供了一种内存资源的回收方法,所述方法应用于网络设备的处理器,所述处理器包括多个内核,所述方法包括:
接收待处理的业务报文,通过第一内核对应的内存资源对所述业务报文进行存储;
当接收到业务处理完成后的业务处理响应时,通过所述第一内核构造所述业务报文对应的资源回收指令,所述资源回收指令包括所述业务报文在所述内存资源中的存储地址;
根据所述资源回收指令,回收所述存储地址对应的内存资源。
第二方面,提供了一种内存资源的回收装置,所述装置应用于网络设备的处理器,所述处理器包括多个内核,所述装置包括:
存储模块,用于接收待处理的业务报文,通过第一内核对应的内存资源对所述业务报文进行存储;
第一构造模块,用于当接收到业务处理完成后的业务处理响应时,通过所述第一内核构造所述业务报文对应的资源回收指令,所述资源回收指令包括所述业务报文在所述内存资源中的存储地址;
回收模块,用于根据所述资源回收指令,回收所述存储地址对应的内存资源。
第三方面,提供了一种网络设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现第一方面所述的方法步骤。
第四方面,提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现第一方面所述的方法步骤。
本发明提供的上述方案的有益效果在于,网络设备接收到待处理的业务报文后,通过第一内核对应的内存资源对业务报文进行存储,当接收到业务处理完成后的业务处理响应时,通过第一内核构造业务报文对应的资源回收指令,资源回收指令包括业务报文在内存资源中的存储地址,然后根据资源回收指令,回收存储地址对应的内存资源。这样,第一内核可以自动构造资源回收指令,回收该业务报文对应的内存资源,无需等待调度指令,从而提高了回收内存资源的及时性。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存资源的回收方法的流程图;
图2为本发明实施例提供的一种内存资源的回收方法的流程图;
图3为本发明实施例提供的一种内存资源的回收装置的结构示意图;
图4为本发明实施例提供的一种内存资源的回收装置的结构示意图;
图5为本发明实施例提供的一种网络设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种内存资源的回收方法,该方法可以应用于网络设备,该网络设备可以是安全设备(比如防火墙设备)、也可以是路由设备等。该网络设备的处理器包括多个内核,比如第一内核、第二内核等。本发明实施例中,该网络设备的处理器可以为多内核MIPS(Microprocessor without interlocked piped stages,无内部互锁流水级的微处理器)架构CPU。MIPS架构的特点是支持多内核多线程机制,每个内核支持多个硬件线程,在实现的机制上利用多内核多线程完成不同的任务,以达到基本产品需求。本方案基于MIPS架构的多内核特性,实现了一种基于消息还回机制的内存资源的回收方法。
如图1所示,该方法的处理过程可以包括以下步骤。
步骤101,接收待处理的业务报文,通过第一内核对应的内存资源对业务报文进行存储。
在实施中,网络设备可以接收其他设备发送的业务报文,其他设备可以是用户设备,也可以是服务器等其他网络设备。并且,网络设备中可以预先为每个内核分配对应的内存资源(可称为硬件buffer),网络设备可以通过第一内核接收业务报文,将业务报文缓存到硬件buffer中,并记录该业务报文的存储地址。
同时,第一内核还可以为该业务报文分配vFBID(Virtual Free Back ID,虚拟空闲还回标识),vFBID可以作为该业务报文在内存资源中的物理地址的索引值。相应的,第一内核会存储vFBID和物理地址的映射关系,以便于后续查找该物理地址。例如,第一内核会存储vFBID和硬件buffer物理地址的映射关系。
上层业务应用会将该业务报文复制到上层业务应用对应的内存资源(即软件buffer)中,然后从软件buffer中读取该业务报文进行处理。例如,该网络设备为安全设备,上层业务应用可以根据预先存储的安全检测策略,对该业务报文进行安全检测。又如,该网络设备为路由设备,上层业务应用可以根据预先存储的报文转发策略,对该业务报文进行转发处理。
步骤102,当接收到业务处理完成后的业务处理响应时,通过第一内核构造业务报文对应的资源回收指令。
其中,资源回收指令包括业务报文在内存资源中的存储地址,该存储地址可以为物理地址。
在实施中,上层业务应用完成对该业务报文的处理后,会向第一内核发送该业务报文对应的业务处理响应。第一内核接收到业务处理响应后,可以解析该业务处理响应,如果该业务处理响应中包含业务已结束的信息,则第一内核会构造该业务报文对应的资源回收指令。
当网络设备为安全设备时,上层业务应用对业务报文进行安全检测后,会得到该业务报文对应的安全检测结果,进而可以根据该安全检测结果调用第一内核对该业务报文进行安全控制处理,并可以通过第一内核构造该业务报文对应的资源回收指令。其中,针对不同的安全检测结果,处理器的处理过程可以是不同的,具体有以下两种情况。
情况一、如果通过报文发送接口接收到业务处理响应,则处理器在根据资源回收指令,回收存储地址对应的内存资源之前,需要先通过第一内核构造业务报文对应的报文发送指令,然后根据报文发送指令,对存储地址中存储的业务报文进行发送处理。
其中,报文发送指令包括业务报文在内存资源中的存储地址。
在实施中,第一内核中设置有报文发送接口和报文丢弃接口。如果安全检测的检测结果为检测通过,则安全设备需要根据该业务报文中的目的地址,对该业务报文进行转发处理,具体的处理过程可以为:上层业务应用判定安全检测的检测结果为检测通过后,上层业务应用会通过第一内核的报文发送接口,向第一内核发送业务处理响应。第一内核通过报文发送接口接收到业务处理响应后,会同时构造该业务报文对应的报文发送指令,报文发送指令中携带有该业务报文在内存资源中的存储地址和报文长度等信息。
第一内核在构造该业务报文对应的报文发送指令的同时,还可以构造该业务报文对应的资源回收指令,资源回收指令中包含该业务报文在内存资源中的存储地址和报文长度等信息。第一内核可以根据该报文发送指令,对存储地址中存储的业务报文进行发送处理。
可选的,通过第一内核构造业务报文对应的资源回收指令的具体处理过程可以为:调用第一内核上运行的第一硬件线程,根据业务报文在内存资源中的存储地址构造业务报文对应的资源回收指令。
在实施中,网络设备的处理器支持多内核多线程,其中,每个内核可以支持多线程处理。以第一内核为例,第一内核中可以支持4个硬件线程,可分别记为vCPU0、vCPU1、vCPU2和vCPU3。
第一内核通过报文发送接口接收到业务处理响应后,第一内核则会调用第一内核中用于执行报文发送的线程(即第一硬件线程,可记为vCPU1),第一硬件线程可以根据预设的指令封装格式(比如CPU消息格式)、该业务报文在内存资源中的存储地址和报文长度等信息构造报文发送指令。报文发送指令格式的字段分布可以如表一所示。
表一
bit63,62 | bit61 | bit60~54 | bit53~40 | Bit39~0 |
报文发送指令中各字段的内容及含义的示例可以如下:
其中,bit63~62用于描述消息类型(即Type),通过消息类型,可以反映该消息是否为有用消息(即Use Or No)、以及该消息对应的描述信息(即 description)。以下针对bit63~62的不同取值分别进行说明。
当bit63~62的值为00时,表示该消息为无用消息(即NO),且描述信息为P2D_NEOP。P2D_NEOP表示:Pointer-to-Data not end of Point,即指向报文数据的描述符,这不是最后的报文描述符,也可以称为报文非结束符。
当bit63~62的值为01时,表示该消息为无用消息(即NO),且描述信息为P2P。P2P表示:Pointer-to-Pointer,即点到点的传输方式。
当bit63~62的值为10时,表示该消息为有用消息(即Use),且描述信息为P2D_EOP。P2D_EOP表示:Pointer-to-Data end of Point,即指向报文数据的描述符,这是最后的报文描述符,也可以称为报文结束符。
当bit63~62的值为11时,表示该消息为无用消息(即NO),且描述信息为Micro-struct(中文:微型结构)。
bit61表示该消息是否被读取,即RdEx,RdEx表示:Read and Purge(ReadExclusive),即该标志位是读清除。bit61为0,表示该消息未被读取(即NO), bit61为1,表示该消息已被读取(即Used)。
bit60~54为vFBID(Virtual Free Back ID,虚拟空闲还回标识)。其中,FreeBack ID用于解释vFBID,bit60~54可以为该业务报文对应的vFBID,表示该业务报文还未发送,该vFBID为已使用的vFBID(即used),后续根据该 vFBID,确定对应的物理地址,进而以该物理地址为起始地址,读取业务报文; bit60~54全置为1,表示已发送该业务报文,vFBID当前为未使用的ID,或无效的ID(即Unused)。
bit53-40表示该业务报文的长度,bit39-0表示该业务报文在内存资源中的物理地址。当第一硬件线程未发送该业务报文时,该内存资源中的业务报文未读取(即NO);当第一硬件线程已发送该业务报文时,该内存资源中的业务报文已读取(即Used)。
需要说明的是,上述Use Or No和description的内容仅是为了便于理解消息格式,其内容并不属于消息中所包含的内容。
例如,第一内核构造的报文发送指令可以为:bit63~62为10,表示该消息为有用消息(即Use),且该消息的描述信息为P2D_EOP;bit61为0,表示该消息还未被第一硬件线程读取;bit60~54为该业务报文对应的vFBID,以便根据该vFBID,确定对应的物理地址,进而以该物理地址为起始地址,读取业务报文;bit53-40为64,表示业务报文的长度;bit39-0为0xc00000008c707380,表示业务报文的物理地址,该物理地址与vFBID对应的物理地址相同。
需要说明的是,当第一硬件线程发送该业务报文后,第一内核会将该报文发送指令修改为:bit63~62为10,bit61为1,表示该消息已被第一硬件线程读取;bit60~54全部置为1,表示该报文已发送,该字段为无效字段;bit53-40 为64,bit39-0为0xc00000008c707380。
可选的,通过第一内核构造业务报文对应的报文发送指令的具体处理过程可以为:调用第一硬件线程,根据业务报文在内存资源中的存储地址构造业务报文对应的报文发送指令。
在实施中,vCPU1在构造报文发送指令的同时,还可以根据预设的指令封装格式(比如CPU消息格式)、该业务报文在内存资源中的存储地址、以及该业务报文的长度,构造业务报文对应的资源回收指令。资源回收指令的字段分布与报文发送指令相同,如表二所示。
表二
bit63,62 | bit61 | bit60~54 | bit53~40 | Bit39~0 |
资源回收指令中各字段的内容及含义的示例可以如下。
其中,各字节的含义参照上述表一的相关说明,不再赘述。资源回收指令与报文发送指令的区别在于,资源回收指令中,bit60-bit54位用于标记资源回收指令的vFBID,该vFBID可以是预设的字符串或随机生成的字符串; bit39-bit0表示将要回收的业务报文的物理空间地址。
例如,第一内核构造的资源回收指令可以为:bit63~62为10,bit61为1, bit60~54为资源回收指令的vFBID,bit53-40为64,bit39-0为 0xc00000008c707380。
情况二、如果通过报文丢弃接口接收到业务处理响应,则处理器只执行通过第一内核构造业务报文对应的资源回收指令步骤,无需构建报文发送指令。
在实施中,当网络设备为安全设备时,如果安全检测的检测结果为检测未通过,则网络设备会丢弃该业务报文,具体的处理过程可以为:上层业务应用判定安全检测的检测结果为检测未通过后,上层业务应用通过第一内核的报文丢弃接口,向第一内核发送业务处理响应。第一内核通过报文丢弃接口接收到业务处理响应后,构造该业务报文对应的资源回收指令,资源回收指令中携带有该业务报文在内存资源中的存储地址和报文长度等信息。
步骤103,根据资源回收指令,回收存储地址对应的内存资源。
在实施中,第一内核构造该业务报文对应的资源回收指令后,可以执行该资源回收指令,以回收用于存储业务报文的内存资源。具体的,第一内核可以解析资源回收指令,获取该业务报文在内存资源中的存储地址和报文长度,然后根据该存储地址和该报文长度,释放对应的内存资源。
可选的,本发明实施例中可以通过消息还回机制发送资源回收指令,以释放内存资源,相应的,步骤103的处理过程可以如下:通过第一硬件线程将资源回收指令发送给第一内核上运行的第二硬件线程;通过第二硬件线程,将资源回收指令中的存储地址对应的内存资源标记为可用资源。
其中,第一硬件线程与第二硬件线程为不同的线程。
在实施中,第一内核可以调用第一硬件线程构造报文发送指令和资源回收指令,然后,第一硬件线程可以将资源回收指令发送给第一内核上运行的第二硬件线程(可记为vCPU0),vCPU0接收到该资源回收指令后,可以根据该资源回收指令中的存储地址和报文长度,确定对应的内存资源,进而将该内存资源标记为可用资源。
需要说明的是,对于安全检测的检测结果为检测通过的情况,第一内核在构造报文发送指令和资源回收指令后,第一内核需要先根据该报文发送指令,对存储地址中存储的业务报文进行发送处理,然后再根据资源回收指令,回收存储地址对应的内存资源。其中,根据该报文发送指令,对存储地址中存储的业务报文进行发送处理的具体处理过程为:通过第一硬件线程,根据报文发送指令中的存储地址获取业务报文,并发送业务报文。
其中,可以将第一硬件线程设置用于执行报文发送指令,第二硬件线程设置用于执行资源回收指令。
在实施中,处理器的每个内核中可以设置有CMSS(Center Message SwitchSystem,消息交换中心系统),该CMSS可以用于调度各指令,以使该内核按照指令的调度顺序一次执行各指令。CMSS可以根据指令的格式,识别各指令的类型,例如,如果该指令中,bit60-bit54为业务报文对应的vFBID,则说明该指令为报文发送指令,且该业务报文还未发送;bit60-bit54全为1,则说明该指令为报文发送指令,且已完成报文发送;如果该指令中,bit60-bit54为资源回收指令的vFBID,则说明该指令为资源回收指令。
当第一硬件线程构造报文发送指令和资源回收指令后,CMSS可以先调度第一硬件线程执行报文发送指令,第一硬件线程将该报文发送指令发送给第一内核中的DMA(DirectMemory Access,直接内存存取)模块,DMA模块根据报文发送指令中的vFBID,确定对应的物理地址,在内存资源中,以该物理地址作为起始地址,以报文发送指令中的报文长度作为偏移量,读取业务报文,然后再将该业务报文发送到相应的出接口,以完成该业务报文的发送处理。需要说明的是,第一内核发送该业务报文后,会删除该业务报文的vFBID和该业报文在内存资源中的物理地址的映射关系。同时,CMSS还可以调度第一硬件线程将资源回收指令发送给第二硬件线程,以使第二硬件线程接收到该资源回收指令;然后,CMSS再调度第二硬件线程执行资源回收指令,以使第一内核通过第二硬件线程回收该业务报文对应的内存资源。
这样,通过CMSS对指令进行调度,可以保证先发送业务报文再释放该业务报文对应的内存资源。在报文的发送流程中,即便是多个业务报文需要发送,也可以通过CMSS实现对每个业务报文的顺序处理(即发送业务报文后再释放该业务报文对应的内存资源),从而保证了业务的正常运行。
在其他其他可选的实施例中,第一硬件线程构造完报文发送指令和资源回收指令后,还可以将报文发送指令发送给第三硬件线程,将资源回收指令发送给第二硬件线程,此时,将第三硬件线程设置用于执行报文发送指令,第二硬件线程设置用于执行资源回收指令。此时第二硬件线程与第三硬件线程为不同的线程。
由上可知,本方案是将硬件线程与执行指令进行了对应设置,报文发送指令和资源回收指令通过不同的硬件线程执行,以使不同硬件线程执行各自对应的指令,实现不同任务在不同硬件线程中执行,从而使CPU能够有序地执行报文发送和资源回收,从而保证了业务的正常运行。
本发明实施例中,基于消息还回机制的方式来实现对已经发送出去的报文所占用的硬件缓冲区资源进行回收。经过实践证明,该方案能够更高效稳定的完成资源的回收。与现有技术方案进行相比较,该本发明实施例能够充分发挥多内核MIPS架构CPU的资源和功能,并且对各硬件线程的工作任务和功能进行了清晰地划分,能够更好的预防、避免背景技术提到的问题。
另外,与现有技术相比,现有技术应用于mips架构的多核系统时,由于多核系统支持多核同时工作和调度,因此,在业务处理的过程中,多个内核之间的任务调度是随机的,调度顺序完全取决于内核OS的实现。因此,在某一内核处理回收buffer资源的流程中,很可能被调度到其他任务,导致该内核无法及时回收内存资源的情况,同时,还会因为此情况造成内存的踩踏、重写等问题。据此,在实现流程上存在出现重大问题的可能性。而基于本发明实施例提供的内存资源的回收方法,第一内核接收到业务处理完成后的业务处理响应时,第一内核可以自动构造资源回收指令,回收该业务报文对应的内存资源,无需等待调度指令,解决了现有技术中内核无法及时回收内存资源的问题,进而避免了内存的踩踏、重写等问题。
如图2所示,为本发明实施例提供的一种内存资源的回收方法的示例,其中,网络设备通过处理器中的第一内核对业务报文进行处理,该处理器支持4 个硬件线程,可分别记为vCPU0、vCPU1、vCPU2和vCPU3。本示例中,以通过vCPU1转发报文,通过vCPU0回收内存资源为例进行说明,具体的处理过程包括以下步骤。
步骤201,接收待检测的业务报文。
步骤202,通过第一内核对应的内存资源对业务报文进行存储。
步骤203,通过上层业务应用对该业务报文进行安全检测,得到安全检测结果。
步骤204,当安全检测结果为检测通过时,上层业务应用调用报文发送流程。
步骤205,vCPU1构造该业务报文对应的报文发送指令和资源回收指令。
步骤206,CMSS调度vCPU1执行报文发送指令,对业务报文进行转发,并将资源回收指令发送给vCPU0。
步骤207,CMSS调度vCPU0执行资源回收指令,以回收用于存储业务报文的内存资源。
本发明实施例中,网络设备接收到待处理的业务报文后,通过第一内核对应的内存资源对业务报文进行存储,当接收到业务处理完成后的业务处理响应时,通过第一内核构造业务报文对应的资源回收指令,资源回收指令包括业务报文在内存资源中的存储地址,然后根据资源回收指令,回收存储地址对应的内存资源。这样,第一内核可以自动构造资源回收指令,回收该业务报文对应的内存资源,无需等待调度指令,从而提高了回收内存资源的及时性。
基于相同的技术构思,如图3所示,本申请实施例还提供了一种内存资源的回收装置,该装置应用于网络设备的处理器,该处理器包括多个内核,该装置包括:
存储模块310,用于接收待处理的业务报文,通过第一内核对应的内存资源对业务报文进行存储;
第一构造模块320,用于当接收到业务处理完成后的业务处理响应时,通过第一内核构造业务报文对应的资源回收指令,资源回收指令包括业务报文在内存资源中的存储地址;
回收模块330,用于根据资源回收指令,回收存储地址对应的内存资源。
可选的,如果通过报文发送接口接收到业务处理响应,如图4所示,该装置还包括:
第二构造模块340,用于通过第一内核构造业务报文对应的报文发送指令,报文发送指令包括业务报文在内存资源中的存储地址;
发送模块350,用于根据报文发送指令,对存储地址中存储的业务报文进行发送处理。
可选的,第一构造模块320,具体用于:
调用第一内核上运行的第一硬件线程,根据业务报文在内存资源中的存储地址构造业务报文对应的资源回收指令;
第二构造模块340,具体用于:
调用第一硬件线程,根据业务报文在内存资源中的存储地址构造业务报文对应的报文发送指令。
可选的,回收模块330,具体用于:
通过第一硬件线程将资源回收指令发送给第一内核上运行的第二硬件线程;
通过第二硬件线程,将资源回收指令中的存储地址对应的内存资源标记为可用资源。
可选的,发送模块350,具体用于:
通过第一硬件线程,根据报文发送指令中的存储地址获取业务报文,并发送业务报文。
本发明实施例中,网络设备接收到待处理的业务报文后,通过第一内核对应的内存资源对业务报文进行存储,当接收到业务处理完成后的业务处理响应时,通过第一内核构造业务报文对应的资源回收指令,资源回收指令包括业务报文在内存资源中的存储地址,然后根据资源回收指令,回收存储地址对应的内存资源。这样,第一内核可以自动构造资源回收指令,回收该业务报文对应的内存资源,无需等待调度指令,从而提高了回收内存资源的及时性。
本申请实施例还提供了一种网络设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,以使该网络设备执行如下步骤,该步骤包括:
接收待处理的业务报文,通过第一内核对应的内存资源对所述业务报文进行存储;
当接收到业务处理完成后的业务处理响应时,通过所述第一内核构造所述业务报文对应的资源回收指令,所述资源回收指令包括所述业务报文在所述内存资源中的存储地址;
根据所述资源回收指令,回收所述存储地址对应的内存资源。
可选的,如果通过报文发送接口接收到所述业务处理响应,则所述根据所述资源回收指令,回收所述存储地址对应的内存资源之前,还包括:
通过所述第一内核构造所述业务报文对应的报文发送指令,所述报文发送指令包括所述业务报文在所述内存资源中的存储地址;
根据所述报文发送指令,对所述存储地址中存储的所述业务报文进行发送处理。
可选的,所述通过所述第一内核构造所述业务报文对应的资源回收指令,包括:
调用所述第一内核上运行的第一硬件线程,根据所述业务报文在所述内存资源中的存储地址构造所述业务报文对应的资源回收指令;
所述通过所述第一内核构造所述业务报文对应的报文发送指令,包括:
调用所述第一硬件线程,根据所述业务报文在所述内存资源中的存储地址构造所述业务报文对应的报文发送指令。
可选的,所述根据所述资源回收指令,回收所述存储地址对应的内存资源,包括:
通过所述第一硬件线程将所述资源回收指令发送给所述第一内核上运行的第二硬件线程;
通过所述第二硬件线程,将所述资源回收指令中的存储地址对应的内存资源标记为可用资源。
可选的,所述根据所述报文发送指令,对所述存储地址中存储的所述业务报文进行发送处理,包括:
通过所述第一硬件线程,根据所述报文发送指令中的存储地址获取所述业务报文,并发送所述业务报文。
机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本发明实施例中,网络设备接收到待处理的业务报文后,通过第一内核对应的内存资源对业务报文进行存储,当接收到业务处理完成后的业务处理响应时,通过第一内核构造业务报文对应的资源回收指令,资源回收指令包括业务报文在内存资源中的存储地址,然后根据资源回收指令,回收存储地址对应的内存资源。这样,第一内核可以自动构造资源回收指令,回收该业务报文对应的内存资源,无需等待调度指令,从而提高了回收内存资源的及时性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.一种内存资源的回收方法,其特征在于,所述方法应用于网络设备的处理器,所述处理器包括多个内核,所述方法包括:
接收待处理的业务报文,通过第一内核对应的内存资源对所述业务报文进行存储;
当接收到业务处理完成后的业务处理响应时,通过所述第一内核构造所述业务报文对应的资源回收指令,所述资源回收指令包括所述业务报文在所述内存资源中的存储地址;
通过所述第一内核,根据所述资源回收指令,回收所述存储地址对应的内存资源;
如果通过报文发送接口接收到所述业务处理响应,则所述根据所述资源回收指令,回收所述存储地址对应的内存资源之前,还包括:
通过所述第一内核构造所述业务报文对应的报文发送指令,所述报文发送指令包括所述业务报文在所述内存资源中的存储地址;
根据所述报文发送指令,对所述存储地址中存储的所述业务报文进行发送处理。
2.根据权利要求1所述的方法,其特征在于,所述通过所述第一内核构造所述业务报文对应的资源回收指令,包括:
调用所述第一内核上运行的第一硬件线程,根据所述业务报文在所述内存资源中的存储地址构造所述业务报文对应的资源回收指令;
所述通过所述第一内核构造所述业务报文对应的报文发送指令,包括:
调用所述第一硬件线程,根据所述业务报文在所述内存资源中的存储地址构造所述业务报文对应的报文发送指令。
3.根据权利要求2所述的方法,其特征在于,所述根据所述资源回收指令,回收所述存储地址对应的内存资源,包括:
通过所述第一硬件线程将所述资源回收指令发送给所述第一内核上运行的第二硬件线程;
通过所述第二硬件线程,将所述资源回收指令中的存储地址对应的内存资源标记为可用资源。
4.根据权利要求2所述的方法,其特征在于,所述根据所述报文发送指令,对所述存储地址中存储的所述业务报文进行发送处理,包括:
通过所述第一硬件线程,根据所述报文发送指令中的存储地址获取所述业务报文,并发送所述业务报文。
5.一种内存资源的回收装置,其特征在于,所述装置应用于网络设备的处理器,所述处理器包括多个内核,所述装置包括:
存储模块,用于接收待处理的业务报文,通过第一内核对应的内存资源对所述业务报文进行存储;
第一构造模块,用于当接收到业务处理完成后的业务处理响应时,通过所述第一内核构造所述业务报文对应的资源回收指令,所述资源回收指令包括所述业务报文在所述内存资源中的存储地址;
回收模块,用于通过所述第一内核,根据所述资源回收指令,回收所述存储地址对应的内存资源;
如果通过报文发送接口接收到所述业务处理响应,所述装置还包括:
第二构造模块,用于通过所述第一内核构造所述业务报文对应的报文发送指令,所述报文发送指令包括所述业务报文在所述内存资源中的存储地址;
发送模块,用于根据所述报文发送指令,对所述存储地址中存储的所述业务报文进行发送处理。
6.根据权利要求5所述的装置,其特征在于,所述第一构造模块,具体用于:
调用所述第一内核上运行的第一硬件线程,根据所述业务报文在所述内存资源中的存储地址构造所述业务报文对应的资源回收指令;
所述第二构造模块,具体用于:
调用所述第一硬件线程,根据所述业务报文在所述内存资源中的存储地址构造所述业务报文对应的报文发送指令。
7.根据权利要求6所述的装置,其特征在于,所述回收模块,具体用于:
通过所述第一硬件线程将所述资源回收指令发送给所述第一内核上运行的第二硬件线程;
通过所述第二硬件线程,将所述资源回收指令中的存储地址对应的内存资源标记为可用资源。
8.根据权利要求6所述的装置,其特征在于,所述发送模块,具体用于:
通过所述第一硬件线程,根据所述报文发送指令中的存储地址获取所述业务报文,并发送所述业务报文。
9.一种网络设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-4任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395159.6A CN108595270B (zh) | 2018-04-27 | 2018-04-27 | 一种内存资源的回收方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395159.6A CN108595270B (zh) | 2018-04-27 | 2018-04-27 | 一种内存资源的回收方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595270A CN108595270A (zh) | 2018-09-28 |
CN108595270B true CN108595270B (zh) | 2021-07-23 |
Family
ID=63610882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810395159.6A Active CN108595270B (zh) | 2018-04-27 | 2018-04-27 | 一种内存资源的回收方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595270B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144736A (zh) * | 2018-09-30 | 2019-01-04 | 新华三信息安全技术有限公司 | 一种输出警告消息的方法及装置 |
CN113672416B (zh) * | 2021-07-27 | 2024-03-01 | 杭州迪普科技股份有限公司 | 硬buffer泄漏的原因定位方法及装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101083611B (zh) * | 2006-05-30 | 2010-05-12 | 中兴通讯股份有限公司 | 使用颜色标识l-lsp隧道报文转发优先级的装置 |
CN100487660C (zh) * | 2007-05-28 | 2009-05-13 | 中兴通讯股份有限公司 | 一种多线程处理器动态内存管理系统及方法 |
CN101068416A (zh) * | 2007-06-08 | 2007-11-07 | 北京恒宝信息技术有限公司 | 一种用于多模智能卡操作系统的方法及装置 |
CN101197786B (zh) * | 2008-01-02 | 2011-05-11 | 杭州华三通信技术有限公司 | 缓存管理方法和缓存管理系统 |
CN101789959B (zh) * | 2009-12-30 | 2013-05-08 | 北京天融信科技有限公司 | 一种多核系统中的skb重用方法及装置 |
CN102306126B (zh) * | 2011-08-24 | 2014-06-04 | 华为技术有限公司 | 内存管理方法、装置和系统 |
US9026860B2 (en) * | 2012-07-31 | 2015-05-05 | International Business Machines Corpoation | Securing crash dump files |
CN104050137B (zh) * | 2013-03-13 | 2018-02-09 | 华为技术有限公司 | 一种异构操作系统中内核运行的方法及装置 |
US9600369B2 (en) * | 2013-12-10 | 2017-03-21 | Huawei Technologies Co., Ltd. | Operating system recovery method and apparatus, and terminal device |
CN104461731B (zh) * | 2014-10-23 | 2018-06-15 | 新华三技术有限公司 | 一种动态资源扩展中虚拟机资源回收方法和装置 |
CN105939293B (zh) * | 2016-01-22 | 2019-01-22 | 杭州迪普科技股份有限公司 | 一种skb回收方法及装置 |
CN105930280B (zh) * | 2016-05-27 | 2019-07-05 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
CN105978985B (zh) * | 2016-06-07 | 2019-03-05 | 华中科技大学 | 一种用户态RPC over RDMA的内存管理方法 |
US10230398B2 (en) * | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
CN106375240B (zh) * | 2016-09-18 | 2019-09-20 | 深圳震有科技股份有限公司 | 一种多网口间以太网报文转发方法及系统 |
CN107220076B (zh) * | 2016-09-27 | 2018-10-30 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN106572036A (zh) * | 2016-11-09 | 2017-04-19 | 杭州迪普科技股份有限公司 | 一种套接字缓存skb管理方法及装置 |
CN106843756B (zh) * | 2017-01-13 | 2019-12-31 | 中国科学院信息工程研究所 | 基于页面分类的内存页面回收方法及系统 |
-
2018
- 2018-04-27 CN CN201810395159.6A patent/CN108595270B/zh active Active
Non-Patent Citations (2)
Title |
---|
内存网格调度方法分析;卢俊文等;《厦门理工学院学报》;20150630;第23卷(第3期);第75-79段 * |
动态分区存储管理方式的模拟;黄祖贤;《安徽工业大学学报(社会科学版)》;20150430;第32卷(第2期);第103-104页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108595270A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108712459B (zh) | 协议报文跨层通信方法、装置及电子设备 | |
CN105511954B (zh) | 一种报文处理方法及装置 | |
CN113326155B (zh) | 一种信息处理方法、装置、系统和存储介质 | |
WO2018049873A1 (zh) | 一种应用调度方法及装置 | |
JP2007079789A (ja) | 計算機システム及びイベント処理方法 | |
TW201237632A (en) | Buffer management scheme for a network processor | |
CN110636124B (zh) | Vpp集群管理方法及装置、电子设备及存储介质 | |
WO2020157594A1 (en) | Handling an input/output store instruction | |
CN108595270B (zh) | 一种内存资源的回收方法及装置 | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
US10212259B2 (en) | Management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments | |
CN105610730B (zh) | Cpu与网络设备之间的消息交互方法及系统 | |
CN111190854A (zh) | 通信数据处理方法、装置、设备、系统和存储介质 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN109495404B (zh) | 一种报文处理方法、装置、交换机设备及存储介质 | |
CN115794317B (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN109062781B (zh) | 一种报文缓冲区管理方法及装置 | |
US11556345B2 (en) | Detecting and recovering lost adjunct processor messages | |
US8214448B2 (en) | Optimized utilization of DMA buffers for incoming data packets in a network protocol | |
CN113886082A (zh) | 请求处理方法、装置、计算设备及介质 | |
CN111352710B (zh) | 进程管理方法及装置、计算设备、存储介质 | |
CN110647493B (zh) | 一种数据传输方法、处理器和pcie系统 | |
CN109344091B (zh) | 一种缓冲数组规整方法、装置、终端及可读介质 | |
JP2003219441A5 (zh) | ||
CN113704297B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |