ネットワーク遅延について理解が曖昧だったのでおさらいしました。
調べ方
測定したいサーバのいずれかからpingコマンドを使って調べます。
gceのインスタンスからヤフージャパンとyahooを測定します。
$ ping -c 2 www.yahoo.co.jp PING ***.jp (***.***.***.***): 56 data bytes 64 bytes from 183.79.248.252: icmp_seq=0 ttl=51 time=132.073 ms 64 bytes from 183.79.248.252: icmp_seq=1 ttl=51 time=131.703 ms --- edge.g.yimg.jp ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 131.703/131.888/132.073/0.185 ms $ ping -c 2 www.yahoo.com PING ***.jp (***.***.***.***): 56 data bytes 64 bytes from 98.139.180.181: icmp_seq=0 ttl=48 time=29.914 ms 64 bytes from 98.139.180.181: icmp_seq=1 ttl=48 time=29.397 ms --- atsv2-fp.wg1.b.yahoo.com ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 29.397/29.655/29.914/0.259 ms $
各サイトは、単なるサンプルなので以降は、サンプル1、サンプル2とします。
読み方
最初の1行目で送信先IPアドレスとデータ部が56バイトのパケットを送信していることがわかります。パケットサイズは、-s
オプションで指定が可能です。
-c
で指定した回数送信が試みられます。1パケット1行の結果が表示されます。56バイトのデータ部と8バイトのヘッダで計64バイトのパケットが送信されます。time=
がRTTです。
RTT(round-trip time)は、パケットを送信して応答があるまでの時間です。
最後の2行は、パケットロスの発生とRTTの統計情報がでます。
スループット
パケットの最大サイズとRTTからネットワークのスループットが分かります。論理的に最大で送信できるデータ量を把握したり、複数の測定結果を比較することで性能差や改善を確認するといったことができるようになります。
パケットの最大サイズ
ifconfigで対象のNICを指定してパケットの最大サイズを確認できます。例えば、下記のようにするとeth0
のMTUを見ることでパケットの最大サイズが1,460バイトであることがわかります。
$ ifconfig eth0 | grep MTU UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1 $
スループット
最初のサンプル1とサンプル2のRTTを使ってスループットを計算します。
計算 | サンプル1 | サンプル2 |
---|---|---|
1秒間に送信できるパケット数 | 1,000ミリ秒÷131.888≒7.6回 | 1,000ミリ秒÷29.655≒33.7回 |
1秒間に送信できる最大サイズ(バイト/秒) | 1,460バイト✕7.6回≒11,070バイト/秒 | 1,460バイト✕33.7≒49,233バイト |
1秒間に送信できる最大ビット(ビット/秒) | 11,070✕8ビット≒88,560ビット/秒 | 49,233✕8ビット≒393,863ビット |
スループット | 88,560÷1024≒86Kbps | 393,863÷1024≒385Kbps |
データ送信にかかる時間を計算する
スループットと送信データサイズから送信にかかる時間を計算します。
サンプル1のスループットで1GBのデータを送信するのにかかる時間です。
計算 | サンプル1の計算式 |
---|---|
データサイズ | 8,589,934,592ビット=1GB✕1024✕1024✕1024✕8ビット |
回線速度 | 88,064bps≒86Kbps✕1024 |
転送時間 | 8,589,934,592bit÷88,064bit✕伝送効率 |
転送効率が100%だったとしても27時間くらいかかります。
実測値から転送効率を計算する
実際にデータ送信にかかった時間から転送効率を計算します。
サンプル1のスループットで1GBのデータを送信するのに40時間かかった場合の転送効率です。
計算 | サンプル1の計算式 |
---|---|
送信時間 | 144,000秒 = 40時間✕60分✕60秒 |
データサイズ | 8,589,934,592ビット=1GB✕1024✕1024✕1024✕8ビット |
回線速度 | 88,064bps≒86Kbps✕1024 |
転送速度 | 59,652bps = 8,589,934,592ビット÷144,000秒 |
転送効率 | 0.677≒59,652bps÷88,064bps |
このケースでは、転送効率は、67.7%となります。