System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种测试物理服务器网络带宽的方法技术_技高网

一种测试物理服务器网络带宽的方法技术

技术编号:40340877 阅读:6 留言:0更新日期:2024-02-09 14:28
本发明专利技术提出了一种测试物理服务器网络带宽的方法,属于计算机网络领域。在测试物理服务器网络带宽的时候,使用单进程iperf3测试的数据往往收到cpu的限制,没有办法打满整个带宽。使用多进程iperf3得时候,也往往会因为各种原因导致测试的带宽低下,udp大量丢包。本方法介绍了一种使用iperf3测试带宽的方法,通过网卡的RSS和Flow Director,将包转到numa所在的cpu上,同时避免了处理包/iperf3是被一个cpu超线程出来的cpu处理,有效的降低丢包率,提升iperf3处理能力,得到比较准确的TCP带宽和UDP带宽,反应更真实的网络性能。

【技术实现步骤摘要】

本专利技术涉及计算机网络领域,具体来说是一种测试物理服务器网络带宽的方法


技术介绍

1、国产服务器国产cpu如雨后春笋般发展起来。快速发展带来的影响就是服务器的性能参差不齐,各厂商的优化,散热,配置等存在很大的差异。对于各中小企业服务器采购,以及云厂商的服务器采购带来了更大的挑战。服务器采购前的适配测试就显得尤为重要。测试的越准确,今后因为性能发生的问题概率就会越低。

2、在我们的服务器采购中,服务器的性能应该作为采购的重要指导之一。但是物理机的性能并不是可以简单获取到的。例如本专利中所论述的物理服务器的网络带宽性能。影响服务器网络性能的原因有很多,基于不同的cpu,不同的物理网卡,内存性能,总线等等会使得网络性能存在很大差异。即使相同的配置服务器,最终的性能也会有很大的差异。现在跨结点的虚拟化资源相互访问离不开物理机的网络性能。只有物理机网络性能足够优秀,才能保证支撑复杂的业务。

3、iperf3是一个tcp、udp和sctp网络带宽测量工具。是用于主动测量ip网络上可达到的最大带宽的工具。它支持调整与时序,协议和缓冲区有关的各种参数。对于每个测试,它都会报告测得的吞吐量/比特率,损耗和其他参数。是测试带宽的最佳工具。iperf3有多个版本。支持linux,windows等主流的操作系统。

4、现有的方法存在以下缺点:

5、常规测试中,iperf3无法打满大规格的网络,并且udp丢包严重,无法准确测试出实际的网络性能。


技术实现思路

<p>1、本专利技术主要目的是测试物理服务器网络性能。最主要的是tcp/udp带宽。

2、为实现上述目的,本专利技术采取的技术方案为:

3、1.iperf3是一个单线程测试工具,-p指定之后也只是开启了多个流,最终使用的还是单个线程,所以测试时要使用多进程,才能保证iperf3打满物理机网络,在单个的iperf3进程时,经过测试,intel5318的cpu最高只能打到16gbits/sec左右,鲲鹏920cpu最高15gbits/sec左右,海光77380和飞腾2000+,飞腾s2500的测试结果更低,在做了bond4之后的10gbits/sec网卡下,理论可以达到接近于20gbits/sec的带宽,以上cpu单进程无法打满理论带宽,更没有办法衡量物理机网络,在本方案的测试中,同时开启多个进程,绑定不同的端口,用&放在后台进行执行,将测试结果保存下来,通过脚本进行累加,带宽总数即为物理机网络的带宽数,丢包率需要平均,这里建议使用-b 0g,让他自己调节带宽的大小,-p指定多个流,防止因为内存读写缓冲区的原因造成内存的溢出。

4、2.为了确保测试结果的准确性,我们需要在测试开始前将cpu设定为性能模式。因为,当cpu处于节能模式时,其频率会降低,这可能会导致测试的数据并不真实反映系统的实际性能。尽管我们可以通过bios设置为performance模式,但这并不能保证cpu会持续运行在最高频率。有些服务器,特别是在空载一段时间后,会自动切回到节能模式以节省电力。在这种模式下,无论是测试的带宽还是延迟都可能偏低。为了解决这个问题,我们可以使用cpufrequtils这一工具。它是一个专门用于调节cpu频率的实用程序。通过简单的命令行指令,我们可以轻松地将cpu切换到性能模式。对于拥有96个cpu的物理机,我们可以使用循环命令来为每一个cpu逐一设置。这样,我们可以确保在测试期间,每一个cpu都处于最佳的性能状态,从而为我们提供准确、可靠的测试数据。

