System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于ip网络通信,具体涉及一种基于dpdk的用户态rcu机制设计方法及应用。
技术介绍
1、为了提高网络数据包处理速度以及吞吐量,目前将网络协议栈放在用户态上是常见做法,例如sdn的数据转发面;因此,当前英特尔提供的开源数据平面开发套件dpdk已被各大互联网厂商使用,云公司在数据转发面也是基于dpdk进行的二次开发;
2、在现有技术中,对于当前dpdk的qsbr库,用户态缺少像内核rcu类似功能的锁,尤其是基于dpdk开发的案例中尚未有相关应用的设计和测试,导致用户态协议栈的开发和移植存在技术空白。
技术实现思路
1、本专利技术的目的在于提供一种基于dpdk的用户态rcu机制设计方法及应用,旨在解决现有技术中对于当前dpdk的qsbr库,用户态缺少像内核rcu类似功能的锁,尤其是基于dpdk开发的案例中尚未有相关应用的设计和测试,导致用户态协议栈的开发和移植存在限制的问题。
2、为实现上述目的,本专利技术提供如下技术方案:
3、一种基于dpdk的用户态rcu机制设计方法,包括:
4、基础架构设计、延迟释放功能和多数据类型共享通用rcu锁功能;
5、所述基础架构设计包括:读侧临界区、写侧临界区、静默态和宽限期,所述读侧临界区是rcu读者执行的区域;所述写侧临界区是为适应读侧临界区,写侧推迟销毁并维护多个版本的数据结构,有大量的同步开销,编写者必须使用某种同步机制(例如锁定)来提供有序的更新;所述静默态是线程没有运行
6、所述延迟释放功能是基于dpdk qsbr库的用户态rcu已经大致清楚,根据前述原理,在删除数据的时候,写者需要先等所有读者都宣布自己进入静默期之后才能进行删除;但是这样的机制,会导致写者卡顿,效率低下,因此,我们需要一种方式,写者先暂存数据,等自己不忙的时候,定期将数据拿出来查看此数据的所有读者是否已经都进入静默期;如果是,再删除;
7、所述多数据类型共享通用rcu锁功能是依赖延迟队列,删除的数据要放入延迟队列中,然后在空闲的时候再予以删除;队列元素其实就是待删除数据类型,这种数据元素还必须有专门的释放函数,对于不同数据类型只得申请不同的rcu锁。
8、作为本专利技术一种优选的方案,为实现延迟释放功能,需要一个队列以及定时器,具体逻辑包括如下步骤:
9、s1、写者将数据存入延迟队列;
10、s2、延迟队列在新数据加入时,判断是否即将满队列,设阈值为m;
11、s3、如果达到标准,则启动定时器,定期清除一批度过静默期的数据,直到队列数据数量降低到m以下。
12、作为本专利技术一种优选的方案,还包括特殊延迟队列,其队列元素的数据结构:struct gener_rcu_defer_free_st{rcu_defer_free_fn fn;void*data;}。
13、作为本专利技术一种优选的方案,data用于存放各种待删除数据的指针,在数据被压入队列元素中,将其强制转换成void类型,其中,fn_free_a的函数原型如下:typedefvoid(*rcu_defer_free_fn)(void*e)。
14、作为本专利技术一种优选的方案,当释放a数据的时候,其实首先解析的是队列元素gener_rcu_defer_free_st,然后把data作为函数fn_free_a的入参,由fn_free_a来自行释放,fn_free_a是a的专属释放函数。
15、作为本专利技术一种优选的方案,rcu更新操作分为两个阶段:移除阶段和回收阶段,两个阶段通过宽限期隔开更新者在移除元素后,通过synchronize_rcu()原语,初始化一个宽限期,并等待宽限期结束后,回收移除的元素。
16、作为本专利技术一种优选的方案,移除阶段:rcu更新通过rcu_assign_pointer()等函数移除或插入元素;现代cpu的指针操作都是原子的,rcu_assign_pointer()原语在大多数系统上编译为一个简单的指针赋值操作;移除的元素仅可被移除阶段(以灰色显示)前的读者访问。
17、作为本专利技术一种优选的方案,回收阶段:一个宽限期后,宽限期开始前的原有读者都完成读操作,因此,此阶段可安全释放由删除阶段删除的元素。
18、作为本专利技术一种优选的方案,rcu的重点在于宽限期的设计,由于rcu的读者需要禁止抢占,所以对于rcu来说,宽限期是所有cpu都进行一次用户态调度的时间。
19、一种基于dpdk的用户态rcu机制的应用,基于dpdk的用户态rcu机制设计应用于用户态协议栈的开发和移植,具备linux内核提供的rcu锁的所有功能。
20、与现有技术相比,本专利技术的有益效果是:
21、1、本专利技术中,通过本方案,对于当前dpdk的qsbr库,补全用户态像内核rcu类似功能的锁,尤其是基于dpdk开发的案例中尚未有相关应用的设计和测试,填补用户态协议栈的开发和移植存在技术空白。
22、2、本专利技术中,通过基础架构设计、延迟释放功能和多数据类型共享通用rcu锁功能的技术,使得用户态rcu变得非常易用,甚至比内核态的rcu还要好用,而且性能非常可观。
23、3、本专利技术中,更新共享的数据时需要复制一份,然后对副本进行修改,修改完把原来的共享数据替换成新的副本,而对旧数据的销毁(释放)等待到所有读者都不再引用旧数据时进行,以便提高效率。
本文档来自技高网...【技术保护点】
1.一种基于DPDK的用户态RCU机制设计方法,其特征在于,包括:
2.根据权利要求1所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于,为实现延迟释放功能,需要一个队列以及定时器,具体逻辑包括如下步骤:
3.根据权利要求2所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于,还包括特殊延迟队列,其队列元素的数据结构:struct gener_rcu_defer_free_st{RCU_DEFER_FREE_FN fn;void*data;}。
4.根据权利要求3所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于:data用于存放各种待删除数据的指针,在数据被压入队列元素中,将其强制转换成void类型,其中,fn_free_A的函数原型如下:typedefvoid(*RCU_DEFER_FREE_FN)(void*e)。
5.根据权利要求4所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于:当释放A数据的时候,其实首先解析的是队列元素gener_rcu_defer_free_st,然后把data
6.根据权利要求5所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于:RCU更新操作分为两个阶段:移除阶段和回收阶段,两个阶段通过宽限期隔开更新者在移除元素后,通过synchronize_rcu()原语,初始化一个宽限期,并等待宽限期结束后,回收移除的元素。
7.根据权利要求6所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于,移除阶段:RCU更新通过rcu_assign_pointer()等函数移除或插入元素;现代CPU的指针操作都是原子的,rcu_assign_pointer()原语在大多数系统上编译为一个简单的指针赋值操作;移除的元素仅可被移除阶段(以灰色显示)前的读者访问。
8.根据权利要求7所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于,回收阶段:一个宽限期后,宽限期开始前的原有读者都完成读操作,因此,此阶段可安全释放由删除阶段删除的元素。
9.根据权利要求8所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于:RCU的重点在于宽限期的设计,由于RCU的读者需要禁止抢占,所以对于RCU来说,宽限期是所有CPU都进行一次用户态调度的时间。
10.一种基于DPDK的用户态RCU机制的应用,使用了权利要求1-9中任意一项所述的一种基于DPDK的用户态RCU机制设计方法,其特征在于,基于DPDK的用户态RCU机制设计应用于用户态协议栈的开发和移植,具备Linux内核提供的RCU锁的所有功能。
...【技术特征摘要】
1.一种基于dpdk的用户态rcu机制设计方法,其特征在于,包括:
2.根据权利要求1所述的一种基于dpdk的用户态rcu机制设计方法,其特征在于,为实现延迟释放功能,需要一个队列以及定时器,具体逻辑包括如下步骤:
3.根据权利要求2所述的一种基于dpdk的用户态rcu机制设计方法,其特征在于,还包括特殊延迟队列,其队列元素的数据结构:struct gener_rcu_defer_free_st{rcu_defer_free_fn fn;void*data;}。
4.根据权利要求3所述的一种基于dpdk的用户态rcu机制设计方法,其特征在于:data用于存放各种待删除数据的指针,在数据被压入队列元素中,将其强制转换成void类型,其中,fn_free_a的函数原型如下:typedefvoid(*rcu_defer_free_fn)(void*e)。
5.根据权利要求4所述的一种基于dpdk的用户态rcu机制设计方法,其特征在于:当释放a数据的时候,其实首先解析的是队列元素gener_rcu_defer_free_st,然后把data作为函数fn_free_a的入参,由fn_free_a来自行释放,fn_free_a是a的专属释放函数。
6.根据权利要求5所述的一种基于dpdk的用户态rcu机制设计方法,其特征在于:rcu更新操作分...
【专利技术属性】
技术研发人员:姜少华,兰培挺,蔡慧超,唐荣生,吴静勇,王晓华,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。