基于滴滴云之 Netperf 网络性能测试工具的搭建及使用

1. 介绍 Netperf

网络性能是云服务器的重要指标,对网络性能进行准确的测试非常重要。Netperf 是一种可以用来衡量不同类型网络性能的工具,它可以用来测试 PPS(即每秒钟发送数据包的数目)、单向吞吐量和端到端延迟。本文给大家简述如何采用 Netperf 对网络性能进行测试。

2. 安装 Netperf

2.1 环境准备

  • 测试机

    • 被压力测试网络 PPS 的 DC2 实例,可以用来作为 Netperf 测试中的 Client 端或者 Server 端
    • 虚拟机名称:test_netperf1; 虚拟机 IP:116.85.255.6。(虚拟机可以在 滴滴云上申请)
  • 陪练机

    • DC2 实例,可以用来作为 Netperf 测试中的 Client 端或者 Server 端,与测试机建立控制连接,传递测试配置相关的信息以及测试结果
    • 虚拟机名称:test_netperf2; 虚拟机 IP:116.85.255.5

2.2 安装 Netperf

  • 运行下面命令下载 Netperf
   wget -c "https://codeload.github.com/HewlettPackard/netperf/tar.gz/netperf-2.5.0" -O netperf-2.5.0.tar.gz
  • 解压 Netperf
   tar -zxvf netperf-2.5.0.tar.gz
  • 进入 Netperf目录
   cd netperf-2.5.0.tar.gz
  • 执行以下命令配置文件,编译并且安装
   ./configure
   make
   make install
  • 运行以下命令验证 Netperf 是否安装成功。如果安装成功会生成2个工具:NetServer 和 Netperf。
   netperf -h
   netserver -h

2.3 开启多队列功能

在测试机内开启多队列功能(假设需要开启的网卡是 eth0),用来提高测试机接收数据包的性能。

  • 执行以下命令开启多队列,开启 3 个队列
   ethtool -L eth0 combined 3
  • 执行以下命令修改每个队列的参数
   echo "ff" > /sys/class/net/eth0/queues/rx-0/rps_cpus
   echo "ff" > /sys/class/net/eth0/queues/rx-1/rps_cpus
   echo "ff" > /sys/class/net/eth0/queues/rx-2/rps_cpus

3. 使用 Netperf 和 NetServer 测试网络性能

3.1 测试收方向

  • 测试机
    • 测试机内启动 NetServer 进程,-p 参数用来指定接收数据包的端口号
	netserver -p 6000
  • 陪练机
    • 陪练机内启动 Netperf 进程,分别制定到测试机不同的 NetServer 端口
    • netperf -H 参数指定测试机的 IP 地址
    • netperf -p 参数指定测试机的端口号
    • netperf -l 参数指定陪练机向测试发送数据包的时间
    • netperf -t 参数指定发送数据包的协议类型为 TCP_STREAM 还是 UDP_STREAM
    • netperf -m 参数指定数据包的字节大小
   netperf -H 116.85.255.6 -p 6000 -t UDP_STREAM -l 300 -- -m 64

3.2 测试发方向

  • 陪练机
    • 在所有陪练机内各启动一个 NetServer 进程,-p 指定端口号
   netserver -p 7000
  • 测试机
    • 测试机内启动 Netperf 进程,-H 指定为陪练机的 IP 地址
    • 有多少个陪练机,需要在测试机内启动多少个 Netperf 进程
   netperf -H 116.85.255.5 -p 6000 -t UDP_STREAM -l 300 -- -m 64

3.3 测试结果分析

  • 最终发送端的每个 Netperf 进程输出如下结果,以下结果不能代表以上申请测试机的性能,具体性能根据实际测试结果而定
	Socket  Message  Elapsed      Messages
   Size    Size     Time         Okay Errors   Throughput
   bytes   bytes    secs            #      #   10^6bits/sec
   84675       64   300.00     353255      0       6.03
   153284           300.00     109999              0.19

输出结果各个字段的含义如下:

字段名 含义 备注
Socket size(bytes) 缓冲区的大小 -
Message size(bytes) 数据包的大小 -
Elapsed Time(secs) 测试时间 -
Messages Okay(个) 发送成功的数据包数目 -
Messages Errors(个) 发送失败的数据包数目 -
Throughtput(10^6bits/sec) 吞吐量 -
  • PPS
    • PPS 为每秒钟发送成功的数据包个数
    • 具体计算方法:PPS = 数据包发送成功的数目/测试时间
    • 可以在 Server 端用 sar 命令来统计实际收到的数据包,具体命令如下所示,其表示每隔 1 秒统计一次,统计 300 次,sar 命令最后会对 300 次的统计结果求平均
   sar -n DEV 1 300

猜你喜欢

转载自blog.csdn.net/java060515/article/details/84838143
今日推荐