Contents
目的
今回の目的は、自宅のネットワーク速度を測ることです。
なぜか?って、それは、
”テレワークが遅くて仕事にならない”
”でも、どこが悪いの?”
って人、多いですね。
いろんな、ページで簡単に測定できるのですが、定常的に測定するには、少し、手間がかかります。
”では、どうすれば、いいか?”
それに、お答えたいと思います
これから、ITリテラシが今以上に必要となってくるので、
こういうのものを自分で調べる能力を身につけてください。
自分で、調べて色々できることは、業務改善の武器になります。
では、みていきましょう。
サンプルコードも紹介しますので、参考になれば、幸いです。
といっても、みなさんのページを参考に、適当につなげただけなんですけどね。
スポンサーリンク
自宅のネットワーク速度を測定する方法
Web上での測定方法と、MACのターミナル上での確認方法を見ていきます。
Web上で確認する方法
google先生に聞くことをお勧めします。
例えば、このページにアクセスして、みてください。
このページの測定開始を押すだけです。
そうすると、以下の様な画面が出てくるので、数字を確認してください。
普通に使ってる人は、Downloadってのが、一番大切な値ですので、これを確認してください。
やることによりますが、一般的には、20〜30Mbpsくらい出てれば、テレワークにあまり問題ないと言われてます。
自分でやってみるとわかるのですが、この値は、ボタンを押下する時間によってかなり違いがあります。
画面の下には、その速度でのそれぞれの用途での快適性を表示しています。
テレワークだと、ビジネス>クラウド利用とか、ビジネス>ビデオ会議あたりでしょうか?
このあたりが、快適だと、自宅のネットワーク環境にあまり問題ないかもしれません。
ただ、この方法で、ネットワーク速度を測定できるのは、自分で、このHPにアクセスして、測定ボタンを押した時だけです。
これだと、毎回手動でおさないとダメなので、長時間のネットワーク状態を観察するのに向かないです。
ああ、めんどくさい。。。。
というわけで、ここからが本題です。
MACのターミナル上で確認する方法
では、次は、Macのターミナルで確認する方法を見ていきましょう。
1)ターミナルを立ち上げる。(これは、大丈夫ですよね。)
2)コマンドを追加
以下を参考にインストールしてください。
speedtest-cli でターミナルからネット速度を計測する
1 2 |
#pipでもよいようです pip install speedtest-cli |
2)インストールが終わったら、dirを準備
1 2 3 |
#準備 mkdir speed_test #directoryを作成 cd speed_test #そのdirectoryに移動 |
3) ファイルを開いて、コマンドを記述する
1 |
vi speed_test.sh |
viなら、一度、"i"って押して、以下の記述を書き込みます。(コピぺ)
コピペが終わったら、escを押したあと、”:wq"と打って、ファイルを閉じます。
わかりますかね?
自分でできる方は、読み飛ばして、ください。
プログラムはこんな感じでいいと思います。
intarvalというところで、ネットワーク速度の採取間隔を指定していますので、
自分の好きな感覚にしてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash # Intial Setting LANG=C start_time=`date +'%Y_%m%d_%H%M'` ofile=speedtest_start_${start_time}.log interval=360 #unit:[S] echo "#Speed-test" > $ofile # Measuring for speedtest while true do date +'%Y_%m%d_%H:%M' >> $ofile speedtest-cli --simple >> $ofile sleep $interval done |
ここまで、終わったら、
ターミナル上で、プログラムを実行してください。
例えば、以下の感じです。
1 2 |
chmod +x speed_test.sh ./speed_test.sh & |
これだけです。
これで、プログラムが、ずっと走って、あなたの代わりにログを取り続けていきます。
違うターミナル(シェル)を開いて、上でプログラムを実行したdirectoryにいきます。
1 |
cd speed_test |
ですね。
そのdirectoryに、speedtest_start(実行開始した時間).logというファイルができてるはずです。
その中身を上と同じ様にviで開いてみると,
以下のようにできています。
1 2 3 4 5 6 7 8 |
2020_0521_21:06 Ping: 8.327 ms Download: 33.73 Mbit/s Upload: 83.75 Mbit/s 2020_0521_21:12 Ping: 9.33 ms Download: 29.28 Mbit/s Upload: 93.77 Mbit/s |
あー見づらい。ってことですね。
ということで、変換スクリプトを作りました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import sys ifile = sys.argv[1] for line in open(ifile): if line.find("_") >= 0: test_time = line.strip() if line.find("Upload") >= 0: upload = line.split()[1:3] if line.find("Download") >= 0: download = line.split()[1:3] if line.find("Upload") >= 0: upload = line.split()[1:3] print (test_time + " ==> (D) " + " ".join(download) + " (U) " + " ".join(upload)) |
これに、さっきのログファイルを食わせると、、、
こんなふうにでます。
1 2 3 4 5 6 7 |
2020_0521_17:47 ==> (D) 37.33 Mbit/s (U) 80.66 Mbit/s 2020_0521_17:54 ==> (D) 55.34 Mbit/s (U) 74.70 Mbit/s 2020_0521_18:00 ==> (D) 32.99 Mbit/s (U) 87.47 Mbit/s 2020_0521_18:16 ==> (D) 48.84 Mbit/s (U) 79.68 Mbit/s 2020_0521_21:06 ==> (D) 33.73 Mbit/s (U) 83.75 Mbit/s 2020_0521_21:12 ==> (D) 29.28 Mbit/s (U) 93.77 Mbit/s 2020_0521_21:19 ==> (D) 15.68 Mbit/s (U) 28.60 Mbit/s |
おー見やすくなった。
え?まだ、見づらい??
ネットワーク速度の結果をグラフに出してみる
では、こだわり派のあなたへグラフにしました。
ここからは、ちょっと腕のある人がやってみてください。
python使える人なら簡単ですね。
例えばこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import datetime import matplotlib.dates as mdates import matplotlib.pyplot as plt import pandas as pd ifile = "speedtest_start_2020_0517_0158.log" #測定でできたファイル名 Down = [] Up = [] for line in open(ifile): if line.find("_") >= 0: elem_day = line.strip() if line.find("Download") >= 0: elem_Down = line.split()[1] Down.append((elem_day, float(elem_Down))) if line.find("Upload") >= 0: elem_Up = line.split()[1] Up.append((elem_day, float(elem_Up))) Down_speed = [(datetime.datetime.strptime(t, '%Y_%m%d_%H:%M'), s) for t,s in Down] Up_speed = [(datetime.datetime.strptime(t, '%Y_%m%d_%H:%M'), s) for t,s in Up] #print (Down_speed) plt.figure(figsize=(16, 4)) df_dn = pd.DataFrame(Down_speed, columns=['time', 'speed']) ax = plt.subplot() # グラフのタイトル plt.title("Speed Test for Down load (Interval: 6ms)" ) # x軸のラベル plt.xlabel("Time [day/time]") # y軸のラベル plt.ylabel("Speed [Mbit/s]") #grid表示 plt.grid() ax.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d\n%H:%M')) #ax.set_xlim(datetime.datetime(2020, 5, 17, 1), datetime.datetime(2020, 5, 17, 23)) ax.set_ylim(0.0, 100.0) ax.plot(df_dn['time'], df_dn['speed']) plt.show() |
動かすとこんな風にでます。ジグザクしてないところは、パソコンがスリープ状態でログが採取されてないところです。谷になってるところでは、テレワークなんてできません。
最初は、時間を数字に変換して散布で表示してましたが、見づらかったです。
下の参考ページで、Dataframeで時間軸を使う方法を教わったので、完全パチりました。ありがとうございます。
スポンサーリンク
で、測ってどうするの?
僕の場合、グラフの下がってるところが、毎日、昼の3時くらいにきます。
そうすると、テレワークで作業できなくなるので、その間抜けて休憩し、グラフが復活したら、戻ってきます。
これで、効率よく休憩できますね?夜まで、働かんこともありますが・・・。
なんでお前の家、今時100Mなんじゃい!って突っ込まないでね
最近、テレワークが増えて遅いのか?LANの作りがへぼいのかわからないですが、どうにかして欲しいです。
早く、宣言解除されますように。。。
参考ページ:
インターネット回線スピードテスト(USEN)
speedtest-cli でターミナルからネット速度を計測する
Matplotlibで間隔が疎らな時系列データを可視化する