NVMe 解除分配测试(徽标)

此测试检查在 NVMe 控制器驱动器上的 Deallocate 命令的合规性。

测试详细信息

   
规范
  • Device.Storage.ControllerDrive.NVMe.BasicFunction
平台
  • Windows 10,客户端版本 (x86)
  • Windows 10,客户端版本 (x64)
  • Windows Server 2016 (x64)
支持的版本
  • Windows 10
  • Windows 10 版本 1511
  • Windows 10 版本 1607
  • Windows 10 版本 1703
  • Windows 10 版本 1709
  • Windows 10 版本 1803
  • Windows 10 版本 1809
  • Windows 10 版本 1903
  • Windows 10 的下一次更新
预计运行时间(以分钟为单位) 2
类别 开发
超时(以分钟为单位) 120
需要重启 false
需要特殊配置 false
类型 automatic

 

其他文档

此功能区域中的测试可能会有其他文档,包括先决条件、设置和故障排除信息,这些内容可在以下主题中找到:

运行测试

在运行测试之前,请按照如下测试要求中所述完成测试设置:硬盘驱动器测试先决条件

此测试要求连接 NVMe 控制器驱动器。 驱动器还必须满足以下要求:

  • 驱动器应为非启动驱动器。 测试具有破坏性。 将用正确的分区和格式化准备磁盘,以进行测试。

  • 驱动器必须支持 Deallocate (Trim/Unmap/Discard) 命令。 该测试将使用 DATA SET MANAGEMENT Trim 命令发送 Deallocate 命令。

确保有单独的驱动器可以用作记录器驱动器。 测试将自动选取日志记录驱动器。 尽可能减少驱动器上发生徽标测试范围外的活动非常重要。 由于这是性能测试,因此范围外的活动可能会影响结果。

故障排除

有关 HLK 测试失败的常规故障排除,请参阅排查 Windows HLK 测试失败问题

  • 检查 WTT 跟踪

    • 查看运行修整性能测试的任务日志。

    • 打开日志文件 TrimPerf.wtl。

    • 检查可能解决问题的消息。

    • 复制 .wtl 日志文件。 这是 WTT 跟踪部分所述的 WTT 跟踪。

  • 检查启动的命令的结果

    • 浏览修整性能测试(徽标)的作业日志。

    • 打开 LaunchCommand.result。

    • 如果错误与启动某个进程相关,请确定 logman 或 tracerpt 失败的原因。

  • 未找到指标

    • 此测试依赖于启用 Storport ETW 跟踪以获取命令完成指标。 有关启用此跟踪的详细信息,请参阅“ETW 跟踪”一节。

    • 请确保当前没有其他 Storport ETW 跟踪正在日志记录。 一次只能有一个 Storport ETW 跟踪处于活动状态。

  • 如果收到错误消息“测试驱动器不支持 trim/unmap/deallocate/discard”,请尝试以下操作:

    • 检查 NVMe 驱动器,确保 VPD B2h 页的 LBPU 位设置为 1。

    • 尝试通过 DATA SET MANAGEMENT 的 Trim 命令发送 Deallocate 命令。

    • 再次运行测试。

  • 测试失败,出现“不匹配”错误

    此测试会发送 Deallocate 命令并验证已解除分配区域中的内容。 它会检查以下三种方案。 如果所有方案都失败,则会报告错误。

    • 以前的数据:Deallocate 命令未对该区域执行任何操作。

    • 所有 0x00:Deallocate 命令将所有 0x00 都写入到该区域。

    • 所有 0xFF:Deallocate 命令将所有 0xFF 都写入到该区域。

    此测试会输出一个冲突的位置。 检查冲突偏移量时,请使用日志文件中输出的偏移量加上冲突的字节偏移量。

    例如,在日志文件中,它会输出:

    检查以前的数据:字节 X 处不匹配;预期:0x3D,实际:0xFF

    剪裁验证检查在偏移量为 Y 且长度为 Z 的位置失败

    因此,冲突字节的偏移量为 X + Y(以字节为单位)。

  • 测试失败,出现“找到重置事件”消息

    Deallocate 命令不应导致磁盘重置事件。 如果发生此类错误,请检查 NVMe deallocate 命令的实现。

  • 如果想要通过运行特定测试用例来调试失败,可以尝试以下命令行选项:

    • 用编号显示所有测试用例: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 测试问题

更多信息

此测试将评估以下指标:

Deallocate 命令

  • 所有 Deallocate 命令都应在解除分配的区域上写入所有 0x00 或 0xFF 数据或以前的数据。

  • Deallocate 命令不应引发磁盘重置事件。

IO 命令(在不同区域同时进行 Deallocate 发送)

  • Deallocate 命令不应影响读/写操作的正确性。

手动重现步骤

  • 打开注册表编辑器,导航到以下路径:HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Enum-> SCSI -> Disk&Ven_[受测 NVMe 驱动器(非控制器)的名称] -> [设备实例路径] -> 设备参数 -> 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

运行测试。

注意

   有关此测试二进制文件的命令行帮助,请键入 /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 存储驱动器号