動画像を表示するためのWebアプリを作ることを考えています。 最終的に画像はWebSocketsで転送するつもりですが、まずは生の帯域を知りたいと思いました。 そこで、Windows上のループバック接続の帯域を計測してみました。
iPerfをダウンロードし、 コマンドプロンプトを二つ開いて、それぞれでサーバとクライアントを動作させます。
サーバ側(以下に説明する2回のテストの結果も表示されている):
iperf-3.1.3-win64>iperf3.exe -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 127.0.0.1, port 58130
[ 5] local 127.0.0.1 port 5201 connected to 127.0.0.1 port 58131
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 441 MBytes 3.70 Gbits/sec
[ 5] 1.00-2.00 sec 509 MBytes 4.27 Gbits/sec
[ 5] 2.00-3.00 sec 519 MBytes 4.35 Gbits/sec
[ 5] 3.00-4.00 sec 535 MBytes 4.49 Gbits/sec
[ 5] 4.00-5.00 sec 561 MBytes 4.71 Gbits/sec
[ 5] 5.00-6.00 sec 570 MBytes 4.78 Gbits/sec
[ 5] 6.00-7.00 sec 579 MBytes 4.85 Gbits/sec
[ 5] 7.00-8.00 sec 570 MBytes 4.78 Gbits/sec
[ 5] 8.00-9.00 sec 578 MBytes 4.85 Gbits/sec
[ 5] 9.00-10.00 sec 560 MBytes 4.70 Gbits/sec
[ 5] 10.00-10.00 sec 933 KBytes 3.96 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec sender
[ 5] 0.00-10.00 sec 5.29 GBytes 4.55 Gbits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 127.0.0.1, port 58146
[ 5] local 127.0.0.1 port 5201 connected to 127.0.0.1 port 58147
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 517 MBytes 4.32 Gbits/sec
[ 5] 1.00-2.00 sec 535 MBytes 4.49 Gbits/sec
[ 5] 2.00-3.00 sec 551 MBytes 4.63 Gbits/sec
[ 5] 3.00-4.00 sec 565 MBytes 4.74 Gbits/sec
[ 5] 4.00-5.00 sec 596 MBytes 4.99 Gbits/sec
[ 5] 5.00-6.00 sec 608 MBytes 5.10 Gbits/sec
[ 5] 6.00-7.00 sec 622 MBytes 5.22 Gbits/sec
[ 5] 7.00-8.00 sec 621 MBytes 5.21 Gbits/sec
[ 5] 8.00-9.00 sec 608 MBytes 5.10 Gbits/sec
[ 5] 9.00-10.00 sec 604 MBytes 5.07 Gbits/sec
[ 5] 10.00-10.00 sec 1.25 MBytes 3.58 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-10.00 sec 5.69 GBytes 4.89 Gbits/sec sender
[ 5] 0.00-10.00 sec 0.00 Bytes 0.00 bits/sec receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
クライアントは、転送方向を変えて2回実行します。最初はクライアントからサーバへ、 2番目はサーバからクライアントへ(-Rオプション)。
iperf-3.1.3-win64>iperf3 -c 127.0.0.1
Connecting to host 127.0.0.1, port 5201
[ 4] local 127.0.0.1 port 58131 connected to 127.0.0.1 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 441 MBytes 3.70 Gbits/sec
[ 4] 1.00-2.00 sec 509 MBytes 4.27 Gbits/sec
[ 4] 2.00-3.00 sec 519 MBytes 4.35 Gbits/sec
[ 4] 3.00-4.00 sec 535 MBytes 4.49 Gbits/sec
[ 4] 4.00-5.00 sec 561 MBytes 4.71 Gbits/sec
[ 4] 5.00-6.00 sec 570 MBytes 4.78 Gbits/sec
[ 4] 6.00-7.00 sec 579 MBytes 4.85 Gbits/sec
[ 4] 7.00-8.00 sec 569 MBytes 4.78 Gbits/sec
[ 4] 8.00-9.00 sec 578 MBytes 4.84 Gbits/sec
[ 4] 9.00-10.00 sec 560 MBytes 4.70 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 5.29 GBytes 4.55 Gbits/sec sender
[ 4] 0.00-10.00 sec 5.29 GBytes 4.55 Gbits/sec receiver
iperf Done.
iperf-3.1.3-win64>iperf3 -c 127.0.0.1 -R
Connecting to host 127.0.0.1, port 5201
Reverse mode, remote host 127.0.0.1 is sending
[ 4] local 127.0.0.1 port 58147 connected to 127.0.0.1 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 517 MBytes 4.34 Gbits/sec
[ 4] 1.00-2.00 sec 535 MBytes 4.49 Gbits/sec
[ 4] 2.00-3.00 sec 551 MBytes 4.62 Gbits/sec
[ 4] 3.00-4.00 sec 565 MBytes 4.74 Gbits/sec
[ 4] 4.00-5.00 sec 596 MBytes 5.00 Gbits/sec
[ 4] 5.00-6.00 sec 608 MBytes 5.10 Gbits/sec
[ 4] 6.00-7.00 sec 623 MBytes 5.22 Gbits/sec
[ 4] 7.00-8.00 sec 621 MBytes 5.21 Gbits/sec
[ 4] 8.00-9.00 sec 608 MBytes 5.10 Gbits/sec
[ 4] 9.00-10.00 sec 605 MBytes 5.08 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.00 sec 5.69 GBytes 4.89 Gbits/sec sender
[ 4] 0.00-10.00 sec 5.69 GBytes 4.89 Gbits/sec receiver
iperf Done.
結果を見てみると、サーバからクライアントへの通信の方が若干高速(4.55Gbps対4.89Gbps)のようですが、 いずれにしても1Gbpsは優に超えています。結局、手元の環境だと500MB/s程度はいけるようですね。
実験したのはWindows 10, i7-6500Uのマシンです。
ちなみに、同じ実験を上記PCで動作する仮想マシン上のUbuntuで実行してみたら、 30Gbps以上の帯域が出てしまいました。 iperf version 2.0.5 (08 Jul 2010) pthreads, TCP window size: 2.50 MByte (default), Kernel 3.13.0-32-genericでの結果です。1CPUしか割り当てていませんが、あっさりとWindowsでの計測結果を6-7倍凌駕しました。
参考: