一种网络设备释放共享内存的方法及系统的制作方法

文档序号:6540617阅读:149来源:国知局
一种网络设备释放共享内存的方法及系统的制作方法
【专利摘要】本发明提供一种网络设备释放共享内存的方法,包括:S1:网络设备的多核开始收报文前,记录各自的count值,且从零开始累加。S2:核在处理报文的过程中,若检测到某个共享数据内存需要释放,则将该共享数据加入该核的某个链表下;S3:该核将报文发送出去之后,获取其他核的count值,并进行记录,若其他核的count值与上次的记录值均不同,则转入步骤S4,否则转入步骤S1;S4:将链表下共享数据的内存释放。本发明还提供了一种网络设备释放共享内存的系统,该系统包括计数模块、检测模块、读取模块以及内存释放模块。本发明能够实现在释放共享内存时不需要锁的保护,从而达到提高网络设备性能的目的。
【专利说明】一种网络设备释放共享内存的方法及系统
【技术领域】
[0001]本发明涉及网络【技术领域】,具体涉及一种网络设备释放共享内存的方法及系统。【背景技术】
[0002]多核处理器代表了计算技术的一次创新。由于数字数据和互联网的全球化,商业和消费者开始要求多核处理器带来性能改进,这个重要创新就开始了 ;因为多核处理器比单核处理器具有性能和效率优势,多核处理器将会成为被广泛采用的计算模型。然而多核的网络设备会存在大量的共享数据,多核在处理报文时会对共享数据进行添加、删除、修改以及共享内存释放。由于是多核环境,每个核在同一时刻做的事情不尽相同,因此可能核I正在释放数据A的内存,但是核2可能正在访问数据A,这就导致了冲突。
[0003]现有的技术中,使用锁来处理这个问题,对某个共享数据的读、写、删除、内存释放等操作前都会先加锁,保证没有其他核能操作该数据,在操作完成之后,会将锁释放,以便其他核能够继续访问该数据。
[0004]然而大量的使用锁必然会导致性能下降,使得数据的读写及处理的效率降低。

【发明内容】

[0005](一)解决的技术问题
[0006]针对现有技术的不足,本发明提供了一种网络设备释放共享内存的方法及系统,能够实现在释放共享内存时不需要锁的保护,从而达到提高网络设备性能的目的。
[0007](二)技术方案
[0008]为了达到以上目的,本发明通过以下技术方案予以实现:
[0009]一种网络设备释放共享内存的方法,该方法包括:
[0010]S1:网络设备在多核开始收发报文前,记录各自的count值,且从零开始累加。
[0011]S2:核在处理报文的过程中,若检测到某个共享数据内存需要释放,则将该共享数据加入该核的某个链表下;
[0012]S3:该核将报文发送出去之后,获取其他核的count值,并进行记录,若其他核的count值与上次的记录值均不同,则转入步骤S4,否则转入步骤SI ;
[0013]S4:将链表下共享数据的内存释放。
[0014]其中,所述从零开始累加具体包括:初始化所述count值为0,且每个核在每次收取报文之前,各自的count值加I。
[0015]其中,所述将该共享数据加入该核的某个链表下后,若存在正在访问该共享数据的核,将继续访问该数据,而其他核则将不能对该共享数据进行访问。
[0016]优选地,所述获取其他核的count值的方法包括直接读取。
[0017]一种网络设备释放共享内存的系统,该系统包括:计数模块、检测模块、读取模块以及内存释放模块;
[0018]计数模块,用于在多核开始收发报文前,记录各自的count值,且从零开始累加;[0019]检测模块,用于当核在处理报文的过程中,若检测到某个共享数据内存需要释放,将该共享数据加入该核的某个链表下;
[0020]读取模块,用于当该核将报文发送出去之后,获取其他核的count值,并进行记录,若其他核的count值与上次的记录值均不同,则转入内存释放模块,否则转入开始收取下一个报文;
[0021 ] 内存释放模块,用于将链表下共享数据的内存释放。
[0022](三)有益效果
[0023]本发明至少有如下有益效果:
[0024]本发明提供的方法中,共享内存释放前先将其加入本核的链表中,避免了其他核的干扰;本核获取其他所有核的count值时,可以直接读取;而且共享内存释放时由于只有本核才能访问到该内存,则可以安全释放。由于上述步骤都避免的其他核的干扰,因此本发明提供的方法能够实现在释放共享内存时不需要锁的保护,从而达到提高网络设备性能的目的。
【专利附图】

