Operations 8 min read

Boost Your Network Testing: How dperf Achieves 10 M HTTP Connections per Second

dperf, Baidu’s open‑source DPDK‑based tool, delivers ultra‑high‑performance network testing by generating up to ten million HTTP connections per second, hundreds of gigabits of throughput, and detailed per‑second statistics, with step‑by‑step guidance on environment setup, compilation, and execution.

Java High-Performance Architecture
Java High-Performance Architecture
Java High-Performance Architecture
Boost Your Network Testing: How dperf Achieves 10 M HTTP Connections per Second

Overview

dperf is an open‑source network performance and load‑testing tool from Baidu, built on DPDK. It can generate tens of millions of HTTP connections per second and achieve hundreds of gigabits per second of throughput.

Key Advantages

High Performance

Based on DPDK, a single x86 server can produce massive traffic: millions of new HTTP connections per second, hundreds of Gbps bandwidth, billions of concurrent connections.

Detailed Statistics

Provides fine‑grained metrics and identifies every packet loss.

Rich Use Cases

Layer‑4 load‑balancer stress testing.

Cloud VM network performance testing.

NIC and CPU network packet‑processing benchmarking.

Standalone high‑performance HTTP server/client.

Performance Benchmarks

HTTP Connections per Second (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

HTTP Throughput

Client Cores  Server Cores  RX(Gbps)  TX(Gbps)  Client CPU(%)  Server CPU(% )
1             1            18        18        60            59
2             2            35        35        60            59
4             4            46        46        43            43

Concurrent Connections

Client Cores  Server Cores  Current Connections  Client CPU(%)  Server CPU(% )
1             1            100,000,000          34            39
2             2            200,000,000          36            39
4             4            400,000,000          40            41

UDP TX Packets per Second (PPS)

Client Cores  TX MPPS   Client CPU(%)
1             15.96     95
2             29.95     95
4             34.92     67
6             35.92     54
8             37.12     22

Test Environment

Memory: 512 GB (hugepages 100 GB)

NIC: Mellanox MT27710 25 Gbps × 2

Kernel: 4.19.90

Statistics Collected per Second

TPS, CPS, various PPS dimensions

TCP/Socket/HTTP error counts

Packet loss

Retransmissions classified by TCP flags

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

Getting Started

Configure Hugepages

# Edit '/boot/grub2/grub.cfg' and reboot
linux16 /vmlinuz-... nopku transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=8

Compile DPDK

# Enable required PMDs in 'config/common_base'
TARGET=x86_64-native-linuxapp-gcc   # or arm64-armv8a-linuxapp-gcc
cd /root/dpdk/dpdk-stable-19.11.10
make install T=$TARGET -j16

Compile dperf

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

Bind NIC

# Skip for Mellanox NICs
modprobe uio
modprobe 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

./build/dperf -c test/http/server-cps.conf

Run Client

ping 6.6.241.27
curl http://6.6.241.27/

Execute Test

# On another machine as client
./build/dperf -c test/http/client-cps.conf

Source code: https://github.com/baidu/dperf

Performance TestingLinuxHigh PerformanceDPDKdperfnetwork benchmarking
Java High-Performance Architecture
Written by

Java High-Performance Architecture

Sharing Java development articles and resources, including SSM architecture and the Spring ecosystem (Spring Boot, Spring Cloud, MyBatis, Dubbo, Docker), Zookeeper, Redis, architecture design, microservices, message queues, Git, etc.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.