Replies: 5 comments 4 replies
-
Great enhancement to iperf3!
|
Beta Was this translation helpful? Give feedback.
-
I build one on centos 7, use option "-b 100m -t 600" to test for 10 minutes, but it will keep stopping at around 120s, something like
client side:
single thread version does not have this issue. |
Beta Was this translation helpful? Give feedback.
-
Some initial local host testing `[root@mlmach1 iperf-3.13-mt1]# uname -r [root@mlmach1 iperf-3.13-mt1]# src/iperf3 -v [root@mlmach1 iperf-3.13-mt1]# lscpu [root@mlmach1 iperf-3.13-mt1]# src/iperf3 -c localhost -t 3 [ ID] Interval Transfer Bitrate Retr iperf Done. [ 5] 1.00-2.00 sec 5.15 GBytes 44.2 Gbits/sec 0 1.25 MBytes [ 5] 2.00-3.00 sec 5.08 GBytes 43.6 Gbits/sec 0 1.25 MBytes [ ID] Interval Transfer Bitrate Retr iperf Done. [ 5] 1.00-2.00 sec 4.07 GBytes 34.9 Gbits/sec 0 1.06 MBytes [ 5] 2.00-3.00 sec 4.37 GBytes 37.5 Gbits/sec 0 1.06 MBytes [ ID] Interval Transfer Bitrate Retr iperf Done. [ 5] 1.00-2.00 sec 3.46 GBytes 29.7 Gbits/sec 0 1.19 MBytes [ 5] 2.00-3.00 sec 3.48 GBytes 29.9 Gbits/sec 0 1.19 MBytes [ ID] Interval Transfer Bitrate Retr iperf Done. [ 5] 1.00-2.00 sec 1.10 GBytes 9.48 Gbits/sec 41 3.18 MBytes [ 5] 2.00-3.01 sec 1.08 GBytes 9.20 Gbits/sec 25 2.68 MBytes [ ID] Interval Transfer Bitrate Retr iperf Done. |
Beta Was this translation helpful? Give feedback.
-
Iperf2 numbers - same system `[root@mlmach1 iperf2-code]# src/iperf -c localhost -t 3 -eClient connecting to localhost, TCP port 5001 with pid 229773 (1 flows)
|
Beta Was this translation helpful? Give feedback.
-
Based on PR #1527 and testings done by @ffolkes1911 it may be useful to implement the related changes to multi-threading while it is being tested and before it becomes the master branch. Following are the main related changes. If it will help, I can submit a PR with the related proposed changes. 1. iperf_api.c
if (state == IPERF_DONE || state == CLIENT_TERMINATE) {
// Send additional bytes to complete the sent size to JSON length prefix,
// in case the other size is waiting for JSON.
l = sizeof(uint32_t) - sizeof(state);
while (l-- > 0)
Nwrite(test->ctrl_sck, &c, 1, Ptcp);
}
2. iperf_client_api.c in
rcv_timeout_value_in_us = (test->settings->rcv_timeout.secs * SEC_TO_US) + test->settings->rcv_timeout.usecs;
if (test->mode != SENDER)
rcv_timeout_us = rcv_timeout_value_in_us;
// In reverse/bidir active mode client ensures data is received.
// Same for receiving control messages at the end of the test.
if ( (rcv_timeout_us > 0 && test->state == TEST_RUNNING)
|| (rcv_timeout_value_in_us > 0
&& (test->state == TEST_END
|| test->state == EXCHANGE_RESULTS
|| test->state == DISPLAY_RESULTS)) )
{
} else if (test->mode != SENDER // In non-reverse active mode server ensures data is received.
|| test->state == TEST_END // Same for receiving control messages at the end of the test.
|| test->state == EXCHANGE_RESULTS
|| test->state == DISPLAY_RESULTS)
{
|
Beta Was this translation helpful? Give feedback.
-
Please feel free to post experiences with the multi-threaded iperf3 beta snapshot(s) or codeline here. Thanks!
Bruce.
Beta Was this translation helpful? Give feedback.
All reactions