ScatterGather(系统)
此项测试主要以异步方式利用 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 测试失败问题。
有关故障排除信息,请参阅排查系统基础功能测试问题。
此测试返回“通过”或“失败”。 要查看测试详细信息,请查看 Windows Hardware Lab Kit (Windows HLK) Studio 中的测试日志。
详细信息
支持的测试模式:
我们预期大多数用户都会使用预定义的回归变体。
“默认”、“回归”(预定义的变体)和“压力”表示特定类型的失败,例如虚拟分配重试等。对于默认模式,如果用户不希望手动提供参数,有一个 flagsauto 标志可用于管理大部分参数。 此外,默认和压力模式还支持计时器功能。 对于回归模式,有一个预定义的计时器变体。
支持的读取/写入模式:
读取/写入模式:
RW(读取,写入)
RWG(读取,聚集写入)
RSW(分散读取,写入)
RSWG(分散读取,聚集写入)
RRW(随机读取,写入)
RRWG(随机读取,聚集写入)
RWR(读取,随机写入)
RSWR(分散读取,随机写入)
RRWR(随机读取,随机写入 - 大约 50% 分散/聚集)-> 默认
RRWR7(随机读取,随机写入 - 大约 30% 分散/聚集)
RRWR3(随机读取,随机写入 - 大约 70% 分散/聚集)
此外,该测试支持反向读取和反向写入。
I/O 限制机制:
支持受控 IO 请求的 上 & 低阈值 。 还可以使用旁路模式 ,这实质上是使用 I/O 来爆破系统。
数据模式:
计算出的简单偏移量字母值。 不过,对于计时器变体,可能存在漏洞。
数据验证模式:
支持联机(与写入同时验证)、完整检查(在所有写入完成后)和脱机验证模式。 可以关闭/打开所有这些模式。 如果关闭联机验证,则在初始阶段实质上只会发生写入,之后将执行完整检查。
联机验证和完整检查的差别在于,完整检查只会在单个线程完成所有写入后进行,而联机验证则在写入期间同时完成,在此期间需要零值或计算出的偏移量值,而完整检查只需要计算出的偏移量值。
命令用法
命令 | 说明 |
---|---|
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 |
在压力模式下使用 2 个读取器和 2 个写入器线程执行分散聚合,I/O 块大小为 100k |
ScatterMultiThread.exe -default -FILE:timer.dat -timer:19s -FILESIZE:5g -ONLINEVERIFY:FALSE |
计时器模式读写非缓冲 I/O,无 OnlineVerify 模式。 |
ScatterMultiThread.exe -default -OFFLINEVERIFY -FILE:timer.dat -FULLCHECK:FALSE -ALLOWZERO4VERIFY |
在禁用完整检查的情况下使用 AllowZero4Verify 模式对上述变体进行脱机验证。 |
命令语法
命令选项 | 说明 |
---|---|
ScatterMultiThread.exe |
下面列出了此测试的命令行选项。 |
-help 或 /? |
显示帮助。 |
-default |
在命令行中使用测试参数运行默认变体。 |
-stress |
压力模式。 发生内存分配失败等情况时重试。 |
-regression |
回归模式。 运行预定义的回归模式。 |
-testpath |
文件的完整路径。 默认值:CWD |
-file |
testpath 中的文件,或文件的完整路径。 默认值:Scatter.dat |
-filesize |
文件大小,以字节为单位。 还可以追加 k、m、g 或 t。 默认值:1m |
-threads |
读取器和写入器独占线程的数量。 默认值:2 |
-completionthreads |
完成线程的数量。 默认值:处理器数量的两倍 |
-rwmode |
读取/写入模式:
|
-iomode |
同步或异步 默认值: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 标志是互斥的,不能结合使用,否则会适得其反。 |
-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 差异低于此数字后,将恢复请求的 I/O。 默认值:100
注意
此选项与绕过模式互斥,如果打开了绕过模式,则会忽略此选项。 |
-wfw |
writer(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。 默认值:与 timer 选项相同
注意
timer 选项仅用于发出请求,但请求仍会完成(没有计时器适用于完成)。 |
-onlineverify |
在联机模式下发出写入请求后验证文件的内容。 默认值:TRUE |
-offlineverify |
通过重新运行测试,在脱机模式下验证文件的内容。 默认值:FALSE |
-allowzero4verify |
允许使用零作为完整验证的一部分(脱机或联机)。 默认值:FALSE |
-onlyzero4verify |
允许使用零作为完整验证的一部分(脱机或联机)。 默认值: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 |