MCPcopy Index your code
hub / github.com/baidu/dperf

github.com/baidu/dperf @v1.9.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.9.0 ↗ · + Follow
863 symbols 2,231 edges 73 files 23 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

dperf Apache V2 License Mentioned in ChatGPT Featured|HelloGitHub

dperf is a high-performance network traffic generator and load testing tool based on DPDK.

Advantages

  • High Performance

Built on DPDK, dperf can generate massive traffic using a single x86 server — achieving tens of millions of HTTP Connections Per Second (CPS), hundreds of Gbps throughput, and billions of concurrent connections.

  • Comprehensive Statistics

Provides detailed real-time metrics and identifies every packet drop or error.

  • Versatile Use Cases
  • Load and stability testing for Layer 4 Load Balancers and gateways
  • Network performance benchmarking for cloud servers
  • Evaluation of NIC and CPU packet processing capabilities
  • Acts as a high-performance HTTP server or client for testing scenarios

Performance

All results were measured using the following hardware and configuration:

  • CPU: Intel Xeon Gold 5418Y × 2
  • Memory: 128 GB × 2
  • NIC: Intel E810-C Dual-Port 100GbE × 2
  • OS: Linux 5.10.0

HTTP Connections Per Second (CPS)

Client Cores Server Cores HTTP CPS (Million) Client CPU Usage (%) Server CPU Usage (%)
1 1 4 74 71
2 2 8 74 72
4 4 16 73 70
8 8 32 70 68
16 16 64 70 68

HTTP Throughput (Gbps)

Client Cores Server Cores RX Throughput TX Throughput Client CPU Usage (%) Server CPU Usage (%)
1 1 98.3 Gbps 98.3 Gbps 78 80
2 2 196.7 Gbps 196.7 Gbps 78 82

Concurrent Connections

Client Cores Server Cores Connections (Billion) Client CPU Usage (%) Server CPU Usage (%) Memory Usage (GB)
1 1 1 48 48 60
2 2 2 48 48 120
4 4 4 48 48 240

TCP Packets Per Second (PPS)

Client Cores RX PPS (Mpps) TX PPS (Mpps) Client CPU Usage (%)
1 16.8 16.8 99
6 105.2 105.2 99
12 204.6 204.6 99

Real-Time Statistics

dperf prints real-time statistics every second, including CPS, TPS, PPS, packet drops, socket errors, and HTTP status counts. Example output:

seconds 22                 cpuUsage 52
pktRx   3,001,058          pktTx    3,001,025          bitsRx   2,272,799,040      bitsTx  1,920,657,600      dropTx  0
arpRx   0                  arpTx    0                  icmpRx   0                  icmpTx  0                  otherRx 0          badRx 0
synRx   1,000,345          synTx    1,000,330          finRx    1,000,350          finTx   1,000,350          rstRx   0          rstTx 0
synRt   0                  finRt    0                  ackRt    0                  pushRt  0                  tcpDrop 0
skOpen  1,000,330          skClose  1,000,363          skCon    230                skErr   0
httpGet 1,000,345          http2XX  1,000,350          httpErr  0
ierrors 0                  oerrors  0                  imissed  0

Documentation

See the official website at https://dperf.org/.

Contributing

We welcome contributions! Please see the CONTRIBUTING file for details.

Patent

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

Acknowledgment

We gratefully acknowledge xnetin for providing the high-performance testing platform used in our benchmarking experiments.

Author

Jianzhang Peng holds a Ph.D. in Computer Science from the University of Science and Technology of China (USTC). He previously worked as a Principal Engineer at Baidu, where he contributed to the development of high-performance L4 load balancer systems. He initiated and developed the dperf project during his time at Baidu, and continues to maintain it as an open-source contributor. His current focus is on low-latency network protocol stacks for quantitative trading systems.

License

dperf is licensed under the Apache License 2.0.

Core symbols most depended-on inside this repo

tcp_reply
called by 21
src/tcp.c
socket_close
called by 15
src/socket.h
mbuf_free2
called by 15
src/mbuf.h
eth_addr_copy
called by 15
src/eth.h
config_parse_number
called by 14
src/config.c
kni_recv
called by 14
src/kni.c
ip_range_get
called by 10
src/ip_range.h
work_space_tx_send
called by 9
src/work_space.h

Shape

Function 497
Class 366

Languages

C73%
C++27%

Modules by API surface

src/config.c116 symbols
src/tcp.c52 symbols
src/udp.c34 symbols
src/mbuf_cache.c33 symbols
src/work_space.h30 symbols
src/socket.h30 symbols
src/net_stats.c30 symbols
src/work_space.c28 symbols
src/lldp.c28 symbols
src/kni.c26 symbols
src/icmp6.c25 symbols
src/csum.c25 symbols

For agents

$ claude mcp add dperf \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact