Skip to content
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

Why does iperf3 measure asymmetric throughput? #211

Closed
NullHypothesis opened this issue May 3, 2023 · 2 comments
Closed

Why does iperf3 measure asymmetric throughput? #211

NullHypothesis opened this issue May 3, 2023 · 2 comments

Comments

@NullHypothesis
Copy link
Contributor

I'm working on a project that builds on top of gvisor-tap-vsock. I reproduced your iperf3 throughput measurements and noticed that server-to-client traffic is about 3x faster than client-to-server traffic—at least in our more complex test setup.

The README says "[...] depending on which side the test is performed [...]", so this is not news to you. I wonder however why that is? What exactly contributes to the throughput being asymmetric?

@cfergeau
Copy link
Collaborator

Guillaume who ran these tests and added this to the README is no longer active on gvisor-tap-vsock, so I'm afraid this knowledge was lost :-/

@NullHypothesis
Copy link
Contributor Author

Guillaume who ran these tests and added this to the README is no longer active on gvisor-tap-vsock, so I'm afraid this knowledge was lost :-/

Having studied the code for a while, I can now answer my own question. The send and receive path for network packets differs in non-trivial ways. The same is true for the tools cmd/gvproxy and cmd/vm. I haven't measured the exact overhead but I'm fairly confident that this explains the difference. See this PR for some additional context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants