In branch 4.6.0 I tried running performance tests on dummy network and found --io-uring actually reduced performanc.
I speculate that io_uring has been implemented with parallel paths, which probably is causing extra context switching. I also speculate that that would cause reordering of packets, which is not desirable. Possibly moving to a single stream would fix both concerns
To Reproduce
Steps to reproduce the behavior:
sudo ip link add dummy0 type dummy
sudo ip link set dummy0 up
sudo tcpreplay -i dummy0 -l 1000 --io-uring --topspeed test/test.pcap 2> /dev/null
Actual: 179000 packets (69000000 bytes) sent in 0.472379 seconds
Rated: 146069152.1 Bps, 1168.55 Mbps, 378933.01 pps
Flows: 47 flows, 99.49 fps, 176000 unique flow packets, 2000 unique non-flow packets
Statistics for network device: dummy0
Successful packets: 179000
Failed packets: 0
Truncated packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
Expected behavior
I would expect --io-uring to be faster, instead its slower. Here is the same machine without --io-uring
sudo tcpreplay -i dummy0 -l 1000 --topspeed test/test.pcap 2> /dev/null
Actual: 179000 packets (69000000 bytes) sent in 0.135882 seconds
Rated: 507793526.7 Bps, 4062.34 Mbps, 1317319.43 pps
Flows: 47 flows, 345.88 fps, 176000 unique flow packets, 2000 unique non-flow packets
Statistics for network device: dummy0
Successful packets: 179000
Failed packets: 0
Truncated packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
System (please complete the following information):
- Linux Debian 13 (trixie)
- Tcpreplay Version 4.6.0-beta3
In branch 4.6.0 I tried running performance tests on dummy network and found --io-uring actually reduced performanc.
I speculate that io_uring has been implemented with parallel paths, which probably is causing extra context switching. I also speculate that that would cause reordering of packets, which is not desirable. Possibly moving to a single stream would fix both concerns
To Reproduce
Steps to reproduce the behavior:
Expected behavior
I would expect --io-uring to be faster, instead its slower. Here is the same machine without
--io-uringSystem (please complete the following information):