IO speed testing 测的是什么:冷缓存顺序读写基准如何测出存储最大吞吐

更新时间

IO speed testing 测的是:在绕过系统缓存(冷缓存)的前提下,对指定卷和其下层文件栈进行大文件顺序读写时能达到的最大吞吐速度。它回答的是“这块盘、这个网络共享或这个虚拟盘,读/写超大文件最快能有多快”,而不是随机 IO、数据库类小 IO 或日常混合负载的表现。适用条件是:你关心的是大文件批量传输、备份、视频素材搬运这类顺序吞吐场景,并且测试机处于空闲状态。

冷缓存为什么是关键

如果文件内容已经在系统缓存里,读操作会直接从内存返回,测出来的是内存速度而不是存储速度。冷缓存顺序读写基准通过特定的缓存模式让数据真正落到设备或文件栈上,因此结果反映的是物理设备、连接方式(如 NVMe、SATA、网络)以及文件栈组合(文件系统、加密层、虚拟盘)的真实能力。CCSIO Benchmark 的定位正是如此:测量给定卷及其下层文件栈可达到的最大顺序读写速度,可用于本地磁盘上的文件系统、远程网络共享,以及 RAM 盘、加密文件容器等虚拟/伪设备。

三个参数决定测出来的速度

读写文件本质上是把内存缓冲块交给操作系统,让它填入磁盘数据或把缓冲内容写入文件。过程中有三个主要变量:

  • IO 缓冲数量:同时提交多少个缓冲块
  • IO 缓冲大小:每个块多大
  • IO 缓存模式:无缓冲、无缓冲顺序、缓冲顺序(读/写)

基准的做法是遍历这三者的组合,找出吞吐最高的那一组。默认参数为:

参数 默认取值
缓冲大小 8K、16K、32K、64K、128K、256K、512K、1M、2M、4M、8M、16M
缓冲数量 1、2、4、8、16
IO 模式 无缓冲(读/写)、无缓冲顺序(读/写)、缓冲顺序(仅读)

每个“大小 × 数量 × 模式”的组合是一次测试运行,单次基准共 300 个测试(180 个读测试 + 120 个写测试)。每个测试时长 1 秒,这是软限制,实际可能略长;所有测试还有 64MB 内存上限,总缓冲空间超过该上限的测试会被跳过,测试数降到 285 个,总运行时间约 5 分钟。因此“1 秒”足以在空闲机器上得到较准确的速度估计,但机器繁忙时结果会失真。

最优参数因设备而异,不能照搬

同一组缓冲参数在不同设备上表现差别很大。资料给出的例子中,加粗值为各设备的最大读速度:

设备 8 × 512 KB 16 × 2 MB
Samsung MZVPV512(NVMe) 2158.0 MBps 1974.1 MBps
SSD 上的 TrueCrypt 卷 317.5 MBps 338.4 MBps

NVMe 盘在较小缓冲、较少并发时达到峰值,而经过加密层的卷反而在更大缓冲下更快。这说明对 SSD 有效的组合往往不适用于 HDD 或虚拟磁盘,反之亦然。所以做 IO speed testing 时,应让基准自己遍历参数,而不是手工套用别人分享的配置。

怎么用它完成一次测试

  1. 确认前提:Windows Vista 或更新系统;测试目标卷已就绪(本地盘、网络共享或虚拟盘均可);关闭其他占用磁盘的程序,保证机器空闲。
  2. 获取工具:CCSIO Benchmark 安装包约 238 KB,版本 1.5.0(2019 年 6 月 26 日发布)。
  3. 指定测试位置:把目标指向你要评估的卷或共享路径,基准会在该位置进行大文件顺序读写。
  4. 运行并等待:默认配置下约 5 分钟完成 285 个测试,输出各参数组合下的吞吐,取其中的最高值作为该卷的最大顺序读写速度。
  5. 验证与复测:同一配置重复运行,若结果波动明显,先排查后台负载;对比不同设备时保持测试机状态一致。

常见卡点:机器不空闲导致 1 秒测试窗口内速度偏低;目标卷剩余空间不足或网络共享带宽受限,测出的是链路瓶颈而非设备上限;把顺序吞吐结果误用于判断随机 IO 性能。

结果怎么读

看到的最大读/写速度代表该卷在当前文件栈下的顺序吞吐上限,适合用来比较不同盘位、不同文件系统或加密层带来的开销,也适合验证网络共享的实际带宽。它不反映小文件、随机访问或并发多任务下的表现——那些需要另外的测试方法。