一种NTB带宽测试的方法及装置与流程

文档序号:11693118阅读:2077来源:国知局
一种NTB带宽测试的方法及装置与流程

本发明涉及带宽测试领域,特别是涉及一种ntb带宽测试的方法及装置。



背景技术:

pci-e非透明桥(ntb,non-transparent-bridge)是连接两个系统的一种点到点的pci-e总线,ntb可以在被连接的两个控制器之间提供高速的数据通信链路。ntb向本地系统提供一个或者多个读写窗口,本地系统对这些窗口的一些读写操作会被映射到远端系统的内存上。且本地系统和远端系统之间可以通过doorbell或者scratchpad等ntb寄存器进行通信。

现有的ntb带宽测试方法是在待测试的两个系统上安装开源linux内核所提供的ntb驱动,并将ntb设备虚拟成网卡来进行测试。具体过程为:本地系统和远端系统通过ntb_netdev模块,将各自的ntb设备分别抽象为虚拟网卡;设置同网段的ip之后,即可基于tcp/ip协议进行通信,借助第三方工具(如iperf、netperf等),基于tcp/ip协议进行带宽测试。

将ntb设备虚拟成虚拟网卡,即在传输层增加了虚拟网卡层,而虚拟网卡层会引起传输的衰减和损耗,从而使得测得的带宽的准确率较低。且将ntb驱动和虚拟网卡层均放在内核态实现,调试和部署都比较复杂。



技术实现要素:

本发明的目的是提供一种ntb带宽测试的方法及装置,目的在于解决现有技术中ntb带宽测试的准确率较低且测试过程较复杂的问题。

为解决上述技术问题,本发明提供一种ntb带宽测试的方法,该方法包括:

基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息;

根据所述签名信息,建立与对端系统的通信链路;

根据cpu内存拷贝方式,利用所述ntb寄存器,将随机生成的测试数据发送至所述对端系统;

统计预设时间内发送的所述测试数据的数据量;

根据所述数据量和所述预设时间,计算出与所述对端系统间的ntb通信带宽。

可选地,所述基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息包括:

利用所述ntb寄存器的第一寄存器窗口,读取所述对端系统的配置空间;

根据所述ntb寄存器的第二寄存器以及所述配置空间,读取所述对端系统ntb寄存器内的所述签名信息。

可选地,所述根据所述签名信息,建立与所述对端系统的通信链路包括:

将所述签名信息与预存储签名信息比对,判断是否一致;

若一致,建立与所述对端系统的所述通信链路。

可选地,所述根据cpu内存拷贝方式,利用所述ntb寄存器,将随机生成的测试数据发送至所述对端系统包括:

根据所述cpu内存拷贝方式,将所述测试数据发送至所述ntb寄存器的第三寄存器窗口;

利用地址翻译寄存器,将所述测试数据发送至所述对端系统。

可选地,在所述基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息之前还包括:

初始化当前系统;

根据预设配置规则,在所述ntb_transport模块内配置所述ntb寄存器。

此外,本发明还提供了一种ntb带宽测试的装置,该装置包括:

读取模块,用于基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息;

建立模块,用于根据所述签名信息,建立与所述对端系统的通信链路;

发送模块,用于根据cpu内存拷贝方式,利用所述ntb寄存器,将随机生成的测试数据发送至所述对端系统;

统计模块,用于统计预设时间内发送的所述测试数据的数据量;

计算模块,用于根据所述数据量和所述预设时间,计算出与所述对端系统间的ntb通信带宽。

可选地,所述读取模块包括:

第一读取单元,用于利用所述ntb寄存器的第一寄存器窗口,读取所述对端系统的配置空间;

第二读取单元,用于根据所述ntb寄存器的第二寄存器以及所述配置空间,读取所述对端系统ntb寄存器内的所述签名信息。

可选地,所述建立模块包括:

比对单元,用于将所述签名信息与预存储签名信息比对,判断是否一致;

建立单元,用于若一致,建立与所述对端系统的所述通信链路。

可选地,所述发送模块包括:

第一发送单元,用于根据所述cpu内存拷贝方式,将所述测试数据发送至所述ntb寄存器的第三寄存器窗口;

第二发送单元,用于利用地址翻译寄存器,将所述测试数据发送至所述对端系统。

可选地,还包括:

初始化模块,用于初始化当前系统;

配置模块,用于根据预设配置规则,在所述ntb_transport模块内配置所述ntb寄存器。

本发明所提供的一种ntb带宽测试的方法及装置,基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息;根据签名信息,建立与对端系统的通信链路;根据cpu内存拷贝方式,利用ntb寄存器,将随机生成的测试数据发送至对端系统;统计预设时间内发送的测试数据的数据量;根据数据量和预设时间,计算出与对端系统间的ntb通信带宽。本申请将ntb_transport模块转移至用户态,且不用借助第三方测试工具,方便调试和部署;直接利用ntb_transport模块配置的寄存器,实现和对端系统的通信,而不用经过虚拟网卡层,不会有传输损耗,使得测得的带宽的准确率较高。可见,本申请有利于提高ntb通信带宽的测试准确率,且便于调试和部署。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的ntb带宽测试方法的一种具体实施方式的流程示意图;

