缓存的管理方法及装置制造方法及图纸

技术编号:20627859 阅读:25 留言:0更新日期:2019-03-20 17:27
本发明专利技术公开了一种缓存的管理方法及装置,涉及数据通信领域。本发明专利技术方法通过将指定类型的缓存池划分为本地缓存池和共享缓存池,本地缓存池用于指定类型报文的收发处理,共享缓存池用于其他报文对应的缓存池中申请不到空闲的缓冲区时,向其他报文提供共享的缓冲区,用以保障突发业务时的正常处理。本发明专利技术方法还可以对所述共享缓存池的大小进行动态调整,从而提高缓存池的利用效率,提升设备运行的可靠性。

Cache Management Method and Device

The invention discloses a buffer management method and device, which relates to the field of data communication. The method of the present invention divides a specified type of buffer pool into a local buffer pool and a shared buffer pool. The local buffer pool is used for sending and receiving a specified type of message, and the shared buffer pool is used for providing a shared buffer to other messages when an idle buffer is not available in the corresponding buffer pool of other messages, so as to ensure the normal processing of burst services. The method of the invention can also dynamically adjust the size of the shared buffer pool, thereby improving the utilization efficiency of the buffer pool and improving the reliability of the device operation.

【技术实现步骤摘要】
缓存的管理方法及装置
本专利技术涉及数据通信领域,尤其涉及一种缓存的管理方法及装置。
技术介绍
网络设备作为数据通信网络中的重要设备,其数据收发的性能和运行的稳定性直接决定了所在网络数据通信的可靠性。网络设备会对不同类型的报文进行转发,如以太报文、广域网报文等,针对每类报文会在设备初始化时分配专用的缓存池,每类报文只能从对应的缓存池中分配缓冲区来承载报文。网络设备通常会为指定类型的报文分配较大的缓存池,为需要转发的非指定类型的其他报文分配较小的缓存池。由于在处理如组播或镜像等其他类型的报文转发时,容易出现对应的缓存池中缓冲区消耗较快的情形,若对应的缓存池中没有空闲的缓冲区可供使用,就会造成相关业务功能异常。而此时指定类型报文对应的缓存池中可能还有大量空闲的缓冲区,这将导致各缓存池利用率的不合理现象,造成不必要的浪费。
技术实现思路
本专利技术提供一种缓存的管理方法及装置,解决了因缓存池分配不合理或者突发业务导致的内存利用率低、报文丢失或业务中断等问题。第一方面,本专利技术提供一种缓存的管理方法,包括以下步骤:为不同种类的报文分别创建对应的缓存池,将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池;其中,所述指定类型报文对应的缓存池中缓冲区的个数大于其他报文对应的缓存池中的缓冲区的个数;在其他报文对应的缓存池中申请不到空闲的缓冲区时,从所述共享缓存池中申请缓冲区。其中,所述将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池,包括:预设第一位置索引值;将小于等于所述第一位置索引值的所有缓冲区作为本地缓存池,用于所述指定类型报文的收发处理;将大于所述第一位置索引值的所有缓冲区作为所述共享缓存池。所述将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池,还包括:预设第二位置索引值;所述第二位置索引值用于指示所述共享缓存池中共享缓冲区设定的最小位置索引值;其中,所述第二位置索引值大于所述第一位置索引值;初始化水线值为所述第二位置索引值,所述水线值用于指示所述共享缓存池中能够用于共享的缓冲区的最小位置索引值。所述从所述共享缓存池中申请缓冲区,包括:获取所述共享缓存池的缓存池锁;获取所述共享缓存池中位置索引值大于等于所述水线值的空闲缓冲区,设置所述空闲缓冲区为占用状态;释放所述缓存池锁;其中,所述缓存池锁用于所述共享缓存池的互斥处理。在初始化所述水线值后,所述方法还包括:缩小和或扩大所述共享缓存池;所述缩小所述共享缓存池,具体包括:获取所述本地缓存池当前的最大位置索引值,并赋值给第三位置索引值;增大所述本地缓存池当前的最大位置索引值,获得所述本地缓存池最新的最大位置索引值;如果所述本地缓存池最新的最大位置索引值小于所述水线值,将大于所述第三位置索引值到小于等于所述本地缓存池最新的最大位置索引值范围内的所有所述缓冲区设置为本地缓存池;如果所述本地缓存池最新的最大位置索引值大于等于所述水线值,获取所述共享缓存池的缓存池锁;设置所述水线值为所述本地缓存池最新的最大位置索引值加一;将大于所述第三位置索引值到小于等于所述本地缓存池最新的最大位置索引值范围内的所有所述缓冲区设置为本地缓存池;释放所述缓存池锁;其中,所述本地缓存池最新的最大位置索引值需小于所述指定类型报文对应的缓存池的最大位置索引值;所述扩大所述共享缓存池,具体包括:获取所述本地缓存池当前的最大位置索引值,并赋值给第三位置索引值;缩小所述本地缓存池当前的最大位置索引值,获得所述本地缓存池最新的最大位置索引值;其中,所述本地缓存池最新的最大位置索引值需大于等于所述第一位置索引值;获取所述缓存池锁;将大于所述本地缓存池最新的最大位置索引值到小于等于所述第三位置索引值范围内的所有所述缓冲区设置为共享缓存池;如果所述本地缓存池最新的最大位置索引值小于所述第二位置索引值,设置所述水线值为所述第二位置索引值;否则,设置所述水线值为所述本地缓存池最新的最大位置索引值加一;释放所述缓存池锁;其中,所述缓存池锁用于所述共享缓存池的互斥处理。第二方面,本专利技术提供一种缓存的管理装置,具体包括:缓存池创建模块,用于为不同种类的报文分别创建对应的缓存池;其中,指定类型报文对应的缓存池中缓冲区的个数大于其他报文对应的缓存池中的缓冲区的个数;缓存池管理模块,用于将所述指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池;缓冲区申请模块,用于在其他报文对应的缓存池中申请不到空闲的缓冲区时,从所述共享缓存池中申请缓冲区。其中,所述缓存池管理模块,具体用于预设第一位置索引值;将小于等于所述第一位置索引值的所有缓冲区作为本地缓存池,用于所述指定类型报文的收发处理;将大于所述第一位置索引值的所有缓冲区作为所述共享缓存池。所述缓存池管理模块,还用于预设第二位置索引值;所述第二位置索引值用于指示所述共享缓存池中共享缓冲区设定的最小位置索引值;其中,所述第二位置索引值大于所述第一位置索引值;初始化水线值为所述第二位置索引值,所述水线值用于指示所述共享缓存池中能够用于共享的缓冲区的最小位置索引值。所述缓冲区申请模块,具体用于获取所述共享缓存池的缓存池锁;获取所述共享缓存池中位置索引值大于等于所述水线值的空闲缓冲区,设置所述空闲缓冲区为占用状态;释放所述缓存池锁;其中,所述缓存池锁用于所述共享缓存池的互斥处理。在初始化所述水线值后,所述缓存池管理模块,还具体用于缩小和或扩大所述共享缓存池;所述缩小所述共享缓存池的方式,包括:获取所述本地缓存池当前的最大位置索引值,并赋值给第三位置索引值;增大所述本地缓存池当前的最大位置索引值,获得所述本地缓存池最新的最大位置索引值;如果所述本地缓存池最新的最大位置索引值小于所述水线值,将大于所述第三位置索引值到小于等于所述本地缓存池最新的最大位置索引值范围内的所有所述缓冲区设置为本地缓存池;如果所述本地缓存池最新的最大位置索引值大于等于所述水线值,获取所述共享缓存池的缓存池锁;设置所述水线值为所述本地缓存池最新的最大位置索引值加一;将大于所述第三位置索引值到小于等于所述本地缓存池最新的最大位置索引值范围内的所有所述缓冲区设置为本地缓存池;释放所述缓存池锁;其中,所述本地缓存池最新的最大位置索引值需小于所述指定类型报文对应的缓存池的最大位置索引值;所述扩大所述共享缓存池的方式,包括:获取所述本地缓存池当前的最大位置索引值,并赋值给第三位置索引值;缩小所述本地缓存池当前的最大位置索引值,获得所述本地缓存池最新的最大位置索引值;其中,所述本地缓存池最新的最大位置索引值需大于等于所述第一位置索引值;获取所述缓存池锁;将大于所述本地缓存池最新的最大位置索引值到小于等于所述第三位置索引值范围内的所有所述缓冲区设置为共享缓存池;如果所述本地缓存池最新的最大位置索引值小于所述第二位置索引值,设置所述水线值为所述第二位置索引值;否则,设置所述水线值为所述本地缓存池最新的最大位置索引值加一;释放所述缓存池锁;其中,所述缓存池锁用于所述共享缓存池的互斥处理。综上所述,本专利技术将指定类型的缓存池划分为本地缓存池和共享缓存池,本地缓存池用于指定类型报文的收发处理,共享缓存池用于其他报文对应的缓存池中申请不到空闲的缓冲区时,向其他报文提供共享的缓冲区,用以保障突发业务的正常处理。本专利技术方法还可以对所本文档来自技高网...

