当我使用多个线程运行 iperf UDP 测试时,它只是挂起。它永远不会回来。但是相同的测试总是成功地完成单个流。这是我的 iperf 版本和详细信息:
$ iperf --v
iperf version 2.0.5 (08 Jul 2010) pthreads
客户端 (10.20.32.50) 命令:$ iperf -c 10.20.32.52 -P 2 -t 10 -u -b 1g
服务器 (10.20.32.52) 命令:$ iperf -s -u
客户端给出以下输出并且永远不会完成
$ iperf -c 10.20.32.52 -P 2 -t 10 -u -b 1g
------------------------------------------------------------
Client connecting to 10.20.32.52, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 4] local 10.20.32.50 port 33635 connected with 10.20.32.52 port 5001
[ 3] local 10.20.32.50 port 56336 connected with 10.20.32.52 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 483 MBytes 406 Mbits/sec
[ 4] Sent 344820 datagrams
[ 4] Server Report:
[ 4] 0.0-696.8 sec 483 MBytes 5.82 Mbits/sec 0.020 ms 229/344819 (0.066%)
[ 4] 0.0-696.8 sec 478 datagrams received out-of-order
服务器输出如下
$ iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 12] local 10.20.32.52 port 5001 connected with 10.20.32.50 port 60971
[ 10] local 10.20.32.52 port 5001 connected with 10.20.32.50 port 34388
[ 10] 0.0-823.4 sec 483 MBytes 4.92 Mbits/sec 0.018 ms 420/344819 (0.12%)
[ 10] 0.0-823.4 sec 365 datagrams received out-of-order
我的两台客户端/服务器机器都是 32 核,速度为 10 Gbps。请注意,客户端在单线程/流中运行良好,即$ iperf -c 10.20.32.52 -P 1 -t 10 -u -b 1g
始终完成。任何帮助表示赞赏!
这个问题最初是作为对类似问题 [1] 的回答而提出的,但使用的是 iperf3。在收到建议后,我提出了一个单独的问题。
诺迪尔
[1] https://stackoverflow.com/questions/31836985/iperf3-parallel-udp-not-running/32728777