[转帖]【dperf系列-5】使用dperf进行性能测试(初级)

dperf,系列,使用,进行,性能,测试,初级 · 浏览次数 : 0

小编点评

# dperf测试方法简介 dperf是用于测试DUT的性能测试工具,它可以测试多个性能测试方法,包括新建、并发、带宽、PPS等。 测试方法主要包括以下几个方面: * **新建**:使用`create`方法创建DPER服务器,并设置服务器参数,例如名称、地址、端口等。 * **并发**:使用`launch`方法并发创建多个DPER服务器,并设置服务器参数,例如名称、地址、端口等。 * **带宽**:使用`bandwidth`方法测试服务器的带宽,并设置测试参数,例如发送的包文数量、接收的包文数量等。 * **PPS**:使用`pps`方法测试服务器的PPS,并设置测试参数,例如发送的包文数量、接收的包文数量等。 测试方法使用简单的方法,可以测试多个性能测试方法,并通过设置测试参数可以控制测试结果。 ## 示例测试方法 以下示例展示了如何使用`create`、`launch`、`bandwidth`、`pps`方法测试服务器的性能: ```python # 创建DPER服务器 create_server(name, addr, port) # 并发创建多个DPER服务器 launch_servers(num_servers, name, addr, port) # 测试服务器的带宽 bandwidth_server(num_send_packets, num_recv_packets) # 测试服务器的PPS pps_server(num_send_packets, num_recv_packets) ``` ## 测试结果 测试结果可以通过设置测试参数来控制,例如: * **新建**:使用`create`方法创建DPER服务器,并设置服务器参数,例如名称、地址、端口等。 * **并发**:使用`launch`方法并发创建多个DPER服务器,并设置服务器参数,例如名称、地址、端口等。 * **带宽**:使用`bandwidth`方法测试服务器的带宽,并设置测试参数,例如发送的包文数量、接收的包文数量等。 * **PPS**:使用`pps`方法测试服务器的PPS,并设置测试参数,例如发送的包文数量、接收的包文数量等。 ## 测试总结 dperf是用于测试DUT的性能测试工具,可以测试多个性能测试方法,并通过设置测试参数可以控制测试结果。

正文

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安装

请在客户端与服务器上分别安装dperf。安装方请参考这篇文章:ArtNowBen:【dperf系列-4】dperf快速上手

熟悉配置

配置手册详细说明了dperf的所有配置项含义;建议在往下阅读前,先读一遍此文档。

新建连接数测试

测试方法

在新建连接数测试中,我们使用短连接,每个连接只一个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

配置文件:server-cps-port1-1.conf

  1. 监听IP是6.6.247.3,监听端口范围为:80-84
  2. 只接受客户端地址范围是:6.6.245.3-6.6.245.102;tcp报文的源地址不在这个范围就丢包或RST,ping不受影响
  3. 服务器只绑定一个网口,设置与交换机的互连IP为6.6.247.3(复用了监听IP),网关为6.6.247.1(交换机IP)
  4. 新建连接数测试不能开启keepalive
  5. 设置HTTP响应长度为最小:payload_size 1

客户端配置

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

配置文件:client-cps-port1-1.conf

  1. 给出服务器的监听地址,客户端向这个地址发起连接。 IP:6.6.247.3 监听端口范围为:80-84
  2. 客户端使用地址池的地址作为源地址:6.6.245.3-6.6.245.102
  3. 客户端只绑定一个网口,设置与交换机的互连IP为6.6.245.3(复用了地址池内的IP),网关为6.6.245.1(交换机IP)
  4. 设置HTTP响应长度为最小:payload_size 1
  5. 设置CPS目标为2m,请根据CPU能力灵活调整cps值,建议先设置较小的值,如"10k"

运行dperf

#运行服务器
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

配置文件:server-cc-port1-1.conf

客户端配置

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

配置文件:client-cc-port1-1.conf

带宽测试

测试方法

带宽的测试,是在并发连接数的基础上基础上进行的:

  1. 增大报文长度,payload_size设置为1400
  2. 降低并发连接数,如cc设置为3000
  3. 提升请求发送速度,如从60秒发送1次,提升为1毫秒发送一次
  4. 降低cps,由于并发度连接数较低,应该把新建速度同时调低

服务器配置

#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

配置文件:server-tps-port1-1.conf

服务器配置

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

配置文件:client-tps-port1-1.conf

PPS测试

PPS(packets perf second)是网络设备的一个重要指标,测试PPS只需要在并发连接数的基础上做少量调整,与带宽测试类似。

  1. 降低报文长度,payload_size设置为1
  2. 设置合适的并发连接数
  3. 提升请求发送速度,如从60秒发送1次,提升为1毫秒发送一次
  4. 降低cps,由于并发度连接数较低,应该把新建速度同时调低

总结

本文使用dper客户端打dperf服务器,介绍了新建、并发、带宽、PPS的测试方法。对于要测试DUT的场景,测试方法相同,修改dperf发送、接收地址即可。复杂的使用场景请关注后续文章。

 

如果喜欢,请去github上为dperf加个star,支持一下,非常感谢!

与[转帖]【dperf系列-5】使用dperf进行性能测试(初级)相似的内容:

[转帖]【dperf系列-5】使用dperf进行性能测试(初级)

https://zhuanlan.zhihu.com/p/451341132 dperf是一款高性能的开源网络压力测试仪,是Linux基金会旗下的DPDK官方生态项目。本文介绍如利用dperf在两台物理服务器之间互打http流量进行基本性能测试:每秒新建连接数、并发连接数、带宽、PPS。本次测试示例

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防

[转帖]关于字节序(大小端)的一点想法

https://www.zhihu.com/people/bei-ji-85/posts 今天在一个技术群里有人问起来了,当时有一些讨论(不完全都是我个人的观点),整理一下: 为什么网络字节序(多数情况下)是大端? 早年设备的缓存很小,先接收高字节能快速的判断报文信息:包长度(需要准备多大缓存)、地

[转帖]awk提取某一行某一列的数据

https://www.jianshu.com/p/dbcb7fe2da56 1、提取文件中第1列数据 awk '{print $1}' filename > out.txt 2、提取前2列的文件 awk `{print $1,$2}' filename > out.txt 3、打印完第一列,然后打

[转帖]awk 中 FS的用法

https://www.cnblogs.com/rohens-hbg/p/5510890.html 在openwrt文件 ar71xx.sh中 查询设备类型时,有这么一句, machine=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /

[转帖]Windows Server 2022 简体中文版、英文版下载 (updated Oct 2022)

https://sysin.org/blog/windows-server-2022/ Windows Server 2022 正式版,2022 年 10 月更新,VLSC Posted by sysin on 2022-10-27 Estimated Reading Time 8 Minutes