= 読み取り性能のテスト
:toc:
:icons:
:linkattrs:
:imagesdir: ../resources/images


== 概要

このセクションでは、Windowsインスタンスと同じリージョンであるリージョン2のローカルFSxファイルゲートウェイの読み取り性能をテストし、リージョン1のリモートFSx for Windowsファイルサーバーの読み取り性能と比較します。

世の中にはたくさんのディスクパフォーマンスツールがあります。本ワークショップでは*WindowsInstance*にlink:https://aka.ms/diskspd[DiskSpd] がプリインストールされています。

== このセクションに必要な時間

注：このセクションの完了には約15分かかります。


== ステップバイステップガイド

重要: 次の手順に進む前に以下の手順をお読みいただき、クイックビデオをご覧ください。

image::read-csvs.gif[title="ステップバイステップのクイックビデオ", align="left", width=600]

=== ローカルのFSx File GatewayとリモートのFSx for Windows File Serverからの大容量ファイルの読み取り時間の比較

ファイルシステムには、あらかじめ3つのCSVファイルが用意されています。これはlink:http://eforexcel.com/wp/downloads-18-sample-csv-files-data-sets-for-testing-sales/[eforexcel.com]からダウンロードしたサンプル営業データです。 10,000レコードのファイル(10k Sales Records.csv @ 1.18 MB)、1,000,000レコードのファイル(1m Sales Records.csv @ 119 MB)、5,000,000レコードのファイル(5m Sales Records.csv @ 595 MB)があります。