图2为本发明实施例所提供的ntb通信实现模型示意图;

图3为本发明实施例所提供的ntb带宽测试装置的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,图1为本发明实施例所提供的ntb带宽测试方法的一种具体实施方式的流程示意图,该方法包括以下步骤:

步骤101:基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息。

需要说明的是,上述ntb寄存器可以是指本地系统的寄存器,具体地,其可以包括bar0/1寄存器、bar2/3寄存器、bar4/5寄存器、相关联的窗口大小寄存器、地址翻译寄存器以及scratchapad寄存器等。ntb通信可以利用相关寄存器进行通信。

上述ntb_transport模块可以是指本地系统ntb驱动层中的模块,可以在该ntb_transport模块中,对相关ntb寄存器进行配置,以保证后续本地系统和对端系统的通信。而为了调试和部署的方便,将该ntb_transport模块从内核态转移至用户态。

当然,对端系统内也可以利用ntb_transport模块,对自身系统的相关寄存器进行预先配置,以保证本地系统和对端系统之间的通信。

上述对端系统ntb寄存器可以是指对端系统或远端系统中的ntb寄存器,其可以包括bar0/1寄存器、bar2/3寄存器、bar4/5寄存器、相关联的窗口大小寄存器、地址翻译寄存器以及scratchapad寄存器等。

上述签名信息可以是指预先设定的特定信息,可以根据对端系统的签名信息,来判断该对端系统是否为所要通信的对端系统。而该签名信息可以存储在ntb寄存器的scratchpad0寄存器中,具体地,在对端系统的ntb设备使能之后,会向自身系统内的scratchpad0寄存器填充预先约定好的签名信息。当然,对端系统的ntb设备在使能之后也会进行签名信息的填充。

为了更好地介绍本地系统和对端系统之间的通信实现模型,下面将结合图2进行介绍说明,图2为本发明实施例所提供的ntb通信实现模型示意图。

如图2所示,本地系统和远端系统内均设置有ntb_transport模块、ntb_hardware模块和配置空间以及io空间。ntb_transport模块位于用户态,ntb_hardware模块、配置空间和io空间位于内核态。用户态可以通过linux内核接口ioctl去访问内核态的相关资源。本地系统和远端系统的ntb_transport模块之间可以通过cpu内存拷贝方式通信。该ntb通信实现模型不用虚拟网卡层,避免了网络层造成传输损耗导致的带宽测试准确率低下的问题,且将ntb_transport模块转移至用户态,方便调试和部署。

为了保证本地系统和对端系统的通信,需要利用ntb设备驱动来配置寄存器、内存窗口等,保证本地系统和对端系统间的正常通信。

作为一种具体实施方式,在上述基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息之前还可以包括:初始化当前系统;根据预设配置规则,在所述ntb_transport模块内配置所述ntb寄存器。

需要说明的是,上述当前系统可以是指本地系统,即本地系统初始化自身的ntb寄存器。当前,对端系统也会先进行初始化,初始化自身的ntb寄存器。

可以直接在ntb_transport模块内对相关ntb寄存器进行合理配置。上述预设配置规则可以具体表现为:将bar0/1作为访问本地系统配置空间的寄存器;bar2/3作为访问远端系统配置空间的寄存器;bar4/5作为访问远端系统内存空间的寄存器;利用scratchpad0寄存器存储签名信息;利用scratchpad1寄存器存储本地工作空间64位内存地址的高32位;利用scratchpad2寄存器存储本地工作空间64位内存地址的低32位。

可以看出,在ntb_transport模块内直接对相关ntb寄存器进行合理配置,保证系统间的正常通信。

在ntb_transport模块中配置完相关ntb寄存器之后,可以通过本地系统提供的寄存器来和对端系统通信。

作为一种具体实施方式,上述基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息的过程可以具体为:利用所述ntb寄存器的第一寄存器窗口,读取所述对端系统的配置空间;根据所述ntb寄存器的第二寄存器以及所述配置空间,读取所述对端系统ntb寄存器内的所述签名信息。

具体地,本地系统循环读取对端系统的scratchpad0寄存器,以判断对端ntb设备是否使能,并获取签名信息。

需要说明的是,上述第一寄存器窗口可以具体指bar2/3窗口,即本地系统通过配置好的bar2/3窗口,获取对端系统的配置空间。

上述第二寄存器可以具体指scratchapad0寄存器,此时,通过scratchapad0寄存器既定的偏移位置和配置空间,来读取签名信息。

