NVMe 割り当て解除テスト (ロゴ)
このテストでは、NVMe コントローラー ドライブ上の割り当て解除コマンドの仕様準拠を確認します。
テストの詳細
仕様 |
|
プラットフォーム |
|
サポートされているリリース |
|
予想される実行時間 (分) | 2 |
カテゴリ | 開発 |
タイムアウト (分) | 120 |
再起動が必要です | false |
特別な構成が必要です | false |
Type | automatic |
その他のドキュメント
この機能領域のテストには、前提条件、セットアップ、トラブルシューティング情報など、次のトピックに記載されている追加のドキュメントが含まれている場合があります。
テストの実行
テストを実行する前に、「ハード ディスク ドライブのテストの前提条件」で説明されているテスト要件に従って、テストのセットアップを完了します。
このテストでは、NVMe コントローラー ドライブが接続されている必要があります。 ドライブは、次の要件も満たす必要があります。
ドライブはブート ドライブ以外である必要があります。 テストは破壊的です。 テスト用に適切なパーティションとフォーマットを使用してディスクが準備されます。
ドライブは割り当て解除 (トリミング/マップ解除/破棄) コマンドをサポートする必要があります。 このテストでは、DATA SET MANAGEMENT のトリミング コマンドを使用して、割り当て解除コマンドを送信します。
ロガー ドライブとして使用できるドライブが別にあることを確認します。 テストでは、ログ記録ドライブが自動的に選択されます。 ロゴ テスト以外でドライブ上で発生するアクティビティの量を最小限に抑えることが重要です。 これはパフォーマンス テストなので、外部アクティビティが結果に影響を与える可能性があります。
トラブルシューティング
HLK テスト エラーの一般的なトラブルシューティングについては、「Windows HLK テストのエラーのトラブルシューティング」を参照してください。
WTT トレースを確認する
トリム パフォーマンス テストの実行のタスク ログを表示します。
ログ ファイル TrimPerf.wtl を開きます。
問題を解決する可能性のあるメッセージがないか確認します。
.wtl ログ ファイルをコピーします。 これは、「WTT トレース」セクションで説明されている WTT トレースです。
起動したコマンドの結果を確認します
トリム パフォーマンス テストの実行 (LOGO) のジョブ ログを参照します。
LaunchCommand.result を開きます。
エラーがプロセスの起動に関連している場合は、logman または tracerpt が失敗した理由を確認します。
メトリックが見つかりませんでした
テストは、コマンド補完メトリックを取得するために有効になっている Storport ETW トレースに依存します。 このトレースの有効化の詳細については、ETW トレースのセクションを参照してください。
他の Storport ETW トレースが現在ログに記録されていないことを確認します。 一度にアクティブにできる Storport ETW トレースは 1 つだけです。
"The test drive does not support trim/unmap/deallocate/discard" (テスト ドライブでトリム/マップ解除/割り当て解除/破棄がサポートされていません) というエラー メッセージが表示された場合は、次の手順を試します。
NVMe ドライブを調べ、VPD B2h ページの LBPU ビットが 1 に設定されていることを確認します。
DATA SET MANAGEMENT のトリミング コマンドを使用して、割り当て解除コマンドを送信してみます。
もう一度テストを実行します。
"不一致" エラーによりテストが失敗しました
テストによって割り当て解除コマンドが送信され、割り当てが解除された領域のコンテンツが検証されます。 次の3つのシナリオを確認します。 すべて失敗した場合は、エラーが報告されます。
以前のデータ: 割り当て解除コマンドがそのリージョンで何も実行しませんでした。
すべての 0x00: 割り当て解除コマンドは、すべての0x00 を領域に書き込みました。
すべての 0xFF: 割り当て解除コマンドは、すべての0xFF を領域に書き込みました。
テストは、1つの違反の場所を出力します。 違反オフセットを確認する場合は、ログ ファイルに出力されたオフセットと違反のバイト オフセットを使用します。
たとえば、次のようなログ ファイルが出力されます。
以前のデータを確認しています: バイト X で一致しません。期待値: 0x3D、実際: 0xFF
オフセット Y、長さ Z で、トリム検証チェックに失敗しました
その後、違反バイトのオフセットは X + Y (バイト単位) になります。
"イベントのリセット検出" によりテストが失敗しました
割り当て解除コマンドでは、ディスク リセット イベントを発生させないようにする必要があります。 このようなエラーが発生した場合は、NVMe の割り当て解除コマンドの実装を確認してください。
特定のテスト ケースを実行してエラーをデバッグする場合は、次のコマンド ライン オプションを試すことができます。
すべてのテスト ケースを数値で表示する: TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /DeviceType NVMe /Scenario Compliance /PrintTestCaseName
特定のテスト ケースをテスト ケース番号で実行する: TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /Scenario Compliance /Precondition F /TestCase [TestCaseNumber]
エラーを迅速にデバッグする場合は、次のように /Precondition F パラメーターを追加して、事前設定 (ドライブを 90% まで埋めるため時間がかかります) を無効にします。
- TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /DeviceType NVMe /Scenario Complaince /DiskSize 0 /Cooldown 2 /Precondition F
トラブルシューティング情報の詳細については、「Device.Storage テストのトラブルシューティング」を参照してください。
詳細
テストでは、次のメトリックが評価されます。
割り当て解除コマンド
すべての割り当て解除コマンドでは、割り当てが解除されたリージョンのすべての 0x00、すべての 0xFF、または以前のデータを書き込む必要があります。
割り当て解除コマンドでは、ディスク リセット イベントを発生させないようにする必要があります。
IO コマンド (割り当てを解除して異なるリージョンで同時に送信する)
- 割り当て解除コマンドは、読み取り/書き込み操作の正確性に影響を与えないようにする必要があります。
手動による再現手順
レジストリ エディターを開き、次のパスに移動します: HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Enum-> SCSI -> Disk&Ven_[name of NVMe drive (not controller) under test] -> [device instance path] -> Device Parameters -> Storport
[Storport] を右クリックし、[新規] をクリックして、[DWORD (32 ビット) 値] をクリックします。
キーに EnableLogoETW という名前を付け、値を 1 に設定します。
テスト対象のドライブをシステムに再接続するか、コンピューターを再起動してレジストリキーを有効にします。
TrimPerf.exe、EtwProcessor.dll、Wex.Common.dll、および Wex.Communication.dll ファイルをローカル コンピューターにコピーします。
コマンド ラインを実行します。
コマンド構文
コマンド | 説明 |
---|---|
TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LogDriveLetter]: /DeviceType StorConsumer /Scenario Performance /DiskSize 0 /Cooldown 2 |
|
テストを実行します。 |
Note
このテスト バイナリのコマンド ライン ヘルプを表示するには、「/h」と入力します。
ファイル一覧
ファイル | 場所 |
---|---|
TrimPerf.exe |
<[testbinroot]>\nttest\driverstest\storage\wdk\ |
Etwprocessor.dll |
<[taefbinroot]>\ |
Wex.common.dll |
<[taefbinroot]>\ |
Wex.communication.dll |
<[taefbinroot]>\ |
パラメーター
パラメーター名 | パラメーターの説明 |
---|---|
WDKDeviceID | テストするデバイスのインスタンス パス。 |
LLU_NetAccessOnly | テスト ファイル共有にアクセスするためのユーザー アカウントです。 |
LLU_LclAdminUsr | テストを実行するためのユーザー アカウント。 |
Destructive | (0、1) 0 = パッシブ、1 = 破壊的 |
StorageDriveNumber | ストレージ ドライブ番号 |