-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
integrate iperfv3 benchmark #479
Comments
Just tried it here. I'm not familiar with the details of iperf3, but it looks like Eio is faster than iperf3's native C server?? I get:
|
The eio server is half as fast on macOS for me:
Need to dtruss it to find out if the syscall profile is similar, but can't right now as that needs System Integrity Protection disabled. |
On Linux, similar slight slowdown on the iperf server:
The strace for the iperf server shows it doing a sequence of
The io_uring server has the overly sequential (just one IO consumed per syscall):
and our POSIX backend is not bothering to select and going straight for a readv:
So we could probably speed up the uring version further by submitting more IO per |
A parallel test with 20 connections (
We should be doing a little better here for uring:
It's got 3 or 4 parallel submits per uring. Unfortunately it's hard to trace what's actually on the ring -- we really need a way to dump the ring contents itself as a debug aid. The posix backend is blasting away with
|
In the same spirit as #478, I've implemented the IPerfv3 protocol over in https://github.com/avsm/ocaml-iperf, which is convenient for testing the relative performance of different backends in the face of parallel connections.
I'll create a PR here to integrate it for OS-specific tests (I want a uring vs posix benchmark) once the #473 PR is merged so that I can exec the iperf client subprocess.
In the meanwhile, if anyone just wants to manually call iperf against an Eio-based server, there's a
iperfv3-server
executable in the https://github.com/avsm/ocaml-iperf that works.The text was updated successfully, but these errors were encountered: