★ ★ ★ ★ ★写下此文章是为了方便这方面需要的小白,因为之前我也是小白一枚,突然要用pktgen工具时,查阅资料大多都是官网翻译过来,写得不够详细,小白无法理解。因此本人经过一段时间的学习探究,开始搞懂其用法,也给大家分享分享,也纪念一下努力学习的自己。

为什么用pktgen进行性能测试?有时候需要对某个网卡或是一些转发设备进行性能测试,但是专业的测试仪还是比较昂贵的,此时只需要有一台Linux系统的服务器便可满足需求。关于pktgen的废话我就不多说,以下谈谈本人用pktgen对设备进行性能测试步骤,仅供新手参考,相互学习。

准备工作:

1,搭建测试环境。如拓扑:pktgen(eth1)————被测设备————(eth2)pktgen

2,如果Linux中的pktgen没有自带脚本,则需要到网上下载pktgen-master.zip,并将其上传到Linux中解压,之后得到可满足简单测试的脚本。

准备工作做好之后我们就开始测试,let's go!

1,查看一下内核版本,配置eth1、eth2地址

#uname -a

# ifconfig eth1 10.1.1.1/24 up       //这里配置测试透明模式,因此同一网段,如果要测试路由模式则只需配置不同网段且网关指向被测设备直连接口即可

#ifconfig eth2 10.1.1.2/24 up       //其余的就需要在路由测试用的脚本稍稍配置就行。

2,配置好之后,就需要加载性能测试工具pktgen了

#lsmod | grep pktgen     //查看是否加载了pktgen,若回车之后返回空白表示没有加载

#modprobe pktgen       //加载pktgen,此时在执行查看命令就会有返回值,说明加载成功。

#ls /proc/net/pktgen     //你会查看到很多kpktgend_X的文件,这个是由CPU的核数决定的,而文件pgctrl是pktgen的版本信息,可以用cat命令查看

3,加载成功之后就需要做CPU的亲和绑定了。why do this? CPU对应的每个线程kpktgend_X是通过相应的借口ethX接受或收发数据的,这样做是防止CPU变动而导致缓存丢失,从而对测试的影响。

#cat /proc/interrupts | grep eth     //查看所有借口对应的中断,你也可以只查看某个接口

#echo 1 > /proc/irq/56/smp_iffinity   //查看中断时eth对应9个中断,即56-64,因此都要执行绑定,这表示eth0的中断绑定到CPU1上。

#cat /proc/irq/56/smp_iffinity     //查看是否绑定成功,返回01则表示绑定到CPU1成功,同理把eth1的中断绑定到CPU上步骤同上,你可以分开绑定,将eth1的中断绑定到CPU2上。

4,到此,工作准备得差不多了,接下来是对脚本的配置,找到做准备工作时解压脚本的文件夹,进入里面找到examples文件夹,里面有很多测试用的脚本,每个脚本基本都有注释,标明该脚本用于哪种测试。下面附上我当时脚本:

5脚本弄好之后,就可以我们的测试了,在脚本的本层路径下运行

#sh pktgen.conf-2-2    //运行一段时间之后,按下Ctrl+C停止运行,就可查看结果了。

6,结果的查看。因为在执行脚本时执行了add_device eth0/eth1,因此你在pktgen文件夹下会看到比测试前多了两个文件 eth0、eth1,你只需查看这两个文件即可得到相应的测试结果。

#ls /proc/net/pktgen    //查看是否多出eth0、eth1文件

#cat /proc/net/pktgen/eth0  //查看结果,其中params是一些脚本的配置信息,current是运行的状态,result就是测试结果了,我测试千兆的设备,基本可以达到。

结果差异分析:由于运行Linux的设备性能、CPU、网卡等硬件也会导致你测试高性能设备如万兆转发设备可能低于预期,具体问题还得具体分析。


Logo

更多推荐