CN109062781B - 一种报文缓冲区管理方法及装置 - Google Patents

一种报文缓冲区管理方法及装置 Download PDF

Info

Publication number
CN109062781B
CN109062781B CN201810666218.9A CN201810666218A CN109062781B CN 109062781 B CN109062781 B CN 109062781B CN 201810666218 A CN201810666218 A CN 201810666218A CN 109062781 B CN109062781 B CN 109062781B
Authority
CN
China
Prior art keywords
message buffer
buffer area
holder information
message
total
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
Application number
CN201810666218.9A
Other languages
English (en)
Other versions
CN109062781A (zh
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.)
Beijing Star Net Ruijie Networks Co Ltd
Original Assignee
Beijing Star Net Ruijie Networks 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 Beijing Star Net Ruijie Networks Co Ltd filed Critical Beijing Star Net Ruijie Networks Co Ltd
Priority to CN201810666218.9A priority Critical patent/CN109062781B/zh
Publication of CN109062781A publication Critical patent/CN109062781A/zh
Application granted granted Critical
Publication of CN109062781B publication Critical patent/CN109062781B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种报文缓冲区管理方法,该方法包括:当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;按照预设周期对所述总报文缓冲区进行检测;当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区。本发明能够解决现有技术中报文缓冲区无法高效回收造成***异常的问题。

Description

