0

iperf バージョン 2.0.5を使用して、2 台のマシン(両方とも Linux Debian 8 を実行)間の TCP 帯域幅をテストしています。オプションの助けを借りて双方向帯域幅を測定するためにデュアルテストを使用して-d, --dualtestいます。また、テスト結果を (正規表現を使用して) 取得する Python ラッパーがあり、iperf レポート出力での 2 つの結果の出現順序に依存しています。

ただし、報告された結果は、見た目の理由もなく、表示の順序を変更し続けます。それらは次のように表示されます。

Client connecting to ServerIP, TCP port 5002
TCP window size: 0.08 MByte (default)
------------------------------------------------------------
[  5] local ClientIP port 53653 connected with ServerIP port 5002
[  4] local ClientIP port 5002 connected with ServerIP port 46306
[ ID] Interval       Transfer     Bandwidth
[  5]  0.0-10.6 sec  3.00 MBytes  2.36 Mbits/sec
[  4]  0.0-10.7 sec  40.8 MBytes  32.0 Mbits/sec

また、次のような場合もあります。

Client connecting to ServerIP, TCP port 5002
TCP window size: 0.08 MByte (default)
------------------------------------------------------------
[  5] local ClientIP port 54043 connected with ServerIP port 5002
[  4] local ClientIP port 5002 connected with ServerIP port 46372
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.7 sec  40.8 MBytes  32.0 Mbits/sec
[  5]  0.0-10.7 sec  3.00 MBytes  2.36 Mbits/sec

最後の行に予想されるより高い帯域幅が含まれ、その直前の行に他の帯域幅が含まれている 2 番目のものを想定するように、ラッパー コードを解決しました。

  • iperf によって報告される特定の出力順序を強制するにはどうすればよいですか?
  • そして、なぜID として4andを使用するのですか?5
  • ID に使用する番号を決定する方法はありますか? あるテストから別のテストへと変化しているように見えるからです。つまり、たとえば、別の時間に、または別のマシンから実行するときに6andを使用します。7

これは、クライアント マシンで iperf を実行する方法です。

iperf -c  ServerIP  -d -p 5002  -f m

これはサーバーマシン上にあります:

iperf -s -p 5002 -D
4

1 に答える 1

0

レポーター スレッド (レポートを出力するスレッド) はトラフィック スレッドとは別のスレッドであるため、この順序付けを実際に制御することはできません。「同時に」開始され、並行して実行される 2 つのスレッドがあるため、トラフィック スレッドが最初に終了するレースになります。

ちなみに、iperf 2.0.5 には既知のバグとパフォーマンスの強化があり、それらは2.0.9で対処されています。

ボブ

于 2016-08-30T17:30:31.863 に答える