NVMe Deallocate Performance Test (LOGO)
This test evaluates the performance of the Deallocate command for Non-Volatile Memory Express (NVMe) controller drives.
Test details
Associated requirements |
Device.Storage.ControllerDrive.NVMe.BasicFunction |
Platforms |
Windows 8.1 x64 Windows 8.1 x86 Windows Server 2012 R2 |
Expected run time |
~2 minutes |
Categories |
Certification Reliability |
Type |
Automated |
Running the test
Before you run the test, complete the test setup as described in the test requirements: Hard Disk Drive Testing Prerequisites.
The test requires that an NVMe controller drive is connected. The drive must also satisfy the following requirements:
The drive should be a non-boot drive. The test is destructive. It will prepare the disk with correct partition and formatting for the testing.
The drive must support Deallocate (Trim/Unmap/Discard) command. The test will send down Deallocate commands using DATA SET MANAGEMENT Trim command.
Ensure that there is a separate drive available to be used as a logger drive. The test will automatically pick the logging drive. It is important to minimize the amount of activity occurring on the drive outside of the logo test. Since this is a performance test, outside activity may affect the results.
Troubleshooting
For more troubleshooting information, see Troubleshooting Device.Storage Testing.
Check WTT Trace
View Task Log of Run Trim Performance Test.
Open the log file TrimPerf.wtl.
Check for messages that may solve the issue.
Copy the .wtl log file. This is the WTT trace described in the WTT Trace section.
Check launched command results
Browse Job Logs of Trim Performance Test (LOGO).
Open the LaunchCommand.result.
If the error is related to launching a process, determine why logman or tracerpt failed.
No metrics found
The test depends on Storport ETW tracing being enabled in order to get the command completion metrics. See the ETW Trace section for more information about enabling this tracing.
Ensure no other Storport ETW traces are currently logging. Only one Storport ETW trace can be active at a time.
If you get the error message “The test drive does not support trim”, try the following:
Check the NVMe drive to make sure the VPD B2h page’s LBPU bit is set to one.
Try to send a Deallocate command via DATA SET MANAGEMENT’s Trim command.
Run the test again.
If the test failed because the read and write maximum latency exceeded 500 milliseconds, try the following:
Check the IO latency without Deallocate. Try to lower the latency below 500 milliseconds.
Check the IO latency with presence of Deallocate. Try to lower the latency below 500 milliseconds.
If you want to debug the failure by running particular test cases, you may try the following command line options:
Display all the test cases with numbers: TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /DeviceType NVMe /Scenario Performance /PrintTestCaseName
Run particular test case by test case number: TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /DeviceType NVMe /Scenario Performance /Precondition F /TestCase [TestCaseNumber]
If you want to debug the failure by running particular pure Trim scenario, you may try the following command line options:
The binary has unit test options: TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /DeviceType NVMe /Scenario Performance /Precondition F /UnitTest T /RangeCount [NumberOfRangesPerDeallocateCommand] /SizeCount [SizeOfEachRange] /SizeUnit [Slab | Sector] /TrimCount [NumberOfTrims]
/RangeCount: The number of ranges per deallocate command
/SizeCount: The size of each range in /SizeUnit
/SizeUnit: The granularity of /SizeCount, options are Slab (optimal unmap granularity) and Sector (LBA).
/TrimCount: The number of deallocate commands sent in the test case.
If you want to debug the failure faster, try disable the preconditioning (fill up the drive to 90% full, takes long time) by adding /Precondition F parameter as follows:
- TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LoggerDriveLetter]: /DeviceType NVMe /Scenario Performance /DiskSize 0 /Cooldown 2 /Precondition F
More information
The test does the following:
Deallocate command
- All deallocate commands should be completed in less than 500 milliseconds.
IO commands (withy deallocate sending at same time at different regions)
All read and write commands complete in less than 500 milliseconds.
98.5% of I/O commands complete in less than 100 milliseconds.
Parameters
Parameter | Description |
---|---|
StorageDriveNumber |
The driver number of the NVMe controller drive in which to run the test. Example: 2 |
LogDriveLetter |
The drive letter of the disk to store the logs. Example: E |
DeviceType |
The type of device under test. Default value: NVMe |
Scenario |
The scenario for the test. Default value: Performance |
DiskSize |
The part of the disk to run the test on. If this parameter is 0, the test will run on the entire disk size. Default value: 0 |
Cooldown |
The cool down time in seconds between test cases. Default value: 2 |
Command syntax
Command |
---|
TrimPerf.exe /DriveNumber [StorageDriveNumber] /LogDriveLetter [LogDriveLetter]: /DeviceType [DeviceType] /Scenario [Scenario] /DiskSize [DiskSize] /Cooldown [Cooldown] |
Runs the test. |
Note
For command-line help for this test binary, type /h.
File list
File | Location |
---|---|
TrimPerf.exe |
<[testbinroot]>\nttest\driverstest\storage\wdk\ |
Etwprocessor.dll |
<[taefbinroot]>\ |
Wex.common.dll |
<[taefbinroot]>\ |
Wex.communication.dll |
<[taefbinroot]>\ |