https://zhuanlan.zhihu.com/p/451341132
dperf是一款高性能的开源网络压力测试仪,是Linux基金会旗下的DPDK官方生态项目。本文介绍如利用dperf在两台物理服务器之间互打http流量进行基本性能测试:每秒新建连接数、并发连接数、带宽、PPS。本次测试示例客户端与服务器均使用1个核、1个网口。客户端、服务器上已经安装了dperf。
项目 | 配置 |
---|---|
物理服务器(客户端) | 大页内存>=40G 数据网卡>=10GbpsIP=6.6.245.3-6.6.245.102地址:6.6.245.3-6.6.245.102,100个IP网关:6.6.245.1 |
物理服务器(服务器) | 大页内存>=40G 数据网卡>=10GbpsIP=6.6.247.1地址:6.6.247.3网关:6.6.247.1 |
三层交换机 | 客户端网关地址:6.6.245.1 服务器网关地址:6.6.247.1 |
dperf版本 | V1.0.0 |
请在客户端与服务器上分别安装dperf。安装方请参考这篇文章:ArtNowBen:【dperf系列-4】dperf快速上手。
配置手册详细说明了dperf的所有配置项含义;建议在往下阅读前,先读一遍此文档。
https://github.com/baidu/dperf/blob/main/docs/configuration-CN.md
在新建连接数测试中,我们使用短连接,每个连接只一个HTTP请求与响应,报文序列如下:
客户端发送SYN
服务器发送SYN+ACK
客户端发送请求(最小HTTP请求)
客户端发送请求(最小HTTP响应)
服务器发送响应+FIN
客户端发送FIN + ACK
服务器发送ACK
新建连接数测试会消耗较多的连接数(五元组),在新建连接数测试中,建议dperf连接总数是新建连接数目标的10倍以上;因为tcp超时为2秒,4次超时则认为连接失败。
dperf中连接总数 = 客户端IP数 * 65535 * 服务器IP数 * 监听端口数
为了达到较高的性能,我们配置客户端较多的IP,本例中客户端使用了100个IP;服务器监听端口数为5。
#daemon
mode server
tx_burst 128
cpu 48
duration 3m
payload_size 1
#numa2
port 0000:87:00.0 6.6.247.3 6.6.247.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
mode client
tx_burst 128
launch_num 10
cpu 0
payload_size 1
duration 2m
cps 2.1m
#port pci addr gateway [mac]
port 0000:01:00.0 6.6.245.3 6.6.245.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
#运行服务器
dperf -c server-cps-port1-1.conf
#运行客户端
dperf -c client-cps-port1-1.conf
在并发连接数测试中,我们要使用长连接,每个连接持续发送HTTP请求、响应。在测试过程中,并发连接数持续增加,直到达到测试目标;我们可以通过客户端的每秒新建连接数来控制爬坡斜率;在测试并发连接数时,建议为客户端配置较大请求发送的间隔,如60秒;payload_size设置为最小。
#daemon
mode server
tx_burst 128
cpu 48
duration 10m
payload_size 1
keepalive 1
#numa2
port 0000:87:00.0 6.6.247.3 6.6.247.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 32
mode client
tx_burst 128
launch_num 10
cpu 0
payload_size 1
duration 10m
cps 0.5m
cc 100m
keepalive 60s
#port pci addr gateway [mac]
port 0000:01:00.0 6.6.245.3 6.6.245.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 32
带宽的测试,是在并发连接数的基础上基础上进行的:
#daemon
mode server
tx_burst 128
cpu 48
duration 3m
payload_size 1400
keepalive 1
#numa2
port 0000:87:00.0 6.6.247.3 6.6.247.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
mode client
tx_burst 128
launch_num 10
cpu 0
payload_size 1400
duration 2m
cps 400
cc 3000
keepalive 1ms
#port pci addr gateway [mac]
port 0000:01:00.0 6.6.245.3 6.6.245.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
PPS(packets perf second)是网络设备的一个重要指标,测试PPS只需要在并发连接数的基础上做少量调整,与带宽测试类似。
本文使用dper客户端打dperf服务器,介绍了新建、并发、带宽、PPS的测试方法。对于要测试DUT的场景,测试方法相同,修改dperf发送、接收地址即可。复杂的使用场景请关注后续文章。
如果喜欢,请去github上为dperf加个star,支持一下,非常感谢!