SCSI ディスクのパフォーマンスの調査に使える”storport ETW トレース” を紹介します。
Windows のパフォーマンスが悪い時、その問題の根本原因はディスクの性能が悪いため、という事がしばしばあります。
そこで、SCSI ディスクのパフォーマンス調査に使える、”storport ETW トレース” を紹介します。
storport ETW トレースの採取の仕方
1. “パフォーマンス モニター” (= perfmon.msc) を起動します。
2. “データ コレクター セット” → “イベント トレース セッション” → 右クリック → “新規作成” → “データ コレクター セット” をクリックします。
3. 任意の名前(= ここでは、MyStorportTrace)を入力し、”手動で作成する(詳細)” にチェックを入れ、”次へ” をクリックします。
4. “追加” をクリックします。
5. “Microsoft-Windows-StorPort” を選択し、”OK" をクリックします。
6. “キーワード(任意)” を選択し、”編集” をクリックします。
7. “IO_Performance” にチェックを入れ、”OK” をクリックします。
8. “フィルター” を選択し、”編集” をクリックします。
9. “フィルターを有効にする” にチェックを入れ、”バイナリ” にチェックを入れます。
”データのフィルター” には、トレースを採取する閾値を、(ms x 10,000) 単位の16進数で、リトルエンディアンの形式で入力します。例えば、入力値の例は以下のようになります。
10進数 | 16進数 | バイナリ(= この値を入力) |
1ms (10,000) | 2710 | 10 27 00 00 00 00 00 00 |
5ms (50,000) | C350 | 50 C3 00 00 00 00 00 00 |
10ms (100,000) | 186A0 | A0 86 01 00 00 00 00 00 |
15ms (150,000) | 249F0 | F0 49 02 00 00 00 00 00 |
[注意] ここのフィルターの値は、Storport トレース終了ごとに値がリセットされてしまいます。 |
RequestDuration_100ns | I/O がハードウェアでかかった時間を、100ns 単位で表します。 ms に変換するには、10,000 で割ります。 |
Command | SCSI コマンドです。10進数で表示されています。 SCSI コマンドは、こちらで確認できます。 |
SrbStatus | I/O リクエスト完了時のリターンコードです。 SrbStatus の値の意味は、WDK に含まれるsrb.h・scsi.h で確認できます。 |
ScsiStatus | HBAやターゲットのデバイスから返されたSCSI のステータスコードです。10進数で表示されています。 SCSI ステータスは、こちらで確認できます。 |
9ms 未満 | 性能に優れる |
15ms 未満 | 性能がよい |
25ms 未満 | 通常 |
25ms 以上 | 性能がよくない |
[補足1] 今回紹介した方法は、8.1/2012 R2 もしくは、KB2819476 をインストールした8/2012 で使用可能です。 Vista/7/2008/2008 R2/KB2819476 をインストールしていない8/2012 でもstorport ETW トレースは使用可能です。 しかし、若干だけ手順が異なります。詳細は、リンク先をご参照願います。 Vista/7/2008/2008 R2 Storport ETW Logging to Measure Requests Made to a Disk Unit (英語) KB2819476 をインストールしていない8/2012 Tracing with Storport in Windows 2012 and Windows 8 without KB2819476 hotfix (英語) |
[補足2] storport ETW トレースは、SCSI ディスクに対してのみ使えます。SCSI ディスクは主にサーバーで使われています。 通常のPC で使用されている、SATA ディスクに対しては使えません。 |