Operations 7 min read

Unlock 10M+ HTTP Connections per Second: dperf’s DPDK‑Powered Performance

dperf, an open‑source Baidu tool built on DPDK, delivers ultra‑high network performance—supporting millions of HTTP connections per second, hundreds of Gbps throughput, and detailed statistics—making it ideal for load‑balancer, cloud VM, NIC, and CPU network testing, with step‑by‑step deployment instructions.

Java High-Performance Architecture
Java High-Performance Architecture
Java High-Performance Architecture
Unlock 10M+ HTTP Connections per Second: dperf’s DPDK‑Powered Performance

dperf is Baidu's open‑source network performance and load testing tool built on DPDK, capable of generating tens of millions of HTTP connections per second, billions of concurrent requests, and hundreds of Gbps throughput.

Advantages

Powerful performance: Using a single x86 server, it can create tens of millions of HTTP connections per second and achieve hundreds of Gbps bandwidth.

Detailed statistics: Provides granular metrics and per‑packet loss detection.

Rich use cases: Suitable for L4 load‑balancer testing, cloud VM network testing, NIC and CPU packet‑processing benchmarks, and can act as a high‑performance HTTP server or client.

Performance Benchmarks

HTTP connections per second (CPS): 1 core client/server – 2.1 M CPS; 2 cores – 4 M CPS; 4 cores – 7 M CPS; 6 cores – 10 M CPS.

HTTP throughput: 1 core – 18 Gbps (RX/TX); 2 cores – 35 Gbps; 4 cores – 46 Gbps with ~43 % CPU usage.

Concurrent connections: 1 core – 100 M; 2 cores – 200 M; 4 cores – 400 M connections.

UDP TX packets per second (PPS): Scales from 15.96 MPPS on 1 core to 37.12 MPPS on 8 cores.

Test Environment

Memory: 512 GB (hugepages 100 GB)

NIC: Mellanox MT27710 25 Gbps × 2

Kernel: 4.19.90

Statistics Output

dperf outputs various metrics each second, including TPS, CPS, PPS, error counts at TCP/Socket/HTTP levels, packet loss, and 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 add:
linux16 /vmlinuz-... nopku transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages=8
# Then reboot

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   # listens on 6.6.241.27:80

Run client requests

ping 6.6.241.27
curl http://6.6.241.27/

Execute a test

Run the server configuration and then on another machine start the client:

# Server
./build/dperf -c test/http/server-cps.conf
# Client
./build/dperf -c test/http/client-cps.conf

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

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Load Testingnetwork performanceDPDKHigh ThroughputHTTP benchmarkingdperf
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.