System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及网络通信,特别涉及一种多核设备rcu内存释放方法、系统及可读存储介质。
技术介绍
1、rcu主要用于优化线程间内存读操作的性能,同时确保写操作的安全性。在防火墙设备上,每cpu核会运行一个dp任务,在其中完成配置处理、报文转发、设备运行状态统计等。另外会启动一个rcu任务,通过检查注册线程的状态决定是否释放待释放内存链上的内存。
2、dp线程任务启动时向rcu注册本线程使用的是rcu内存,后续每次任务结束时更新线程状态。rcu任务通过检查所有dp线程都使用完了待释放的内存,才执行内存释放操作。只有rcu任务将内存从带释放链上摘下并释放后,这块内存才可以重新被分配使用。
3、由上述内存释放过程可知,当某一个dp线程任务执行时间过长时,如系统存在大量会话,遍历会话统计运行信息时,不论是否占用内存,都会导致待释放内存链上的内存不能及时释放。若防火墙系统内存资源比较紧张时,会频繁因为申请不到内存导致报文转发失败的情况,严重影响设备运行性能。
技术实现思路
1、本申请提供一种多核设备rcu内存释放方法、系统及可读存储介质,以解决现有dp线程对应的rcu内存无法得到及时释放的问题。
2、第一方面,本申请提供一种多核设备rcu内存释放方法,其中,所述方法应用于一种多核设备rcu内存释放系统,所述多核设备rcu内存释放系统包括若干个主任务线程,每个主任务线程用于处理若干个不同的主线程任务,所述方法包括:
3、获取对应所有所述主任务线程的
4、根据所述目标哈希表进行若干次桶链遍历,得到rcu内存状态;所述rcu内存状态对应若干个所述主任务线程中每个所述主线程任务的rcu内存使用情况;
5、根据所述rcu内存状态对所述主任务线程的rcu内存进行释放。
6、优选的,所述多核设备rcu内存释放系统还包括rcu任务线程,所述获取对应多个主任务线程的目标哈希表的步骤包括:
7、将所有所述主任务线程向所述rcu任务线程进行注册,得到注册关系表;
8、根据所述注册关系表确定所述目标哈希表。
9、优选的,所述根据所述目标哈希表进行若干次桶链遍历的步骤包括:
10、将所述目标哈希表进行桶链拆分处理,得到若干个桶链;
11、利用所有所述桶链的桶链id对每个对应的所述桶链进行遍历,得到所述rcu内存状态。
12、优选的,所述利用所有所述桶链的桶链id对每个对应的所述桶链进行遍历的步骤包括:
13、利用对应所述桶链的所述桶链id对第n个所述桶链进行遍历,得到对应所述主任务线程中所述主线程任务的任务进程;
14、根据所述任务进程更新对应所述主任务线程的rcu内存使用情况;
15、当完成对a个主任务线程的rcu内存使用情况更新后,根据a个主任务线程的rcu更新情况,得到所述rcu内存状态。
16、优选的,所述根据所述任务进程更新对应所述主任务线程的rcu内存使用情况的步骤还包括:
17、在进行对所述主任务线程的rcu内存使用情况更新的过程中,获取同一所述主任务线程中的上下文信息;所述上下文信息用于表征更新后的所述主线程任务的任务进程。
18、优选的,所述多核设备rcu内存释放系统还包括迭代线程;所述根据所述目标哈希表进行若干次桶链遍历的步骤还包括:
19、利用所述迭代线程对所有所述主任务线程进行迭代遍历,并在完成对预设数量的所述主任务线程的遍历或预设周期的遍历后,输出所述rcu内存状态;所述预设周期为对所有所述主任务线程进行至少一次遍历的时间长度。
20、优选的,所述根据所述rcu内存状态对所述主任务线程的rcu内存进行释放的步骤包括:
21、通过所述迭代线程将所述rcu内存状态发送给所述rcu任务线程;
22、在所述rcu任务线程中根据所述rcu内存状态对所述主任务线程的rcu内存进行释放。
23、优选的,所述a个主任务线程为所有所述主任务线程的全部线程或部分线程。
24、第二方面,本申请还提供一种多核设备rcu内存释放系统,所述系统包括:
25、若干个主任务线程,每个所述主任务线程用于处理若干个不同的主线程任务;
26、迭代线程,所述迭代线程用于获取对应所有所述主任务线程的目标哈希表,并根据所述目标哈希表进行桶链遍历,得到rcu内存状态;
27、rcu任务线程,所述rcu任务线程用于根据所述rcu内存状态对所有所述主任务线程的rcu内存进行释放;
28、所有所述主任务线程与所述迭代线程向所述rcu任务线程进行注册。
29、第三方面,本申请还提供一种可读存储介质,所述可读存储介质中存储至少一可执行指令,使得多核设备rcu内存释放系统执行上述任意一项所述多核设备rcu内存释放方法。
30、由上述内容可知,本申请提供一种多核设备rcu内存释放方法、系统及可读存储介质,所述方法应用于一种多核设备rcu内存释放系统,所述多核设备rcu内存释放系统包括若干个主任务线程,每个主任务线程用于处理若干个不同的主线程任务,所述方法包括:获取对应所有所述主任务线程的目标哈希表;根据所述目标哈希表进行若干次桶链遍历,得到rcu内存状态;所述rcu内存状态对应若干个所述主任务线程中每个所述主线程任务的rcu内存使用情况;根据所述rcu内存状态对所述主任务线程的rcu内存进行释放。
本文档来自技高网...【技术保护点】
1.一种多核设备RCU内存释放方法,其特征在于,所述方法应用于一种多核设备RCU内存释放系统,所述多核设备RCU内存释放系统包括若干个主任务线程,每个主任务线程用于处理若干个不同的主线程任务,所述方法包括:
2.根据权利要求1所述的一种多核设备RCU内存释放方法,其特征在于,所述多核设备RCU内存释放系统还包括RCU任务线程,所述获取对应多个主任务线程的目标哈希表的步骤包括:
3.根据权利要求2所述的一种多核设备RCU内存释放方法,其特征在于,所述根据所述目标哈希表进行若干次桶链遍历的步骤包括:
4.根据权利要求3所述的一种多核设备RCU内存释放方法,其特征在于,所述利用所有所述桶链的桶链ID对每个对应的所述桶链进行遍历的步骤包括:
5.根据权利要求4所述的一种多核设备RCU内存释放方法,其特征在于,所述根据所述任务进程更新对应所述主任务线程的RCU内存使用情况的步骤还包括:
6.根据权利要求2所述的一种多核设备RCU内存释放方法,其特征在于,所述多核设备RCU内存释放系统还包括迭代线程;所述根据所述目标哈希表进行若干次
7.根据权利要求6所述的一种多核设备RCU内存释放方法,其特征在于,所述根据所述RCU内存状态对所述主任务线程的RCU内存进行释放的步骤包括:
8.根据权利要求4所述的一种多核设备RCU内存释放方法,其特征在于,所述a个主任务线程为所有所述主任务线程的全部线程或部分线程。
9.一种多核设备RCU内存释放系统,所述系统用于执行权利要求1至8任意一项所述多核设备RCU内存释放方法,所述系统包括:
10.一种可读存储介质,所述可读存储介质中存储至少一可执行指令,所述可执行指令在多核设备RCU内存释放系统中运行时,使得多核设备RCU内存释放系统执行权利要求1至8任意一项所述多核设备RCU内存释放方法。
...【技术特征摘要】
1.一种多核设备rcu内存释放方法,其特征在于,所述方法应用于一种多核设备rcu内存释放系统,所述多核设备rcu内存释放系统包括若干个主任务线程,每个主任务线程用于处理若干个不同的主线程任务,所述方法包括:
2.根据权利要求1所述的一种多核设备rcu内存释放方法,其特征在于,所述多核设备rcu内存释放系统还包括rcu任务线程,所述获取对应多个主任务线程的目标哈希表的步骤包括:
3.根据权利要求2所述的一种多核设备rcu内存释放方法,其特征在于,所述根据所述目标哈希表进行若干次桶链遍历的步骤包括:
4.根据权利要求3所述的一种多核设备rcu内存释放方法,其特征在于,所述利用所有所述桶链的桶链id对每个对应的所述桶链进行遍历的步骤包括:
5.根据权利要求4所述的一种多核设备rcu内存释放方法,其特征在于,所述根据所述任务进程更新对应所述主任务线程的rcu内存使用情况的步骤还包括:...
【专利技术属性】
技术研发人员:吴情彪,
申请(专利权)人:武汉思普崚技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。