System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于DPDK的用户态RCU机制设计方法及应用技术_技高网

一种基于DPDK的用户态RCU机制设计方法及应用技术

技术编号:40980104 阅读:2 留言:0更新日期:2024-04-18 21:26
本发明专利技术提供一种基于DPDK的用户态RCU机制设计方法及应用,属于IP网络通信技术领域,该基于DPDK的用户态RCU机制设计包括基础架构设计、延迟释放功能和多数据类型共享通用RCU锁功能;基础架构设计包括:读侧临界区、写侧临界区、静默态和宽限期,读侧临界区是RCU读者执行的区域;写侧临界区是为适应读侧临界区,写侧推迟销毁并维护多个版本的数据结构;通过本方案,对于当前DPDK的qsbr库,补全用户态像内核RCU类似功能的锁,尤其是基于DPDK开发的案例中尚未有相关应用的设计和测试,填补用户态协议栈的开发和移植存在技术空白。

【技术实现步骤摘要】

本专利技术属于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作为函数fn_free_A的入参,由fn_free_a来自行释放,fn_free_a是A的专属释放函数。

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更新操作分...

【专利技术属性】
技术研发人员:姜少华兰培挺蔡慧超唐荣生吴静勇王晓华
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1