NVMe 할당 취소 테스트(LOGO)
이 테스트는 NVMe 컨트롤러 드라이브에서 할당 취소 명령의 사양 준수를 확인합니다.
테스트 세부 정보
사양 |
|
플랫폼 |
|
지원되는 릴리스 |
|
예상 실행 시간(분) | 2 |
범주 | 개발 |
시간 제한(분) | 120 |
다시 부팅 필요 | false |
특별한 구성 필요 | false |
형식 | automatic |
추가 설명서
이 기능 영역의 테스트에는 다음 항목에서 찾을 수 있는 필수 조건, 설정, 문제 해결 정보를 포함한 추가 설명서가 있을 수 있습니다.
테스트 실행
테스트를 실행하기 전에 테스트 요구 사항: 하드 디스크 드라이브 테스트 필수 조건에 설명된 대로 테스트 설정을 완료합니다.
이 테스트를 수행하려면 NVMe 컨트롤러 드라이브가 연결되어야 합니다. 드라이브는 다음 요구 사항도 충족해야 합니다.
드라이브는 비부팅 드라이브여야 합니다. 테스트는 파괴적입니다. 테스트를 위해 올바른 파티션과 포맷으로 디스크를 준비합니다.
드라이브는 Deallocate(Trim/Unmap/Discard) 명령을 지원해야 합니다. 테스트는 DATA SET MANAGEMENT Trim 명령을 사용하여 Deallocate 명령을 전송합니다.
로거 드라이브로 사용할 수 있는 별도의 드라이브가 있는지 확인합니다. 테스트는 자동으로 로깅 드라이브를 선택합니다. 로고 테스트 이외의 드라이브에서 발생하는 작업의 양을 최소화하는 것이 중요합니다. 성능 테스트이기 때문에 외부 작업이 결과에 영향을 줄 수 있습니다.
문제 해결
HLK 테스트 실패의 일반적인 문제 해결은 Windows HLK 테스트 실패 문제 해결을 참조하세요.
WTT 추적 확인
Trim 성능 테스트 실행의 작업 로그를 봅니다.
로그 파일 TrimPerf.wtl을 엽니다.
문제를 해결할 수 있는 메시지를 확인합니다.
.wtl 로그 파일을 복사합니다. 이는 WTT 추적 섹션에 설명된 WTT 추적입니다.
실행된 명령 결과 확인
트림 성능 테스트(로고)의 작업 로그를 찾아봅니다.
LaunchCommand.result를 엽니다.
오류가 프로세스 시작과 관련된 경우 logman 또는 tracerpt가 실패한 이유를 확인합니다.
메트릭을 찾을 수 없음
테스트는 명령 완료 메트릭을 가져오기 위해 Storport ETW 추적을 사용하도록 설정했는지 여부에 따라 다릅니다. 이 추적을 사용하도록 설정하는 방법에 대한 자세한 내용은 ETW 추적 섹션을 참조하세요.
현재 로깅 중인 다른 Storport ETW 추적이 없는지 확인합니다. 한 번에 하나의 Storport ETW 추적만 활성화할 수 있습니다.
“테스트 드라이브가 트리밍/매핑 해제/할당 취소/삭제를 지원하지 않습니다” 오류 메시지가 표시되면 다음을 시도합니다.
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 | 스토리지 드라이브 번호입니다. |