一种报文缓冲区管理方法及装置
技术领域
本发明涉及计算机技术领域,尤指一种报文缓冲区管理方法及装置。
背景技术
报文缓冲区是指报文的载体,是用来缓存网卡收到的报文帧的一段内存。报文缓冲区分配方式按分配的时机分类,可分为动态分配方式和预先分配方式。其中,动态分配方式是指在准备接收下一新帧时通过操作***提供的报文缓冲区申请接口,为接收描述符分配缓冲区;需要缓冲区时才进行分配,具有内存开销小的优点,但需要动态地分配内存,因此CPU开销比较大。预先分配方式是指在网络初始化时预先分配一定数量的报文缓冲区放入缓冲区池中,准备接收下一新帧时,从缓冲池中为接收描述符分配缓冲区;这种实现方式因为采用预留内存的方式,启机阶段内存使用率会高一些,但是缓冲区的分配性能会更好。
报文缓冲区资源泄露,是指报文缓冲区在使用完后,没有回收到空闲缓冲区池中或者是没有回收内存,相当于内存泄露。
目前最常用的报文缓冲管理方法有Linux***下的报文缓冲区管理和数据平面开发套件(Data Plane Development Kit,DPDK)。
Linux的报文处理在内核,驱动每接收到一个报文,都是直接调用skb_alloc接口,从专用缓冲区中申请一个报文缓冲区,其是采用动态分配报文缓冲区的机制。Linux的转发***如果发生套接字缓冲区(socket buffer,SKB)泄露,就会导致***内存泄露,内存使用率上升,最后***没空闲的内存可用,导致***异常。
DPDK是运行在用户空间的数据平面开发套件,这个开发套件提供了报文缓冲区(mbuf)的报文缓冲区管理机制。DPDK的驱动收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入mbuf所对应的内存,mbuf是采用预先分配的方式。基于DPDK实现的报文转发***,如果mbuf资源在使用后,没有被及时回收,导致mbuf空闲池中没有可用的mbuf,就会导致***报文转发异常。
然而,无论对于预先分配方式还是动态分配方式的报文缓冲区管理方式,目前都没有高效的内存回收技术以防止内存泄露造成的***异常。
发明内容
本发明实施例提供一种报文缓冲区管理方法及装置,用以解决现有技术中报文缓冲区无法高效回收造成***异常的问题。
一种报文缓冲区管理方法,所述方法包括:
当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;
按照预设周期对所述总报文缓冲区进行检测;
当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区。
进一步地,所述方法,还包括:
扩展所述总报文缓冲区的控制信息,增加持有者信息字段和时间戳字段;
将所述持有者信息字段初始化为预设持有者信息;
其中,所述持有者信息字段,用于记录当前持有对应的报文缓冲区的业务信息;所述时间戳字段,用于记录最近一次更新对应的报文缓冲区的时间戳。
进一步地,所述方法,还包括:
当所述业务进程释放与所述业务进程对应的报文缓冲区时,回收所述与所述业务进程对应的报文缓冲区,并将所述与所述业务进程对应的报文缓冲区的持有者信息更新为预设持有者信息,将所述与所述业务进程对应的报文缓冲区的时间戳更新为当前最新时间。
进一步地,所述方法,还包括:
根据所述总报文缓冲区的持有者信息,显示总报文缓冲区资源的分布情况。
进一步地,所述按照预设周期对总报文缓冲区进行检测,包括:
按照预设周期检测所述总报文缓冲区中空闲的报文缓冲区个数;
当所述空闲的报文缓冲区个数小于第一阈值时,遍历检测所述总报文缓冲区中每个报文缓冲区的持有者信息和时间戳。
进一步地,当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区,包括:
当所述第一报文缓冲区的个数超过第二阈值时,查询所述第一报文缓冲区的持有者信息;
当具有相同持有者信息的第一报文缓冲区的个数超过第三阈值时,则触发所述持有者信息对应的业务进程重启以回收所述第一报文缓冲区。
一种报文缓冲区管理装置,所述装置包括:分配单元和检测单元以及回收单元;其中,
所述分配单元,用于当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;
所述检测单元,用于按照预设周期对所述总报文缓冲区进行检测;
所述回收单元,用于当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区。
进一步地,所述装置,还包括:扩展单元,用于扩展所述总报文缓冲区的控制信息,增加持有者信息字段和时间戳字段;将所述持有者信息字段初始化为预设持有者信息;其中,所述持有者信息字段,用于记录当前持有对应的报文缓冲区的业务信息;所述时间戳字段,用于记录最近一次更新对应的报文缓冲区的时间戳。
进一步地,所述回收单元,还用于当所述业务进程释放与所述业务进程对应的报文缓冲区时,回收所述与所述业务进程对应的报文缓冲区,并将所述与所述业务进程对应的报文缓冲区的持有者信息更新为预设持有者信息,将所述与所述业务进程对应的报文缓冲区的时间戳更新为当前最新时间。
进一步地,所述装置,还包括:显示单元,用于根据所述总报文缓冲区的持有者信息,显示总报文缓冲区资源的分布情况。
进一步地,所述检测单元,具体用于按照预设周期检测所述总报文缓冲区池中空闲的报文缓冲区个数;当所述空闲的报文缓冲区个数小于第一阈值时,遍历检测所述总报文缓冲区中每个报文缓冲区的持有者信息和时间戳。
进一步地,所述回收单元,具体用于当所述第一报文缓冲区的个数超过第二阈值时,查询所述第一报文缓冲区的持有者信息;
当具有相同持有者信息的第一报文缓冲区的个数超过第三阈值时,则触发所述持有者信息对应的业务进程重启以回收所述第一报文缓冲区。
本发明有益效果如下:
本发明实施例提供的报文缓冲区管理方法及装置,通过在为业务进程分配报文缓冲区时,增加报文缓冲区的持有者信息,通过该持有者信息能够呈现出来报文缓冲区的分布情况;并增加报文缓冲区的时间戳,通过检测所述持有者信息和时间戳,确定报文缓冲区是否存在泄露,并在检测到报文缓冲区发生泄露,能通过重启当前泄露的报文缓冲区对应的业务进程,回收该业务进程对应的泄露的报文缓冲区,实现自恢复,并提升了***的可靠性和容错性。
附图说明
图1为本发明实施例中报文缓冲区管理方法的流程示意图;
图2为本发明实施例报文缓冲区管理方法中步骤102的流程示意图;
图3为本发明实施例报文缓冲区管理方法中步骤103的流程示意图;
图4为本发明实施例一报文缓冲区预分配机制的指针数组示意图;
图5为本发明实施例一报文缓冲区管理方法中持有者信息和时间戳更新示意图;
图6为本发明实施例一报文缓冲区管理方法中报文缓冲区自恢复过程示意图;
图7为本发明实施例中报文缓冲区管理装置的结构示意图。
具体实施方式
针对现有技术中存在的报文缓冲区无法高效回收造成***异常的问题,本发明实施例提供的报文缓冲区管理方法,其基本原理是通过扩展报文缓冲区的控制信息,增加用于表示当前持有报文缓冲区的持有者信息和时间戳,当业务进程申请报文缓冲区时,为业务进程分配报文缓冲区的同时,将所分配的报文缓冲区的持有者信息更新为该业务进程的标识ID,并将时间戳更新为当前最新时间,能够通过查询持有者信息呈现出来报文缓冲区资源在当前***的分布情况;通过时间戳则能够快速准确地判断当前***是否存在报文缓冲区资源泄露等情况。
本发明实施例提供的报文缓冲区管理方法的流程如图1所示,执行步骤如下:
步骤101,当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;
步骤102,按照预设周期对所述总报文缓冲区进行检测;
步骤103,当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区。
这里,所述预设持有者信息用于表征报文缓冲区未被任何业务进程持有,即处于空闲状态;所述第一预设时长可以根据内存资源、业务需求及报文回收周期进行设定,通常可以为15s,并可根据网络设备等性能通过命令进行修订。
进一步地,所述方法,还包括:
扩展所述总报文缓冲区的控制信息,增加持有者信息字段和时间戳字段;
将所述持有者信息初始化为预设持有者信息;
其中,所述持有者信息字段为一个短整型字段,用于记录当前持有对应的报文缓冲区的业务信息,例如可以为一个U16数据类型的owner字段;所述时间戳字段为一个长整型字段,用于记录最近一次更新对应的报文缓冲区的时间戳,例如可以为一个unsignedlong数据类型的tstamp字段。
进一步地,所述方法还包括:
当所述业务进程释放与所述业务进程对应的报文缓冲区时,回收所述与所述业务进程对应的报文缓冲区,并将所述与所述业务进程对应的报文缓冲区的持有者信息更新为预设持有者信息,将所述与所述业务进程对应的报文缓冲区的时间戳更新为当前最新时间。
进一步地,当用户需要查看报文缓冲区资源在当前***的分布情况时,所述方法还包括:根据所述总报文缓冲区的持有者信息,显示总报文缓冲区资源的分布情况。
图2示出了本发明实施例报文缓冲区管理方法中步骤102的流程示意图,如图2所示,当报文缓冲区资源采用预分配机制时,所述总报文缓冲区可以包括多个报文缓冲区,则步骤102,按照预设周期对总报文缓冲区进行检测,包括:
步骤1021,按照预设周期检测所述总报文缓冲区中空闲的报文缓冲区个数;
具体地,可通过检测报文缓冲区的持有者信息,当所述持有者信息为预设持有者信息时,表明该报文缓冲区处于空闲状态,即该报文缓冲区可用。
步骤1022,当所述空闲的报文缓冲区个数小于第一阈值时,遍历检测所述总报文缓冲区中每个报文缓冲区的持有者信息和时间戳。
这里,所述第一阈值可以根据报文缓冲区池中报文缓冲区的总数确定,例如可以为总数的四分之一等等,具体可根据实际需要进行确定。
本发明实施例中,可以定义一组一维指针数组用以记录报文缓冲区池的地址,如此,则可通过按照预设周期遍历所有报文缓冲区池的指针数组即可实现检测。
图3示出了本发明实施例报文缓冲区管理方法中步骤103的流程示意图,如图3所示,步骤103,当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区,包括:
步骤1031,当所述第一报文缓冲区的个数超过第二阈值时,查询所述第一报文缓冲区的持有者信息;
这里,当所述第一缓冲区个数超过第二阈值,表征当前的报文缓冲区的资源已经泄露到一个告警水线,例如可以为总报文缓冲区中报文缓冲区的总数的二分之一,此时表明需要回收的报文缓冲区较多。
应当理解,若所述第一报文缓冲区个数未超过第二阈值,则可分别对所述第一报文缓冲区直接进行回收。
步骤1032,当具有相同持有者信息的第一报文缓冲区的个数超过第三阈值时,则触发所述持有者信息对应的业务进程重启以回收所述第一报文缓冲区。
具有相同持有者信息的第一报文缓冲区表示该些第一报文缓冲区均被分配给了同一个业务进程。当一个业务进程发生资源泄漏的报文缓冲区个数超过第三阈值,则说明该业务进程异常,可以通过重启该业务进程进行回收;业务进程重启则该业务进程持有的报文缓冲区也会被重新释放,如此,实现将该业务进程持有的报文缓冲区全部回收,达到资源泄露自恢复的目的。这里,所述第三阈值可以小于或等于第二阈值。
为保证网络设备的高性能转发,下面以报文缓冲区采用预分配方式,应用在报文转发***为例,对本发明实施例一提供的报文缓冲区管理方法进行详细说明。
本发明实施例一中报文缓冲区资源采用预分配机制,不同型号的网络设备报文缓冲区资源的预留个数往往是不相同的,这些资源预留往往需要结合该网络设备的实际内存情况和整机转发带宽进行考虑,本实施例按照***预留N个报文缓冲区资源进行描述。
通过定义一个成员下标为N的一维指针数组来记录报文缓冲区的地址。具体参考图4,该指针数组记录了***预申请的N个报文缓冲区资源的地址。通过数组记录所有报文缓冲区的地址,能够保证后续的报文缓冲区泄露检测时任何时刻都能遍历到这些报文缓冲区资源。
步骤一,报文缓冲区在初始化预申请放入总报文缓冲区的时候,报文缓冲区的持有者信息统一置为SOFT_BUFF_POOL,该owner表示报文缓冲区处于空闲状态。
步骤二,报文转发***从总报文缓冲区中申请报文缓冲区,要求强制传入持有者的信息(持有者ID),即将被分配出去的报文缓冲区的控制信息会记录这个持有者信息,同时更新当前报文缓冲区的时间戳为最新的时间。
步骤三,报文缓冲区在报文转发处理***中,传递给每个业务的入口时,都将持有者信息更新为对应的业务owner id,同时更新报文缓冲区的时间戳(tstamp)为当前最新时间。
例如当报文缓冲区传递到业务1时,则将该报文缓冲区的持有者信息标记为业务1,同时更新该报文缓冲区的时间戳tstamp为当前时间。
步骤四,报文缓冲区释放回总报文缓冲区的时候,在释放接口中,重新将报文缓冲区的持有者信息更新为SOFT_BUFF_POOL。此时表示该报文缓冲区重新回到总报文缓冲区中,处于空闲状态,并更新当前报文缓冲区的时间戳为最新的时间。
上述步骤二至步骤四的过程示意具体可参阅图5,其中,NIC(network interfacecard)为硬件网卡,
Figure BDA0001704022420000091
表示申请报文缓冲区过程,
Figure BDA0001704022420000092
表示释放报文缓冲区过程,“←”表示报文的传递过程。
步骤五,每隔10s触发一次检测。如果总报文缓冲区中可用的报文缓冲区个数小于报文缓冲区总数的1/4,则遍历***初始化时,记录所有报文缓冲区地址的全局一维指针数组。
步骤六,如果一个报文缓冲区的持有者信息不是SOFT_BUFF_POOL,即该报文缓冲区资源已经被分配出去,若同时该报文缓冲区的时间戳超过15秒未被更新,则确定该报文缓冲区已经泄露。
步骤七,若当前***的报文缓冲区资源已经泄露到预设的告警水线,例如可以设定当泄露到总报文缓冲区个数的1/2,即N/2时,则需要回收该已经泄漏的报文缓冲区;
具体地,本实施例一中,结合持有者信息,检测到业务进程2泄漏了1/3的总报文缓冲区,即业务进程2泄漏了N/3个报文缓冲区;业务M-1泄漏了1/2的总报文缓冲区,即业务进程M-1泄漏了N/2个报文缓冲区;业务进程2和M-1总计泄漏了5/6的总报文缓冲区;
又本实施例一中,第二阈值为1/2,第三阈值为1/4,因此,需要重启持有这些已经泄露的报文缓冲区对应的业务进程;业务进程重启后,这些重启的业务进程持有的报文缓冲区重新释放回总报文缓冲区中,实现一个自恢复的过程,具体可参考图6。
步骤八,由于在初始化过程中用指针数组记录下所有报文缓冲区的地址,因此可以通过遍历所有的报文缓冲区,统计每个报文缓冲区的持有者信息并做记录。可以呈现出所有报文缓冲区在***中的分布,同时也可以根据实际需要打印出来这些报文缓冲区中的报文信息。
基于同一发明构思,本发明实施例提供一种报文缓冲区管理装置,结构如图7所示,包括:分配单元71和检测单元72以及回收单元73;其中,
所述分配单元71,用于当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;
所述检测单元72,用于按照预设周期对所述总报文缓冲区进行检测;
所述回收单元73,用于当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区。
这里,所述预设持有者信息用于表征报文缓冲区未被任何业务进程持有,即处于空闲状态;所述第一预设时长可以根据内存资源、业务需求及报文回收周期进行设定,通常可以为15s,并可根据网络设备等性能通过命令进行修订。
进一步地,所述装置,还包括:扩展单元74,用于扩展所述总报文缓冲区的控制信息,增加持有者信息字段和时间戳字段;将所述持有者信息初始化为预设持有者信息;其中,所述持有者信息字段为一个短整型字段,用于记录当前持有所述报文缓冲区的业务信息,例如可以为一个U16数据类型的owner字段;所述时间戳字段为一个长整型字段,用于记录最近一次更新所述报文缓冲区的时间戳,例如可以为一个unsigned long数据类型的tstamp字段。
进一步地,所述回收单元73,还用于当所述业务进程释放与所述业务进程对应的报文缓冲区时,回收所述与所述业务进程对应的报文缓冲区,并将所述与所述业务进程对应的报文缓冲区的持有者信息更新为预设持有者信息,将所述与所述业务进程对应的报文缓冲区的时间戳更新为当前最新时间。
进一步地,所述装置,还包括:显示单元75,用于根据所述总报文缓冲区的持有者信息,显示总报文缓冲区资源的分布情况。
进一步地,所述检测单元72,具体用于按照预设周期检测所述总报文缓冲区中空闲的报文缓冲区个数;当所述空闲的报文缓冲区个数小于第一阈值时,遍历检测所述总报文缓冲区中每个报文缓冲区的持有者信息和时间戳;本发明实施例中,可以定义一组一维指针数组用以记录总报文缓冲区的地址,如此,则可通过按照预设周期遍历所述总报文缓冲区的指针数组即可实现检测。
具体地,可通过检测报文缓冲区的持有者信息,当所述持有者信息为预设持有者信息时,表明该报文缓冲区处于空闲状态,即该报文缓冲区可用,所述第一阈值可以根据总报文缓冲区的总数确定,例如可以为总数的四分之一等等,具体可根据实际需要进行确定。
进一步地,所述回收单元73,具体用于当所述第一报文缓冲区的个数超过第二阈值时,查询所述第一报文缓冲区的持有者信息;这里,当所述第一缓冲区的个数超过第二阈值,表征当前的报文缓冲区的资源已经泄露到一个告警水线,例如可以为总报文缓冲区中报文缓冲区的总数的二分之一,此时表明需要回收的报文缓冲区较多。应当理解,若所述第一报文缓冲区的个数未超过第二阈值,则可分别对所述第一报文缓冲区直接进行回收。
所述回收单元73,具体用于当具有相同持有者信息的第一报文缓冲区的个数超过第三阈值时,则触发所述持有者信息对应的业务进程重启以回收所述第一报文缓冲区。具有相同持有者信息的第一报文缓冲区表示该些第一报文缓冲区均被分配给了同一个业务进程。当一个业务进程发生资源泄漏的报文缓冲区个数超过第三阈值,则说明该业务进程异常,可以通过重启该业务进程进行回收;业务进程重启则持有的报文缓冲区也会被重新释放,如此,实现将该业务进程持有的报文缓冲区全部回收,达到资源泄露自恢复的目的。这里,所述第三阈值可以小于或等于第二阈值。
应当理解,本发明实施例提供的报文缓冲区管理装置实现原理及过程与上述图1-6及所示的实施例类似,在此不再赘述。
本发明实施例提供的报文缓冲区管理方法及装置,通过在为业务进程分配报文缓冲区时,增加报文缓冲区的持有者信息,通过该持有者信息能够呈现出来报文缓冲区的分布情况;并增加报文缓冲区的时间戳,通过检测所述持有者信息和时间戳,确定报文缓冲区是否存在泄露,并在检测到报文缓冲区发生泄露,能通过重启当前泄露的业务进程,回收该业务进程泄露的报文缓冲区,实现自恢复,并提升了***的可靠性和容错性。还能够在***出现性能不足时,可以通过持有者信息查看当前报文缓冲区的分布情况,判断出***中的业务是否出现报文堆积,快速进行故障定位,保证报文的转发性能。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种报文缓冲区管理方法,其特征在于,所述方法包括:
当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;
按照预设周期对所述总报文缓冲区进行检测;
当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区;
其中,所述持有者信息字段的初始化信息为预设持有者信息,所述预设持有者信息用于表征报文缓冲区处于空闲状态。
2.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
扩展所述总报文缓冲区的控制信息,增加持有者信息字段和时间戳字段;
将所述持有者信息字段初始化为预设持有者信息;
其中,所述持有者信息字段,用于记录当前持有对应的报文缓冲区的业务信息;所述时间戳字段,用于记录最近一次更新对应的报文缓冲区的时间戳。
3.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
当所述业务进程释放与所述业务进程对应的报文缓冲区时,回收所述与所述业务进程对应的报文缓冲区,并将所述与所述业务进程对应的报文缓冲区的持有者信息更新为预设持有者信息,将所述与所述业务进程对应的报文缓冲区的时间戳更新为当前最新时间。
4.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
根据所述总报文缓冲区的持有者信息,显示总报文缓冲区资源的分布情况。
5.根据权利要求1所述的方法,其特征在于,所述按照预设周期对总报文缓冲区进行检测,包括:
按照预设周期检测所述总报文缓冲区中空闲的报文缓冲区个数;
当所述空闲的报文缓冲区个数小于第一阈值时,遍历检测所述总报文缓冲区中每个报文缓冲区的持有者信息和时间戳。
6.根据权利要求1至5任一所述的方法,其特征在于,当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区,包括:
当所述第一报文缓冲区的个数超过第二阈值时,查询所述第一报文缓冲区的持有者信息;
当具有相同持有者信息的第一报文缓冲区的个数超过第三阈值时,则触发所述持有者信息对应的业务进程重启以回收所述第一报文缓冲区。
7.一种报文缓冲区管理装置,其特征在于,所述装置包括:分配单元和检测单元以及回收单元;其中,
所述分配单元,用于当业务进程申请报文缓冲区时,为所述业务进程分配总报文缓冲区中的空闲报文缓冲区,并将所述空闲报文缓冲区的持有者信息更新为所述业务进程的标识ID,将所述空闲报文缓冲区的时间戳更新为当前最新时间;
所述检测单元,用于按照预设周期对所述总报文缓冲区进行检测;
所述回收单元,用于当所述总报文缓冲区中的第一报文缓冲区的持有者信息不是预设持有者信息且所述第一报文缓冲区的时间戳超过第一预设时长而未被更新时,则回收所述第一报文缓冲区;
其中,所述持有者信息字段的初始化信息为预设持有者信息,所述预设持有者信息用于表征报文缓冲区处于空闲状态。
8.根据权利要求7所述的装置,其特征在于,所述装置,还包括:扩展单元,用于扩展所述总报文缓冲区的控制信息,增加持有者信息字段和时间戳字段;将所述持有者信息字段初始化为预设持有者信息;其中,所述持有者信息字段,用于记录当前持有对应的报文缓冲区的业务信息;所述时间戳字段,用于记录最近一次更新对应的报文缓冲区的时间戳。
9.根据权利要求7所述的装置,其特征在于,所述回收单元,还用于当所述业务进程释放与所述业务进程对应的报文缓冲区时,回收所述与所述业务进程对应的报文缓冲区,并将所述与所述业务进程对应的报文缓冲区的持有者信息更新为预设持有者信息,将所述与所述业务进程对应的报文缓冲区的时间戳更新为当前最新时间。
10.根据权利要求7所述的装置,其特征在于,所述装置,还包括:显示单元,用于根据所述总报文缓冲区的持有者信息,显示总报文缓冲区资源的分布情况。
11.根据权利要求7所述的装置,其特征在于,所述检测单元,具体用于按照预设周期检测所述总报文缓冲区池中空闲的报文缓冲区个数;当所述空闲的报文缓冲区个数小于第一阈值时,遍历检测所述总报文缓冲区中每个报文缓冲区的持有者信息和时间戳。
12.根据权利要求7至11任一所述的装置,其特征在于,所述回收单元,具体用于当所述第一报文缓冲区的个数超过第二阈值时,查询所述第一报文缓冲区的持有者信息;
当具有相同持有者信息的第一报文缓冲区的个数超过第三阈值时,则触发所述持有者信息对应的业务进程重启以回收所述第一报文缓冲区。
CN201810666218.9A 2018-06-22 2018-06-22 一种报文缓冲区管理方法及装置 Active CN109062781B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810666218.9A CN109062781B (zh) 2018-06-22 2018-06-22 一种报文缓冲区管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810666218.9A CN109062781B (zh) 2018-06-22 2018-06-22 一种报文缓冲区管理方法及装置

Publications (2)

Publication Number Publication Date
CN109062781A CN109062781A (zh) 2018-12-21
CN109062781B true CN109062781B (zh) 2022-04-26

Family

ID=64821568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810666218.9A Active CN109062781B (zh) 2018-06-22 2018-06-22 一种报文缓冲区管理方法及装置

Country Status (1)

Country Link
CN (1) CN109062781B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113495832A (zh) * 2020-04-05 2021-10-12 杭州迪普科技股份有限公司 缓存区泄漏检测***及其方法
CN114095426B (zh) * 2021-09-28 2023-04-04 浪潮软件科技有限公司 一种vpp平台的报文处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04124754A (ja) * 1990-09-14 1992-04-24 Nec Corp 通信用メッセージバッファ管理装置
CN101923517B (zh) * 2009-06-17 2013-03-27 中兴通讯股份有限公司 一种缓冲区管理方法及***
CN104468401B (zh) * 2014-11-20 2017-11-17 华为技术有限公司 一种报文处理方法和装置
CN107529695A (zh) * 2016-06-20 2018-01-02 迈普通信技术股份有限公司 一种缓冲区缓慢泄漏的定位方法及装置
CN107526641A (zh) * 2017-08-28 2017-12-29 青岛海信移动通信技术股份有限公司 一种回收内存的方法及装置

