Bandwidth データの読み方(旧題：カスタマー・ポータル の Bandwidth(帯域幅) グラフの読み方)

<FONT COLOR=red>＜ご注意＞
以下の追試＆訂正を致しました。
(2015/10/02)
- データの更新間隔を30分から10分へ変更。
(2015/10/06)
- Usage グラフを解釈する方法から、Throughput の CSV データから使用量算出する方法へ変更。
- CSV ファイルでのダウンロード後の計算方法を追記。
- 内容に合わせ、タイトルを変更。
セルフ炎上消火完了か！？:sweat_smile: </FONT>

#0. はじめに
2015/09/30 現在、SoftLayer の物理サーバーには 500GB、仮想サーバーには 250GB まで無料のインターネット上への通信帯域幅(outbound bandwidth)が割り当てられています。最近、構築予定のサーバーが追加の帯域幅を必要とするかを確認するためのテストを実施しました。本来は非常に簡単なテストが、カスタマー・ポータル上の Bandwidth グラフの意味を誤解して悩んでしまったので、グラフの読み方をまとめておきます。

当初は Type: Usage のグラフ表示から十分な情報を読み取れると判断していたのですが、データの表示時期に応じた Usage グラフ表示の変化に起因して、必要な情報が読み取れない場合があることが判明した為、CSV データをダウンロードし、各時点の帯域幅使用量を算出する方法に切り替えました。

#1. Bandwidth グラフ画面の表示
カスタマー・ポータルにログインし、「Device List」→「各サーバー名」→ 「Bandwidth」タブの順に選択することで、Bandwidth グラフが表示されます。

#2. CSV ファイルのダウンロード
初期表示は Type: Throughput の View: Public (どの程度の速度でインターネットへ入出力がおこなわれているか)になっています。テスト当日に参照する場合は特に何も変更せずに、そのまま画面右下の「Download CSV」ボタンをクリックします。

もし、過去のデータの検討など細かく範囲を指定する場合は「View By」プルダウン・リストから「Custom Date Range」を選択し、「Start Date:」、「End Date:」をカレンダー・アイコンで設定して目的にあったデータ範囲に調整できます。

#3. Throughput からの使用量算出
ダウンロードした CSV ファイルの OUT 列に過去10分間の Mbps(Mega bit per second)単位もしくは Kbps(Kilo bit per second) 単位での Throughput が記録されています。Kbps は特に転送量が少ない場合に使用されます。
以下の計算式で各値から各10分間に当該サーバーからインターネット上に出力された MB(Mega Byte)、KB(Kilo Byte)単位の値を算出できます。

  使用量(MB) = Throughput(Mbps) x 10(分間) x 60(秒) / 8(ビット)

  使用量(KB) = Throughput(Kbps) x 10(分間) x 60(秒) / 8(ビット)

#4. 表計算ソフトの活用
各値に単位の Mbps、Kbps が付加されていますので、
C列2行目に値が入っている場合であれば、Excel や Google Drive の表計算機能において以下の式で MB、KB に変換できます。

```
Mbps の場合
=SUBSTITUTE(C2," Mbps","")*10*60/8
Kbps の場合
=SUBSTITUTE(C2," Kbps","")*10*60/8
```

#5. テスト結果
以下の時刻に、区別がつく様に 50MB, 100MB, 200MB とサイズを変化させながら、Public VLAN 経由で Outboundとなる FTP でのダウンロードを 12回 実施しました。

```
テスト内容
---10分間隔6回---
15:25 50  MB
15:35 100 MB
15:45 200 MB
15:55  50 MB
16:05 100 MB
16:15 200 MB
---15分間あけて再度10分間隔6回---
16:30  50 MB
16:40 100 MB
16:50 200 MB
17:00  50 MB
17:10 100 MB
17:20 200 MB

```

![10min.JPG](https://qiita-image-store.s3.amazonaws.com/0/74185/2470c12e-ee40-b325-9a7a-c7bc26af47fd.jpeg)

その状態から CSV ファイルを取得し、3. で述べた変換を Excel で実施後グラフにしたものです。

#6. グラフの読み方
[KnowledeLayer](http://knowledgelayer.softlayer.com/faq/how-do-i-read-bandwidth-graphs) には5分単位との記述がありますが、Bandwidth の CSV データは10分間隔で記録されます。

最も注意すべき点は、例えば 15:20 として表示されるデータには、 15:20 から 15:30 までの使用量が表示される点です。つまり15:25 に実施した、初回分テストの 50MB 分の Outbound の通信を行った場合、上記のグラフの様に、15:20 の値として表示されます。

しかし、上記の例で、15:10 から 15:20 までに行われた通信容量が 15:20 のデータとして表示されると誤解してしまうと、正しくテスト結果を解釈できなくなります。

また、15:20 として表示すべきデータは 15:30 を過ぎるまで確定せず、さらに、CSV としてダウンロードできる状態になるまでに時間がかかる場合があります。従って、最新データの反映をイライラしながら待つよりも、テスト時点から20分間以上経過してからダウンロードすることがお勧めです。

#7. テスト実施時のポイント
1) テスト実施時刻/ログの記録
当たり前ではありますが、テストの実施時刻や、実行ログを記録保存しておきます。

2) テスト実施間隔
複数のテスト・ケースがある場合、それぞれのケースの間に10分間以上の間隔を空け、(可能な限り)それぞれの結果が分離して表示されるように実施します。

3) ツール、スクリプトの活用
可能な限り、スクリプトを活用して、テスト内容が自動的に進むようにすると、何回もテストを繰り返す場合も、楽に作業が進められます。今回のテスト対象は atdftp サーバーだった為、bash スクリプトから実行時刻の記録、at コマンドでの指定時刻でのスクリプト実行、lftp での自動ログインおよびファイル転送を行いました (例：lftp -c "open -u userid,password FTPserver ; get -O . filename")。

4) 表計算ソフト
上記、4. にも具体的に数式を挙げていますが、CSV データを解釈する上では、Excel や Google Drive の表計算機能を活用して、グラフ化することをお勧めします。

#8. 最後に
後知恵としては、最初からテスト内容をきちんと考え、結果を記録していれば、6. に挙げた点などもすぐに目に付いたはずでした。私の様に Bandwidth の解釈に無駄に悩む方が一人でも減れば幸いです。
また、月末にこの記事を書き上げたのですが、次月初には Usage グラフの表示が全く変わって細かい値が読み取れなくなってしまい、一人でジタバタすることになりました。今後も、残念ながら誤りを犯してしまった場合には、様々な方からのご意見、コメント、ストックを支えに、少しでも早く正していきたいと考えています。

参考：
[KnowledgeLayer: How do I read the bandwidth graphs?](http://knowledgelayer.softlayer.com/faq/how-do-i-read-bandwidth-graphs)