【技术保护点】
1.一种缓存的管理方法,其特征在于,所述方法包括:为不同种类的报文分别创建对应的缓存池,将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池;其中,所述指定类型报文对应的缓存池中缓冲区的个数大于其他报文对应的缓存池中的缓冲区的个数;在其他报文对应的缓存池中申请不到空闲的缓冲区时,从所述共享缓存池中申请缓冲区。

【技术特征摘要】
1.一种缓存的管理方法,其特征在于,所述方法包括:为不同种类的报文分别创建对应的缓存池,将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池;其中,所述指定类型报文对应的缓存池中缓冲区的个数大于其他报文对应的缓存池中的缓冲区的个数;在其他报文对应的缓存池中申请不到空闲的缓冲区时,从所述共享缓存池中申请缓冲区。2.如权利要求1所述的方法,其特征在于,所述将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池,包括:预设第一位置索引值;将小于等于所述第一位置索引值的所有缓冲区作为本地缓存池,用于所述指定类型报文的收发处理;将大于所述第一位置索引值的所有缓冲区作为所述共享缓存池。3.如权利要求2所述的方法,其特征在于,所述将指定类型报文对应的缓存池中的部分缓冲区作为共享缓存池,还包括:预设第二位置索引值;所述第二位置索引值用于指示所述共享缓存池中共享缓冲区设定的最小位置索引值;其中,所述第二位置索引值大于所述第一位置索引值;初始化水线值为所述第二位置索引值,所述水线值用于指示所述共享缓存池中能够用于共享的缓冲区的最小位置索引值。4.如权利要求3所述的方法,其特征在于,所述从所述共享缓存池中申请缓冲区,包括:获取所述共享缓存池的缓存池锁;获取所述共享缓存池中位置索引值大于等于所述水线值的空闲缓冲区,设置所述空闲缓冲区为占用状态;释放所述缓存池锁;其中,所述缓存池锁用于所述共享缓存池的互斥处理。5.如权利要求3所述的方法,其特征在于,所述方法还包括:缩小和或扩大所述共享缓存池;所述缩小所述共享缓存池,具体包括:获取所述本地缓存池当前的最大位置索引值,并赋值给第三位置索引值;增大所述本地缓存池当前的最大位置索引值,获得所述本地缓存池最新的最大位置索引值;如果所述本地缓存池最新的最大位置索引值小于所述水线值,将大于所述第三位置索引值到小于等于所述本地缓存池最新的最大位置索引值范围内的所有所述缓冲区设置为本地缓存池;如果所述本地缓存池最新的最大位置索引值大于等于所述水线值,获取所述共享缓存池的缓存池锁;设置所述水线值为所述本地缓存池最新的最大位置索引值加一;将大于所述第三位置索引值到小于等于所述本地缓存池最新的最大位置索引值范围内的所有所述缓冲区设置为本地缓存池;释放所述缓存池锁;其中,所述本地缓存池最新的最大位置索引值需小于所述指定类型报文对应的缓存池的最大位置索引值;所述扩大所述共享缓存池,具体包括:获取所述本地缓存池当前的最大位置索引值,并赋值给第三位置索引值;缩小所述本地缓存池当前的最大位置索引值,获得所述本地缓存池最新的最大位置索引值;其中,所述本地缓存池最新的最大位置索引值需大于等于所述第一位置索引值;获取所述缓存池锁;将大于所述本地缓存池最新的最大位置索引值到小于等于所述第三位置索引值范围内的所有所述缓冲区设置为共享缓存池;如果所述本地缓存池最新的最大位置索引值小于所述第二位置索引值,设置所述水线值为所述第二位置索引值;否则,设置所述水线值为所述本地缓存池最新的最大位置索引值加一;释放所述缓存池锁;其中,所述缓存池锁用于所述共享缓存池的互斥...

【专利技术属性】
技术研发人员:孙琳洋
申请(专利权)人:迈普通信技术股份有限公司
类型:发明
国别省市:四川,51

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

1