다음을 통해 공유


NVMe 할당 취소 테스트(LOGO)

이 테스트는 NVMe 컨트롤러 드라이브에서 할당 취소 명령의 사양 준수를 확인합니다.

테스트 세부 정보

   
사양
  • 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 추적 확인

    • 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 스토리지 드라이브 번호입니다.