- Notifications
You must be signed in to change notification settings - Fork537
dperf is a 100Gbps network load tester.
License
NotificationsYou must be signed in to change notification settings
baidu/dperf
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
English |中文
dperf is a DPDK based 100Gbps network performance and load testing software.
- High performance:
- Based on DPDK, dperf can generate huge traffic with a single x86 server: tens of millions of HTTP CPS, hundreds of Gbps throughput, and billions of concurrent connections.
- Detailed statistics:
- Provides detailed statistics and identifies every packet loss.
- Support multiple scenarios:
- Load testing and stability testing for Layer 4 Load Balancers and other Layer 4 gateways.
- Network performance testing for servers in the cloud.
- Performance testing of network packet processing capabilities for NICs and CPUs.
- Function as a high-performance HTTP server or client, specifically designed for testing scenarios.
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 |
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 |
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 |
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 |
Note: This test is conducted using one 25Gbps Mellanox CX4.
The above performance results are obtained using the following configuration:
- MEM: 512GB (hugepage 100GB)
- NIC: Mellanox MT27710 25Gbps x2
- Kernel: 4.19.90
dperf outputs various statistics every second:
- TPS, CPS, various PPS
- Errors of TCP/Socket/HTTP
- Packets loss/drop
- Retransmissions of TCP Flags
seconds 22 cpuUsage 52pktRx 3,001,058 pktTx 3,001,025 bitsRx 2,272,799,040 bitsTx 1,920,657,600 dropTx 0arpRx 0 arpTx 0 icmpRx 0 icmpTx 0 otherRx 0 badRx 0synRx 1,000,345 synTx 1,000,330 finRx 1,000,350 finTx 1,000,350 rstRx 0 rstTx 0synRt 0 finRt 0 ackRt 0 pushRt 0 tcpDrop 0skOpen 1,000,330 skClose 1,000,363 skCon 230 skErr 0httpGet 1,000,345 http2XX 1,000,350 httpErr 0ierrors 0 oerrors 0 imissed 0
# Edit '/boot/grub2/grub.cfg' like this, and reboot the OSlinux16 /vmlinuz-... nopku transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=8
# Edit 'config/common_base' to enable PMDs# Mellanox CX4/CX5 requires 'CONFIG_RTE_LIBRTE_MLX5_PMD=y'# HNS3 requires 'CONFIG_RTE_LIBRTE_HNS3_PMD=y'# VMXNET3 requires 'CONFIG_RTE_LIBRTE_VMXNET3_PMD=y'TARGET=x86_64-native-linuxapp-gcc# or arm64-armv8a-linuxapp-gcccd /root/dpdk/dpdk-stable-19.11.10make install T=$TARGET -j16
cd dperfmake -j8 RTE_SDK=/root/dpdk/dpdk-stable-19.11.10 RTE_TARGET=$TARGET
If you are using Mellanox NICs, skip this step. For other NICs, follow the steps below:
# Suppose your PCI number is 0000:1b:00.0modprobe uiomodprobe uio_pci_generic/root/dpdk/dpdk-stable-19.11.10/usertools/dpdk-devbind.py -b uio_pci_generic 0000:1b:00.0
# dperf server bind at 6.6.241.27:80, gateway is 6.6.241.1./build/dperf -c test/http/server-cps.conf
# The client IP must be in the range of 'client' in the configuration fileping 6.6.241.27curl http://6.6.241.27/
Below example will start an HTTP CPS stress test:
# Run dperf server./build/dperf -c test/http/server-cps.conf# From another host, run dperf client./build/dperf -c test/http/client-cps.conf
See the website athttps://dperf.org/.
- dperf requires that the HTTP message is in one packet, which is not suitable for testing layer 7 load balancers.
- dperf requires exclusive use of the network interfaces.
- dperf does not have routing capability. It is recommended to build a test environment with a switch.
dperf welcomes your contribution. See theCONTRIBUTING file for details.
- Patent Name: Testing Method and Apparatus for Network Devices
- Inventor: Jianzhang Peng
- Patent Number: CN114205274B
- Issue Date: June 11, 2024
- Jianzhang Peng, a Ph.D. graduate in Computer Science from the University of Science and Technology of China. Jianzhang served as a Principal Engineer at both Huawei and Baidu, where he participated in the development of layer 7 and layer 4 load balancing systems. During his tenure at Baidu, he developed the dperf project. Even after leaving Baidu, he remains dedicated to its maintenance. Currently, he works in Singapore, focusing on researching and implementing low-latency network systems for high-frequency crypto quantitative trading.
dperf is licensed underApache 2.0.
About
dperf is a 100Gbps network load tester.
Topics
Resources
License
Stars
Watchers
Forks
Packages0
No packages published