다음을 통해 공유


ScatterGather(시스템)

이 테스트는 주로 비동기적으로 ReadFile/WriteFile/ReadFileScatter/WriteFileGather API를 사용하여 파일 시스템 I/O 안정성 시나리오의 유효성을 검사합니다. HLK 테스트는 미리 정의된 자동 회귀 변형을 실행합니다.

테스트 세부 정보

   
사양
  • System.Fundamentals.StorageAndBoot.BootPerformance
플랫폼
  • Windows 10, 클라이언트 버전(x86)
  • Windows 10, 클라이언트 버전(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에 대한 다음 업데이트
예상 실행 시간(분) 240
범주 시나리오
시간 제한(분) 14400
다시 부팅 필요 false
특별한 구성 필요 false
형식 automatic

 

추가 설명서

이 기능 영역의 테스트에는 다음 항목에서 찾을 수 있는 필수 조건, 설정, 문제 해결 정보를 포함한 추가 설명서가 있을 수 있습니다.

테스트 실행

테스트를 실행하기 전에 테스트 요구 사항 WDTF 시스템 기본 테스트 필수 조건에 설명된 대로 테스트 설정을 완료합니다.

I/O 완료 포트를 활용하여 다중 스레드 방식으로 I/O(쓰기 및 읽기 모두)를 동시에 수행하여 I/O를 완료합니다. 처음에 파일의 EOF를 설정하고 I/O 스레드를 예약하여 시작합니다. 파일이 기록되는 동안 0 또는 오프셋 컴퓨팅 값이 예상되는 온라인 확인을 수행합니다. 전체 파일이 작성되면 파일의 전체 확인을 수행하고 0 또는 예기치 않은 값이 발생하면 테스트에 실패합니다.

문제 해결

HLK 테스트 실패의 일반적인 문제 해결은 Windows HLK 테스트 실패 문제 해결을 참조하세요.

문제 해결 정보는 시스템 기본 테스트 문제 해결을 참조하세요.

이 테스트는 Pass 또는 Fail을 반환합니다. 테스트 세부 정보를 검토하려면 Windows HLK(Windows Hardware Lab Kit) Studio에서 테스트 로그를 검토합니다.

추가 정보

지원되는 테스트 모드:

대부분의 사용자는 사전 정의된 회귀 변형을 사용할 것으로 예상합니다.

기본, 회귀(미리 정의된 변형) 및 스트레스는 가상 할당 다시 시도 등과 같은 특정 유형의 실패를 나타냅니다. 기본 모드의 경우 flagsauto 플래그가 있습니다. 사용자가 수동으로 매개 변수를 제공하지 않으려는 경우 대부분의 매개 변수를 관리합니다. 또한 기본 및 스트레스 모드에서 타이머 기능이 지원됩니다. 회귀 모드의 경우 미리 정의된 타이머 변형이 있습니다.

지원되는 읽기/쓰기 모드:

읽기/쓰기 모드:

  • RW(읽기, 쓰기)

  • RWG(읽기, 쓰기 수집)

  • RSW(읽기 분산, 쓰기)

  • RSWG(읽기 분산, 쓰기 수집)

  • RRW(임의 읽기, 쓰기)

  • RRWG(임의 읽기, 쓰기 수집)

  • RWR(읽기, 임의 쓰기)

  • RSWR(읽기 분산, 임의 쓰기)

  • RRWR(임의 읽기, 임의 쓰기 - 약 50% 분산/수집) -> 기본값

  • RRWR7(임의 읽기, 임의 쓰기 - 약 30% 분산/수집)

  • RRWR3(임의 읽기, 임의 쓰기 - 약 70% 분산/수집

또한 테스트는 역 읽기 및 역 쓰기를 지원합니다.

I/O 제한 메커니즘:

제어된 IO 요청에 대해 상한 및 하한 임계값 을 지원합니다. 바이패스 모드는 기본적으로 I/O로 시스템을 폭발시키는 것도 가능합니다.

데이터 패턴:

단순 오프셋 계산 알파벳 값입니다. 타이머 변형의 경우 구멍이 있을 수 있습니다.

데이터 유효성 검사 모드:

온라인(쓰기와 함께 동시 유효성 검사), 전체 검사(모든 쓰기가 완료된 후) 및 오프라인 유효성 검사 모드를 모두 지원합니다. 이 모든 모드를 켜거나 끌 수 있습니다. 온라인 확인이 꺼져 있으면 기본적으로 전체 검사가 수행된 후 초기 단계에서 쓰기만 발생합니다.

온라인 검사와 전체 검사의 차이점은 전체 검사는 모든 쓰기가 단일 스레드로 완료된 후에만 수행되고, 온라인 확인은 쓰기 중에 동시에 수행되며, 오프셋 계산 값만 제외하는 전체 검사와 달리 0 또는 오프셋 계산 값이 예상된다는 점입니다.

명령 사용법

명령 설명

ScatterMultiThread.exe -default -rwmode:rw -iomode:sync

기본 파일 크기로 동기화 모드에서 읽기 쓰기 IO를 수행합니다.

ScatterMultiThread.exe -default -rwmode:RSWG -RR -RER:2 -TESTPATH:d:\Scatter -FILESIZE:500m

임의 오프셋 및 역 읽기로 지정된 테스트 경로에서 전체 분산 수집, 500m 파일을 수행합니다.

ScatterMultiThread.exe -default -rwmode:RRWR -FILESIZE:2g -IODIFFUPPERTHRESHOLD:500 -IODIFFLOWERTHRESHOLD:100

I/O 상한 및 하한 임계값으로 50% 분산 수집 IO 2GB 파일을 수행합니다.

ScatterMultiThread.exe -regression -regression:6

미리 정의된 회귀 변형 6을 수행합니다.

ScatterMultiThread.exe -stress -RWMODE:rrwr -THREADS:2 -BS:100k

I/O 블록 크기가 100k/인 2개의 판독기 및 2개의 기록기 스레드를 사용하여 스트레스 모드에서 분산 수집을 수행합니다.

ScatterMultiThread.exe -default -FILE:timer.dat -timer:19s -FILESIZE:5g -ONLINEVERIFY:FALSE

타이머 모드 ReadWrite Unbuffered I/O 및 OnlineVerify 모드가 아닙니다.

ScatterMultiThread.exe -default -OFFLINEVERIFY -FILE:timer.dat -FULLCHECK:FALSE -ALLOWZERO4VERIFY

전체 검사가 사용하지 않도록 설정되고 AllowZero4Verify 모드를 사용하여 위의 변형에 대한 오프라인 확인을 수행합니다.

 

명령 구문

명령 옵션 설명

ScatterMultiThread.exe

테스트를 위한 명령줄 옵션은 다음과 같습니다.

-help 또는 /?

도움말을 표시합니다.

-default

명령줄에서 테스트 매개 변수를 사용하여 기본 변형을 실행합니다.

-stress

스트레스 모드입니다. 메모리 할당 실패 등을 다시 시도합니다.

-regression

회귀 모드입니다. 미리 정의된 회귀 모델을 실행합니다.

-testpath

파일의 전체 경로입니다.

기본값: CWD

-file

테스트 경로에 있는 파일 또는 파일의 전체 경로입니다.

기본값: Scatter.dat

-filesize

파일 크기(바이트)입니다. k, m, g 또는 t를 추가할 수도 있습니다.

기본값: 1m

-threads

독점적인 판독기 및 기록기 스레드 수입니다.

기본값: 2

-completionthreads

완료 스레드 수입니다.

기본값: 프로세서 수의 2배

-rwmode

읽기/쓰기 모드:

  • RW(읽기, 쓰기)

  • RWG(읽기, 쓰기 수집)

  • RSW(읽기 분산, 쓰기)

  • RSWG(읽기 분산, 쓰기 수집)

  • RRW(임의 읽기, 쓰기)

  • RRWG(임의 읽기, 쓰기 수집)

  • RWR(읽기, 임의 쓰기)

  • RSWR(읽기 분산, 임의 쓰기)

  • RRWR(임의 읽기, 임의 쓰기 - 약 50% 분산/수집) -> 기본값

  • RRWR7(임의 읽기, 임의 쓰기 - 약 30% 분산/수집)

  • RRWR3(임의 읽기, 임의 쓰기 - 약 70% 분산/수집

-iomode

동기화 또는 비동기

기본값: 비동기

-flagsauto

True 또는 False

기본값: True

참고  

특정 파일 플래그는 상황에 따라 자동으로 관리됩니다.

 

-ffnb

True 또는 False

기본값: False

참고  

FILE_FLAG_NO_BUFFERING은 분산/수집과 같은 특정 상황에서 자동으로 켜집니다.

 

-ffss

True 또는 False

기본값: False

참고  

FILE_FLAG_SEQUENTIAL_SCAN은 직렬화된 I/O와 같은 특정 상황에서 자동으로 켜집니다.

 

-ffra

True 또는 False

기본값: False

참고  

FILE_FLAG_RANDOM_ACCESS는 임의 I/O와 같은 특정 상황에서 자동으로 켜집니다.

 

-ffwt

True 또는 False

기본값: False

참고  

FILE_FLAG_WRITE_THROUGH는 수동으로 지정하지 않는 한 자동으로 켜지지 않습니다.

파일 플래그 및 특성을 독립적으로 관리하려면 FLAGSAUTO 플래그를 사용하지 않도록 설정합니다.

FLAGSAUTO 동작은 공유 파일 핸들 또는 역 I/O 등과 같은 다른 매개 변수에 따라 변경됩니다.

파일 시스템이 캐시된 I/O를 지원하지 않고 FFNB가 파일 시스템에서 지원되지 않거나 지정되지 않은 경우 FFSS 및 FFRA 플래그는 효과가 없습니다.

FFSS 및 FFRA 플래그는 상호 배타적이며 자체 패배적이므로 결합할 수 없습니다.

 

-bs

블록 크기(바이트)입니다. k, m, g, t를 추가할 수 있습니다.

기본값: 64k

-bypass

I/O 임계값 대기를 바이패스합니다. TRUE 또는 FALSE일 수 있습니다.

기본값: False

-nsegments

분산/수집의 세그먼트 배열 크기입니다.

기본값: 16

참고  

이 옵션은 분산/수집/에 대한 특정 상황에서 자동으로 수정됩니다.

 

-totalsleep

실패한 가상 할당 또는 I/O 임계값 시나리오의 총 절전 시간입니다.

기본값 = 30분

-sleepint

실패한 가상 할당 시나리오에 대한 루프 절전 모드 간격입니다.

기본값 = 2분

-iodifferupperthreshold

I/O 요청을 발행하기 위한 상한 임계값입니다.

기본값: 1000

-iodifflowerthreshold

I/O diff가 이 숫자 아래로 떨어진 후 요청된 I/O를 다시 시작하기 위한 하한 임계값입니다.

기본값: 100

참고  

이 옵션은 바이패스 모드와 함께 사용할 수 없으며 바이패스 모드가 켜져 있으면 무시됩니다.

 

-wfw

기록기(WFW) 플래그는 읽기가 발생하기 전에 WriterThreads가 완료될 때까지 기다립니다. 이 옵션은 true 또는 false일 수 있습니다.

기본값: False

-rr

임의 오프셋 읽기(RR) 옵션을 사용하면 ReaderThreads가 임의 오프셋에서 시작됩니다. 이 값은 true 또는 false일 수 있습니다.

기본값: True

-rw

임의 오프셋 쓰기(RW) 옵션을 사용하면 WriterThreads가 임의 오프셋에서 시작됩니다. 이 값은 true 또는 false일 수 있습니다.

기본값: False

-rer

시작 오프셋에서 역방향 읽기입니다. 이 값은 0, 1 또는 2일 수 있습니다.

기본값: 2

-rew

시작 오프셋에서 역 쓰기입니다. 이 값은 0, 1 또는 2일 수 있습니다.

기본값: 0

참고  

RER 및 REW 플래그의 경우 0은 반전 없음, 1은 직선 반전, 2는 임의 반전(항상 적용되지 않음)을 의미합니다.

RER 및 REW 플래그의 경우 전체 파일 I/O가 완료되지 않을 수 있으며 보고된 통계 및 결과가 정확하지 않을 수 있습니다.

 

-timer

타이머 모드(초)입니다. s, m, h를 추가할 수 있습니다.

기본값: 0

타이머가 만료될 때까지 I/O를 수행합니다.

-timerloop

타이머 루프 간격(초)입니다. s, m, h를 추가할 수 있습니다.

기본값: 타이머 옵션과 동일

참고  

타이머 옵션은 요청을 발행하는 데만 사용되며 완료는 계속 진행됩니다(완료에는 타이머가 적용되지 않음).

 

-onlineverify

온라인 모드에서 쓰기 요청을 발행한 후 파일의 내용을 확인합니다.

기본값: True

-offlineverify

테스트를 다시 실행하여 오프라인 모드에서 파일의 내용을 확인합니다.

기본값: False

-allowzero4verify

0이 전체 확인의 일부가 되도록 허용합니다(오프라인 또는 온라인).

기본값: False

-onlyzero4verify

0이 전체 확인의 일부가 되도록 허용합니다(오프라인 또는 온라인).

기본값: False

-sharedfh

모든 I/O에 대해 동일한 파일 핸들을 사용할 수 있습니다.

기본값: False

-regression

회귀 변형입니다. 이 값은 1 ~ 10 또는 1001일 수 있습니다(모든 변형 참조).

기본값: 0(회귀 없음)

-displayprogress

I/O 진행률(초)입니다. s, m, h를 추가할 수 있습니다.

기본값: 2m

-fullcheck

온라인 또는 오프라인 확인 후 데이터의 전체 확인을 수행합니다.

기본값: true

-dbgcheck

실패 시 커널 디버거를 중단합니다. 이 값은 true 또는 false일 수 있습니다.

기본값: true

-toleratesurpriseremove

SurpriseRemove 실패 시 커널 디버거를 중단하지 않습니다. 이 값은 true 또는 false일 수 있습니다.

기본값: false

-toleraterepair

복구 실패 시 커널 디버거를 중단하지 않습니다. 이 값은 true 또는 false일 수 있습니다.

기본값: false

-toleratefailio

FailIO 실패 시 커널 디버거를 중단하지 않습니다. 이 값은 true 또는 false일 수 있습니다.

기본값: false

-exitonerror

실패 시 종료합니다. 이 값은 true 또는 false일 수 있습니다.

기본값: False

참고 항목

   이 테스트에 대한 명령줄 도움말을 보려면 /?를 입력합니다.

 

파일 목록

파일 위치

ScatterMultiThread.exe

<[testbinroot]>\NTTest\BASETEST\core_file_services\NTFS\ScatterGather\

ntlog.dll

<[osbinroot]>\NTTest\CommonTest\NtLog\

ntlogger.ini

<[osbinroot]>\NTTest\CommonTest\NtLog\

stresslog.dll

<[osbinroot]>\basetest\core_file_services\shared_libs\

fbslog.dll

<[osbinroot]>\basetest\core_file_services\shared_libs\fbslog\

 

매개 변수

매개 변수 이름 매개 변수 설명
LLU_NetAccessOnly
TEST_PATH