-
Notifications
You must be signed in to change notification settings - Fork 28
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
Slower bandwidth compared to sys-firewall #130
Comments
What about the bandwidth on sys-net? Better to take iperf3 |
Alright, so I set up sys-net:
sys-firewall:
mirage-firewall:
It is a shame when you have a 1Gbps fiber link and can't fully utilize it :( |
Possibly relevant: |
If I turn on Scatter Gather as suggested in QubesOS/qubes-issues#3510 I get: with sys-firewall:
with mirage-firewall:
So this seems to fix the issue with sys-firewall (but note the number of retries), but mirage-firewall has actually slightly worse performance. |
hey, so my experience with MirageOS unikernels is that the OCaml optimizer "flambda" helps to a big degree. I have not tested this with the QubesOS firewall, but would you mind to either
The resulting unikernel should be semantically equivalent, but allocating much less memory and thus more performant. Another very suitable optimization is to use the best-fit allocation policy by passing I'd be very interested to see the number matrix of: baseline (mirage-qubes-firewall, as above); best-fit; flambda; flambda + best-fit. Thanks for your report including figures for comparison. |
NB: I scheduled (and finished) the builds above, please have a try with https://data.robur.coop/qubes-firewall-flambda/2020-12-05/ with the expectation to be the fast one (the best-fit allocation policy was already enabled at configuration time) and https://data.robur.coop/qubes-firewall/2020-12-05/ for a unikernel with the "standard" OCaml compiler, but best-fit enabled at cofiguration time. Espectially the first one (with flambda) would be interesting to see its performace numbers on your hardware. Thanks, hannes |
last release
best-fit enabled
flambda
For comparison again what sys-firewall is giving me:
|
@grote thanks for your reported numbers. This month I plan to further analyze the bottlenecks of qubes-mirage-firewall, and will report back in this issue some graphs and more binaries to test. :) I'm glad that a factor of 2.5 is easily achieved by modern compiler features (that we should enable in future releases of qubes-mirage-firewall) :) |
from #151 @palinp (with release 0.8.2)
from IRC (also with 0.8.2): so, we're on a good track - but of course there's still room for improvements :) |
Bump! has this issue been resolved? Has any body found any work arounds? |
Dear @ihateprogramming88, we're actively looking into this issue, now that qubes-mirage-firewall has stabilized. It will take some more time and testing to figure out how to improve the performance. :) If you are interested in contributing, let us know. |
Dear @hannesm, thanks for your response! I am happy to help :) |
I tried to compare what could be the differences between linux and qubes-mirage-fw. What surprised me the most is that linux shows a gigantic bandwidth with TCP and only a slightly better bandwitdh with UDP. If I shut off TCP Segmentation Offload, the sys-firewall AppVM have bandwidth in the same order of magnitude as with UDP or TCP with mirage. The following are done on the same laptop (AppVM <-> fw <-> AppVM) with 1 core for the fw, so it counts the internal Xen bandwitdh (both with linux sys-fw between VMs, the first run leave TSO untouched while the second remove TSO from one VM):
|
I am debugging why I don't get my full 1Gbps bandwidth on Qubes OS which I (almost) get when booting Ubuntu from a USB flash drive. During this I noticed that using mirage-firewall provides worse performance than Qubes' default firewall.
when using mirage-firewall:
when using sys-firewall:
Could it be that mirage-firewall has bandwidth limitations?
The text was updated successfully, but these errors were encountered: