mirage-unix: increase TCP receive buffer size #510
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using the
iperf
code fromtest_iperf.ml
(which seems to be compatible withiperf2
, but notiperf3
) I noticed withstrace
thatread
system calls use a 4KiB buffer.Tweaking this resulted in a significant increase in speed, at least on localhost.
On
AMD Ryzen 9 7950X
using Fedora39 and OCaml 4.14.1 testing with iperf on localhost, with 4K buffer:With 64KiB buffer:
The max size for various TSO/GSO/GRO packet offloads in Linux is 64KiB, so going beyond that is unlikely to be useful [1].
OCaml itself would also use a 64KiB buffer in the Unix module.
[1]: although there are plans for larger than 64KiB offloads https://netdevconf.info/0x15/slides/35/BIG%20TCP.pdf