5、3.rss(receive side scaling)是一种网络技术,通过将数据包根据其元组信息散列到不同的网卡队列,以实现更高效的cpu资源利用。然而,在某些情况下,即使使用了rss,测试结果可能仍然不尽如人意。例如,当进行网络流量测试时,通常会使用一台client和一台server。在这种情况下,由于源ip和目的ip是固定的,因此数据包会聚集到同一个网卡队列中。这意味着即使使用了rss,多进程测试也无法提高性能,因为所有的数据包最终都会被一个cpu处理。这可能会导致测试结果与单进程测试的结果相同。此外,在udp测试中,由于数据包的顺序可能会发生变化,可能会导致丢包率升高。这可能会对测试结果产生负面影响。为了解决这个问题,我们可以使用ethtool命令来修改网卡的rss hash规格。通过将hash规格改为源ip、目的ip、源端口和目的端口,我们可以确保数据包根据更复杂的信息散列到不同的网卡队列。这可以使测试更加准确,并避免因数据包顺序变化而导致的丢包问题。总之,通过修改ethtool命令来修改网卡的rss hash规格,我们可以确保在网络测试中充分利用cpu资源,并获得更准确的测试结果。

6、4.当物理机的bios设置为性能模式时,通常会启用超线程技术,这是云厂商为了提高整体性能常用的方法。然而,在进行网络测试时,这种设置可能会导致一些问题。由于超线程技术使一个物理cpu对应两个虚拟cpu,如果经过哈希处理后的数据包进入了由相同物理cpu虚拟出来的两个cpu的队列中,那么可能会导致带宽受限,同时在udp测试中丢包率也会显著增加。为了解决这个问题,我们可以利用网卡所支持的flow director技术。flowdirector是intel公司开发的一种技术,它可以根据数据包的字段进行精确匹配,并将数据包分配到特定的队列中。网卡上存储了一个flow director表,该表记录了需要匹配的关键字以及匹配后的动作。网卡驱动程序负责管理这个表,包括初始化、增加表项和删除表项等操作。当网卡从网络上接收到数据包时,它会根据关键字查找flow director表。如果找到匹配项,就会按照表项中指定的动作处理数据包,例如将数据包分配到特定的队列或者丢弃。flow director的优先级高于rss(receive side scaling),因此我们可以使用flowdirector来指定不同端口的流量进入特定的队列,并由指定的cpu进行软中断处理。通过使用flow director技术,我们可以避免在网络测试中出现带宽受限和丢包率增加的问题。这项技术可以根据需要精确地控制数据包的流向,确保数据包能够被正确地处理和分发。这对于需要进行精确网络测试的场景非常有用,可以帮助我们更准确地评估系统的性能和表现。

7、5.在进行网络性能测试之前,确保网卡的flow director功能已启用是非常重要的。flow director功能可以根据数据包的字段进行精确匹配,并将数据包分发到指定的队列,从而优化网络性能。要检查网卡是否已启用flow director功能,可以使用命令sudoethtool–k网卡|grep ntuple进行查看。如果返回结果为ntuple-filters:off,则表示该功能未启用。为了开启flow director功能,需要执行命令sudo ethtool-k网卡ntuple on。执行完毕后,再次使用查看命令确认是否成本文档来自技高网...

【技术保护点】

1.一种测试物理服务器网络带宽的方法,其特征在于:Iperf3是一个单线程测试工具,-P指定之后也只是开启了多个流,最终使用的还是单个线程,所以测试时要使用多进程,才能保证iperf3打满物理机网络,在单个的iperf3进程时,经过测试,Intel 5318的cpu最高只能打到16GBITS/SEC左右,鲲鹏920cpu最高15GBITS/SEC左右,海光77380和飞腾2000+,飞腾S2500的测试结果更低,在做了bond4之后的10GBITS/SEC网卡下,理论可以达到接近于20GBITS/SEC的带宽,以上CPU单进程无法打满理论带宽,更没有办法衡量物理机网络,在本方案的测试中,同时开启多个进程,绑定不同的端口,用&放在后台进行执行,将测试结果保存下来,通过脚本进行累加,带宽总数即为物理机网络的带宽数,丢包率需要平均,这里建议使用-b0G,让他自己调节带宽的大小,-P指定多个流,防止因为内存读写缓冲区的原因造成内存的溢出。

2.根据权利要求1所述的一种测试物理服务器网络带宽的方法,其特征在于:使在测试前应该开始cpu的性能模式,防止因为处于节能模式,cpu频率较低的时候,使得测试结果不准确,现在通过biso设置performance模式,不一定会将cpu设置为最高频率,有些服务器在空载一段时间后还会自动设置为节能模式,在此模式下测试的数据不管是带宽还是延迟都会非常低,Cpufrequtils是一个cpu调节工具,可以使用命令cpufreq-set-g performance将cpu调节到性能模式,在96个cpu的物理机中,可以使用:for((i=0;i<96;i++));do sudocpufreq-set-c${i}-g performance;done将所有的cpu开启性能模式。

