一种面向RDMA设备的负载测试方法、介质及设备与流程
本发明涉及远程直接内存访问设备测试,特别是涉及一种面向rdma设备的负载测试方法、介质及设备。
背景技术:
1、远程直接内存访问(remote direct memory access,rdma)是一种允许一台计算设备直接访问另一台计算设备内存的数据传输技术。rdma能够减少数据复制以及处理器对数据传输过程的参与,具有传输带宽高、数据传输时延低等特点,因而被广泛应用于分布式存储、高性能计算及数据中心网络等场景。
2、在rdma通信过程中,通信双方通常通过队列对(queue pair,qp)管理数据传输。每个qp包括发送工作队列和接收工作队列,并对应有用于描述连接状态、发送状态和接收状态的qp上下文。软件通过向相应工作队列中提交工作队列元素(work queue element,wqe),使rdma设备执行远程直接内存访问写操作、远程直接内存访问读操作或者发送操作。
3、为了检测rdma设备的性能及运行稳定性,通常使用perftest等测试工具向rdma设备持续下发wqe。在现有测试过程中,测试工具一般在测试开始时统一创建预设数量的qp,通过所创建的qp执行负载传输,并在测试结束后统一销毁全部qp。由此,在一次测试过程中,各qp及其占用的qp上下文、内存等资源通常保持不变。
4、然而,在实际业务场景中,rdma设备可能同时维护大量qp,并且随着业务任务的启动、结束或者通信关系的变化,部分qp会在其他qp持续进行数据传输的过程中被销毁和重新创建。因此,rdma设备除需处理数据传输负载外,还需要同时处理qp上下文及关联资源的申请、释放、回收和重新分配。
5、由于现有测试工具在测试期间通常保持qp生命周期不变,难以在设备持续承担数据传输负载的情况下,对qp及其关联资源的动态变化过程进行测试。如果直接在现有打流过程中销毁qp,打流线程可能仍向已经销毁或者正在重建的qp下发新的wqe;而在新qp创建后,如果接收缓冲区等接收资源尚未准备完成即恢复数据传输,还可能导致到达的数据无法被正常接收。因此,在持续打流过程中实现qp的动态销毁和重建,还需要解决打流过程与qp生命周期变化之间的协调问题。
6、因此,如何在远程直接内存访问设备持续进行负载传输的过程中,对部分qp进行动态销毁和重建,并协调wqe下发与qp状态变化,以测试远程直接内存访问设备在负载状态下对qp及其关联资源进行申请、释放和重新使用的能力,是亟待解决的技术问题。
技术实现思路
1、针对上述技术问题之一,本发明采用的技术方案为:
2、根据本发明的一个方面,提供了一种面向rdma设备的负载测试方法,包括以下步骤:
3、建立逻辑队列对索引集合,为各逻辑队列对索引分别创建硬件队列对并建立映射关系,设置用于记录负载测试所处处理阶段的全局状态标志,并为各逻辑队列对索引分别设置索引状态标志;其中,全局状态标志包括运行状态和更新状态,索引状态标志包括活动状态、冻结状态和重新激活准备状态;
4、通过打流线程读取各逻辑队列对索引的索引状态标志,并通过处于活动状态的逻辑队列对索引所映射的硬件队列对,向远程直接内存访问设备下发工作队列元素;
5、响应于在全局状态标志处于运行状态时满足预设队列对更新条件,通过控制线程将全局状态标志切换为更新状态,并从逻辑队列对索引集合中确定部分逻辑队列对索引作为目标逻辑队列对索引,以及将各目标逻辑队列对索引的索引状态标志由活动状态切换为冻结状态,以停止通过各目标逻辑队列对索引下发新的工作队列元素;其中,未被确定为目标逻辑队列对索引且处于活动状态的其他逻辑队列对索引继续用于下发工作队列元素;
6、通过控制线程销毁各目标逻辑队列对索引所映射的硬件队列对,分别为各目标逻辑队列对索引创建新的硬件队列对,将新的硬件队列对重新映射至对应的目标逻辑队列对索引,并将各目标逻辑队列对索引的索引状态标志由冻结状态切换为重新激活准备状态;
7、为各目标逻辑队列对索引所映射的新的硬件队列对准备接收资源;响应于接收资源准备完成,将相应的索引状态标志由重新激活准备状态切换为活动状态,以使打流线程恢复通过新的硬件队列对下发工作队列元素;响应于各目标逻辑队列对索引均恢复为活动状态,通过控制线程将全局状态标志切换为运行状态。
8、根据本发明的第二个方面,提供了一种非瞬时性计算机可读存储介质,非瞬时性计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的面向rdma设备的负载测试方法。
9、根据本发明的第三个方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的面向rdma设备的负载测试方法。
10、本发明至少具有以下有益效果之一:
11、本发明通过设置用于表示运行阶段和队列对更新阶段的全局状态标志,并为各逻辑队列对索引设置活动状态、冻结状态和重新激活准备状态,使控制线程在满足队列对更新条件时,将目标逻辑队列对索引切换为冻结状态,进而使打流线程停止通过目标逻辑队列对索引下发新的工作队列元素;同时,未被确定为目标逻辑队列对索引且处于活动状态的其他逻辑队列对索引继续用于下发工作队列元素。由此,能够避免在硬件队列对销毁或者重建过程中继续向其下发任务,并使rdma设备在部分硬件队列对动态变化的同时继续承担数据传输负载。使得,该测试过程能够模拟实际业务运行期间部分通信队列持续销毁和重新建立、其他通信队列持续进行高负载数据传输的工作状态,使测试过程更贴近rdma设备的实际使用场景,提高对动态连接场景的覆盖能力。
12、同时,本发明通过建立逻辑队列对索引与硬件队列对之间的映射关系,在销毁目标逻辑队列对索引原来映射的硬件队列对后,为各目标逻辑队列对索引创建新的硬件队列对,并将新的硬件队列对重新映射至对应的目标逻辑队列对索引。由于逻辑队列对索引在硬件队列对更新前后保持不变,而其映射的硬件队列对能够动态变化,因此无需因硬件队列对的销毁和重建而重新建立逻辑队列对索引集合,降低硬件队列对动态变化对测试程序管理结构的影响;同时,通过反复销毁和创建硬件队列对,能够在持续负载场景下反复触发队列对上下文及关联资源的申请、释放、回收和重新使用,以测试rdma设备对相关资源进行动态管理的稳定性。
13、并且,本发明通过在新的硬件队列对重新映射至目标逻辑队列对索引后,先将目标逻辑队列对索引切换为重新激活准备状态,并为新的硬件队列对准备接收资源,在接收资源准备完成后再将目标逻辑队列对索引切换为活动状态并恢复工作队列元素的下发。由于新的硬件队列对只有在具备数据接收条件后才重新参与负载测试,因此能够避免接收缓冲区尚未准备完成时恢复数据传输所导致的数据无法正常接收,提高硬件队列对动态恢复过程和负载测试过程的可靠性。
1.一种面向rdma设备的负载测试方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的方法,其特征在于,所述逻辑队列对索引集合包括多个在负载测试过程中保持存在的逻辑队列对索引,每个逻辑队列对索引对应设置有管理记录;所述管理记录至少包括逻辑队列对索引标识、硬件队列对标识和所述索引状态标志;
3.根据权利要求1所述的方法,其特征在于,所述活动状态用于指示相应的逻辑队列对索引映射有允许下发工作队列元素的硬件队列对;
4.根据权利要求1所述的方法,其特征在于,所述从所述逻辑队列对索引集合中确定部分逻辑队列对索引作为目标逻辑队列对索引的步骤,包括:
5.根据权利要求1所述的方法,其特征在于,所述为各目标逻辑队列对索引所映射的新的硬件队列对准备接收资源的步骤,包括:
6.根据权利要求1所述的方法,其特征在于,所述通过处于所述活动状态的逻辑队列对索引所映射的硬件队列对,向所述远程直接内存访问设备下发工作队列元素的步骤,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
9.一种非瞬时性计算机可读存储介质,所述非瞬时性计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的面向rdma设备的负载测试方法。
10.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8任一项所述的面向rdma设备的负载测试方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com