. ローカルコンピュータ、Amazon EC2 Windows インスタンス、またはスマートフォンで、任意のストップウォッチアプリケーションを開きます。 (例： link:https://stopwatchtimers.com/stopwatch/[Stopwatch]). 次のいくつかのステップでは、Windowsインスタンスがこれらの3つのCSVファイルを開くのにかかる時間を計測し、ローカルリージョンのFSxファイルゲートウェイとリモートリージョンのFSx for Windowsファイルサーバーから開いた場合の時間を比較します。

. リモートFSx for Windows File Serverを"Z:"ドライブとしてマウントした"File Explorer"ウィンドウから、10k Sales Records.csvファイルを右クリックし、"Open With > Notepad"を選択します。ストップウォッチを開始します。メモ帳にデータが表示されたら、ストップウォッチを止めます。時間を記録します。

. ローカルFSx File Gatewayを"Y:"ドライブとしてマウントした"File Explorer"ウィンドウから、10k Sales Records.csvファイルを右クリックし、"Open With > Notepad"を選択します。ストップウォッチを開始します。メモ帳にデータが表示されたら、ストップウォッチを止めます。時間を記録します。

+
10k Sales Records.csvファイルのサイズが小さいため、ファイル全体を読むのにかかる時間は非常に短く、ストップウォッチで計測するのは難しいでしょう。
+
. 1m Sales Records.csvと5m Sales Records.csvファイルで上記の2つのステップを繰り返します。
. 計測した時間はどの程度ですか？
. 上記の3つの読み取りテストを繰り返します。
+
注：FSxファイルゲートウェイからの最初の読み取りでは、FSxファイルゲートウェイがリモートのFSx for Windowsファイルサーバーからファイルをキャッシュに読み込むため、より高いレイテンシーが発生します。その後の読み取りでは、ローカルのFSxファイルゲートウェイから直接ファイルが配信されます。
+
以下は、us-west-1（北カリフォルニア）リージョンのWindowsインスタンスから同一リージョンに有るFSxファイルゲートウェイ、およびus-east-1（北バージニア）リージョンのFSx for Windowsファイルサーバーのファイルにアクセスした際に記録された時間の例です。
+
[cols="3,10,10"]
|===
| File | FSx for Windows File Server (us-east-1) duration | FSx File Gateway (us-west-1) duration

| 10k Sales Records.csv
a| ~2.0 seconds
a| ~0.5 seconds

| 1m Sales Records.csv
a| ~15.5 seconds
a| ~1.5 seconds

| 5m Sales Records.csv
a| ~81.6 seconds
a| ~7.9 seconds
|===
+
. テストを繰り返し、リモートのFSx for Windows File ServerとローカルのFSx File Gatewayのファイルにアクセスする際に、引き続き違いがあるかどうかを確認します。


=== DiskSpdを使った読み取り性能テスト

重要: 次の手順に進む前に以下の手順をお読みいただき、クイックビデオをご覧ください。

image::read-test.gif[title="Quick Step-by-step Video", align="left", width=600]

==== リモートFSx for Windows File Serverからの読み取りパフォーマンステスト

. "Windows Instance"のリモートデスクトップセッションで、"Start" >> "Windows PowerShell"の順で選択して下さい。

+
重要: このセクションではリモートFSx for Windows File Serverが"Z:"ドライブとしてマウントされていることを想定しています。
+
. 以下のDiskSpeedスクリプトを実行して、"Z:"ドライブとしてマウントされたリモートFSx for Windows File Serverの読み取り性能をテストします。
+
```sh
C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d120 -w0 -r -t1 -o32 -b1M -Sr -L Z:\${env:computername}-fsxw.dat
```
+
スクリプトの実行中に、タスクマネージャーを開き、ネットワークのパフォーマンスを監視します（例：Start >> Task Manager >> More details >> Performance (tab) >> Ethernet）。DiskSpdのスクリプトは120秒で完了します。スクリプトが完了すると、PowerShellウィンドウに出力が表示されます。
+
* テストのP99(99%-tile)レイテンシーは何msでしたか？ - これは、DiskSpdの出力下部の"total"テーブルにあります。
* テストのP99.99 (99.99th %-tile) レイテンシーは何msでしたか？ - これは、DiskSpdの出力下部の"total"テーブルにあります。
* Total Read IO MiB/sはどのくらいでしたか？ - これは、DiskSpdの出力の"MiB/s"列の"Read IO"の下にあります。
* I/O per secondはどのくらいでしたか？ - これは、DiskSpdの出力の"I/O per s"列の下の"Read IO"の下にあります。
* 平均レイテンシーはどのくらいでしたか？ - これは、DiskSpdの出力の"AvgLat"列の下の"Read IO"の下にあります。
+
. 次の表をローカルコンピュータにコピーして、"FSx for Windows File Server" Test 1の欄に結果を記録します。
. テストを繰り返し、その結果を"FSx for Windows File Server" Test 2の欄に記録します。
+
[width="50%",cols="d,d,d,d,d",frame="topbot",options="header"]
|===
h| EC2 Instance 2+h| FSx for Windows File Server 2+h| FSx File Gateway
s| DiskSpd Read (metric) h| Test 1 h| Test 2 h| Test 1 h| Test 2
| Read IO throughput (MiB/s)
|
|
|
|

| Read IO I/O per s
|
|
|
|

| Read IO AvgLat (ms)
|
|
|
|

| Min %-tile (ms)
|
|
|
|

| 50th %-tile (ms)
|
|
|
|

| 90th %-tile (ms)
|
|
|
|

| 99th %-tile (ms)
|
|
|
|

| 99.99th %-tile (ms)
|
|
|
|
|===
+
. DiskSpdのパラメータ設定をいろいろと試してみてください。以下の表を参考にしてください。ブロックサイズ（-b）、未処理のI/O要求数（-o）、ファイルごとのスレッド数（-t）、ローカルキャッシュの無効化（-Sr）を変えてテストします。
+
[cols="3,10"]
|===
| Parameter | Description

| `-b<size>[K\|M\|G]`
a| Block size in bytes or KiB, MiB, or GiB (default = 64K).

| `-o<count>`
a| Number of outstanding I/O requests per-target per-thread. (1 = synchronous I/O, unless more than one thread is specified with by using `-F`.) (default = 2)

| `-r<size>[K\|M\|G]`
a| Random I/O aligned to the specified number of <alignment> bytes or KiB, MiB, GiB, or blocks. Overrides -s (default stride = block size).

| `-s<size>[K\|M\|G]`
a| Sequential stride size, offset between subsequent I/O operations in bytes or KiB, MiB, GiB, or blocks. Ignored if -r is specified (default access = sequential, default stride = block size).

| `-t<count>`
a| Number of threads per target. Conflicts with `-F`, which specifies the total number of threads.

| `-Sr`
a| Disable local caching.

|===

* どのようなパラメータをテストしましたか？
* パラメーターオプションの違いによる結果の変化はどうですか？


==== ローカルFSx File Gatewayからの読み取りパフォーマンステスト

. "Windows Instance"のリモートデスクトップセッションで、"Start" >> "Windows PowerShell"の順で選択して下さい。

+
重要: このセクションではローカルFSx File Gatewayが*Y:*ドライブとしてマウントされていることを想定しています。
+
. 以下のDiskSpeedスクリプトを実行して、**Y:**ドライブとしてマウントされたリモートFSxファイルゲートウェイの読み取り性能をテストします。
+
```sh
C:\Tools\DiskSpd-2.0.21a\amd64\DiskSpd.exe -d120 -w0 -r -t1 -o32 -b1M -Sr -L Y:\${env:computername}-fsxw.dat
```
+
スクリプトの実行中に、タスクマネージャーを開き、ネットワークのパフォーマンスを監視します（例：Start >> Task Manager >> More details >> Performance (tab) >> Ethernet）。DiskSpdのスクリプトは120秒で完了します。スクリプトが完了すると、PowerShellウィンドウに出力が表示されます。
+
* テストのP99(99%-tile)レイテンシーは何msでしたか？ - これは、DiskSpdの出力下部の"total"テーブルにあります。
* テストのP99.99 (99.99th %-tile) レイテンシーは何msでしたか？ - これは、DiskSpdの出力下部の"total"テーブルにあります。
* Total Read IO MiB/sはどのくらいでしたか？ - これは、DiskSpdの出力の"MiB/s"列の"Read IO"の下にあります。
* I/O per secondはどのくらいでしたか？ - これは、DiskSpdの出力の"I/O per s"列の下の"Read IO"の下にあります。
* 平均レイテンシーはどのくらいでしたか？ - これは、DiskSpdの出力の"AvgLat"列の下の"Read IO"の下にあります。
+
. 結果を、先ほどローカルコンピュータにコピーした表の"FSx File Gateway" Test 1欄に記録します。
. テストを繰り返し、その結果を"FSx File Gateway" Test 2欄に記録します。
+
注：FSxファイルゲートウェイからの最初の読み取りでは、FSxファイルゲートウェイがリモートのFSx for Windowsファイルサーバーからファイルをキャッシュに読み込むため、より高いレイテンシーが発生します。その後の読み取りでは、ローカルのFSxファイルゲートウェイから直接ファイルが配信されます。
+
. DiskSpdのパラメータ設定をいろいろと試してみてください。以下の表を参考にしてください。ブロックサイズ（-b）、未処理のI/O要求数（-o）、ファイルごとのスレッド数（-t）、ローカルキャッシュの無効化（-Sr）を変えてテストします。
+
[cols="3,10"]
|===
| Parameter | Description

| `-b<size>[K\|M\|G]`
a| Block size in bytes or KiB, MiB, or GiB (default = 64K).

| `-o<count>`
a| Number of outstanding I/O requests per-target per-thread. (1 = synchronous I/O, unless more than one thread is specified with by using `-F`.) (default = 2)

| `-r<size>[K\|M\|G]`
a| Random I/O aligned to the specified number of <alignment> bytes or KiB, MiB, GiB, or blocks. Overrides -s (default stride = block size).

| `-s<size>[K\|M\|G]`
a| Sequential stride size, offset between subsequent I/O operations in bytes or KiB, MiB, GiB, or blocks. Ignored if -r is specified (default access = sequential, default stride = block size).

| `-t<count>`
a| Number of threads per target. Conflicts with `-F`, which specifies the total number of threads.

| `-Sr`
a| Disable local caching.

|===
+

* どのようなパラメータをテストしましたか？
* パラメーターオプションの違いによる結果の変化はどうですか？


=== DiskSpdを使った読み取り性能テスト結果

次の表とグラフは、テストの結果の例です。この結果では、Amazon EC2のWindowsインスタンス(us-west-1)がローカルのFSx File Gateway(us-west-1)から大容量のファイルを読み込んだ場合、リモートのFSx for Windows File Server(us-east-1)と比較して、大幅な改善を示しています。FSxファイルゲートウェイがリモートのFSx for Windowsファイルサーバーからキャッシュにファイルを読み込むため、FSxファイルゲートウェイからの最初の読み取りでは、より高いレイテンシーが発生することを覚えておいてください。その後の読み取りでは、ローカルのFSxファイルゲートウェイから直接ファイルが配信されます。

* あなたのテスト結果と下記の結果を比較してください。大きな違いがありますか？なぜですか？


image::read-results-table.png[title="DiskSpd Read Results Table - sample", align="left", width=1000]
---
image::read-results-throughput-chart.png[title="DiskSpd Read Throughput Chart - sample", align="left", width=800]
---
image::read-results-latencies-chart.png[title="DiskSpd Read Latencies Chart - sample", align="left", width=800]
---

== 次のセクション

下のボタンをクリックすると、次のセクションに進みます。

image::tear-down-workshop.png[link=../09-tear-down-workshop/, align="left",width=420]