3.根据权利要求1所述的一种测试物理服务器网络带宽的方法,其特征在于:现在的常规网卡都支持RSS(Receive Side ScalinGbits/sec),RSS是一个通过数据包的元组信息将数据包散列到不同网卡队列的功能,这时候不同的CPU再去对应的网卡队列读取数据进行处理,就可以充分利用CPU资源,默认RSS的哈希算法是只支持源IP,目的IP的,因为我们测试的时候,是一台client,一台server,进行打流的时候源IP和目的IP都是保持不变的,这个时候多进程是没有用的,最终都会进入一个网卡队列,被一个cpu处理,结果和单进程是相同的,在udp测试中,还会导致丢包率升高,我们通过修改ethtool-N网卡名rx-flow-hashudp4 sdfn,将网卡的RSS hash规格改为源IP,目的IP,源端口,目的端口,可以根据测试需要进行修改tcp4,udp4,tcp6,udp6。

4.根据权利要求1所述的一种测试物理服务器网络带宽的方法,其特征在于:大多数物理机在bios开启成性能模式之后,会开启超线程模式,平时云厂商也会使用超线程来使整体性能提高,即一个cpu对应两个虚拟cpu,在进行网络测试时,如果经过hash之后进入的queue是相同的cpu虚拟出来的两个cpu,会导致带宽上不去,udp丢包率非常高,但是网卡同时也支持Flow Director,该技术是Intel公司提出的根据包的字段精确匹配,将其分配到某个特定队列的技术:网卡上存储了一个Flow Director的表,表的大小受硬件资源限制,它记录了需要匹配字段的关键字及匹配后的动作;驱动负责操作这张表,包括初始化、增加表项、删除表项;网卡从线上收到数据包后根据关键字查Flow Director的这张表,匹配后按照表项中的动作处理,可以是分配队列、丢弃等,Flow Director的优先级是高于RSS的,所以我们可以指定,不同端口的流量过来让他打到指定的queue,被指定的cpu进行软中断处理。

5.根据权利要求4所述的一种测试物理服务器网络带宽的方法,其特征在于:在使用前需要先开启网卡的Flow Director功能,使用命令:sudo ethtool–k网卡|grep ntuple,查看是否开启,返回ntuple-filters:off则没有开启功能,需要执行sudo ethtool-K网卡ntuple on开启,如果返回ntuple-filters:on则表示已开启,ethtool-U网卡flow-typeudp4 dst-port端口action队列号,可以将指定端口的流打到该队列下,进而被指定的cpu进行处理,我们的iperf3测试工具也可以指定-A,来绑核,确保iperf3使用的cpu和用来接受流量的cpu不在一起,并且让他们间隔开,不要被超线程影响,在client端可以设置client和ser...

【技术特征摘要】

1.一种测试物理服务器网络带宽的方法,其特征在于:iperf3是一个单线程测试工具,-p指定之后也只是开启了多个流,最终使用的还是单个线程,所以测试时要使用多进程,才能保证iperf3打满物理机网络,在单个的iperf3进程时,经过测试,intel 5318的cpu最高只能打到16gbits/sec左右,鲲鹏920cpu最高15gbits/sec左右,海光77380和飞腾2000+,飞腾s2500的测试结果更低,在做了bond4之后的10gbits/sec网卡下,理论可以达到接近于20gbits/sec的带宽,以上cpu单进程无法打满理论带宽,更没有办法衡量物理机网络,在本方案的测试中,同时开启多个进程,绑定不同的端口,用&放在后台进行执行,将测试结果保存下来,通过脚本进行累加,带宽总数即为物理机网络的带宽数,丢包率需要平均,这里建议使用-b0g,让他自己调节带宽的大小,-p指定多个流,防止因为内存读写缓冲区的原因造成内存的溢出。

2.根据权利要求1所述的一种测试物理服务器网络带宽的方法,其特征在于:使在测试前应该开始cpu的性能模式,防止因为处于节能模式,cpu频率较低的时候,使得测试结果不准确,现在通过biso设置performance模式,不一定会将cpu设置为最高频率,有些服务器在空载一段时间后还会自动设置为节能模式,在此模式下测试的数据不管是带宽还是延迟都会非常低,cpufrequtils是一个cpu调节工具,可以使用命令cpufreq-set-g performance将cpu调节到性能模式,在96个cpu的物理机中,可以使用:for((i=0;i<96;i++));do sudocpufreq-set-c${i}-g performance;done将所有的cpu开启性能模式。

3.根据权利要求1所述的一种测试物理服务器网络带宽的方法,其特征在于:现在的常规网卡都支持rss(receive side scalingbits/sec),rss是一个通过数据包的元组信息将数据包散列到不同网卡队列的功能,这时候不同的cpu再去对应的网卡队列读取数据进行处理,就可以充分利用cpu资源,默认rss的哈希算法是只支持源ip,目的ip的,因为我们测试的时候,是一台client,一台server,进行打流的时候源ip和目的ip都是保持不变的,这个时候多进程是没有用的,最终都会进入一个网卡队列,被一个cpu处理,结果和单进程是相同的,在udp测试中,还会导致丢...

【专利技术属性】
技术研发人员:张琪琪田茂宇蒋豪禹尹萍
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1