Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

dperf is a 100Gbps network load tester.

License

NotificationsYou must be signed in to change notification settings

baidu/dperf

Repository files navigation

English |中文

dperf is a DPDK based 100Gbps network performance and load testing software.

Advantage

  • 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.

Performance

HTTP Connections per Second

Client CoresServer CoresHTTP CPS
112,101,044
224,000,423
447,010,743
6610,027,172

HTTP Throughput per Second

Client CoresServer CoresRX(Gbps)TX(Gbps)Client CPU Usage(%)Server CPU Usage(%)
1118186059
2235356059
4446464343

HTTP Current Connections

Client CoresServer CoresCurrent ConnectionsClient CPU Usage(%)Server CPU Usage(%)
11100,000,0003439
22200,000,0003639
44400,000,0004041

UDP TX PPS

Client CoresTX MPPSClient CPU Usage(%)
115.9695
229.9595
434.9267
635.9254
837.1222

Note: This test is conducted using one 25Gbps Mellanox CX4.

Client & Server Configuration

The above performance results are obtained using the following configuration:

  • MEM: 512GB (hugepage 100GB)
  • NIC: Mellanox MT27710 25Gbps x2
  • Kernel: 4.19.90

Statistics

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

Getting Started

Set hugepages

# Edit '/boot/grub2/grub.cfg' like this, and reboot the OSlinux16 /vmlinuz-... nopku transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=8

Build DPDK

# 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

Build dperf

cd dperfmake -j8 RTE_SDK=/root/dpdk/dpdk-stable-19.11.10 RTE_TARGET=$TARGET

Bind interface

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

Start dperf server

# dperf server bind at 6.6.241.27:80, gateway is 6.6.241.1./build/dperf -c test/http/server-cps.conf

Send request from a client

# The client IP must be in the range of 'client' in the configuration fileping 6.6.241.27curl http://6.6.241.27/

Running the tests

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

Documentation

See the website athttps://dperf.org/.

Limitation

  • 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.

Contributing

dperf welcomes your contribution. See theCONTRIBUTING file for details.

Patent

  • Patent Name: Testing Method and Apparatus for Network Devices
  • Inventor: Jianzhang Peng
  • Patent Number: CN114205274B
  • Issue Date: June 11, 2024

Author

  • 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.

License

dperf is licensed underApache 2.0.


[8]ページ先頭

©2009-2025 Movatter.jp