【附图说明】
[0025]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
[0026]图1是本发明实施例提供的一种网络设备释放共享内存的方法的流程图;
[0027]图2是本发明一个较佳的实施例提供了一种网络设备释放共享内存的方法的流程图;
[0028]图3是本发明实施例将需要释放内存的共享数据加入某核链表下的示意图。【具体实施方式】
[0029]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]参见图1,本发明实施例提供了 一种网络设备释放共享内存的方法,该方法包括如下步骤:
[0031]步骤101:网络设备的多核开始收报文前,记录各自的count值,且从零开始累加。
[0032]步骤102:核在处理报文的过程中,若检测到某个共享数据内存需要释放,则将该共享数据加入该核的某个链表下;
[0033]如图3所示,为共享数据加入某核链表下的示意图,图中核I在处理报文过程中,发现共享数据Y需要释放内存,那么核I就将共享数据Y放到自己的链表里面。此时核2也在访问共享数据Y,但是由于只是放到了核I的链表里面,并没有对该数据内存进行释放,因此核2可以正常访问数据Y。由于共享数据Y已经放到了核I自己的链表里面了,那么后续的核3就无法访问到该数据了。这样就达到了一个目的:已经访问该共享数据的核还能继续访问,还没有访问该数据的核将永远无法访问,这对于数据来说是安全的。
[0034]步骤103:该核将报文发送出去之后,获取其他核的count值,并进行记录,判断其他核的count值与上次的记录值是否均不同,若是则转入步骤104,否则转入步骤101 ;
[0035]本步骤中,获取其他核的count值的方法包括直接读取。
[0036]步骤104:将链表下共享数据的内存释放。
[0037]本步骤中,由于所有核当前的count与上次的记录值都不一样,说明这些核都至少经过了一次报文收取、处理以及发送的过程,也就是对于图3所示的共享数据Y来说,没有其他核能够访问到了(除了本核通过自己的链表),这个时候共享数据Y可以安全释放。
[0038]下面,通过一个具体的例子,来更为详细的说明本发明一个较佳实施例的实现过程。参见图2,该过程包括如下步骤:
[0039]步骤201:初始化所有核的count值,使其均为O ;
[0040]步骤202:网络设备中的任一核收取报文;
[0041]步骤203:该核处理报文;
[0042]步骤204:判断是否检测到某个共享数据内存需要释放,若是则转至步骤205,否则转至步骤206 ;
[0043]步骤205:将该共享数据加入该核的某个链表之下;
[0044]步骤206:该核发送报文;
[0045]步骤207:判断该核某链表下是否有待释放内存的共享数据,若有则转至步骤208,否则转至步骤211 ;
[0046]步骤208:读取其他核的count值,并记录下来;
[0047]步骤209:判断其他核的count值是否与记录的上次的count值不同,若是则转至步骤210,否则转至步骤211 ;
[0048]步骤210:将链表下的共享数据的内存释放;
[0049]该步骤执行完之后,转至步骤211。
[0050]步骤211:count 值加 I。
[0051 ] 本发明实施例提供的方法中,共享内存释放前先将其加入本核的链表中,避免了其他核的干扰;本核获取其他所有核的count值时,可以直接读取;而且共享内存释放时由于只有本核才能访问到该内存,则可以安全释放。由于上述步骤都避免的其他核的干扰,因此本发明实施例提供的方法能够实现在释放共享内存时不需要锁的保护,从而达到提高网络设备性能的目的。
[0052]本发明另一实施例还提供了一种网络设备释放共享内存的系统,其特征在于,该系统包括:计数模块、检测模块、读取模块以及内存释放模块;
[0053]计数模块,用于在多核开始收发报文前,记录各自的count值,且从零开始累加;
[0054]检测模块,用于当核在处理报文的过程中,若检测到某个共享数据内存需要释放,将该共享数据加入该核的某个链表下;
[0055]读取模块,用于当该核将报文发送出去之后,获取其他核的count值,并进行记录,若其他核的count值与上次的记录值均不同,则转入内存释放模块,否则转入开始收取下一个报文;
[0056]内存释放模块,用于将链表下共享数据的内存释放。[0057]以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【权利要求】
1.一种网络设备释放共享内存的方法,其特征在于,该方法包括: 51:网络设备的多核开始收报文前,记录各自的count值,且从零开始累加; 52:核在处理报文的过程中,若检测到某个共享数据内存需要释放,则将该共享数据加入该核的某个链表下; 53:该核将报文发送出去之后,获取其他核的count值,并进行记录,若其他核的count值与上次的记录值均不同,则转入步骤S4,否则转入步骤SI ; 54:将链表下共享数据的内存释放。
2.根据权利要求1所述的方法,其特征在于,所述从零开始累加具体包括:初始化所述count值为O,且每个核在每次收取报文之前,各自的count值加I。
3.根据权利要求1所述的方法,其特征在于,所述将该共享数据加入该核的某个链表下后,若存在正在访问该共享数据的核,将继续访问该数据,而其他核则将不能对该共享数据进行访问。
4.根据权利要求1所述的方法,其特征在于,所述获取其他核的count值的方法包括直接读取。
5.一种网络设备释放共享内存的系统,其特征在于,该系统包括计数模块、检测模块、读取模块以及内存释放模块; 计数模块,用于在多核开始收发报文前,记录各自的count值,且从零开始累加; 检测模块,用于当核在处理报文的过程中,若检测到某个共享数据内存需要释放,将该共享数据加入该核的某个链表下; 读取模块,用于当该核将报文发送出去之后,获取其他核的count值,并进行记录,若其他核的count值与上次的记录值均不同,则转入内存释放模块,否则转入开始收取下一个报文; 内存释放模块,用于将链表下共享数据的内存释放。
【文档编号】G06F12/02GK103902464SQ201410095733
【公开日】2014年7月2日 申请日期:2014年3月14日 优先权日:2014年3月14日
【发明者】李鹏 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1