ScatterGather (SYSTEM)
此測試會使用 ReadFile/WriteFile/ReadFileScatter/WriteFileGather API,主要以異步方式驗證文件系統 I/O 可靠性案例。 HLK 測試會練習預先定義的自動化回歸變化。
測試詳細資料
規格 |
|
平台 |
|
支援的版本 |
|
預期的執行時間(以分鐘為單位) | 240 |
類別 | 案例 |
逾時 (以分鐘為單位) | 14400 |
需要重新啟動 | false |
需要特殊設定 | false |
類型 | automatic |
其他檔
此功能區域中的測試可能會有其他檔,包括必要條件、設定和疑難解答資訊,可在下列主題中找到:
執行測試
執行測試之前,請完成測試設定,如測試需求中所述: WDTF 系統基本概念測試必要條件。
同時以多線程方式執行 I/O(寫入和讀取),利用 I/O 完成埠來完成 I/O。 它一開始會先設定檔案的 EOF,並排程 I/O 線程。 正在寫入檔案時,它會在預期零或位移計算值的地方執行在線驗證。 寫入整個檔案之後,它會執行檔案的完整驗證,如果遇到零或未預期的值,測試將會失敗。
疑難排解
如需 HLK 測試失敗的一般疑難解答,請參閱 針對 Windows HLK 測試失敗進行疑難解答。
如需疑難解答資訊,請參閱 針對系統基本概念測試進行疑難解答。
此測試會傳回 Pass 或 Fail。 若要檢閱測試詳細數據,請檢閱 Windows 硬體實驗室套件 (Windows HLK) Studio 的測試記錄檔。
詳細資訊
支援的測試模式:
我們預期大部分的用戶都會使用預先定義的回歸變化。
默認、 回歸 (預先定義的變化)和 壓力 表示某些類型的失敗,例如虛擬 Alloc 重試等。針對預設模式,如果使用者不想手動提供參數,則會管理大部分參數的 flagsauto 旗標。 此外 ,預設模式和壓力模式也支援定時器功能 。 對於回歸模式,有預先定義的定時器變化。
支援的讀取/寫入模式:
讀取/寫入模式:
RW(讀取、寫入)
RWG(讀取、寫入收集)
RSW(讀取散佈圖、寫入)
RSWG(讀取散佈圖、寫入收集)
RRW(隨機讀取、寫入)
RRWG(隨機讀取、寫入收集)
RWR(讀取、隨機寫入)
RSWR(讀取散佈圖、隨機寫入)
RRWR(隨機讀取、隨機寫入 - 大約 50% 散佈圖/收集) -> 預設值
RRWR7(隨機讀取、隨機寫入 - 大約 30% 散佈/收集)
RRWR3(隨機讀取、隨機寫入 - 大約 70% 散佈圖/收集
此外,測試也支援反向讀取和反向寫入。
I/O 節流機制:
支援 受控制 IO 要求的上限和較低閾值 。 略過模式 也是可能的,基本上會以 I/O 爆出系統。
資料模式:
簡單位移計算的字母值。 不過,對於定時器變化,可能會有漏洞。
資料驗證模式:
支援在線 (同時驗證和寫入)、fullcheck(所有寫入完成之後),以及離線驗證模式。 所有這些模式都可以關閉/開啟。 如果關閉在線驗證,基本上只會在初始階段期間執行完整檢查。
在線和完整檢查之間的差異在於,只有在單一線程完成所有寫入之後,才會完成完整檢查,而在線驗證會在寫入期間和期間同時完成,而其預期為零或位移計算值,這與只有位移計算值以外的完整檢查不同。
命令使用方式
Command | 描述 |
---|---|
ScatterMultiThread.exe -default -rwmode:rw -iomode:sync |
以預設檔案大小在同步模式中執行讀取寫入IO。 |
ScatterMultiThread.exe -default -rwmode:RSWG -RR -RER:2 -TESTPATH:d:\Scatter -FILESIZE:500m |
在以隨機位移和反向讀取指定的testpath中執行500m檔案的完整散佈收集。 |
ScatterMultiThread.exe -default -rwmode:RRWR -FILESIZE:2g -IODIFFUPPERTHRESHOLD:500 -IODIFFLOWERTHRESHOLD:100 |
執行 50% 散佈圖收集 IO 2GB 檔案,其 I/O 上限和較低的閾值 |
ScatterMultiThread.exe -regression -regression:6 |
執行預先定義的回歸變化 6。 |
ScatterMultiThread.exe -stress -RWMODE:rrwr -THREADS:2 -BS:100k |
使用 2 個讀取器和 2 個寫入器線程,以 100k/ 的 I/O 區塊大小執行散佈圖收集 |
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 |
已停用 fullcheck 和 AllowZero4Verify 模式的上述變化離線驗證。 |
命令語法
命令選項 | 描述 |
---|---|
ScatterMultiThread.exe |
測試的命令行選項如下所列。 |
-help or /? |
顯示說明。 |
-預設 |
使用命令行中的測試參數執行預設變化。 |
-應力 |
壓力模式。 重試記憶體配置失敗等。 |
-回歸 |
回歸模式。 執行預先定義的回歸模式。 |
-testpath |
檔案的完整路徑。 預設值:CWD |
-檔 |
testpath 中的檔案或檔案的完整路徑。 默認值:Scatter.dat |
-filesize |
以位元組為單位的檔案大小。 您也可以附加 k、m、g 或 t。 默認值:1m |
-線程 |
獨佔讀取器和寫入器線程的數目。 預設值:2 |
-completionthreads |
完成線程的數目。 預設值:處理器數目的兩倍 |
-rwmode |
讀取/寫入模式:
|
-iomode |
sync 或 async 默認值:async |
-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 旗標沒有任何作用。 FFSS 和 FFRA 旗標是互斥的,無法合併為自敗。 |
-Bs |
區塊大小以位元組為單位。 您可以附加 k、m、g、t。 預設值:64k |
-旁路 |
略過 I/O 閾值等候。 這可以是TRUE或 FALSE。 默認值:FALSE |
-nsegments |
散佈圖/收集的區段陣列大小。 預設值:16
注意
這個選項在特定情況下會自動更正散佈/收集/ |
-totalsleep |
失敗虛擬配置或 I/O 閾值案例的總睡眠時間。 默認值:30 分鐘 |
-sleepint |
失敗虛擬配置案例的迴圈睡眠間隔 預設值:2 分鐘 |
-iodifferupperthreshold |
發出 I/O 要求上限。 預設值:1000 |
-iodifflowerthreshold |
在 I/O 差異低於此數位之後,繼續要求繼續 I/O 的閾值較低。 默認值:100
注意
此選項與略過模式互斥,如果略過模式開啟,則會忽略此選項。 |
-wfw |
寫入器(WFW) 旗標會等候 WriterThreads 在發生任何讀取之前完成。 此選項可以是 true 或 false。 默認值:FALSE |
-Rr |
隨機位移讀取 (RR) 選項會讓 ReaderThreads 以隨機位移開始。 此值可以是 true 或 false。 默認值:TRUE |
-烏爾曼 |
隨機位移寫入 (RW) 選項會讓 WriterThreads 從隨機位移開始。 此值可以是 false 的其中一個 true。 默認值:FALSE |
-rer |
從起始位移反向讀取。 此值可以是 0、1 或 2。 預設值:2 |
-rew |
從起始位移反向寫入。 此值可以是 0、1 或 2。 預設值:0
注意
針對 RER 和 REW 旗標,0 表示沒有逆轉,1 表示直接逆轉,2 表示隨機逆轉(不一定套用)。 針對 RER 和 REW 旗標,完整檔案 I/O 可能無法完成,而且報告的統計數據和結果可能不正確。 |
-計時 器 |
定時器模式(以秒為單位)。 您可以附加 s、m、h。 預設值:0 這會執行 I/O,直到定時器過期為止。 |
-timerloop |
定時器循環間隔 (以秒為單位)。 您可以附加 s、m、h。 預設值:與定時器選項相同
注意
定時器選項僅適用於發出要求,完成仍然會通過(沒有定時器適用於完成)。 |
-onlineverify |
在在線模式中發出寫入要求之後,驗證檔案的內容。 默認值:TRUE |
-offlineverify |
重新執行測試,以離線模式驗證檔案的內容。 默認值:FALSE |
-allowzero4verify |
允許零成為完整驗證 (OFFLINE 或 ONLINE) 的一部分。 默認值:FALSE |
-onlyzero4verify |
允許零成為完整驗證(OFFLINE 或 ONLINE) 的一部分。 默認值:FALSE |
-sharedfh |
允許用於所有 I/O 的相同檔句柄。 默認值:FALSE |
-回歸 |
回歸變化。 此值可以是 - 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 |
注意
如需此測試的命令行說明,請輸入 /?。
檔案清單
檔案 | Location |
---|---|
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 |