存储基准测试测的是什么:冷缓存顺序读写如何评估存储性能

更新时间

存储基准测试测的是“给定卷及其下方文件栈,在特定访问模式下能达到的最高吞吐量”,而不是日常使用中的平均响应速度。CCSIO Benchmark 这类冷缓存顺序 I/O 基准,专门测大文件顺序读写的上限:它遍历不同的 I/O 缓冲区数量、缓冲区大小和缓存模式组合,找出吞吐量最高的那一组参数。适用条件是:你想比较本地磁盘、网络共享、RAM 盘或加密容器等不同存储栈的批量读写能力,并且接受每次基准约 5 分钟、以吞吐量为主要指标。

冷缓存顺序读写与普通读写测试的区别

普通文件读写测试容易受操作系统缓存影响:刚写过的数据可能还在内存里,再读时速度虚高,测到的是内存而不是存储。冷缓存顺序基准的目标是绕开这种干扰,测量数据真正从存储介质进出时的速度。

CCSIO 的页面说明,它测量的是“对给定卷及其下方文件栈可达到的最大顺序读写速度”,也就是读写超大文件时可能达到的最快速度。它面向的存储对象包括本地驱动器上的文件系统、远程网络共享,以及 RAM 盘、加密文件容器这类虚拟或伪设备。

需要注意,页面只说明了基准的设计目标和参数遍历方式,没有承诺每次运行都绝对不受缓存影响。判断结果时,应结合测试模式和设备类型一起看。

三个变量如何组合成 300 个测试

读写文件的过程,本质上是把内存缓冲区(块)交给操作系统,让它填入磁盘数据或把缓冲区内容写入文件。CCSIO 围绕三个主要变量做组合:

变量 默认取值 作用
缓冲区大小 8K、16K、32K、64K、128K、256K、512K、1M、2M、4M、8M、16M 单次 I/O 传输的数据块大小
缓冲区数量 1、2、4、8、16 同时使用的缓冲区个数
I/O 缓存模式 无缓冲顺序读写、无缓冲顺序读、缓冲顺序读 是否经过系统缓存、读还是写

一次“测试运行”就是这三个参数的一个组合。默认配置下,单个基准包含 180 个读测试和 120 个写测试,合计 300 个测试。

测试限制有两条:每个测试默认持续 1 秒,这是软限制,实际可能略长;所有测试有 64MB 内存上限,总缓冲区空间超过该上限的测试会被跳过。跳过之后测试数降到 285 个,总运行时间约 5 分钟。

为什么不能套用同一组参数

页面给出的例子很能说明问题。同一组参数下,不同设备的最优表现差异明显:

参数组合 Samsung MZVPV512(NVMe) SSD 上的 TrueCrypt 卷
8 × 512 KB 2158.0 MBps 317.5 MBps
16 × 2 MB 1974.1 MBps 338.4 MBps

表中加粗值是各设备的最大读速度。NVMe 盘在 8 × 512 KB 时达到峰值,而加密容器在 16 × 2 MB 时反而更高。页面明确解释:对 SSD 有效的组合,对 HDD 或虚拟磁盘往往不成立,反之亦然;最优组合会随物理设备类型、它与主机的连接方式以及文件栈的组成而大幅变化。

这直接决定了读结果的方法:不要只看某一个参数下的数值,而要看该设备在所有组合中出现的最大读写速度,并记录它对应的参数组合。跨设备比较时,比较各自的最大值,而不是拿同一组参数去横向对比。

用 CCSIO 做一次基准的步骤与验证

  1. 确认前提:准备 Windows Vista 或更新版本的系统;下载文件约 238 KB,版本 1.5.0(2019 年 6 月 26 日发布)。页面未提及价格或登录要求,按页面信息只说明可下载。
  2. 选择测试位置:把基准指向你要评估的卷,例如本地盘、网络共享、RAM 盘或加密容器挂载点。
  3. 运行默认配置:让基准遍历 12 种缓冲区大小 × 5 种缓冲区数量 × 2 或 3 种缓存模式,预期得到约 285 个有效测试、总时长约 5 分钟。
  4. 读取结果:找出该设备的最大读速度和最大写速度,并记下对应的缓冲区大小、数量和模式。
  5. 验证稳定性:在空闲机器上重复运行,观察最大值是否接近。页面说明 1 秒的测试时长在空闲机器上通常足以得到准确的速度估计;如果机器有其他负载,结果可能波动。

常见卡点有两个:一是总缓冲区空间超过 64MB 的测试会被跳过,所以看到的测试数少于 300 属于正常;二是把不同设备在同一参数下的数值直接比较,容易得出错误结论,应改为比较各自的最大值。

结果怎么解读

冷缓存顺序基准回答的是“这个存储栈在批量大文件读写上最快能到多少”,适合用来评估文件系统、连接方式和虚拟化层对吞吐量的影响。它不回答小文件随机读写、日常响应延迟等问题。若你的目标是判断某块盘或某个加密容器是否适合大文件传输、备份或媒体处理,看最大顺序读写速度及对应参数即可;若目标是数据库或大量小文件场景,需要另选匹配的基准方法。