System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 用于管理共享接收队列的方法、计算机设备及介质技术_技高网

用于管理共享接收队列的方法、计算机设备及介质技术

技术编号:40709527 阅读:4 留言:0更新日期:2024-03-22 11:10
本申请涉及计算机技术领域并提供一种用于管理共享接收队列的方法、计算机设备及介质。方法包括:通过环形缓冲区队首指针和环形缓冲区队尾指针实现在共享接收队列的共享接收队列起始地址与共享接收队列结束地址之间的环形缓冲;通过移动环形缓冲区队首指针来顺序执行填充操作用于顺序填充工作队列元素到共享接收队列,以及,通过比较环形缓冲区队首指针和环形缓冲区队尾指针来判断是否完成一次填充循环;每次执行填充操作之前,判断共享接收队列中的与当前填充操作对应的工作队列元素相关联的至少一个工作队列元素是否均标记已完成。如此,有效应对乱序完成的可能性,有利于提升硬件效率和减低延迟。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种用于管理共享接收队列的方法、计算机设备及介质


技术介绍

1、远程直接内存访问是从一台计算机的内存到另一台计算机的内存的直接访问,此过程中不涉及任何一方的操作系统。利用远程直接内存访问技术实现了高吞吐量、低延迟的网络,有效提升数据传输性能,应用于如云计算、数据中心、大规模并行计算机集群等应用场景。远程直接内存访问通信的基本单位是队列对,一个队列对由一个发送队列和一个接收队列组成,用于实现远程直接内存访问报文发送和远程直接内存访问报文接收。为了节省接收端的资源,将一个接收队列由所有关联的队列对使用,这个公用的接收队列被指为共享接收队列。与共享接收队列关联的队列对要下发用于接收任务的工作队列元素时,都填写到这个共享接收队列中。但是,因为共享接收队列由多个队列对共享,每个队列对消耗各自的工作队列元素的速度不同,因此共享接收队列中的每个工作队列元素不一定能够按顺序完成,存在乱序完成的可能。现有技术中,为了解决共享接收队列中的工作队列元素的乱序完成的问题,通过引入链表方式,在链表方式下的共享接收队列的工作队列元素由链表头和主体组成,链表头用于指示下一跳指针也就是下一个工作队列元素的位置,而主体是共享接收队列处理业务需要的信息。但是,现有技术中的链表方式,需要解析链表头也就是解析指针才能读取下一个工作队列元素,这样不利于硬件进行顺序读取工作队列元素,而且导致解析指针的损耗,不利于提升硬件效率和降低延迟。

2、为此,本申请提供了一种用于管理共享接收队列的方法、计算机设备及介质,用于应对现有技术中的技术难题。


技术实现思路

1、第一方面,本申请提供了一种用于管理共享接收队列的方法。多个队列对写入所述多个队列对各自的用于接收任务的工作队列元素到共享接收队列。所述方法包括:通过环形缓冲区队首指针和环形缓冲区队尾指针实现在所述共享接收队列的共享接收队列起始地址与所述共享接收队列的共享接收队列结束地址之间的环形缓冲;通过移动所述环形缓冲区队首指针来顺序执行填充操作用于顺序填充工作队列元素到所述共享接收队列,以及,通过比较所述环形缓冲区队首指针和所述环形缓冲区队尾指针来判断是否完成一次填充循环;当所述环形缓冲区队首指针等于所述环形缓冲区队尾指针时,判断完成一次填充循环并且更新全局变量用于记录已完成的填充循环的次数,每次执行填充操作之前,判断所述共享接收队列中的与当前填充操作对应的工作队列元素相关联的至少一个工作队列元素是否均标记已完成,所述至少一个工作队列元素包括与所述当前填充操作对应的工作队列元素,如果所述至少一个工作队列元素均标记已完成,则执行所述当前填充操作从而消耗与所述当前填充操作对应的工作队列元素,如果所述至少一个工作队列元素中任一工作队列元素标记未完成,则替换所述至少一个工作队列元素所在的物理页为空闲物理页池中的物理页,转移所述至少一个工作队列元素所在的物理页到未完成物理页池,并且记录与所述当前填充操作对应的全局变量为所述至少一个工作队列元素所在的物理页相关联的全局变量,然后执行相对于所述当前填充操作的下一填充操作。

2、通过本申请的第一方面,基于环形缓冲的设计,实现了按顺序读取和填充共享接收队列中的工作队列元素,可以循环利用共享接收队列的队列资源,不需要借助链表解析和链表操作,有利于提升硬件效率和减低延迟;针对乱序完成的可能性,利用设定工作队列元素的标记为已完成或者未完成,以及利用空闲物理页池和未完成物理页池,提供了一套高效可靠的机制来应对乱序完成的可能性,从而有效地应对共享接收队列中的工作队列元素的消耗次序可能不同于按顺序读取共享接收队列中的工作队列元素的次序的问题。

