百度开源压测工具 dperf
dperf 是百度开源的一款基于 DPDK(Data Plane Development Kit)开发的高性能压测工具。它可以在一台普通 x86 服务器上模拟巨大的流量,达到每秒千万级的 HTTP 连接、新建亿级别并发请求和数百 Gbps 的吞吐量。这款工具非常适合对网络性能、服务器、负载均衡和云平台进行高强度的性能测试。
dperf 优点
1. 性能强大
- 基于 DPDK 技术:借助 DPDK 的高性能网络处理能力,dperf 能在普通的 x86 服务器上实现千万级的 HTTP 连接和数百 Gbps 的吞吐量。
- 巨量流量模拟:可生成数以亿计的并发请求,能够充分测试服务器在极端情况下的表现。
2. 统计信息详细
- 细致的统计信息:dperf 能输出详细的网络统计数据,帮助识别丢包、连接错误、报文重传等性能瓶颈。
- 全面监控:包括 TPS(每秒事务处理量)、CPS(每秒新建连接数)和 PPS(每秒数据包数)等多维度的数据监控。
3. 使用场景丰富
- 四层负载均衡测试:适用于对 L4 层网关设备(如四层负载均衡器)的压测和稳定性测试。
- 云虚拟机网络性能测试:可用于验证云上虚拟机的网络性能表现。
- 网卡性能测试:通过生成高流量来测试网卡和 CPU 的网络报文处理能力。
- HTTP 服务器/客户端压测:可以作为高性能的 HTTP Server 或 HTTP Client 单独使用进行性能压测。
性能表现
1. HTTP 每秒新建连接数 (CPS)
Client Cores | Server Cores | HTTP CPS |
---|---|---|
1 | 1 | 2,101,044 |
2 | 2 | 4,000,423 |
4 | 4 | 7,010,743 |
6 | 6 | 10,027,172 |
2. HTTP 吞吐量
Client Cores | Server Cores | RX (Gbps) | TX (Gbps) | Client CPU Usage (%) | Server CPU Usage (%) |
---|---|---|---|---|---|
1 | 1 | 18 | 18 | 60 | 59 |
2 | 2 | 35 | 35 | 60 | 59 |
4 | 4 | 46 | 46 | 43 | 43 |
3. HTTP 并发连接数
Client Cores | Server Cores | Current Connections | Client CPU Usage (%) | Server CPU Usage (%) |
---|---|---|---|---|
1 | 1 | 100,000,000 | 34 | 39 |
2 | 2 | 200,000,000 | 36 | 39 |
4 | 4 | 400,000,000 | 40 | 41 |
4. UDP TX PPS
Client Cores | TX MPPS | Client CPU Usage (%) |
---|---|---|
1 | 15.96 | 95 |
2 | 29.95 | 95 |
4 | 34.92 | 67 |
6 | 35.92 | 54 |
8 | 37.12 | 22 |
测试环境配置
上述性能数据是在以下配置环境下测试得出:
- 内存:512GB(大页内存 100GB)
- 网卡:Mellanox MT27710 25Gbps * 2
- 内核:Linux 4.19.90
统计数据输出
dperf 能每秒输出各种统计数据,包括:
- TPS、CPS、PPS(每秒包数)
- TCP、Socket、HTTP 级别的错误数
- 丢包数
- 按 TCP Flag 分类的报文重传数
dperf 的详细统计信息为用户提供了网络性能问题的诊断依据,可帮助开发人员深入分析网络瓶颈,优化服务器和应用程序的性能表现。
结论
dperf 是一款非常强大的网络压测工具,它的高效性能、丰富的统计数据和多样化的使用场景使其成为企业级用户和开发者不可或缺的工具之一。无论是对网络设备、虚拟机还是应用服务器的性能测试,dperf 都能提供深入的洞察,帮助优化网络性能和应用体验。
开源地址:
dperf GitHub