步骤102:根据所述签名信息,建立与对端系统的通信链路。

需要说明的是,本地系统可以根据该签名信息,判断对端系统是否使能,从而建立与对端系统的通信链路。

作为一种具体实施方式,上述根据所述签名信息,建立与所述对端系统的通信链路的过程可以具体为:将所述签名信息与预存储签名信息比对,判断是否一致;若一致,建立与所述对端系统的所述通信链路。

对获取到的签名信息进行判断,确定其是否为预先约定好的签名信息,进而确定该对端系统是否使能,确认其是否为所需通信的对端系统。

步骤103:根据cpu内存拷贝方式,利用所述ntb寄存器,将随机生成的测试数据发送至所述对端系统。

需要说明的是,上述ntb寄存器可以具体指bar4/5窗口和bar4/5地址翻译寄存器。

具体地,本地系统在建立通信链路之后,会不断地随机生成数据,且会开始计时,通过通信链路将该数据发送至对端系统。当然,对端系统在建立通信链路之后,也会同时开始计时,并不断地从对应的内存位置读取数据。

作为一种具体实施方式,上述根据cpu内存拷贝方式,利用所述ntb寄存器,将随机生成的测试数据发送至所述对端系统的过程可以具体为:根据所述cpu内存拷贝方式,将所述测试数据发送至所述ntb寄存器的第三寄存器窗口;利用地址翻译寄存器,将所述测试数据发送至所述对端系统。

需要说明的是,上述第三寄存器窗口可以具体指bar4/5窗口,而地址翻译寄存器可以具体指bar4/5地址翻译寄存器。

具体地,本地系统以cpu内存拷贝的方式,向本地bar4/5窗口中发送数据,然后经过bar4/5地址翻译寄存器的翻译,即可将数据发送至对端系统的指定位置。

步骤104:统计预设时间内发送的所述测试数据的数据量。

可以理解的是,上述预设时间可以是根据实际需要进行设定,在此不作限定。

当然,对端系统也可以同时开始统计数据发送时间和所接收的数据量,然后本地系统和对端系统都进行带宽计算。

步骤105:根据所述数据量和所述预设时间,计算出与所述对端系统间的ntb通信带宽。

本发明实施例所提供的ntb带宽测试方法,基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息;根据签名信息,建立与对端系统的通信链路;根据cpu内存拷贝方式,利用ntb寄存器,将随机生成的测试数据发送至对端系统;统计预设时间内发送的测试数据的数据量;根据数据量和预设时间,计算出与对端系统间的ntb通信带宽。该方法将ntb_transport模块转移至用户态,且不用借助第三方测试工具,方便调试和部署;直接利用ntb_transport模块配置的寄存器,实现和对端系统的通信,而不用经过虚拟网卡层,不会有传输损耗,使得测得的带宽的准确率较高。

下面对本发明实施例提供的ntb带宽测试装置进行介绍,下文描述的ntb带宽测试装置与上文描述的ntb带宽测试方法可相互对应参照。

图3为本发明实施例所提供的ntb带宽测试装置的结构框图,参照图3ntb带宽测试装置可以包括:

读取模块31,用于基于利用位于用户态的ntb_transport模块预先配置的ntb寄存器,读取对端系统ntb寄存器内的签名信息;

建立模块32,用于根据签名信息,建立与对端系统的通信链路;

发送模块33,用于根据cpu内存拷贝方式,利用ntb寄存器,将随机生成的测试数据发送至对端系统;

统计模块34,用于统计预设时间内发送的测试数据的数据量;

计算模块35,用于根据数据量和预设时间,计算出与对端系统间的ntb通信带宽。

可选地,上述读取模块包括:

第一读取单元,用于利用ntb寄存器的第一寄存器窗口,读取对端系统的配置空间;

第二读取单元,用于根据ntb寄存器的第二寄存器以及配置空间,读取对端系统ntb寄存器内的签名信息。

可选地,上述建立模块包括:

比对单元,用于将签名信息与预存储签名信息比对,判断是否一致;

建立单元,用于若一致,建立与对端系统的通信链路。

可选地,上述发送模块包括:

第一发送单元,用于根据cpu内存拷贝方式,将测试数据发送至ntb寄存器的第三寄存器窗口;

第二发送单元,用于利用地址翻译寄存器,将测试数据发送至对端系统。

可选地,还包括:

初始化模块,用于初始化当前系统;

配置模块,用于根据预设配置规则,在ntb_transport模块内配置ntb寄存器。

本发明实施例所提供的ntb带宽测试装置,该装置将ntb_transport模块转移至用户态,且不用借助第三方测试工具,方便调试和部署;直接利用ntb_transport模块配置的寄存器,实现和对端系统的通信,而不用经过虚拟网卡层,不会有传输损耗,使得测得的带宽的准确率较高。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的ntb带宽测试的方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1