#...ふと思った
「Dockerコンテナ間のネットワークのスピードってどれぐらい出てるんだ??」
...測ってみるか!
ってなことで、以下の要領でDockerのコンテナが2つだけ入ったネットワークを作り、そのコンテナ間のネットワークの速度をiperfで測ってみる実験をやってみました!
#実験環境
今回は、下記のようなスペックの実験環境を用意しました。
-
手元にあるPC
intel Core i7-8750H (4.10GHz)、16GBメモリ、SSD
Debian 10.9
Docker 20.10.6 -
AWS EC2
t2.micro (intel Xeon E5-2686 v4 2.30GHz 1vCPU、1GiBメモリ、汎用SSD)
Debian 10.9 (ami-0adb6517915458bdb)
Docker 20.10.6
それぞれのマシンで次のコマンドを実行し、コンテナを作成しました。
docker network create speedtest
docker container run -d --network speedtest --name debian1 debian
(サーバ側)
docker container run -d --network speedtest --name debian2 debian
(クライアント側)
この後、それぞれのコンテナにアタッチし、apt install iperf
を実行しました。
#実験方法
クライアント側のコンテナでiperf -c [サーバ側のIPアドレス]
を10秒間隔で3回実行し、平均値をとる。
そして、ホストを変えることによって CPUなどの違いで速度が変わるのか実験してみました。
#結果
###・手元のPC
root@ee984f974c0f:/# iperf -c 172.18.0.2
------------------------------------------------------------
Client connecting to 172.18.0.2, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.18.0.3 port 46796 connected with 172.18.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 51.8 GBytes 44.5 Gbits/sec
root@ee984f974c0f:/# iperf -c 172.18.0.2
------------------------------------------------------------
Client connecting to 172.18.0.2, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.18.0.3 port 46798 connected with 172.18.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 51.6 GBytes 44.3 Gbits/sec
root@ee984f974c0f:/# iperf -c 172.18.0.2
------------------------------------------------------------
Client connecting to 172.18.0.2, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.18.0.3 port 46800 connected with 172.18.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 52.1 GBytes 44.7 Gbits/sec
早えぇ~(心の声)
/ | Transfer | Bandwidth |
---|---|---|
Max. | 52.1 GB/10s | 44.7 Gbit/s |
Min. | 51.6 GB/10s | 44.3 Gbit/s |
Avg. | 51.83 GB/10s | 44.5 Gbit/s |
めちゃくちゃ早いやん(心の声) |
###・AWS EC2
root@4cd0a77376b6:/# iperf -c 172.18.0.2
------------------------------------------------------------
Client connecting to 172.18.0.2, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.18.0.3 port 56282 connected with 172.18.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 27.9 GBytes 23.9 Gbits/sec
root@4cd0a77376b6:/# iperf -c 172.18.0.2
------------------------------------------------------------
Client connecting to 172.18.0.2, TCP port 5001
TCP window size: 122 KByte (default)
------------------------------------------------------------
[ 3] local 172.18.0.3 port 56284 connected with 172.18.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 27.4 GBytes 23.5 Gbits/sec
root@4cd0a77376b6:/# iperf -c 172.18.0.2
------------------------------------------------------------
Client connecting to 172.18.0.2, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.18.0.3 port 56286 connected with 172.18.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 28.1 GBytes 24.2 Gbits/sec
/ | Transfer | Bandwidth |
---|---|---|
Max. | 28.1 GB/10s | 24.2 Gbit/s |
Min. | 27.4 GB/10s | 23.5 Gbit/s |
Avg. | 27.8 GB/10s | 23.86 Gbit/s |
#結果総評
驚異の44Gbit/s (5.5GB/s)とか出てて正直びっくりしました。
あと、CPUなどのパーツの違いによって、コンテナ間のネットワークの速度に差が出ることもわかりました。
おもしろい実験だったと思います(自負)。
以上になります。
最後までお読みいただき、ありがとうございました!