-
iperf3 Server side: (unfortunately, I can not include the full logs as they contain customer confidential information)
iperf3 client side
iperf2 server side (iperf2 is already installed on the server, hence why we just run "iperf" without a path.)
iperf2 client side
Test Steps:From a remote server...
Log files(Removed for customer privacy as the logs contain serial numbers we don't want shared.) Notes
Please provide insight on the following:
|
Beta Was this translation helpful? Give feedback.
Replies: 8 comments 1 reply
-
Not sure if I can help (especially regarding iper2), but can you please give some more information:
|
Beta Was this translation helpful? Give feedback.
-
Using burst does not add idle time. Every time a message is sent, he number of burst message are sent. That saves some system calls and can improve throughput.
One other option that can improve iperf3 throughput (TCP only, not UDP) is |
Beta Was this translation helpful? Give feedback.
-
Hello all, I have learned some new information.
Regardless, the original reason that this ticket was opened was more or less solved since 2 of the NICs in each system that I was originally testing with seem to be performing poorly (which will require more debugging unrelated to iperf3. Thank you. The only thing I'd still like answered is my italicized question, since it can clarify how this program works for me. Edit: Added update about failure. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the information about what helped and what didn't.
Do you know/understand why the NICs issue affected iperf3 but not iperf2?
If you can provide more information it will be helpful, as in principle there should be no degradation over time which is not seen only in iperf3 but not in iperf2. Can it be because of iperf3 issues such as memory leak?
Yes, in general your understanding is correct - |
Beta Was this translation helpful? Give feedback.
-
Sorry, no. These NICs are a bit of a black box to us. The vendor is pretty difficult to reach as they are in a different timezone.
All I can provide is more logs-- see attached. I'd love to understand what's going on as well. I'm not too familiar with how iperf3 works, but from a high level it looks like it uses normal socket system calls and C structures. Do you want me to try like, running Valgrind on it? Would that even work? It's been a while since I've used C. Logs: Same commands as above except that iperf3 also includes
(Removed for customer privacy as the logs contain serial numbers we don't want shared.) Edit: I also just noticed this warning from iperf2 which might be particularly helpful to consider. That said, these are $14,000 servers, so I don't think CPU is the issue. But I don't want to write it off either. It's more likely it is failing to understand the "underlying network devices" as we have 3 different types of NICs, 2 of which are proprietary to a customer with highly customized firmware, as well as a BMC (baseboard management controller) if that affects anything.
|
Beta Was this translation helpful? Give feedback.
-
I am not familiar with iperf2 design, but it seems that practically only one stream out of the 4 is active. It reports something about "cpu bound" for two streams and one stream is only not active. Do you understand what is this? Can it be related to the difference between iperf2 and iperf3, i.e. that iperf2 somehow knows to take advantage of the multi-cpu processors? I also see that for iperf3, the report on the client side indicate that the server CPU is 100% loaded (e.g. Can you check the CPU load during the test for both the server and client, both for iperf2 and iperf3? Also, if possible, can you also check the memory utilization during the test of the client/server iperf2/3? |
Beta Was this translation helpful? Give feedback.
-
Hello, I have come across quite a few developments. Developments:
Screenshots:Note the CPU usage for each process in the screenshot. Also note that the "idle" reading for the total cpu is 90 or greater for each side. Iperf3 failing to use multiple virtual cores: Conclusion:This therefore resolves my questions and answers this discussion. I'm not sure if iperf3 is intended to be multi-threaded or not, but if it is, this usage case demonstrates that it isn't performing as it should in some situations and may be worth discussion. I am aware of the -A (cpu affinity) option, and understand that this may be related, but to be perfectly honest I don't know how to use it and I don't know what CPU affinity really is. I'm also still not entirely sure why we need iperf2 to use -P 4 to make it work, but that's another discussion. Thank you @davidBar-On for your assistance. |
Beta Was this translation helpful? Give feedback.
-
@mhypnaro, your analysis is important and helpful! One comment in case you prefer using iperf3. I see that 4 iperf3 servers are running in parallel. Using the |
Beta Was this translation helpful? Give feedback.
Hello,
I have come across quite a few developments.
Developments:
-1
for iperf2 has the following documentation which explains why it looks like only one stream at a time was active.top
while the program is ru…