Reverse UDP is slower than Non-reverse UDP
- Dominant language
- C
- Stars
- 8.8k
- Forks
- 1.5k
- PR merge metrics
- No merged PRs in 30d
Description
# Context
* Version of iperf3
3.10.1 latest master
* Hardware:
DELL PC
* Operating system (and distribution, if any):
WSL under Windows 10
* Other relevant information (for example, non-default compilers,
libraries, cross-compiling, etc.):
# Bug Report
* Expected Behavior
UDP maximum throughput when both client and server run on the same machine should be the same.
* Actual Behavior
When using reverse mode, UDP throughput is 15-30% less than when not using reverse mode. The issue is not seem when using TCP.
* Steps to Reproduce
Run client and server on the same machine, use UDP and set bandwidth (`-b`) to throughput beyond the maximum achievable.
Run once using `-R` option and once without it and compare the results.
* Possible Solution
The reason I am submitting this PR is because there may be an implementation issue that reduces the server's performance.
I tried several temporary patches to find the the reason for the difference, including different performance optimizations and removing the timeout from the `select`, but nothing helped. I also also tried with removing the actual send command to see if there is a substantial overhead in the server's performance. There is minor difference, but it cannot explain the difference.
I am not sure if the issue is just on my computer or whether there is a good reason for the difference, so testing on other machines may help understanding the issue,
Contributor guide
Assessment
This issue has not been assessed yet.