Also Published As

Publication number Publication date
CN109062781A (zh) 2018-12-21

Similar Documents

Publication Publication Date Title
US11586673B2 (en) Data writing and reading method and apparatus, and cloud storage system
US9967222B2 (en) Method and device for managing shared memory in robot operating system
US10067692B2 (en) Method and apparatus for backing up and restoring cross-virtual machine application
CN109240825B (zh) 弹性任务调度方法、装置、设备及计算机可读存储介质
JP4684607B2 (ja) オブジェクト指向プログラムの動的メモリ管理方法及び装置
EP2975515A1 (en) System and method for managing excessive distribution of memory
US10282120B2 (en) Method, apparatus and system for inserting disk
CN110597635B (zh) 图形处理资源分配方法、装置、计算机设备及存储介质
CN109062781B (zh) 一种报文缓冲区管理方法及装置
CN107168777B (zh) 分布式***中资源的调度方法以及装置
CN104539708A (zh) 一种云平台资源的缩容方法、装置与***
CN112291382A (zh) 一种ip地址分配方法及装置
CN105630576A (zh) 一种虚拟化平台中的数据处理方法及装置
CN110659104B (zh) 一种业务监控方法及相关设备
CN113204407A (zh) 一种内存超配管理方法及装置
WO2017185263A1 (zh) 一种内存回收方法及装置
CN112231053B (zh) 一种负载均衡服务分配方法及装置
CN110019475B (zh) 数据持久化处理方法、装置及***
US20220206836A1 (en) Method and Apparatus for Processing Virtual Machine Migration, Method and Apparatus for Generating Virtual Machine Migration Strategy, Device and Storage Medium
CN105205409A (zh) 一种防止内存复用中数据泄露的方法及计算机***
CN106598696B (zh) 一种虚拟机之间数据交互的方法及装置
CN107066335A (zh) 一种云平台内存的优化方法和优化***
CN108595270B (zh) 一种内存资源的回收方法及装置
CN111352710B (zh) 进程管理方法及装置、计算设备、存储介质
CN112100017B (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