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
Tiny iperf3 UI 04/26/2022 #338
Conversation
This is a super simple, low memory way to make it easier for non-command-line operators to do iperf testing. Very low impact to node resources -- "only buy what you need" approach. |
Maybe instead of expecting an empty target we might use "localserver" or some other keyword to indicate that iperf3 should be started in server mode on the local node? Maybe be a little more verbose on lines 44 and 49 to say what just happened? |
An alternate thought, should this just be in advanced config option to auto start IPerf?
Disabled by default
…Sent from my iPad
On Apr 22, 2022, at 8:16 AM, Steve AB7PA ***@***.***> wrote:
Maybe instead of expecting an empty target we might use "localserver" or some other keyword to indicate that iperf3 should be started in server mode on the local node?
Maybe be a little more verbose on lines 44 and 49 to say what just happened?
44: something like "Enter a node URL for the client (target= or enter target=localserver to start iperf3 server on localnode"
49: something like "Started iperf3 server on this node"
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.
|
The problem with “off by default” in advanced config is that it becomes “never on” because no one will ever turn it on, which I think defeats the purpose. |
I agree with Tim on this. Although there may be rationale for an Advanced Config option Enabled by default. |
So - perhaps - this version of the change (auto-running iperf3 when needed) but with an advanced option to disable completely? |
That sounds right. |
Agreed
Thanks,
Darryl
… On Apr 23, 2022, at 6:12 PM, Andre Hansen ***@***.***> wrote:
That sounds right.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.
|
Tightened the (already) minimal UI code, switch 'target=' to 'server=' (which is a bit more obvious), and added the 'off' switch. |
...and if it wasn't clear from earlier comments, I think this should be an incentive to upgrade to the new UI. So let's leave it out of earlier releases... but of course, it's up for discussion. |
I think that's a shame. Unless I misunderstood @dman776 last week, I don't think the new UI is shipping soon and it really should be enough of an incentive to upgrade in itself. |
Yeah, okay, I guess I don't feel that strongly about it. |
Just thinking out loud here... What would we think about some different iperf3 command line arguments? Currently the default test is a TCP transfer, but we might avoid all the network handshaking overhead if we ran UDP transfers. |
comparison of TCP and UDP tests would be ideal, or having both options. Make the iperf3 arguments an advanced setting? If this is the only options we think anyone would be interested in changing, then make the TCP or UDP a checkbox in the UI? (This is a client side only option?) |
Easy to just add it as an extra command line param - protocol=??? - then you have the option |
Did a little testing with UDP, and for whatever reason (and I also tested this between other machines) the UDP test tops out at 1Mb/sec compared to the TCP test which is at least 10x that. |
Something must be wrong, we'd expect UDP (on a quality link) to have higher numbers, given no handshaking overhead. |
You should try it. This is between two Threadripper machines on a 40Gb/sec network. TCP performance is what you'd expect, UDP is 1Mb/sec. I tried a couple of AREDN nodes (RF link) doing 15Mb/sec TCP .. and 1Mb/sec UDP. |
The only way to increase the measured UDP performance is to run with the -P option to bump the thread count up. |
Ah ha .. there's another option "-b 0" which fixes this. |
Getting this PR into the nightly would really help the link bandwidth tests I hope to run? One less step for testing. |
Let's discuss on the call tomorrow. I'm ok with tuis as is. |
Are we sure we want to give people the option of crippling the included iperf3 feature??? To me, the new advancedconfig section may confuse most folks -- they won't understand that it's intended for disabling iperf3 altogether on their node. Its utility is limited to a small subset of nodes with very constrained memory footprint which you want to be sure that nobody ever uses for an iperf test. I guess we could explain that clearly in the onboard help file and the online documentation (if they will take the time to read it). On second thought... it really won't hurt anything if they disable iperf3 altogether. If they mistakenly disable iperf3, so what -- they never had that feature before anyway. ¯\(ツ)/¯ |
Strictly speaking it only disables the simple UI. They can still log into two nodes and run it manually between them. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm all for this simple UI. Small, lightweight, clever approach.
Good point. Maybe phrase it like that in the advancedconfig desc: |
I just got back home after a trip. In testing the iperf URL feature I notice that if I enter a URL like this Also, if I do not include the local.mesh suffix then the server will refuse the connection.
|
I can add '.local.mesh' automatically if no domain prefix is given explicitly. |
"The UDP test shows much better throughput over RF on my nodes. Wonder whether we should make UDP the default test instead of TCP?" Ether protocol works for me, although UDP may result in an elevated perception of performance when the usage is not fully understood -- this is the higher number. However, our goal should be to inform end users. The usage information could elaborate on why UDP will be a higher number than TCP on quality links (because there's no waiting on ack responses, and can flood the sending pipe with UDP). Now if the link is marginal, and this UDP traffic has high loss, it will be a terrible result in performance (and voice is gabbled or not heard at all). |
I agree that |
I'm inclined to keep TCP as the default option because it's already the default option for iperf3, and so expected. |
Add .local.mesh if missing
Okay - I think that's fixed the various problem reported |
Yep. Everything looks good. |
(see #337 for the main discussion)
A super lightweight and simple iperf testing page.
Proposing this as an alternative (and probably better) approach to running an iperf3 server by default. In this case the server is launched on demand when the client needs it. This is similar to iperfspeed but without the sophistication; but still makes a useful testing tool without the constant memory footprint.