3、在本申请的第一方面的一种可能的实现方式中,所述方法还包括:响应于第一接收任务的完成,确定所述第一接收任务相关联的第一工作队列元素编号和所述第一接收任务被下发时的全局变量;基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,定位与所述第一工作队列元素编号对应的工作队列元素,然后标记与所述第一工作队列元素编号对应的工作队列元素为已完成。

4、在本申请的第一方面的一种可能的实现方式中,所述方法还包括:每次标记所述未完成物理页池中的工作队列元素为已完成之后,判断该工作队列元素所在的物理页中的所有工作队列元素是否均标记已完成,如果是,则转移该工作队列元素所在的物理页到所述空闲物理页池。

5、在本申请的第一方面的一种可能的实现方式中,基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,包括:通过比较所述第一接收任务被下发时的全局变量和所述全局变量,判断与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中。

6、在本申请的第一方面的一种可能的实现方式中,基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,还包括:当所述第一接收任务被下发时的全局变量不等于所述全局变量时,确定与所述第一工作队列元素编号对应的工作队列元素是在所述未完成物理页池中;当所述第一接收任务被下发时的全局变量等于所述全局变量时,基于所述第一工作队列元素编号确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中。

7、在本申请的第一方面的一种可能的实现方式中,所述第一接收任务被下发时的全局变量是在执行所述第一接收任务相关联的填充操作时的所述全局变量,所述第一接收任务相关联的填充操作用于填充与所述第一工作队列元素编号对应的工作队列元素到所述共享接收队列。

8、在本申请的第一方面的一种可能的实现方式中,所述第一接收任务的完成是基于所述第一接收任务相关联的完成队列元素被写入到完成队列,所述第一接收任务相关联的完成队列元素包括所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量。

9、在本申请的第一方面的一种可能的实现方式中,所述共享接收队列中的工作队列元素通过大小相同的多个物理页存储,所述共享接收队列中的工作队列元素所在的物理页、所述空闲物理页池中的物理页以及所述未完成物理页池中的物理页一起构成所述多个物理页。

10、在本申请的第一方面的一种可能的实现方式中,所述多个物理页各自的初始地址和当前地址被记录在物理页地址表中的与所述多个物理页一一对应的多个表项,并且,从所述共享接收队列到所述未完成物理页池的物理页转移、从所述未完成物理页池到所述空闲物理页池的物理页转移以及从所述空闲物理页池到所述共享接收队列的物理页转移均通过更改所述物理页地址表中的对应表项实现。

11、在本申请的第一方面的一种可能的实现方式中,所述物理页地址表包括第本文档来自技高网...

【技术保护点】

1.一种用于管理共享接收队列的方法,其特征在于,多个队列对写入所述多个队列对各自的用于接收任务的工作队列元素到共享接收队列,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的方法,其特征在于,基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,包括:

4.根据权利要求3所述的方法,其特征在于,基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,还包括:

5.根据权利要求1所述的方法,其特征在于,所述第一接收任务被下发时的全局变量是在执行所述第一接收任务相关联的填充操作时的所述全局变量,所述第一接收任务相关联的填充操作用于填充与所述第一工作队列元素编号对应的工作队列元素到所述共享接收队列。

6.根据权利要求1所述的方法,其特征在于,所述第一接收任务的完成是基于所述第一接收任务相关联的完成队列元素被写入到完成队列,所述第一接收任务相关联的完成队列元素包括所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量。

7.根据权利要求2所述的方法,其特征在于,所述共享接收队列中的工作队列元素通过大小相同的多个物理页存储,所述共享接收队列中的工作队列元素所在的物理页、所述空闲物理页池中的物理页以及所述未完成物理页池中的物理页一起构成所述多个物理页。

8.根据权利要求7所述的方法,其特征在于,所述多个物理页各自的初始地址和当前地址被记录在物理页地址表中的与所述多个物理页一一对应的多个表项,并且,从所述共享接收队列到所述未完成物理页池的物理页转移、从所述未完成物理页池到所述空闲物理页池的物理页转移以及从所述空闲物理页池到所述共享接收队列的物理页转移均通过更改所述物理页地址表中的对应表项实现。

9.根据权利要求7所述的方法,其特征在于,所述物理页地址表包括第一子表对应所述共享接收队列中的工作队列元素所在的物理页,第二子表对应所述空闲物理页池中的物理页,以及第三子表对应所述未完成物理页池中的物理页,所述共享接收队列中的工作队列元素所在的物理页、所述空闲物理页池中的物理页以及所述未完成物理页池中的物理页之间的物理页转移通过所述第一子表、所述第二子表以及所述第三子表之间的表项交换实现。

10.根据权利要求8所述的方法,其特征在于,所述物理页地址表中的所述多个表项中的每一个表项还记录所述多个物理页中的与该表项对应的物理页是在所述共享接收队列中或者在所述未完成物理页池中。

11.根据权利要求1所述的方法,其特征在于,所述至少一个工作队列元素还包括:在所述环形缓冲中的相对于与所述当前填充操作对应的工作队列元素的下一紧邻工作队列元素。

12.根据权利要求1所述的方法,其特征在于,所述至少一个工作队列元素包括:在所述环形缓冲中的从与所述当前填充操作对应的工作队列元素开始顺序排列的多个工作队列元素。

13.根据权利要求1所述的方法,其特征在于,所述共享接收队列用于远程直接内存访问驱动和所述远程直接内存访问逻辑之间的交互,所述远程直接内存访问逻辑基于所述共享接收队列相关联的接收任务完成次序写入完成队列元素到完成队列从而反馈所述远程直接内存访问驱动,所述接收任务完成次序是基于所述多个队列对各自的用于接收任务的工作队列元素的完成次序。

14.根据权利要求13所述的方法,其特征在于,所述多个队列对基于所述共享接收队列相关联的接收任务写入次序写入所述多个队列对各自的用于接收任务的工作队列元素到所述共享接收队列,所述接收任务写入次序不同于所述接收任务完成次序。

15.根据权利要求14所述的方法,其特征在于,所述共享接收队列中的工作队列元素的消耗次序是基于所述接收任务完成次序。

16.根据权利要求1所述的方法,其特征在于,所述多个队列对下发所述多个队列对各自的用于发送任务的工作队列元素到多个发送队列,所述多个发送队列共享所述共享接收队列。

17.根据权利要求1所述的方法,其特征在于,与所述当前填充操作对应的工作队列元素在所述共享接收队列中位于所述环形缓冲区队首指针在执行所述当前填充操作之前的位置。

18.根据权利要求1所述的方法,其特征在于,按照从所述共享接收队列起始地址到所述共享接收队列结束地址的方向朝着所述环形缓冲区队尾指针移动所述环形缓冲区队首指针。

19.根据权利要求1所述的方...

【技术特征摘要】

1.一种用于管理共享接收队列的方法,其特征在于,多个队列对写入所述多个队列对各自的用于接收任务的工作队列元素到共享接收队列,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1所述的方法,其特征在于,基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,包括:

4.根据权利要求3所述的方法,其特征在于,基于所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量,确定与所述第一工作队列元素编号对应的工作队列元素是在所述共享接收队列中或者在所述未完成物理页池中,还包括:

5.根据权利要求1所述的方法,其特征在于,所述第一接收任务被下发时的全局变量是在执行所述第一接收任务相关联的填充操作时的所述全局变量,所述第一接收任务相关联的填充操作用于填充与所述第一工作队列元素编号对应的工作队列元素到所述共享接收队列。

6.根据权利要求1所述的方法,其特征在于,所述第一接收任务的完成是基于所述第一接收任务相关联的完成队列元素被写入到完成队列,所述第一接收任务相关联的完成队列元素包括所述第一工作队列元素编号和所述第一接收任务被下发时的全局变量。

7.根据权利要求2所述的方法,其特征在于,所述共享接收队列中的工作队列元素通过大小相同的多个物理页存储,所述共享接收队列中的工作队列元素所在的物理页、所述空闲物理页池中的物理页以及所述未完成物理页池中的物理页一起构成所述多个物理页。

8.根据权利要求7所述的方法,其特征在于,所述多个物理页各自的初始地址和当前地址被记录在物理页地址表中的与所述多个物理页一一对应的多个表项,并且,从所述共享接收队列到所述未完成物理页池的物理页转移、从所述未完成物理页池到所述空闲物理页池的物理页转移以及从所述空闲物理页池到所述共享接收队列的物理页转移均通过更改所述物理页地址表中的对应表项实现。

9.根据权利要求7所述的方法,其特征在于,所述物理页地址表包括第一子表对应所述共享接收队列中的工作队列元素所在的物理页,第二子表对应所述空闲物理页池中的物理页,以及第三子表对应所述未完成物理页池中的物理页,所述共享接收队列中的工作队列元素所在的物理页、所述空闲物理页池中的物理页以及所述未完成物理页池中的物理页之间的物理页转移通过所述第一子表、所述第二子表以及所述第三子表之间的表项交换实现。

10.根据权利要求8所述的方法,其特征在于,所述物理页地址表中的所述多个表项中的每...

【专利技术属性】
技术研发人员:潘磊
申请(专利权)人:珠海星云智联科技有限公司
类型:发明
国别省市:

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

1