memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

pingで測定してみた

最近、帰宅後にスプラ2していて「ネットワークが不安定です」でチームにご迷惑をかけることがたびたびありました。

ずーっとYahoo!ADSL12Mを使ってきたのですが、auひかりにしたのでそれなりに問題ないと思っています。ただ、マンションタイプのため分岐した他の部屋の使用量が多いとひきづられるのかな。。。と。

speedtestで計測してみたのが以下。

f:id:ke_takahashi:20171230140235p:plain

BNRスピードテストで計測したみたのが以下。

f:id:ke_takahashi:20171230140319p:plain
f:id:ke_takahashi:20171230140330p:plain

結構、違うもので。。。サーバーまでの到達経路の違いでしょうか。

で、こちらのサイトを参考に本題のpingコマンドで計測してみた結果は以下です。

macなので微妙にオプションが異なりますが、ターミナルを開いて以下を入力します。外部のサーバーだと迷惑になるので。。。とりあえずルーターに向けて送ってみました。ルーターmac間はWifi(5GHz)で接続しています。

sudo ping -c 10 -s 60000 192.168.0.1

結果は以下。

--- 192.168.0.1 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 14.478/16.396/21.835/2.200 ms

平均で16.396msでした。あと計算です。

ネット速度(bytes/s)=(60000 * 2) / 0.016396=7318858≒7.3(Mbytes/s)でした。

上記のサービスで得た値とはずいぶん異なりますが、相対的な値として利用しようという感じでしょうか。とりあえず定期的に監視してネットワーク速度が上下するのかみてみようということです。

パケットサイズを大きくした方がいいということで60kbytesとしています。ちょっと面白いなぁ。。。と思ったのは、パケットサイズに対して応答時間は線形に変化しないというところです。

例えば、以下のような感じです。1Kbytes未満では応答時間に差がありません。送信時間ではないヘッダー処理の時間にかかっているというところと思います。

パケットサイズ(bytes) 10K 1K 100
応答時間(ms) 4.292 1.973 1.917

で、とりあえず値の精度は別として、pingでなんとなくネットワーク速度が測れそうなので、本題の調査(長期的にネットワーク速度を監視)してみました。

とりあえずシェルで以下みたいなコードを書いて実行します。10Kバイトをサーバーに送信するのを10回実行した平均値を使って速度を求めます。これを毎分実行します。ちなみに<サーバーのIPアドレス>にping送信するサーバーのIPアドレスを指定しないといけません。迷惑がかからないように自分の知るサーバーに送るのがいいのではと思います。とりあえず大学のサーバーにしてみました(あとで怒られるかな?)

#!/bin/sh
while :
do
  a=`sudo ping -c 10 -s 10000 <サーバーのIPアドレス> | tail -n 1 | awk -F/ '{print $5}'`
  echo "scale=5;(10000.0*2)/(" $a "/1000.0)/1000" | bc
  sleep 60
done

上記を実行するとターミナルに以下のような実行結果が得られます。

f:id:ke_takahashi:20171230174819p:plain

あとは、Excelでも何でもいいのでグラフにしてみます。2時間くらい実行した結果をグラフにしたのが以下です。

f:id:ke_takahashi:20171230230313p:plain

21:30くらいからスプラ2を始めたように思います。正確ではなりませんが。それまでは変動が少なかったのですが、プレイ中は変化しますね。。。